fulfill the promise of an in-library Keyboard object, and use platform specific modif...
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 10 Dec 2009 23:01:45 +0000 (23:01 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 10 Dec 2009 23:01:45 +0000 (23:01 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@6344 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/gtkmm2ext/auto_spin.cc
libs/gtkmm2ext/barcontroller.cc
libs/gtkmm2ext/gtkmm2ext/pixfader.h
libs/gtkmm2ext/pixfader.cc
libs/gtkmm2ext/pixscroller.cc
libs/gtkmm2ext/scroomer.cc
libs/gtkmm2ext/selector.cc

index b8f1bb9017198cda88dd575c4887f72945e7ff3b..5ab8852adfff03286f9764bf0b561aea83c20ec3 100644 (file)
@@ -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;
index 5cce612056c59b52cf680a5ee8a41abe2ccd23bc..3e998bbcdbe6ec69df121db08cf52d1921f3e423 100644 (file)
 
 #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;
index cd0f62be9d7df3379002e3aa91e5de2060ff6e35..a8d54abb59e67267d711f86c30bbfc46b924cf6c 100644 (file)
@@ -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,
index 08fcafdbe47cc8960f91cdef223f75b3e202281c..a77750b243dfb890e9fac08660e8323e184dc6d1 100644 (file)
 
 
 #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;
+}
index f459726f274820caa910d180ab55620dbe39c571..f20e11c9ca7d55e34904e04f3d98c6a4b03c9101 100644 (file)
@@ -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;
index 7c6d2c6350b324ebff9be05e9aea97492299b495..07e5b464528e3f9a1a8c4759b77e7811482c7185 100644 (file)
@@ -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;
index ee9a5578bad7aa1fb842847fe6bf389f10b74092..85924e82ab728f842d0b67f218d698e00fbf6a91 100644 (file)
 #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);