mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 00:34:59 +01:00
commits 6001-6525 inclusive from 2.X applied to 3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@6942 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
cf77196698
commit
d9cebc2edf
26 changed files with 361 additions and 99 deletions
|
|
@ -504,12 +504,6 @@ set_color (Gdk::Color& c, int rgb)
|
|||
c.set_rgb((rgb >> 16)*256, ((rgb & 0xff00) >> 8)*256, (rgb & 0xff)*256);
|
||||
}
|
||||
|
||||
#ifdef GTKOSX
|
||||
extern "C" {
|
||||
gboolean gdk_quartz_possibly_forward (GdkEvent*);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
relay_key_press (GdkEventKey* ev, Gtk::Window* win)
|
||||
{
|
||||
|
|
@ -526,6 +520,73 @@ forward_key_press (GdkEventKey* ev)
|
|||
return PublicEditor::instance().on_key_press_event(ev);
|
||||
}
|
||||
|
||||
#ifdef GTKOSX
|
||||
static guint
|
||||
osx_keyval_without_alt (guint accent_keyval)
|
||||
{
|
||||
switch (accent_keyval) {
|
||||
case GDK_oe:
|
||||
return GDK_q;
|
||||
case GDK_registered:
|
||||
return GDK_r;
|
||||
case GDK_dagger:
|
||||
return GDK_t;
|
||||
case GDK_yen:
|
||||
return GDK_y;
|
||||
case GDK_diaeresis:
|
||||
return GDK_u;
|
||||
case GDK_oslash:
|
||||
return GDK_o;
|
||||
case GDK_Greek_pi:
|
||||
return GDK_p;
|
||||
case GDK_leftdoublequotemark:
|
||||
return GDK_bracketleft;
|
||||
case GDK_leftsinglequotemark:
|
||||
return GDK_bracketright;
|
||||
case GDK_guillemotleft:
|
||||
return GDK_backslash;
|
||||
case GDK_aring:
|
||||
return GDK_a;
|
||||
case GDK_ssharp:
|
||||
return GDK_s;
|
||||
case GDK_partialderivative:
|
||||
return GDK_d;
|
||||
case GDK_function:
|
||||
return GDK_f;
|
||||
case GDK_copyright:
|
||||
return GDK_g;
|
||||
case GDK_abovedot:
|
||||
return GDK_h;
|
||||
case GDK_notsign:
|
||||
return GDK_l;
|
||||
case GDK_ellipsis:
|
||||
return GDK_semicolon;
|
||||
case GDK_ae:
|
||||
return GDK_apostrophe;
|
||||
case GDK_Greek_OMEGA:
|
||||
return GDK_z;
|
||||
case GDK_ccedilla:
|
||||
return GDK_c;
|
||||
case GDK_radical:
|
||||
return GDK_v;
|
||||
case GDK_integral:
|
||||
return GDK_b;
|
||||
case GDK_mu:
|
||||
return GDK_m;
|
||||
case GDK_lessthanequal:
|
||||
return GDK_comma;
|
||||
case GDK_greaterthanequal:
|
||||
return GDK_period;
|
||||
case GDK_division:
|
||||
return GDK_slash;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return GDK_VoidSymbol;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
|
||||
{
|
||||
|
|
@ -595,6 +656,24 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
|
|||
all "normal text" accelerators.
|
||||
*/
|
||||
|
||||
#ifdef GTKOSX
|
||||
if (!special_handling_of_unmodified_accelerators) {
|
||||
if (ev->state & GDK_MOD1_MASK) {
|
||||
/* we're not in a text entry or "magic focus" widget so we don't want OS X "special-character"
|
||||
text-style handling of alt-<key>. change the keyval back to what it would be without
|
||||
the alt key. this way, we see <alt>-v rather than <alt>-radical and so on.
|
||||
*/
|
||||
guint keyval_without_alt = osx_keyval_without_alt (ev->keyval);
|
||||
|
||||
if (keyval_without_alt != GDK_VoidSymbol) {
|
||||
#ifdef DEBUG_ACCELERATOR_HANDLING
|
||||
cerr << "Remapped " << gdk_keyval_name (ev->keyval) << " to " << gdk_keyval_name (keyval_without_alt) << endl;
|
||||
|
||||
#endif ev->keyval = keyval_without_alt;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!special_handling_of_unmodified_accelerators) {
|
||||
|
||||
|
|
@ -609,17 +688,6 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
|
|||
if (allow_activating && gtk_accel_groups_activate(G_OBJECT(win), fakekey, GdkModifierType(ev->state))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef GTKOSX
|
||||
if (allow_activating) {
|
||||
int oldval = ev->keyval;
|
||||
ev->keyval = fakekey;
|
||||
if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) {
|
||||
return true;
|
||||
}
|
||||
ev->keyval = oldval;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -638,11 +706,6 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
|
|||
#endif
|
||||
|
||||
if (allow_activating) {
|
||||
#ifdef GTKOSX
|
||||
if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
if (gtk_window_activate_key (win, ev)) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -671,12 +734,6 @@ key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev)
|
|||
#endif
|
||||
|
||||
if (allow_activating) {
|
||||
|
||||
#ifdef GTKOSX
|
||||
if (gdk_quartz_possibly_forward ((GdkEvent*) ev)) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
return gtk_window_activate_key (win, ev);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue