Gtk::Requisition req;
CairoWidget::on_realize ();
-
+
set_clock_dimensions (req);
first_width = req.width;
tmp->set_text ("8");
tmp->get_pixel_size (em_width, ignore_height);
-
/* force redraw of markup with new font-size */
set (last_when, true);
double lw = layout_width * xscale;
double lh = layout_height * yscale;
- if (lw >= get_width()) {
- cairo_move_to (cr, 0.0, (upper_height - lh) / 2.0);
- } else {
- cairo_move_to (cr, (get_width() - lw) / 2.0, (upper_height - lh) / 2.0);
- }
+ cairo_move_to (cr, (get_width() - lw) / 2.0, (upper_height - lh) / 2.0);
if (xscale != 1.0 || yscale != 1.0) {
cairo_save (cr);
}
if (editing) {
- Pango::Rectangle cursor;
-
if (!insert_map.empty()) {
+ int xcenter = (get_width() - layout_width) /2;
+
if (input_string.length() < insert_map.size()) {
+ Pango::Rectangle cursor;
- cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ if (input_string.empty()) {
+ /* nothing entered yet, put cursor at the end
+ of string
+ */
+ cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ } else {
+ cursor = _layout->get_cursor_strong_pos (insert_map[input_string.length()]);
+ }
cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
-
cairo_rectangle (cr,
- cursor.get_x()/PANGO_SCALE,
- (upper_height - layout_height)/2.0,
- em_width,
- cursor.get_height()/PANGO_SCALE);
- cairo_stroke (cr);
-
+ min (get_width() - 2.0,
+ (double) xcenter + cursor.get_x()/PANGO_SCALE + em_width),
+ (upper_height - layout_height)/2.0,
+ 2.0, cursor.get_height()/PANGO_SCALE);
+ cairo_fill (cr);
} else {
/* we've entered all possible digits, no cursor */
}
} else {
- cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
-
- if (edit_string.empty()) {
- cairo_rectangle (cr,
- get_width() - em_width,
- (upper_height - layout_height)/2.0,
- em_width, upper_height);
- } else {
- cursor = _layout->get_cursor_strong_pos (edit_string.length() - 1);
+ if (input_string.empty()) {
+ cairo_set_source_rgba (cr, cursor_r, cursor_g, cursor_b, cursor_a);
cairo_rectangle (cr,
- cursor.get_x()/PANGO_SCALE,
- (upper_height - layout_height)/2.0,
- em_width, upper_height);
+ (get_width()/2.0),
+ (upper_height - layout_height)/2.0,
+ 2.0, upper_height);
+ cairo_fill (cr);
}
-
- cairo_stroke (cr);
}
}
}
tmp->set_text (" 88:88:88,88 ");
tmp->get_pixel_size (req.width, req.height);
-
layout_height = req.height;
layout_width = req.width;
-
- /* get the figure width for the font. This doesn't have to super
- * accurate since we only use it to measure the (roughly 1 character)
- * offset from the position Pango tells us for the "cursor"
- */
-
- int ignore_height;
-
- tmp->set_text ("8");
- tmp->get_pixel_size (em_width, ignore_height);
}
void
Glib::RefPtr<Gtk::Style> style = get_style ();
Pango::FontDescription font;
int w;
-
+
tmp = Pango::Layout::create (get_pango_context());
-
+
if (!is_realized()) {
font = get_font_for_style (get_name());
} else {
font = style->get_font();
}
-
+
tmp->set_font_description (font);
font.set_size (INFO_FONT_SIZE);
edit_string.clear ();
_layout->set_text ("");
}
-
+
input_string.clear ();
editing = true;
edit_is_negative = false;
-
+
if (f) {
input_string = get_field (f);
show_edit_status (merge_input_and_edit_string ());
_layout->set_text (edit_string);
}
-
+
queue_draw ();
Keyboard::magic_widget_grab_focus ();
MenuList& ops_items = ops_menu->items();
ops_menu->set_name ("ArdourContextMenu");
- if (!Profile->get_sae()) {
- ops_items.push_back (MenuElem (_("Timecode"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Timecode)));
- }
+ ops_items.push_back (MenuElem (_("Timecode"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Timecode)));
ops_items.push_back (MenuElem (_("Bars:Beats"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), BBT)));
ops_items.push_back (MenuElem (_("Minutes:Seconds"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), MinSec)));
ops_items.push_back (MenuElem (_("Samples"), sigc::bind (sigc::mem_fun(*this, &AudioClock::set_mode), Frames)));
if (editable && !_off && !is_duration && !_follows_playhead) {
ops_items.push_back (SeparatorElem());
- ops_items.push_back (MenuElem (_("Set From Playhead"), sigc::mem_fun(*this, &AudioClock::set_from_playhead)));
+ ops_items.push_back (MenuElem (_("Set from Playhead"), sigc::mem_fun(*this, &AudioClock::set_from_playhead)));
ops_items.push_back (MenuElem (_("Locate to This Time"), sigc::mem_fun(*this, &AudioClock::locate)));
}
ops_items.push_back (SeparatorElem());