Make left-click on tempo/meter in main clock edit current tempo/meter

This commit is contained in:
Colin Fletcher 2015-02-15 18:26:15 +00:00
parent 760e00b028
commit 99e15d9402
4 changed files with 35 additions and 3 deletions

View File

@ -333,7 +333,7 @@ AudioClock::render (cairo_t* cr, cairo_rectangle_t*)
if (mode_based_info_ratio != 1.0) {
double left_rect_width = round (((get_width() - separator_height) * mode_based_info_ratio) + 0.5);
double left_rect_width = get_left_rect_width();
if (_need_bg) {
if (corner_radius) {

View File

@ -101,6 +101,17 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
virtual void build_ops_menu ();
Gtk::Menu *ops_menu;
bool on_button_press_event (GdkEventButton *ev);
bool on_button_release_event(GdkEventButton *ev);
bool is_lower_layout_click(int y) const {
return y > upper_height + separator_height;
}
bool is_right_layout_click(int x) const {
return x > x_leading_padding + get_left_rect_width() + separator_height;
}
double get_left_rect_width() const {
return round (((get_width() - separator_height) * mode_based_info_ratio) + 0.5);
}
private:
Mode _mode;
std::string _name;
@ -186,8 +197,6 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
bool on_key_press_event (GdkEventKey *);
bool on_key_release_event (GdkEventKey *);
bool on_scroll_event (GdkEventScroll *ev);
bool on_button_press_event (GdkEventButton *ev);
bool on_button_release_event(GdkEventButton *ev);
void on_style_changed (const Glib::RefPtr<Gtk::Style>&);
void on_size_request (Gtk::Requisition* req);
bool on_motion_notify_event (GdkEventMotion *ev);

View File

@ -116,3 +116,24 @@ MainClock::insert_new_meter ()
PublicEditor::instance().mouse_add_new_meter_event (absolute_time ());
}
bool
MainClock::on_button_press_event (GdkEventButton *ev)
{
if (ev->button == 1) {
if (mode() == BBT) {
if (is_lower_layout_click(ev->y)) {
if (is_right_layout_click(ev->x)) {
// meter on the right
edit_current_meter();
} else {
// tempo on the left
edit_current_tempo();
}
return true;
}
}
}
return AudioClock::on_button_press_event (ev);
}

View File

@ -39,4 +39,6 @@ private:
void insert_new_meter ();
framepos_t absolute_time () const;
bool _primary;
bool on_button_press_event (GdkEventButton *ev);
};