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
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user