summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-12-22 01:48:20 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-12-22 01:48:20 +0000
commitbfffdca239f37c4e2e67c34732774c886c03c282 (patch)
tree1a67712fe4228576c49cf7e44cc1cc07e7b6c048 /libs/gtkmm2ext
parent9946e615cac53998de4a48c5f1fe061efa6edf1e (diff)
more panner tweaks
git-svn-id: svn://localhost/ardour2/trunk@1244 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r--libs/gtkmm2ext/barcontroller.cc25
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/barcontroller.h4
2 files changed, 19 insertions, 10 deletions
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 <gtkmm.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/drawingarea.h>
#include <gtkmm2ext/binding_proxy.h>
namespace ARDOUR {
@@ -90,6 +91,7 @@ class BarController : public Gtk::Frame
gint switch_to_spinner ();
void entry_activated ();
+ void drop_grab ();
};