From ecd265222a6fe7a1d2dba1aa706a1ea95abeff87 Mon Sep 17 00:00:00 2001 From: Colin Fletcher Date: Sat, 7 Feb 2015 23:22:59 +0000 Subject: Add/edit tempo/meter change at right position with 'delta to edit cursor' Find the absolute position of the main clock when 'display delta to edit cursor' is set when adding/editing tempo/meter changes from the context menu. --- gtk2_ardour/audio_clock.h | 1 + 1 file changed, 1 insertion(+) (limited to 'gtk2_ardour/audio_clock.h') diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index 83bc3233c2..f00b6db8ec 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -96,6 +96,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr protected: void render (cairo_t*, cairo_rectangle_t*); + bool get_is_duration () const { return is_duration; } ; virtual void build_ops_menu (); Gtk::Menu *ops_menu; -- cgit v1.2.3 From 99e15d94025b7ce9046b3e8d4c4e7b2e1635df7a Mon Sep 17 00:00:00 2001 From: Colin Fletcher Date: Sun, 15 Feb 2015 18:26:15 +0000 Subject: Make left-click on tempo/meter in main clock edit current tempo/meter --- gtk2_ardour/audio_clock.cc | 2 +- gtk2_ardour/audio_clock.h | 13 +++++++++++-- gtk2_ardour/main_clock.cc | 21 +++++++++++++++++++++ gtk2_ardour/main_clock.h | 2 ++ 4 files changed, 35 insertions(+), 3 deletions(-) (limited to 'gtk2_ardour/audio_clock.h') diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index ae170b8548..7ad1a89dc0 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -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) { diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index f00b6db8ec..4602ce8efc 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -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&); void on_size_request (Gtk::Requisition* req); bool on_motion_notify_event (GdkEventMotion *ev); diff --git a/gtk2_ardour/main_clock.cc b/gtk2_ardour/main_clock.cc index bbb3d5af4e..f90599de13 100644 --- a/gtk2_ardour/main_clock.cc +++ b/gtk2_ardour/main_clock.cc @@ -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); +} + diff --git a/gtk2_ardour/main_clock.h b/gtk2_ardour/main_clock.h index 767216be08..696b7e21e6 100644 --- a/gtk2_ardour/main_clock.h +++ b/gtk2_ardour/main_clock.h @@ -39,4 +39,6 @@ private: void insert_new_meter (); framepos_t absolute_time () const; bool _primary; + + bool on_button_press_event (GdkEventButton *ev); }; -- cgit v1.2.3