[mutter/wip/xinput2r: 67/68] keybindings
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/xinput2r: 67/68] keybindings
- Date: Wed, 24 Oct 2012 16:14:57 +0000 (UTC)
commit 0a56721aad54b0e7c66726629baacb9ff4fd5987
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Oct 18 16:47:13 2012 -0400
keybindings
src/core/keybindings.c | 188 +++++++++++++++++++++++++++++-------------------
src/meta/prefs.h | 1 +
2 files changed, 115 insertions(+), 74 deletions(-)
---
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 2d599f9..1597912 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -105,6 +105,7 @@ static void handle_workspace_switch (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy);
@@ -1365,6 +1366,7 @@ invoke_handler (MetaDisplay *display,
MetaKeyHandler *handler,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding)
{
@@ -1373,6 +1375,7 @@ invoke_handler (MetaDisplay *display,
handler->flags & META_KEY_BINDING_PER_WINDOW ?
window : NULL,
event,
+ device,
binding,
handler->user_data);
else
@@ -1380,6 +1383,7 @@ invoke_handler (MetaDisplay *display,
handler->flags & META_KEY_BINDING_PER_WINDOW ?
window: NULL,
event,
+ device,
binding,
NULL);
}
@@ -1389,13 +1393,14 @@ invoke_handler_by_name (MetaDisplay *display,
MetaScreen *screen,
const char *handler_name,
MetaWindow *window,
- XEvent *event)
+ XEvent *event,
+ MetaDevice *device)
{
MetaKeyHandler *handler;
handler = HANDLER (handler_name);
if (handler)
- invoke_handler (display, screen, handler, window, event, NULL);
+ invoke_handler (display, screen, handler, window, event, device, NULL);
}
/* now called from only one place, may be worth merging */
@@ -1409,6 +1414,7 @@ process_event (MetaKeyBinding *bindings,
KeySym keysym,
gboolean on_window)
{
+ MetaDevice *device;
guint evtype, keycode, state;
int i;
@@ -1421,6 +1427,8 @@ process_event (MetaKeyBinding *bindings,
if (evtype == KeyRelease)
return FALSE;
+ device = meta_input_event_get_device (display, event);;
+
/*
* TODO: This would be better done with a hash table;
* it doesn't suit to use O(n) for such a common operation.
@@ -1460,7 +1468,7 @@ process_event (MetaKeyBinding *bindings,
*/
display->allow_terminal_deactivation = TRUE;
- invoke_handler (display, screen, handler, window, event, &bindings[i]);
+ invoke_handler (display, screen, handler, window, event, device, &bindings[i]);
return TRUE;
}
@@ -2380,7 +2388,7 @@ process_tab_grab (MetaDisplay *display,
{
if (end_keyboard_grab (display, device, keycode))
{
- invoke_handler_by_name (display, screen, "tab-popup-select", NULL, event);
+ invoke_handler_by_name (display, screen, "tab-popup-select", NULL, event, device);
/* We return FALSE to end the grab; if the handler ended the grab itself
* that will be a noop. If the handler didn't end the grab, then it's a
@@ -2417,7 +2425,7 @@ process_tab_grab (MetaDisplay *display,
binding->handler->func &&
binding->handler->func != binding->handler->default_func)
{
- invoke_handler (display, screen, binding->handler, NULL, event, binding);
+ invoke_handler (display, screen, binding->handler, NULL, event, device, binding);
return TRUE;
}
break;
@@ -2436,7 +2444,7 @@ process_tab_grab (MetaDisplay *display,
}
/* Some unhandled key press */
- invoke_handler_by_name (display, screen, "tab-popup-cancel", NULL, event);
+ invoke_handler_by_name (display, screen, "tab-popup-cancel", NULL, event, device);
return FALSE;
}
@@ -2662,11 +2670,12 @@ process_tab_grab (MetaDisplay *display,
static void
handle_switch_to_workspace (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *event_window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *event_window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
gint which = binding->handler->data;
MetaWorkspace *workspace;
@@ -2683,8 +2692,8 @@ handle_switch_to_workspace (MetaDisplay *display,
* Note that we're the only caller of that function, so perhaps
* we should merge with it.
*/
- handle_workspace_switch (display, screen, event_window, event, binding,
- dummy);
+ handle_workspace_switch (display, screen, event_window, event,
+ device, binding, dummy);
return;
}
@@ -2703,11 +2712,12 @@ handle_switch_to_workspace (MetaDisplay *display,
static void
handle_maximize_vertically (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
if (window->has_resize_func)
{
@@ -2720,11 +2730,12 @@ handle_maximize_vertically (MetaDisplay *display,
static void
handle_maximize_horizontally (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
if (window->has_resize_func)
{
@@ -2787,6 +2798,7 @@ handle_move_to_corner_nw (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2798,6 +2810,7 @@ handle_move_to_corner_ne (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2809,6 +2822,7 @@ handle_move_to_corner_sw (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2820,6 +2834,7 @@ handle_move_to_corner_se (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2831,6 +2846,7 @@ handle_move_to_side_n (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2842,6 +2858,7 @@ handle_move_to_side_s (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2853,6 +2870,7 @@ handle_move_to_side_e (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2864,6 +2882,7 @@ handle_move_to_side_w (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -2875,6 +2894,7 @@ handle_move_to_center (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3029,11 +3049,12 @@ process_workspace_switch_grab (MetaDisplay *display,
static void
handle_show_desktop (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
Time evtime;
@@ -3056,11 +3077,12 @@ handle_show_desktop (MetaDisplay *display,
static void
handle_panel (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
MetaKeyBindingAction action = binding->handler->data;
Atom action_atom;
@@ -3111,16 +3133,15 @@ handle_panel (MetaDisplay *display,
static void
handle_activate_window_menu (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *event_window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *event_window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
MetaFocusInfo *focus_info;
- MetaDevice *device;
- device = meta_input_event_get_device (display, event);
focus_info = meta_display_get_focus_info (display, device);
if (focus_info->focus_window &&
@@ -3210,8 +3231,8 @@ do_choose_window (MetaDisplay *display,
if (state & ShiftMask)
backward = !backward;
- evtime = meta_input_event_get_time (display, event);
device = meta_input_event_get_device (display, event);
+ evtime = meta_input_event_get_time (display, event);
initial_selection = meta_display_get_tab_next (display,
type,
@@ -3302,11 +3323,12 @@ do_choose_window (MetaDisplay *display,
static void
handle_switch (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *event_window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *event_window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
gint backwards = (binding->handler->flags & META_KEY_BINDING_IS_REVERSED) != 0;
@@ -3316,11 +3338,12 @@ handle_switch (MetaDisplay *display,
static void
handle_cycle (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *event_window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *event_window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
gint backwards = (binding->handler->flags & META_KEY_BINDING_IS_REVERSED) != 0;
@@ -3333,6 +3356,7 @@ handle_tab_popup_select (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3344,6 +3368,7 @@ handle_tab_popup_cancel (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3355,6 +3380,7 @@ handle_toggle_fullscreen (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3369,6 +3395,7 @@ handle_toggle_above (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3383,6 +3410,7 @@ handle_toggle_tiled (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3394,16 +3422,16 @@ handle_toggle_tiled (MetaDisplay *display,
(META_WINDOW_TILED_RIGHT (window) && mode == META_TILE_RIGHT))
{
window->tile_monitor_number = window->saved_maximize ? window->monitor->number
- : -1;
+ : -1;
window->tile_mode = window->saved_maximize ? META_TILE_MAXIMIZED
- : META_TILE_NONE;
+ : META_TILE_NONE;
if (window->saved_maximize)
meta_window_maximize (window, META_MAXIMIZE_VERTICAL |
- META_MAXIMIZE_HORIZONTAL);
+ META_MAXIMIZE_HORIZONTAL);
else
meta_window_unmaximize (window, META_MAXIMIZE_VERTICAL |
- META_MAXIMIZE_HORIZONTAL);
+ META_MAXIMIZE_HORIZONTAL);
}
else if (meta_window_can_tile_side_by_side (window, pointer))
{
@@ -3422,11 +3450,12 @@ handle_toggle_tiled (MetaDisplay *display,
static void
handle_toggle_maximized (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
if (META_WINDOW_MAXIMIZED (window))
meta_window_unmaximize (window,
@@ -3443,6 +3472,7 @@ handle_maximize (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3457,6 +3487,7 @@ handle_unmaximize (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3471,6 +3502,7 @@ handle_toggle_shaded (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3489,6 +3521,7 @@ handle_close (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3503,6 +3536,7 @@ handle_minimize (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3515,6 +3549,7 @@ handle_begin_move (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3533,6 +3568,7 @@ handle_begin_resize (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3548,11 +3584,12 @@ handle_begin_resize (MetaDisplay *display,
static void
handle_toggle_on_all_workspaces (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
- MetaKeyBinding *binding,
- gpointer dummy)
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
+ MetaKeyBinding *binding,
+ gpointer dummy)
{
if (window->on_all_workspaces_requested)
meta_window_unstick (window);
@@ -3562,9 +3599,10 @@ handle_toggle_on_all_workspaces (MetaDisplay *display,
static void
handle_move_to_workspace (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3620,6 +3658,7 @@ handle_raise_or_lower (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3667,6 +3706,7 @@ handle_raise (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3678,17 +3718,18 @@ handle_lower (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
meta_window_lower (window);
}
-
static void
handle_workspace_switch (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
@@ -3696,7 +3737,6 @@ handle_workspace_switch (MetaDisplay *display,
unsigned int grab_mask;
MetaWorkspace *next;
gboolean grabbed_before_release;
- MetaDevice *device;
guint state;
Time evtime;
@@ -3711,7 +3751,6 @@ handle_workspace_switch (MetaDisplay *display,
/* FIXME should we use binding->mask ? */
grab_mask = state & ~(display->ignored_modifier_mask);
evtime = meta_input_event_get_time (display, event);
- device = meta_input_event_get_device (display, event);
if (!meta_display_begin_grab_op (display,
screen,
@@ -3752,9 +3791,10 @@ handle_workspace_switch (MetaDisplay *display,
static void
handle_set_spew_mark (MetaDisplay *display,
- MetaScreen *screen,
- MetaWindow *window,
- XEvent *event,
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer dummy)
{
diff --git a/src/meta/prefs.h b/src/meta/prefs.h
index ff6984c..5bad398 100644
--- a/src/meta/prefs.h
+++ b/src/meta/prefs.h
@@ -253,6 +253,7 @@ typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
MetaScreen *screen,
MetaWindow *window,
XEvent *event,
+ MetaDevice *device,
MetaKeyBinding *binding,
gpointer user_data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]