shell: Handle the usual "Alt+Left" key binding

For left-to-right languages, and Alt+Right to RTL.
This commit is contained in:
Bastien Nocera 2013-02-19 11:25:33 +01:00
parent 6cb6404e7e
commit 56008765c8

View file

@ -1201,6 +1201,7 @@ window_key_press_event (GtkWidget *win,
GdkKeymap *keymap; GdkKeymap *keymap;
gboolean retval; gboolean retval;
GdkModifierType state; GdkModifierType state;
gboolean is_rtl;
if (event->state == 0) if (event->state == 0)
return FALSE; return FALSE;
@ -1210,6 +1211,7 @@ window_key_press_event (GtkWidget *win,
keymap = gdk_keymap_get_default (); keymap = gdk_keymap_get_default ();
gdk_keymap_add_virtual_modifiers (keymap, &state); gdk_keymap_add_virtual_modifiers (keymap, &state);
state = state & gtk_accelerator_get_default_mod_mask (); state = state & gtk_accelerator_get_default_mod_mask ();
is_rtl = gtk_widget_get_direction (win) == GTK_TEXT_DIR_RTL;
if (state == GDK_CONTROL_MASK) if (state == GDK_CONTROL_MASK)
{ {
@ -1238,13 +1240,19 @@ window_key_press_event (GtkWidget *win,
break; break;
} }
} }
else if ((state == GDK_MOD1_MASK && event->keyval == GDK_KEY_Up) || else if (state == GDK_MOD1_MASK && event->keyval == GDK_KEY_Up)
event->keyval == GDK_KEY_Back)
{ {
if (notebook_get_selected_page (self->priv->notebook) != self->priv->scrolled_window) if (notebook_get_selected_page (self->priv->notebook) != self->priv->scrolled_window)
shell_show_overview_page (self); shell_show_overview_page (self);
retval = TRUE; retval = TRUE;
} }
else if ((!is_rtl && state == GDK_MOD1_MASK && event->keyval == GDK_KEY_Left) ||
(is_rtl && state == GDK_MOD1_MASK && event->keyval == GDK_KEY_Right) ||
event->keyval == GDK_KEY_Back)
{
previous_button_clicked_cb (NULL, self);
retval = TRUE;
}
return retval; return retval;
} }