mirror of
https://github.com/brl/mutter.git
synced 2025-06-13 16:59:30 +00:00
Sync with upstream r3901
Merge branch 'upstream' into clutter
This commit is contained in:
@ -520,87 +520,87 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
|
||||
switch (menu_op)
|
||||
{
|
||||
case META_MENU_OP_DELETE:
|
||||
name = META_KEYBINDING_CLOSE;
|
||||
name = "close";
|
||||
break;
|
||||
case META_MENU_OP_MINIMIZE:
|
||||
name = META_KEYBINDING_MINIMIZE;
|
||||
name = "minimize";
|
||||
break;
|
||||
case META_MENU_OP_UNMAXIMIZE:
|
||||
name = META_KEYBINDING_UNMAXIMIZE;
|
||||
name = "unmaximize";
|
||||
break;
|
||||
case META_MENU_OP_MAXIMIZE:
|
||||
name = META_KEYBINDING_MAXIMIZE;
|
||||
name = "maximize";
|
||||
break;
|
||||
case META_MENU_OP_UNSHADE:
|
||||
case META_MENU_OP_SHADE:
|
||||
name = META_KEYBINDING_TOGGLE_SHADE;
|
||||
name = "toggle_shaded";
|
||||
break;
|
||||
case META_MENU_OP_UNSTICK:
|
||||
case META_MENU_OP_STICK:
|
||||
name = META_KEYBINDING_TOGGLE_STICKY;
|
||||
name = "toggle_on_all_workspaces";
|
||||
break;
|
||||
case META_MENU_OP_ABOVE:
|
||||
case META_MENU_OP_UNABOVE:
|
||||
name = META_KEYBINDING_TOGGLE_ABOVE;
|
||||
name = "toggle_above";
|
||||
break;
|
||||
case META_MENU_OP_WORKSPACES:
|
||||
switch (workspace)
|
||||
{
|
||||
case 1:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_1;
|
||||
name = "move_to_workspace_1";
|
||||
break;
|
||||
case 2:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_2;
|
||||
name = "move_to_workspace_2";
|
||||
break;
|
||||
case 3:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_3;
|
||||
name = "move_to_workspace_3";
|
||||
break;
|
||||
case 4:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_4;
|
||||
name = "move_to_workspace_4";
|
||||
break;
|
||||
case 5:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_5;
|
||||
name = "move_to_workspace_5";
|
||||
break;
|
||||
case 6:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_6;
|
||||
name = "move_to_workspace_6";
|
||||
break;
|
||||
case 7:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_7;
|
||||
name = "move_to_workspace_7";
|
||||
break;
|
||||
case 8:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_8;
|
||||
name = "move_to_workspace_8";
|
||||
break;
|
||||
case 9:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_9;
|
||||
name = "move_to_workspace_9";
|
||||
break;
|
||||
case 10:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_10;
|
||||
name = "move_to_workspace_10";
|
||||
break;
|
||||
case 11:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_11;
|
||||
name = "move_to_workspace_11";
|
||||
break;
|
||||
case 12:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_12;
|
||||
name = "move_to_workspace_12";
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case META_MENU_OP_MOVE:
|
||||
name = META_KEYBINDING_BEGIN_MOVE;
|
||||
name = "begin_move";
|
||||
break;
|
||||
case META_MENU_OP_RESIZE:
|
||||
name = META_KEYBINDING_BEGIN_RESIZE;
|
||||
name = "begin_resize";
|
||||
break;
|
||||
case META_MENU_OP_MOVE_LEFT:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_LEFT;
|
||||
name = "move_to_workspace_left";
|
||||
break;
|
||||
case META_MENU_OP_MOVE_RIGHT:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_RIGHT;
|
||||
name = "move_to_workspace_right";
|
||||
break;
|
||||
case META_MENU_OP_MOVE_UP:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_UP;
|
||||
name = "move_to_workspace_up";
|
||||
break;
|
||||
case META_MENU_OP_MOVE_DOWN:
|
||||
name = META_KEYBINDING_MOVE_WORKSPACE_DOWN;
|
||||
name = "move_to_workspace_down";
|
||||
break;
|
||||
case META_MENU_OP_RECOVER:
|
||||
/* No keybinding for this one */
|
||||
|
@ -54,16 +54,22 @@ typedef void (* MetaKeyHandlerFunc) (MetaDisplay *display,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
|
||||
/* Prototypes for handlers */
|
||||
#define item(name, suffix, param, short, long, stroke) \
|
||||
static void \
|
||||
handle_##name (MetaDisplay *display,\
|
||||
MetaScreen *screen,\
|
||||
MetaWindow *window,\
|
||||
XEvent *event,\
|
||||
MetaKeyBinding *binding);
|
||||
#include "window-bindings.h"
|
||||
#undef item
|
||||
|
||||
static void handle_activate_workspace (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_activate_menu (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_tab_forward (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
@ -99,146 +105,16 @@ static void handle_panel_keybinding (MetaDisplay *display,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_toggle_above (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_toggle_maximize (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_maximize (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_unmaximize (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_toggle_shade (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_close_window (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_minimize_window (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_begin_move (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_begin_resize (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_toggle_sticky (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_workspace (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_workspace_flip (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_workspace_switch (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_raise_or_lower (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_raise (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_lower (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_run_command (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_maximize_vert (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_maximize_horiz (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_side_n (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_side_w (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_side_s (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_side_e (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_corner_nw (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_corner_ne (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_corner_sw (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_corner_se (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_move_to_center (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding);
|
||||
static void handle_spew_mark (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
@ -437,65 +313,17 @@ static const MetaKeyHandler screen_handlers[] = {
|
||||
};
|
||||
|
||||
static const MetaKeyHandler window_handlers[] = {
|
||||
{ META_KEYBINDING_WINDOW_MENU, handle_activate_menu, NULL },
|
||||
{ META_KEYBINDING_TOGGLE_FULLSCREEN, handle_toggle_fullscreen, NULL },
|
||||
{ META_KEYBINDING_TOGGLE_ABOVE, handle_toggle_above, NULL },
|
||||
{ META_KEYBINDING_TOGGLE_MAXIMIZE, handle_toggle_maximize, NULL },
|
||||
{ META_KEYBINDING_MAXIMIZE, handle_maximize, NULL },
|
||||
{ META_KEYBINDING_UNMAXIMIZE, handle_unmaximize, NULL },
|
||||
{ META_KEYBINDING_TOGGLE_SHADE, handle_toggle_shade, NULL },
|
||||
{ META_KEYBINDING_CLOSE, handle_close_window, NULL },
|
||||
{ META_KEYBINDING_MINIMIZE, handle_minimize_window, NULL },
|
||||
{ META_KEYBINDING_BEGIN_MOVE, handle_begin_move, },
|
||||
{ META_KEYBINDING_BEGIN_RESIZE, handle_begin_resize, },
|
||||
{ META_KEYBINDING_TOGGLE_STICKY, handle_toggle_sticky, },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_1, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (0) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_2, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (1) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_3, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (2) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_4, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (3) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_5, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (4) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_6, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (5) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_7, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (6) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_8, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (7) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_9, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (8) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_10, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (9) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_11, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (10) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_12, handle_move_to_workspace,
|
||||
GINT_TO_POINTER (11) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_LEFT, handle_move_to_workspace_flip,
|
||||
GINT_TO_POINTER (META_MOTION_LEFT) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_RIGHT, handle_move_to_workspace_flip,
|
||||
GINT_TO_POINTER (META_MOTION_RIGHT) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_UP, handle_move_to_workspace_flip,
|
||||
GINT_TO_POINTER (META_MOTION_UP) },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_DOWN, handle_move_to_workspace_flip,
|
||||
GINT_TO_POINTER (META_MOTION_DOWN) },
|
||||
{ META_KEYBINDING_RAISE_OR_LOWER, handle_raise_or_lower, NULL},
|
||||
{ META_KEYBINDING_RAISE, handle_raise, NULL},
|
||||
{ META_KEYBINDING_LOWER, handle_lower, NULL},
|
||||
{ META_KEYBINDING_MAXIMIZE_VERTICALLY, handle_maximize_vert, NULL },
|
||||
{ META_KEYBINDING_MAXIMIZE_HORIZONTALLY, handle_maximize_horiz, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_N, handle_move_to_side_n, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_S, handle_move_to_side_s, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_E, handle_move_to_side_e, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_W, handle_move_to_side_w, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_NW, handle_move_to_corner_nw, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_NE, handle_move_to_corner_ne, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_SW, handle_move_to_corner_sw, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_SE, handle_move_to_corner_se, NULL },
|
||||
{ META_KEYBINDING_MOVE_TO_CENTER, handle_move_to_center, NULL },
|
||||
{ NULL, NULL, NULL }
|
||||
/* TODO: Eventually, we should stop using GINT_TO_POINTER here, because
|
||||
* they're always integers.
|
||||
*
|
||||
* TODO: Are window bindings only ever called on non-null windows?
|
||||
* If so, we can remove the check from all of them.
|
||||
*/
|
||||
#define item(name, suffix, param, a, b, c) { #name, handle_##name, \
|
||||
GINT_TO_POINTER (param) },
|
||||
#include "window-bindings.h"
|
||||
#undef item
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
@ -2856,7 +2684,7 @@ handle_run_command (MetaDisplay *display,
|
||||
|
||||
|
||||
static void
|
||||
handle_maximize_vert (MetaDisplay *display,
|
||||
handle_maximize_vertically (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -2872,7 +2700,7 @@ handle_maximize_vert (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_maximize_horiz (MetaDisplay *display,
|
||||
handle_maximize_horizontally (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3265,7 +3093,7 @@ handle_panel_keybinding (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_activate_menu (MetaDisplay *display,
|
||||
handle_activate_window_menu (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *event_window,
|
||||
XEvent *event,
|
||||
@ -3502,7 +3330,7 @@ handle_toggle_above (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_toggle_maximize (MetaDisplay *display,
|
||||
handle_toggle_maximized (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3554,7 +3382,7 @@ handle_unmaximize (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_toggle_shade (MetaDisplay *display,
|
||||
handle_toggle_shaded (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3570,7 +3398,7 @@ handle_toggle_shade (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_close_window (MetaDisplay *display,
|
||||
handle_close (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3582,7 +3410,7 @@ handle_close_window (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_minimize_window (MetaDisplay *display,
|
||||
handle_minimize (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3626,7 +3454,7 @@ handle_begin_resize (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
handle_toggle_sticky (MetaDisplay *display,
|
||||
handle_toggle_on_all_workspaces (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
@ -3642,23 +3470,31 @@ handle_toggle_sticky (MetaDisplay *display,
|
||||
}
|
||||
|
||||
static void
|
||||
do_handle_move_to_workspace (MetaDisplay *display,
|
||||
handle_move_to_workspace (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding,
|
||||
gboolean flip)
|
||||
MetaKeyBinding *binding)
|
||||
{
|
||||
int which;
|
||||
gboolean flip;
|
||||
MetaWorkspace *workspace;
|
||||
|
||||
which = GPOINTER_TO_INT (binding->handler->data);
|
||||
/* If which is zero or positive, it's a workspace number, and the window
|
||||
* should move to the workspace with that number.
|
||||
*
|
||||
* However, if it's negative, it's a direction with respect to the current
|
||||
* position; it's expressed as a member of the MetaMotionDirection enum,
|
||||
* all of whose members are negative. Such a change is called a flip.
|
||||
*/
|
||||
flip = (which < 0);
|
||||
|
||||
if (window == NULL || window->always_sticky)
|
||||
return;
|
||||
|
||||
workspace = NULL;
|
||||
if (which < 0)
|
||||
if (flip)
|
||||
{
|
||||
workspace = meta_workspace_get_neighbor (screen->active_workspace,
|
||||
which);
|
||||
@ -3676,7 +3512,7 @@ do_handle_move_to_workspace (MetaDisplay *display,
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Resetting mouse_mode to FALSE due to "
|
||||
"do_handle_move_to_workspace() call with flip set.\n");
|
||||
"handle_move_to_workspace() call with flip set.\n");
|
||||
workspace->screen->display->mouse_mode = FALSE;
|
||||
meta_workspace_activate_with_focus (workspace,
|
||||
window,
|
||||
@ -3689,35 +3525,6 @@ do_handle_move_to_workspace (MetaDisplay *display,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
handle_move_to_workspace (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding)
|
||||
{
|
||||
do_handle_move_to_workspace (display,
|
||||
screen,
|
||||
window,
|
||||
event,
|
||||
binding,
|
||||
FALSE);
|
||||
}
|
||||
static void
|
||||
handle_move_to_workspace_flip (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
MetaWindow *window,
|
||||
XEvent *event,
|
||||
MetaKeyBinding *binding)
|
||||
{
|
||||
do_handle_move_to_workspace (display,
|
||||
screen,
|
||||
window,
|
||||
event,
|
||||
binding,
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
handle_raise_or_lower (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
|
@ -1888,48 +1888,10 @@ static MetaKeyPref screen_bindings[] = {
|
||||
};
|
||||
|
||||
static MetaKeyPref window_bindings[] = {
|
||||
{ META_KEYBINDING_WINDOW_MENU, NULL, FALSE },
|
||||
{ META_KEYBINDING_TOGGLE_FULLSCREEN, NULL, FALSE },
|
||||
{ META_KEYBINDING_TOGGLE_MAXIMIZE, NULL, FALSE },
|
||||
{ META_KEYBINDING_TOGGLE_ABOVE, NULL, FALSE },
|
||||
{ META_KEYBINDING_MAXIMIZE, NULL, FALSE },
|
||||
{ META_KEYBINDING_UNMAXIMIZE, NULL, FALSE },
|
||||
{ META_KEYBINDING_TOGGLE_SHADE, NULL, FALSE },
|
||||
{ META_KEYBINDING_MINIMIZE, NULL, FALSE },
|
||||
{ META_KEYBINDING_CLOSE, NULL, FALSE },
|
||||
{ META_KEYBINDING_BEGIN_MOVE, NULL, FALSE },
|
||||
{ META_KEYBINDING_BEGIN_RESIZE, NULL, FALSE },
|
||||
{ META_KEYBINDING_TOGGLE_STICKY, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_1, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_2, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_3, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_4, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_5, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_6, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_7, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_8, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_9, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_10, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_11, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_12, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_LEFT, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_RIGHT, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_UP, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_DOWN, NULL, FALSE },
|
||||
{ META_KEYBINDING_RAISE_OR_LOWER, NULL, FALSE },
|
||||
{ META_KEYBINDING_RAISE, NULL, FALSE },
|
||||
{ META_KEYBINDING_LOWER, NULL, FALSE },
|
||||
{ META_KEYBINDING_MAXIMIZE_VERTICALLY, NULL, FALSE },
|
||||
{ META_KEYBINDING_MAXIMIZE_HORIZONTALLY, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_NW, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_NE, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_SW, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_CORNER_SE, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_N, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_S, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_E, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_SIDE_W, NULL, FALSE },
|
||||
{ META_KEYBINDING_MOVE_TO_CENTER, NULL, FALSE },
|
||||
#define item(name, suffix, param, a, b, c) \
|
||||
{ #name suffix, NULL, FALSE },
|
||||
#include "window-bindings.h"
|
||||
#undef item
|
||||
{ NULL, NULL, FALSE }
|
||||
};
|
||||
|
||||
@ -1961,23 +1923,16 @@ static MetaSimpleKeyMapping screen_string_bindings[] = {
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
/* Name field must occur in the same order as window_bindings, though entries
|
||||
* can be skipped
|
||||
*/
|
||||
static MetaSimpleKeyMapping window_string_bindings[] = {
|
||||
{ META_KEYBINDING_WINDOW_MENU, "<Alt>Print" },
|
||||
{ META_KEYBINDING_MAXIMIZE, "<Alt>F10" },
|
||||
{ META_KEYBINDING_UNMAXIMIZE, "<Alt>F5" },
|
||||
{ META_KEYBINDING_MINIMIZE, "<Alt>F9" },
|
||||
{ META_KEYBINDING_CLOSE, "<Alt>F4" },
|
||||
{ META_KEYBINDING_BEGIN_MOVE, "<Alt>F7" },
|
||||
{ META_KEYBINDING_BEGIN_RESIZE, "<Alt>F8" },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_LEFT, "<Control><Shift><Alt>Left" },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_RIGHT, "<Control><Shift><Alt>Right" },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_UP, "<Control><Shift><Alt>Up" },
|
||||
{ META_KEYBINDING_MOVE_WORKSPACE_DOWN, "<Control><Shift><Alt>Down" },
|
||||
#define ONLY_BOUND_BY_DEFAULT
|
||||
#define item(name, suffix, param, short, long, keystroke) \
|
||||
{ #name suffix, keystroke },
|
||||
#include "window-bindings.h"
|
||||
#undef item
|
||||
#undef ONLY_BOUND_BY_DEFAULT
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
#endif /* NOT HAVE_GCONF */
|
||||
|
||||
static void
|
||||
@ -2949,6 +2904,7 @@ meta_prefs_get_compositing_manager (void)
|
||||
void
|
||||
meta_prefs_set_compositing_manager (gboolean whether)
|
||||
{
|
||||
#ifdef HAVE_GCONF
|
||||
GError *err = NULL;
|
||||
|
||||
gconf_client_set_bool (default_client,
|
||||
@ -2962,6 +2918,9 @@ meta_prefs_set_compositing_manager (gboolean whether)
|
||||
err->message);
|
||||
g_error_free (err);
|
||||
}
|
||||
#else
|
||||
compositing_manager = whether;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef HAVE_GCONF
|
||||
|
88
src/core/schema-bindings.c
Normal file
88
src/core/schema-bindings.c
Normal file
@ -0,0 +1,88 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Thomas Thurman
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/** \file Schema bindings generator.
|
||||
*
|
||||
* This program simply takes the items given in the binding lists in
|
||||
* window-bindings.h and turns them into a portion of
|
||||
* the GConf .schemas file.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <glib.h>
|
||||
|
||||
#define _(x) x
|
||||
|
||||
char *liberal;
|
||||
|
||||
const char* window_string = \
|
||||
" <schema>\n" \
|
||||
" <key>/schemas/apps/metacity/%s_keybindings/%s%s</key>\n" \
|
||||
" <applyto>/apps/metacity/%s_keybindings/%s%s</applyto>\n" \
|
||||
" <owner>metacity</owner>\n" \
|
||||
" <type>string</type>\n" \
|
||||
" <default>%s</default>\n" \
|
||||
" <locale name=\"C\">\n" \
|
||||
" <short>%s</short>\n" \
|
||||
" <long>\n" \
|
||||
" %s %s\n" \
|
||||
" </long>\n" \
|
||||
" </locale>\n" \
|
||||
" </schema>\n\n\n";
|
||||
|
||||
void
|
||||
produce_window_bindings ()
|
||||
{
|
||||
/* Escaped versions of each of these fields (i.e. > => >, etc) */
|
||||
gchar *esc_short, *esc_long, *esc_key;
|
||||
|
||||
#define item(name, suffix, param, short, long, keystroke) \
|
||||
esc_short = g_markup_escape_text (short, -1);\
|
||||
esc_long = g_markup_escape_text (long, -1);\
|
||||
if (keystroke) esc_key = g_markup_escape_text (keystroke, -1);\
|
||||
printf(\
|
||||
window_string, \
|
||||
"window", #name, suffix? suffix:"", \
|
||||
"window", #name, suffix? suffix:"",\
|
||||
keystroke? esc_key: "disabled", \
|
||||
esc_short, esc_long, liberal);\
|
||||
g_free (esc_short);\
|
||||
g_free (esc_long);\
|
||||
if (keystroke) g_free (esc_key);
|
||||
#include "../src/core/window-bindings.h"
|
||||
#undef item
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
liberal = g_markup_escape_text(_("The parser is fairly liberal and allows "\
|
||||
"lower or upper case, and also abbreviations such as \"<Ctl>\" and " \
|
||||
"\"<Ctrl>\". If you set the option to the special string " \
|
||||
"\"disabled\", then there will be no keybinding for this action."), -1);
|
||||
|
||||
produce_window_bindings ();
|
||||
|
||||
g_free (liberal);
|
||||
}
|
||||
|
||||
/* eof schema-bindings.c */
|
||||
|
293
src/core/window-bindings.h
Normal file
293
src/core/window-bindings.h
Normal file
@ -0,0 +1,293 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
* Copyright (C) 2008 Thomas Thurman
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file A list of window binding information.
|
||||
*
|
||||
* Each action which can have a keystroke bound to it is listed below.
|
||||
* To use this file, define "item" to be a six-argument macro (you can
|
||||
* throw any of the arguments you please away), include this file,
|
||||
* and then undefine the macro again.
|
||||
*
|
||||
* (If you aren't familiar with this technique, sometimes called "x-macros",
|
||||
* see DDJ of May 2001: <http://www.ddj.com/cpp/184401387>.)
|
||||
*
|
||||
* This makes it possible to keep all information about all the keybindings
|
||||
* in the same place. The only exception is the code to run when an action
|
||||
* is actually invoked; while we *could* have put that in this file, it would
|
||||
* have made debugging ridiculously difficult. Instead, each action should
|
||||
* have a corresponding static function named handle_<name>() in
|
||||
* keybindings.c.
|
||||
*
|
||||
* Currently, the GConf schemas in src/metacity.schemas also need to be
|
||||
* updated separately. There is a program called schema-bindings.c in this
|
||||
* directory which will fix that, but it needs integrating into the build
|
||||
* process.
|
||||
*
|
||||
* The arguments to item() are:
|
||||
* 1) name: the name of the binding; a bareword identifier
|
||||
* 2) suffix: a string to add to the binding name to make the handler name
|
||||
* (usually the empty string)
|
||||
* 3) param: an integer parameter to pass to the handler
|
||||
* 4) short: a short description. Mostly, you won't use this.
|
||||
* It must be marked translatable (i.e. inside "_(...)").
|
||||
* 5) long: like short, except long. Don't include all the stuff about
|
||||
* the parser being fairly liberal.
|
||||
* 6) keystroke: a string representing the default binding.
|
||||
* If this is NULL, the action is unbound by default.
|
||||
*
|
||||
* Don't try to do XML entity escaping anywhere in the strings.
|
||||
*
|
||||
* Some code out there wants only the entries which have a default
|
||||
* binding (i.e. whose sixth parameter is not NULL). You can get only these
|
||||
* by defining ONLY_BOUND_BY_DEFAULT before you include this file.
|
||||
*/
|
||||
|
||||
#ifndef item
|
||||
#error "item () must be defined when you include window-bindings.h"
|
||||
#endif
|
||||
|
||||
item (activate_window_menu, "", 0,
|
||||
_("Activate window menu"),
|
||||
_("The keybinding used to activate the window menu."),
|
||||
"<Alt>Print")
|
||||
|
||||
#ifndef ONLY_BOUND_BY_DEFAULT
|
||||
|
||||
item (toggle_fullscreen, "", 0,
|
||||
_("Toggle fullscreen mode"),
|
||||
_("The keybinding used to toggle fullscreen mode."),
|
||||
NULL)
|
||||
item (toggle_maximized, "", 0,
|
||||
_("Toggle maximization state"),
|
||||
_("The keybinding used to toggle maximization."),
|
||||
NULL)
|
||||
item (toggle_above, "", 0,
|
||||
_("Toggle always on top state"),
|
||||
_("The keybinding used to toggle always on top. A window that is "
|
||||
"always on top will always be visible over other overlapping "
|
||||
"windows."),
|
||||
NULL)
|
||||
#endif /* ONLY_BOUND_BY_DEFAULT */
|
||||
|
||||
item (maximize, "", 0,
|
||||
_("Maximize window"),
|
||||
_("The keybinding used to maximize a window."),
|
||||
"<Alt>F10")
|
||||
item (unmaximize, "", 0,
|
||||
_("Unmaximize window"),
|
||||
_("The keybinding used to unmaximize a window."),
|
||||
"<Alt>F5")
|
||||
|
||||
#ifndef ONLY_BOUND_BY_DEFAULT
|
||||
|
||||
item (toggle_shaded, "", 0,
|
||||
_("Toggle shaded state"),
|
||||
_("The keybinding used to toggle shaded/unshaded state."),
|
||||
NULL)
|
||||
|
||||
#endif /* ONLY_BOUND_BY_DEFAULT */
|
||||
|
||||
item (minimize, "", 0,
|
||||
_("Minimize window"),
|
||||
_("The keybinding used to minimize a window."),
|
||||
"<Alt>F9")
|
||||
item (close, "", 0,
|
||||
_("Close window"),
|
||||
_("The keybinding used to close a window."),
|
||||
"<Alt>F4")
|
||||
item (begin_move, "", 0,
|
||||
_("Move window"),
|
||||
_("The keybinding used to enter \"move mode\" "
|
||||
"and begin moving a window using the keyboard."),
|
||||
"<Alt>F7")
|
||||
item (begin_resize, "", 0,
|
||||
_("Resize window"),
|
||||
("The keybinding used to enter \"resize mode\" "
|
||||
"and begin resizing a window using the keyboard."),
|
||||
"<Alt>F8")
|
||||
|
||||
#ifndef ONLY_BOUND_BY_DEFAULT
|
||||
|
||||
item (toggle_on_all_workspaces, "", 0,
|
||||
_("Toggle window on all workspaces"),
|
||||
_("The keybinding used to toggle whether the window is on all "
|
||||
"workspaces or just one."),
|
||||
NULL)
|
||||
|
||||
|
||||
item (move_to_workspace, "_1", 1,
|
||||
_("Move window to workspace 1"),
|
||||
_("The keybinding used to move a window to workspace 1."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_2", 2,
|
||||
_("Move window to workspace 2"),
|
||||
_("The keybinding used to move a window to workspace 2."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_3", 3,
|
||||
_("Move window to workspace 3"),
|
||||
_("The keybinding used to move a window to workspace 3."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_4", 4,
|
||||
_("Move window to workspace 4"),
|
||||
_("The keybinding used to move a window to workspace 4."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_5", 5,
|
||||
_("Move window to workspace 5"),
|
||||
_("The keybinding used to move a window to workspace 5."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_6", 6,
|
||||
_("Move window to workspace 6"),
|
||||
_("The keybinding used to move a window to workspace 6."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_7", 7,
|
||||
_("Move window to workspace 7"),
|
||||
_("The keybinding used to move a window to workspace 7."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_8", 8,
|
||||
_("Move window to workspace 8"),
|
||||
_("The keybinding used to move a window to workspace 8."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_9", 9,
|
||||
_("Move window to workspace 9"),
|
||||
_("The keybinding used to move a window to workspace 9."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_10", 10,
|
||||
_("Move window to workspace 10"),
|
||||
_("The keybinding used to move a window to workspace 10."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_11", 11,
|
||||
_("Move window to workspace 11"),
|
||||
_("The keybinding used to move a window to workspace 11."),
|
||||
NULL)
|
||||
item (move_to_workspace, "_12", 12,
|
||||
_("Move window to workspace 12"),
|
||||
_("The keybinding used to move a window to workspace 12."),
|
||||
NULL)
|
||||
|
||||
#endif /* ONLY_BOUND_BY_DEFAULT */
|
||||
|
||||
/* META_MOTION_* are negative, and so distinct from workspace numbers,
|
||||
* which are always zero or positive.
|
||||
* If you make use of these constants, you will need to include workspace.h
|
||||
* (which you're probably using already for other reasons anyway).
|
||||
* If your definition of item() throws them away, you don't need to include
|
||||
* workspace.h, of course.
|
||||
*/
|
||||
|
||||
item (move_to_workspace, "_left", META_MOTION_LEFT,
|
||||
_("Move window one workspace to the left"),
|
||||
_("The keybinding used to move a window one workspace to the left."),
|
||||
"<Control><Shift><Alt>Left")
|
||||
item (move_to_workspace, "_right", META_MOTION_RIGHT,
|
||||
_("Move window one workspace to the right"),
|
||||
_("The keybinding used to move a window one workspace to the right."),
|
||||
"<Control><Shift><Alt>Right")
|
||||
item (move_to_workspace, "_up", META_MOTION_UP,
|
||||
_("Move window one workspace up"),
|
||||
_("The keybinding used to move a window one workspace up."),
|
||||
"<Control><Shift><Alt>Up")
|
||||
item (move_to_workspace, "_down", META_MOTION_DOWN,
|
||||
_("Move window one workspace down"),
|
||||
_("The keybinding used to move a window one workspace down."),
|
||||
"<Control><Shift><Alt>Down")
|
||||
|
||||
#ifndef ONLY_BOUND_BY_DEFAULT
|
||||
|
||||
item (raise_or_lower, "", 0,
|
||||
_("Raise obscured window, otherwise lower"),
|
||||
_("This keybinding changes whether a window is above or below "
|
||||
"other windows. If the window is covered by another one, it "
|
||||
"raises the window above all others, and if the window is "
|
||||
"already fully visible, it lowers it below all others."),
|
||||
NULL)
|
||||
item (raise, "", 0,
|
||||
_("Raise window above other windows"),
|
||||
_("This keybinding raises the window above other windows."),
|
||||
NULL)
|
||||
item (lower, "", 0,
|
||||
_("Lower window below other windows"),
|
||||
_("This keybinding lowers a window below other windows."),
|
||||
NULL)
|
||||
|
||||
item (maximize_vertically, "", 0,
|
||||
_("Maximize window vertically"),
|
||||
_("This keybinding resizes a window to fill available "
|
||||
"vertical space."),
|
||||
NULL)
|
||||
item (maximize_horizontally, "", 0,
|
||||
_("Maximize window horizontally"),
|
||||
_("This keybinding resizes a window to fill available "
|
||||
"horizontal space."),
|
||||
NULL)
|
||||
|
||||
item (move_to_corner_nw, "", 0,
|
||||
_("Move window to north-west corner"),
|
||||
_("This keybinding moves a window into the north-west (top left) "
|
||||
"corner of the screen."),
|
||||
NULL)
|
||||
item (move_to_corner_ne, "", 0,
|
||||
_("Move window to north-east corner"),
|
||||
_("This keybinding moves a window into the north-east (top right) "
|
||||
"corner of the screen."),
|
||||
NULL)
|
||||
item (move_to_corner_sw, "", 0,
|
||||
_("Move window to south-west corner"),
|
||||
_("This keybinding moves a window into the north-east (bottom left) "
|
||||
"corner of the screen."),
|
||||
NULL)
|
||||
item (move_to_corner_se, "", 0,
|
||||
_("Move window to south-east corner"),
|
||||
_("This keybinding moves a window into the north-east (bottom right) "
|
||||
"corner of the screen."),
|
||||
NULL)
|
||||
|
||||
item (move_to_side_n, "", 0,
|
||||
_("Move window to north side of screen"),
|
||||
_("This keybinding moves a window against the north (top) "
|
||||
"side of the screen."),
|
||||
NULL)
|
||||
item (move_to_side_s, "", 0,
|
||||
_("Move window to south side of screen"),
|
||||
_("This keybinding moves a window against the south (bottom) "
|
||||
"side of the screen."),
|
||||
NULL)
|
||||
item (move_to_side_e, "", 0,
|
||||
_("Move window to east side of screen"),
|
||||
_("This keybinding moves a window against the east (right) "
|
||||
"side of the screen."),
|
||||
NULL)
|
||||
item (move_to_side_w, "", 0,
|
||||
_("Move window to west side of screen"),
|
||||
_("This keybinding moves a window against the west (left) "
|
||||
"side of the screen."),
|
||||
NULL)
|
||||
|
||||
item (move_to_center, "", 0,
|
||||
_("Move window to center of screen"),
|
||||
_("This keybinding moves a window into the center "
|
||||
"of the screen."),
|
||||
NULL)
|
||||
|
||||
#endif /* ONLY_BOUND_BY_DEFAULT */
|
||||
|
||||
/* eof window-bindings.h */
|
||||
|
Reference in New Issue
Block a user