summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorColin Fletcher <colin.m.fletcher@googlemail.com>2015-02-15 18:26:15 +0000
committerColin Fletcher <colin.m.fletcher@googlemail.com>2015-03-09 19:17:52 +0000
commit99e15d94025b7ce9046b3e8d4c4e7b2e1635df7a (patch)
treecfc1bb06c286e304e390f3ced57eac2e5fbd5645 /gtk2_ardour
parent760e00b028f35937abc72695a02838372eb275a7 (diff)
Make left-click on tempo/meter in main clock edit current tempo/meter
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_clock.cc2
-rw-r--r--gtk2_ardour/audio_clock.h13
-rw-r--r--gtk2_ardour/main_clock.cc21
-rw-r--r--gtk2_ardour/main_clock.h2
4 files changed, 35 insertions, 3 deletions
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<Gtk::Style>&);
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);
};