summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-12-10 23:01:45 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-12-10 23:01:45 +0000
commita3bcba2357f4ab724b9c840bacd79f4d6c959415 (patch)
tree6cf3ee12e519b3a4f8d6e6c29ee1ccb54e47eecb /libs
parent6ab765e8fab08b186aa77e3ac01c33e0dbfc1ba1 (diff)
fulfill the promise of an in-library Keyboard object, and use platform specific modifiers throughout libgtkmm2ext. also fix up scrolling of pixfaders by making them grab keyboard magic focus when the mouse pointer is within them
git-svn-id: svn://localhost/ardour2/branches/3.0@6344 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/gtkmm2ext/auto_spin.cc7
-rw-r--r--libs/gtkmm2ext/barcontroller.cc23
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/pixfader.h2
-rw-r--r--libs/gtkmm2ext/pixfader.cc37
-rw-r--r--libs/gtkmm2ext/pixscroller.cc19
-rw-r--r--libs/gtkmm2ext/scroomer.cc8
-rw-r--r--libs/gtkmm2ext/selector.cc12
7 files changed, 60 insertions, 48 deletions
diff --git a/libs/gtkmm2ext/auto_spin.cc b/libs/gtkmm2ext/auto_spin.cc
index b8f1bb9017..5ab8852adf 100644
--- a/libs/gtkmm2ext/auto_spin.cc
+++ b/libs/gtkmm2ext/auto_spin.cc
@@ -18,8 +18,9 @@
$Id$
*/
-#include <gtkmm2ext/auto_spin.h>
#include <cmath>
+#include "gtkmm2ext/auto_spin.h"
+#include "gtkmm2ext/keyboard.h"
using namespace Gtkmm2ext;
using namespace std;
@@ -73,13 +74,13 @@ AutoSpin::button_press (GdkEventButton *ev)
stop_spinning (0);
- if (ev->state & GDK_SHIFT_MASK) {
+ if (ev->state & Keyboard::TertiaryModifier) {
/* use page shift */
shifted = true;
}
- if (ev->state & GDK_CONTROL_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
/* go to upper/lower bound on button1/button2 */
control = true;
diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc
index 5cce612056..3e998bbcdb 100644
--- a/libs/gtkmm2ext/barcontroller.cc
+++ b/libs/gtkmm2ext/barcontroller.cc
@@ -26,9 +26,10 @@
#include <pbd/controllable.h>
-#include <gtkmm2ext/gtk_ui.h>
-#include <gtkmm2ext/utils.h>
-#include <gtkmm2ext/barcontroller.h>
+#include "gtkmm2ext/gtk_ui.h"
+#include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/keyboard.h"
+#include "gtkmm2ext/barcontroller.h"
#include "i18n.h"
@@ -146,14 +147,14 @@ BarController::button_release (GdkEventButton* ev)
return true;
}
- if ((ev->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK)) == GDK_SHIFT_MASK) {
+ if ((ev->state & (Keyboard::TertiaryModifier|Keyboard::PrimaryModifier)) == Keyboard::TertiaryModifier) {
adjustment.set_value (initial_value);
} else {
double scale;
- if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+ if ((ev->state & (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) == (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) {
scale = 0.01;
- } else if (ev->state & GDK_CONTROL_MASK) {
+ } else if (ev->state & Keyboard::PrimaryModifier) {
scale = 0.1;
} else {
scale = 1.0;
@@ -181,9 +182,9 @@ BarController::scroll (GdkEventScroll* ev)
{
double scale;
- if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+ if ((ev->state & (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) == (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) {
scale = 0.01;
- } else if (ev->state & GDK_CONTROL_MASK) {
+ } else if (ev->state & Keyboard::PrimaryModifier) {
scale = 0.1;
} else {
scale = 1.0;
@@ -213,13 +214,13 @@ BarController::motion (GdkEventMotion* ev)
return true;
}
- if ((ev->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK)) == GDK_SHIFT_MASK) {
+ if ((ev->state & (Keyboard::TertiaryModifier|Keyboard::PrimaryModifier)) == Keyboard::TertiaryModifier) {
return TRUE;
}
- if ((ev->state & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
+ if ((ev->state & (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) == (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) {
scale = 0.01;
- } else if (ev->state & GDK_CONTROL_MASK) {
+ } else if (ev->state & Keyboard::PrimaryModifier) {
scale = 0.1;
} else {
scale = 1.0;
diff --git a/libs/gtkmm2ext/gtkmm2ext/pixfader.h b/libs/gtkmm2ext/gtkmm2ext/pixfader.h
index cd0f62be9d..a8d54abb59 100644
--- a/libs/gtkmm2ext/gtkmm2ext/pixfader.h
+++ b/libs/gtkmm2ext/gtkmm2ext/pixfader.h
@@ -46,6 +46,8 @@ class PixFader : public Gtk::DrawingArea
bool on_button_release_event (GdkEventButton*);
bool on_motion_notify_event (GdkEventMotion*);
bool on_scroll_event (GdkEventScroll* ev);
+ bool on_enter_notify_event (GdkEventCrossing* ev);
+ bool on_leave_notify_event (GdkEventCrossing* ev);
enum Orientation {
VERT=1,
diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc
index 08fcafdbe4..a77750b243 100644
--- a/libs/gtkmm2ext/pixfader.cc
+++ b/libs/gtkmm2ext/pixfader.cc
@@ -20,20 +20,17 @@
#include <iostream>
-#include <gtkmm2ext/pixfader.h>
+#include "gtkmm2ext/pixfader.h"
+#include "gtkmm2ext/keyboard.h"
using namespace Gtkmm2ext;
using namespace Gtk;
using namespace Gdk;
using namespace std;
-#ifdef GTKOSX
-int PixFader::fine_scale_modifier = GDK_META_MASK;
-#else
-int PixFader::fine_scale_modifier = GDK_CONTROL_MASK;
-#endif
-int PixFader::extra_fine_scale_modifier = GDK_MOD1_MASK;
+int PixFader::fine_scale_modifier = Keyboard::PrimaryModifier;
+int PixFader::extra_fine_scale_modifier = Keyboard::SecondaryModifier;
PixFader::PixFader (Glib::RefPtr<Pixbuf> belt, Gtk::Adjustment& adj, int orientation, int fader_length)
@@ -56,7 +53,7 @@ PixFader::PixFader (Glib::RefPtr<Pixbuf> belt, Gtk::Adjustment& adj, int orienta
set_fader_length (fader_length);
- add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK);
+ add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK|Gdk::SCROLL_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
adjustment.signal_value_changed().connect (mem_fun (*this, &PixFader::adjustment_changed));
adjustment.signal_changed().connect (mem_fun (*this, &PixFader::adjustment_changed));
@@ -159,23 +156,15 @@ PixFader::on_button_release_event (GdkEventButton* ev)
/* no motion - just a click */
- if (ev->state & Gdk::SHIFT_MASK) {
- cerr << "SV A\n";
+ if (ev->state & Keyboard::TertiaryModifier) {
adjustment.set_value (default_value);
- cerr << "SV A OUT\n";
} else if (ev->state & fine_scale_modifier) {
- cerr << "SV B\n";
adjustment.set_value (adjustment.get_lower());
- cerr << "SV B OUT\n";
} else if ((_orien == VERT && ev_pos < span - display_span()) || (_orien == HORIZ && ev_pos > span - display_span())) {
/* above the current display height, remember X Window coords */
- cerr << "SV C\n";
adjustment.set_value (adjustment.get_value() + adjustment.get_step_increment());
- cerr << "SV C OUT\n";
} else {
- cerr << "SV D\n";
adjustment.set_value (adjustment.get_value() - adjustment.get_step_increment());
- cerr << "SV D OUT\n";
}
}
@@ -334,3 +323,17 @@ PixFader::set_fader_length (int l)
queue_draw ();
}
+
+bool
+PixFader::on_enter_notify_event (GdkEventCrossing*)
+{
+ Keyboard::magic_widget_grab_focus ();
+ return false;
+}
+
+bool
+PixFader::on_leave_notify_event (GdkEventCrossing*)
+{
+ Keyboard::magic_widget_drop_focus();
+ return false;
+}
diff --git a/libs/gtkmm2ext/pixscroller.cc b/libs/gtkmm2ext/pixscroller.cc
index f459726f27..f20e11c9ca 100644
--- a/libs/gtkmm2ext/pixscroller.cc
+++ b/libs/gtkmm2ext/pixscroller.cc
@@ -23,7 +23,8 @@
#include <gtkmm.h>
-#include <gtkmm2ext/pixscroller.h>
+#include "gtkmm2ext/pixscroller.h"
+#include "gtkmm2ext/keyboard.h"
using namespace std;
using namespace Gtk;
@@ -116,7 +117,7 @@ PixScroller::on_button_press_event (GdkEventButton* ev)
{
switch (ev->button) {
case 1:
- if (!(ev->state & Gdk::SHIFT_MASK)) {
+ if (!(ev->state & Keyboard::TertiaryModifier)) {
add_modal_grab();
grab_y = ev->y;
grab_start = ev->y;
@@ -137,8 +138,8 @@ PixScroller::on_button_release_event (GdkEventButton* ev)
{
double scale;
- if (ev->state & GDK_CONTROL_MASK) {
- if (ev->state & GDK_MOD1_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
+ if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
} else {
scale = 0.1;
@@ -170,7 +171,7 @@ PixScroller::on_button_release_event (GdkEventButton* ev)
adj.set_value (scale * fract * (adj.get_upper() - adj.get_lower()));
}
} else {
- if (ev->state & Gdk::SHIFT_MASK) {
+ if (ev->state & Keyboard::TertiaryModifier) {
adj.set_value (default_value);
cerr << "default value = " << default_value << endl;
}
@@ -187,8 +188,8 @@ PixScroller::on_scroll_event (GdkEventScroll* ev)
{
double scale;
- if (ev->state & GDK_CONTROL_MASK) {
- if (ev->state & GDK_MOD1_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
+ if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
} else {
scale = 0.1;
@@ -227,8 +228,8 @@ PixScroller::on_motion_notify_event (GdkEventMotion* ev)
return true;
}
- if (ev->state & GDK_CONTROL_MASK) {
- if (ev->state & GDK_MOD1_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
+ if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
} else {
scale = 0.1;
diff --git a/libs/gtkmm2ext/scroomer.cc b/libs/gtkmm2ext/scroomer.cc
index 7c6d2c6350..07e5b46452 100644
--- a/libs/gtkmm2ext/scroomer.cc
+++ b/libs/gtkmm2ext/scroomer.cc
@@ -18,7 +18,9 @@
*/
#include <iostream>
-#include <gtkmm2ext/scroomer.h>
+
+#include "gtkmm2ext/scroomer.h"
+#include "gtkmm2ext/keyboard.h"
using namespace Gtkmm2ext;
using namespace Gtk;
@@ -74,8 +76,8 @@ Scroomer::on_motion_notify_event (GdkEventMotion* ev)
grab_y = ev->y;
- if (ev->state & GDK_CONTROL_MASK) {
- if (ev->state & GDK_MOD1_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
+ if (ev->state & Keyboard::SecondaryModifier) {
scale = 0.05;
} else {
scale = 0.1;
diff --git a/libs/gtkmm2ext/selector.cc b/libs/gtkmm2ext/selector.cc
index ee9a5578ba..85924e82ab 100644
--- a/libs/gtkmm2ext/selector.cc
+++ b/libs/gtkmm2ext/selector.cc
@@ -22,9 +22,11 @@
#include <vector>
#include <string>
-#include <gtkmm2ext/selector.h>
-#include <gtkmm2ext/utils.h>
-#include <pbd/pathscanner.h>
+#include "pbd/pathscanner.h"
+
+#include "gtkmm2ext/keyboard.h"
+#include "gtkmm2ext/selector.h"
+#include "gtkmm2ext/utils.h"
using namespace std;
using namespace Gtkmm2ext;
@@ -219,9 +221,9 @@ TreeView_Selector::on_button_press_event(GdkEventButton* ev)
bool return_value = TreeView::on_button_press_event(ev);
if (ev && (ev->type == GDK_BUTTON_RELEASE || ev->type == GDK_2BUTTON_PRESS)) {
- if (ev->state & Gdk::CONTROL_MASK) {
+ if (ev->state & Keyboard::PrimaryModifier) {
g_idle_add (Selector::_control_clicked, this);
- } else if (ev->state & Gdk::SHIFT_MASK) {
+ } else if (ev->state & Keyboard::TertiaryModifier) {
g_idle_add (Selector::_shift_clicked, this);
} else if (ev->type == GDK_2BUTTON_PRESS) {
g_idle_add (Selector::_accept, this);