From bfffdca239f37c4e2e67c34732774c886c03c282 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 22 Dec 2006 01:48:20 +0000 Subject: [PATCH] more panner tweaks git-svn-id: svn://localhost/ardour2/trunk@1244 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/panner.cc | 8 +++++--- libs/gtkmm2ext/barcontroller.cc | 25 +++++++++++++++--------- libs/gtkmm2ext/gtkmm2ext/barcontroller.h | 4 +++- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/panner.cc b/gtk2_ardour/panner.cc index 89f86b3337..ad985599c9 100644 --- a/gtk2_ardour/panner.cc +++ b/gtk2_ardour/panner.cc @@ -52,10 +52,10 @@ PannerBar::expose (GdkEventExpose* ev) // center - points[0].x = (darea.get_width()/2 - (triangle_size/2)) - 1; + points[0].x = (darea.get_width()/2 - triangle_size); points[0].y = 0; - points[1].x = (darea.get_width()/2 + (triangle_size/2)) - 1; + points[1].x = (darea.get_width()/2 + triangle_size) - 1; points[1].y = 0; points[2].x = darea.get_width()/2 - 1; @@ -65,7 +65,7 @@ PannerBar::expose (GdkEventExpose* ev) // right - points[0].x = (darea.get_width() - triangle_size) - 1; + points[0].x = (darea.get_width() - triangle_size); points[0].y = 0; points[1].x = darea.get_width(); @@ -99,6 +99,8 @@ PannerBar::button_press (GdkEventButton* ev) bool PannerBar::button_release (GdkEventButton* ev) { + drop_grab(); + if (ev->button == 1 && ev->type == GDK_BUTTON_RELEASE && ev->y < 10) { if (ev->x < triangle_size) { adjustment.set_value (adjustment.get_lower()); diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc index cfa56eefbc..803cb113cb 100644 --- a/libs/gtkmm2ext/barcontroller.cc +++ b/libs/gtkmm2ext/barcontroller.cc @@ -70,8 +70,8 @@ BarController::BarController (Gtk::Adjustment& adj, darea.signal_expose_event().connect (mem_fun (*this, &BarController::expose)); darea.signal_motion_notify_event().connect (mem_fun (*this, &BarController::motion)); - darea.signal_button_press_event().connect (mem_fun (*this, &BarController::button_press)); - darea.signal_button_release_event().connect (mem_fun (*this, &BarController::button_release)); + darea.signal_button_press_event().connect (mem_fun (*this, &BarController::button_press), false); + darea.signal_button_release_event().connect (mem_fun (*this, &BarController::button_release), false); darea.signal_scroll_event().connect (mem_fun (*this, &BarController::scroll)); spinner.signal_activate().connect (mem_fun (*this, &BarController::entry_activated)); @@ -82,6 +82,16 @@ BarController::BarController (Gtk::Adjustment& adj, show_all (); } +void +BarController::drop_grab () +{ + if (grabbed) { + grabbed = false; + darea.remove_modal_grab(); + StopGesture (); + } +} + bool BarController::button_press (GdkEventButton* ev) { @@ -93,8 +103,7 @@ BarController::button_press (GdkEventButton* ev) case 1: if (ev->type == GDK_2BUTTON_PRESS) { switch_on_release = true; - grabbed = false; - darea.remove_modal_grab(); + drop_grab (); } else { switch_on_release = false; darea.add_modal_grab(); @@ -123,6 +132,8 @@ BarController::button_release (GdkEventButton* ev) { double fract; + drop_grab (); + switch (ev->button) { case 1: if (switch_on_release) { @@ -145,10 +156,6 @@ BarController::button_release (GdkEventButton* ev) mouse_control (ev->x, ev->window, scale); } - darea.remove_modal_grab(); - grabbed = false; - StopGesture (); - grabbed = false; break; case 2: @@ -200,7 +207,7 @@ BarController::motion (GdkEventMotion* ev) double scale; if (!grabbed) { - return TRUE; + return true; } if ((ev->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK)) == GDK_SHIFT_MASK) { diff --git a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h index a6883238ea..e5b8e31b58 100644 --- a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h +++ b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h @@ -20,7 +20,8 @@ #ifndef __gtkmm2ext_bar_controller_h__ #define __gtkmm2ext_bar_controller_h__ -#include +#include +#include #include namespace ARDOUR { @@ -90,6 +91,7 @@ class BarController : public Gtk::Frame gint switch_to_spinner (); void entry_activated (); + void drop_grab (); };