metacity r3970 - in trunk: . src/core



Author: tthurman
Date: Wed Oct 22 01:02:45 2008
New Revision: 3970
URL: http://svn.gnome.org/viewvc/metacity?rev=3970&view=rev

Log:
2008-10-22  Thomas Thurman  <tthurman gnome org>

        Slight transformation of the x-macros used in keybindings
        to make them clearer: write handler names out in full
        because the old suffix system was confusing to people
        skim-reading, and switched the order of the last two
        parameters so more would generally fit on a screen.

        * src/core/keybindings.c, src/core/schema-bindings.c
          src/core/prefs.c: sympathy changes
        * src/core/window-bindings.h, src/core/screen-bindings.h:
          transformation as above



Modified:
   trunk/ChangeLog
   trunk/src/core/keybindings.c
   trunk/src/core/prefs.c
   trunk/src/core/schema-bindings.c
   trunk/src/core/screen-bindings.h
   trunk/src/core/window-bindings.h

Modified: trunk/src/core/keybindings.c
==============================================================================
--- trunk/src/core/keybindings.c	(original)
+++ trunk/src/core/keybindings.c	Wed Oct 22 01:02:45 2008
@@ -55,25 +55,16 @@
                                      MetaKeyBinding *binding);
 
 /* Prototypes for handlers */
-#define item(name, suffix, param, flags, description, stroke) \
+#define keybind(name, handler, param, flags, stroke, description) \
 static void \
-handle_##name (MetaDisplay    *display,\
-               MetaScreen     *screen,\
-               MetaWindow     *window,\
-               XEvent         *event,\
-               MetaKeyBinding *binding);
+handler (MetaDisplay    *display,\
+         MetaScreen     *screen,\
+         MetaWindow     *window,\
+         XEvent         *event,\
+         MetaKeyBinding *binding);
 #include "window-bindings.h"
-#undef item
-
-#define item(name, suffix, param, flags, description, stroke) \
-static void \
-handle_##name (MetaDisplay    *display,\
-               MetaScreen     *screen,\
-               MetaWindow     *window,\
-               XEvent         *event,\
-               MetaKeyBinding *binding);
 #include "screen-bindings.h"
-#undef item
+#undef keybind
 
 /* These can't be bound to anything, but they are used to handle
  * various other events.  TODO: Possibly we should include them as event
@@ -134,11 +125,10 @@
   const MetaKeyHandler *handler;
 };
 
+#define keybind(name, handler, param, flags, stroke, description) \
+   { #name, handler, param, flags },
 static const MetaKeyHandler screen_handlers[] = {
-#define item(name, suffix, param, flags, description, stroke) \
-   { #name suffix, handle_##name, param, flags },
 #include "screen-bindings.h"
-#undef item
   { NULL, NULL, 0, 0 }
 };
   
@@ -146,12 +136,10 @@
 /* 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, flags, description, stroke) \
-  { #name suffix, handle_##name, param, flags },
 #include "window-bindings.h"
-#undef item
    { NULL, NULL, 0, 0 }
 };
+#undef keybind
 
 static void
 reload_keymap (MetaDisplay *display)

Modified: trunk/src/core/prefs.c
==============================================================================
--- trunk/src/core/prefs.c	(original)
+++ trunk/src/core/prefs.c	Wed Oct 22 01:02:45 2008
@@ -1815,8 +1815,8 @@
 #endif /* HAVE_GCONF */
 }
 
-#define item(name, suffix, param, flags, description, stroke) \
-  { #name suffix, NULL, flags & BINDING_REVERSES },
+#define keybind(name, handler, param, flags, stroke, description) \
+  { #name, NULL, flags & BINDING_REVERSES },
 static MetaKeyPref screen_bindings[] = {
 #include "screen-bindings.h"
   { NULL, NULL, FALSE}
@@ -1826,7 +1826,7 @@
 #include "window-bindings.h"
   { NULL, NULL, FALSE }
 };
-#undef item
+#undef keybind
 
 #ifndef HAVE_GCONF
 typedef struct
@@ -1842,21 +1842,20 @@
  * data and move it into code.  Then the compiler would optimise away
  * the problem lines.
  */
+
+#define keybind(name, handler, param, flags, stroke, description) \
+  { #name, keystroke },
+
 static MetaSimpleKeyMapping screen_string_bindings[] = {
-#define item(name, suffix, param, flags, description, keystroke) \
-  { #name suffix,                           keystroke                    },
 #include "screen-bindings.h"
-#undef item
   { NULL,                                   NULL                         }
 };
 
 static MetaSimpleKeyMapping window_string_bindings[] = {
-#define item(name, suffix, param, flags, description, keystroke) \
-  { #name suffix,                           keystroke                    },
 #include "window-bindings.h"
-#undef item
   { NULL,                                   NULL                         }
 };
+#undef keybind
 
 #endif /* NOT HAVE_GCONF */
 

Modified: trunk/src/core/schema-bindings.c
==============================================================================
--- trunk/src/core/schema-bindings.c	(original)
+++ trunk/src/core/schema-bindings.c	Wed Oct 22 01:02:45 2008
@@ -26,10 +26,6 @@
  * the GConf .schemas file.
  *
  * FIXME: also need to make 50-metacity-desktop-key.xml
- *
- * FIXME: this actually breaks i18n because the schemas.in->schemas process
- * doesn't recognise the concatenated strings, and so we will have to do
- * them ourselves; this will need to be fixed before the next release.
  */
 
 #include <stdio.h>
@@ -132,16 +128,16 @@
 
   if (!feof (metacity_schemas_in_in))
     {
-#define item(name, suffix, param, flags, description, keystroke) \
+#define keybind(name, handler, param, flags, stroke, description) \
   single_stanza ( \
                flags & BINDING_PER_WINDOW, \
-               #name suffix, \
-               keystroke, \
+               #name, \
+               stroke, \
                flags & BINDING_REVERSES, \
                description);
 #include "window-bindings.h"
 #include "screen-bindings.h"
-#undef item
+#undef keybind
     }
 
   while (!feof (metacity_schemas_in_in))

Modified: trunk/src/core/screen-bindings.h
==============================================================================
--- trunk/src/core/screen-bindings.h	(original)
+++ trunk/src/core/screen-bindings.h	Wed Oct 22 01:02:45 2008
@@ -23,7 +23,7 @@
  * A list of screen keybinding information.
  *
  * Each action which can have a keystroke bound to it is listed below.
- * To use this file, define "item" to be a seven-argument macro (you can
+ * To use this file, define keybind() to be a seven-argument macro (you can
  * throw any of the arguments you please away), include this file,
  * and then undefine the macro again.
  *
@@ -46,30 +46,34 @@
  * directory which will fix that, but it needs integrating into the build
  * process.
  *
- * The arguments to item() are:
+ * The arguments to keybind() are:
  *   1) the name of the binding; a bareword identifier
  *              (it's fine if it happens to clash with a C reserved word)
- *   2) a string to add to the binding name to make the handler name
- *              (usually the empty string)
+ *   2) the name of the function which implements it.
+ *              Clearly we could have guessed this from the binding very often,
+ *              but we choose to write it in full for the benefit of grep.
  *   3) an integer parameter to pass to the handler
  *   4) a set of boolean flags, ORed together:
  *       BINDING_PER_WINDOW  - this is a window-based binding
- *                             (not used in this file)
+ *                             (all in window-bindings.h use this,
+ *                             and none in screen-bindings.h)
  *       BINDING_REVERSES    - the binding can reverse if you hold down Shift
  *       BINDING_IS_REVERSED - the same, but the senses are reversed from the
  *                             handler's point of view (let me know if I should
  *                             explain this better)
+ *      or 0 if no flag applies.
  *
- *   5) a short description.  Mostly, you won't use this.
- *          It must be marked translatable (i.e. inside "_(...)").
- *   6) a string representing the default binding.
+ *   5) a string representing the default binding.
  *          If this is NULL, the action is unbound by default.
+ *          Please use NULL and not "disabled".
+ *   6) a short description.
+ *          It must be marked translatable (i.e. inside "_(...)").
  *
  * Don't try to do XML entity escaping anywhere in the strings.
  */
 
-#ifndef item
-#error "item () must be defined when you include screen-bindings.h"
+#ifndef keybind
+#error "keybind () must be defined when you include screen-bindings.h"
 #endif
 
 /***********************************/
@@ -81,10 +85,6 @@
 #define BINDING_REVERSES      0x02
 #define BINDING_IS_REVERSED   0x04
 
-/* FIXME: There is somewhere better for these; remove them */
-#define PANEL_MAIN_MENU            -1
-#define PANEL_RUN_DIALOG           -2
-
 #endif /* _BINDINGS_DEFINED_CONSTANTS */
 
 /***********************************/
@@ -92,66 +92,54 @@
 /* convenience, since in this file they must always be set together */
 #define REVERSES_AND_REVERSED (BINDING_REVERSES | BINDING_IS_REVERSED)
 
-item (switch_to_workspace, "_1", 0, 0,
-        _("Switch to workspace 1"),
-        NULL)
-item (switch_to_workspace, "_2", 1, 0,
-        _("Switch to workspace 2"),
-        NULL)
-item (switch_to_workspace, "_3", 2, 0,
-        _("Switch to workspace 3"),
-        NULL)
-item (switch_to_workspace, "_4", 3, 0,
-        _("Switch to workspace 4"),
-        NULL)
-item (switch_to_workspace, "_5", 4, 0,
-        _("Switch to workspace 5"),
-        NULL)
-item (switch_to_workspace, "_6", 5, 0,
-        _("Switch to workspace 6"),
-        NULL)
-item (switch_to_workspace, "_7", 6, 0,
-        _("Switch to workspace 7"),
-        NULL)
-item (switch_to_workspace, "_8", 7, 0,
-        _("Switch to workspace 8"),
-        NULL)
-item (switch_to_workspace, "_9", 8, 0,
-        _("Switch to workspace 9"),
-        NULL)
-item (switch_to_workspace, "_10", 9, 0,
-        _("Switch to workspace 10"),
-        NULL)
-item (switch_to_workspace, "_11", 10, 0,
-        _("Switch to workspace 11"),
-        NULL)
-item (switch_to_workspace, "_12", 11, 0,
-        _("Switch to workspace 12"),
-        NULL)
+keybind (switch_to_workspace_1,  handle_switch_to_workspace, 0, 0, NULL,
+        _("Switch to workspace 1"))
+keybind (switch_to_workspace_2,  handle_switch_to_workspace, 1, 0, NULL,
+        _("Switch to workspace 2"))
+keybind (switch_to_workspace_3,  handle_switch_to_workspace, 2, 0, NULL,
+        _("Switch to workspace 3"))
+keybind (switch_to_workspace_4,  handle_switch_to_workspace, 3, 0, NULL,
+        _("Switch to workspace 4"))
+keybind (switch_to_workspace_5,  handle_switch_to_workspace, 4, 0, NULL,
+        _("Switch to workspace 5"))
+keybind (switch_to_workspace_6,  handle_switch_to_workspace, 5, 0, NULL,
+        _("Switch to workspace 6"))
+keybind (switch_to_workspace_7,  handle_switch_to_workspace, 6, 0, NULL,
+        _("Switch to workspace 7"))
+keybind (switch_to_workspace_8,  handle_switch_to_workspace, 7, 0, NULL,
+        _("Switch to workspace 8"))
+keybind (switch_to_workspace_9,  handle_switch_to_workspace, 8, 0, NULL,
+        _("Switch to workspace 9"))
+keybind (switch_to_workspace_10, handle_switch_to_workspace, 9, 0, NULL,
+        _("Switch to workspace 10"))
+keybind (switch_to_workspace_11, handle_switch_to_workspace, 10, 0, NULL,
+        _("Switch to workspace 11"))
+keybind (switch_to_workspace_12, handle_switch_to_workspace, 11, 0, NULL,
+        _("Switch to workspace 12"))
 
 /* 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
+ * If your definition of keybind() throws them away, you don't need to include
  * workspace.h, of course.
  */
 
-item (switch_to_workspace, "_left",  META_MOTION_LEFT,  0,
-        _("Switch to workspace on the left of the current workspace"),
-        "<Control><Alt>Left")
-
-item (switch_to_workspace, "_right", META_MOTION_RIGHT, 0,
-        _("Switch to workspace on the right of the current workspace"),
-        "<Control><Alt>Right")
-
-item (switch_to_workspace, "_up",    META_MOTION_UP,    0,
-        _("Switch to workspace above the current workspace"),
-        "<Control><Alt>Up")
-
-item (switch_to_workspace, "_down",  META_MOTION_DOWN,  0,
-        _("Switch to workspace below the current workspace"),
-        "<Control><Alt>Down")
+keybind (switch_to_workspace_left, handle_switch_to_workspace,
+         META_MOTION_LEFT, 0, "<Control><Alt>Left",
+        _("Switch to workspace on the left of the current workspace"))
+
+keybind (switch_to_workspace_right, handle_switch_to_workspace,
+         META_MOTION_RIGHT, 0, "<Control><Alt>Right",
+        _("Switch to workspace on the right of the current workspace"))
+
+keybind (switch_to_workspace_up, handle_switch_to_workspace,
+         META_MOTION_UP, 0, "<Control><Alt>Up",
+        _("Switch to workspace above the current workspace"))
+
+keybind (switch_to_workspace_down, handle_switch_to_workspace,
+         META_MOTION_DOWN, 0, "<Control><Alt>Down",
+        _("Switch to workspace below the current workspace"))
 
 /***********************************/
 
@@ -160,110 +148,109 @@
  *
  * TODO: "NORMAL" and "DOCKS" should be renamed to the same name as their
  * action, for obviousness.
+ *
+ * TODO: handle_switch and handle_cycle should probably really be the
+ * same function checking a bit in the parameter for difference.
  */
 
-item (switch, "_group",            META_TAB_LIST_GROUP,    BINDING_REVERSES,
-        _("Move between windows of an application, using a popup window"),
-        NULL)
-item (switch, "_group_backwards",  META_TAB_LIST_GROUP,    REVERSES_AND_REVERSED,
+keybind (switch_group,              handle_switch,        META_TAB_LIST_GROUP,
+         BINDING_REVERSES,       NULL,
+        _("Move between windows of an application, using a popup window"))
+keybind (switch_group_backwards,    handle_switch,        META_TAB_LIST_GROUP,
+         REVERSES_AND_REVERSED,  NULL,
         _("Move backwards between windows of an application, "
-          "using a popup window"),
-        NULL)
-item (switch, "_windows",          META_TAB_LIST_NORMAL,   BINDING_REVERSES,
-        _("Move between windows, using a popup window"),
-        "<Alt>Tab")
-item (switch, "_windows_backwards",META_TAB_LIST_NORMAL,   REVERSES_AND_REVERSED,
-        _("Move backwards between windows, using a popup window"),
-        NULL)
-item (switch, "_panels",           META_TAB_LIST_DOCKS,    BINDING_REVERSES,
-        _("Move between panels and the desktop, using a popup window"),
-        "<Control><Alt>Tab")
-item (switch, "_panels_backwards", META_TAB_LIST_DOCKS,    REVERSES_AND_REVERSED,
-        _("Move backwards between panels and the desktop, "
-          "using a popup window"),
-        NULL)
-item (cycle,  "_group",            META_TAB_LIST_GROUP,    BINDING_REVERSES,
-        _("Move between windows of an application immediately"),
-        "<Alt>F6")
-item (cycle,  "_group_backwards",  META_TAB_LIST_GROUP,    REVERSES_AND_REVERSED,
-        _("Move backwards between windows of an application immediately"),
-        NULL)
-item (cycle,  "_windows",          META_TAB_LIST_NORMAL,   BINDING_REVERSES,
-        _("Move between windows immediately"),
-        "<Alt>Escape")
-item (cycle,  "_windows_backwards",META_TAB_LIST_NORMAL,   REVERSES_AND_REVERSED,
-        _("Move backwards between windows immediately"),
-        NULL)
-item (cycle,  "_panels",           META_TAB_LIST_DOCKS,    BINDING_REVERSES,
-        _("Move between panels and the desktop immediately"),
-        "<Control><Alt>Escape")
-item (cycle,  "_panels_backwards", META_TAB_LIST_DOCKS,    REVERSES_AND_REVERSED,
-        _("Move backwards between panels and the desktop immediately"),
-        NULL)
+          "using a popup window"))
+keybind (switch_windows,            handle_switch,        META_TAB_LIST_NORMAL,
+         BINDING_REVERSES,       "<Alt>Tab",
+        _("Move between windows, using a popup window"))
+keybind (switch_windows_backwards,  handle_switch,        META_TAB_LIST_NORMAL,
+         REVERSES_AND_REVERSED,  NULL,
+        _("Move backwards between windows, using a popup window"))
+keybind (switch_panels,             handle_switch,        META_TAB_LIST_DOCKS,
+         BINDING_REVERSES,       "<Control><Alt>Tab",
+        _("Move between panels and the desktop, using a popup window"))
+keybind (switch_panels_backwards,   handle_switch,        META_TAB_LIST_DOCKS,
+         REVERSES_AND_REVERSED,  NULL,
+         _("Move backwards between panels and the desktop, "
+          "using a popup window"))
+
+keybind (cycle_group,               handle_cycle,         META_TAB_LIST_GROUP,
+        BINDING_REVERSES,        "<Alt>F6",
+        _("Move between windows of an application immediately"))
+keybind (cycle_group_backwards,     handle_cycle,         META_TAB_LIST_GROUP,
+        REVERSES_AND_REVERSED,   NULL,
+        _("Move backwards between windows of an application immediately"))
+keybind (cycle_windows,             handle_cycle,         META_TAB_LIST_NORMAL,
+        BINDING_REVERSES,        "<Alt>Escape",
+        _("Move between windows immediately"))
+keybind (cycle_windows_backwards,   handle_cycle,         META_TAB_LIST_NORMAL,
+        REVERSES_AND_REVERSED,   NULL,
+        _("Move backwards between windows immediately"))
+keybind (cycle_panels,              handle_cycle,         META_TAB_LIST_DOCKS,
+        BINDING_REVERSES,        "<Control><Alt>Escape",
+        _("Move between panels and the desktop immediately"))
+keybind (cycle_panels_backwards,    handle_cycle,         META_TAB_LIST_DOCKS,
+        REVERSES_AND_REVERSED,   NULL,
+        _("Move backwards between panels and the desktop immediately"))
 
 /***********************************/
      
-item (show_desktop, "", 0, 0,
-      _("Hide all normal windows and set focus to the desktop background"),
-      "<Control><Alt>d")
-item (panel, "_main_menu", META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0,
-      _("Show the panel's main menu"),
-      "<Alt>F1")
-item (panel, "_run_dialog", META_KEYBINDING_ACTION_PANEL_RUN_DIALOG, 0,
-      _("Show the panel's \"Run Application\" dialog box"),
-      "<Alt>F2")
+keybind (show_desktop, handle_show_desktop, 0, 0, "<Control><Alt>d",
+      _("Hide all normal windows and set focus to the desktop background"))
+keybind (panel_main_menu, handle_panel,
+       META_KEYBINDING_ACTION_PANEL_MAIN_MENU, 0, "<Alt>F1",
+      _("Show the panel's main menu"))
+keybind (panel_run_dialog, handle_panel,
+       META_KEYBINDING_ACTION_PANEL_RUN_DIALOG, 0, "<Alt>F2",
+      _("Show the panel's \"Run Application\" dialog box"))
 
 /* Yes, the param is offset by one.  Historical reasons.  (Maybe worth fixing
  * at some point.)  The description is NULL here because the stanza is
  * irregularly shaped in metacity.schemas.in.  This will probably be fixed
  * as well.
  */
-item (run_command, "_1",   0, 0, NULL, NULL)
-item (run_command, "_2",   1, 0, NULL, NULL)
-item (run_command, "_3",   2, 0, NULL, NULL)
-item (run_command, "_4",   3, 0, NULL, NULL)
-item (run_command, "_5",   4, 0, NULL, NULL)
-item (run_command, "_6",   5, 0, NULL, NULL)
-item (run_command, "_7",   6, 0, NULL, NULL)
-item (run_command, "_8",   7, 0, NULL, NULL)
-item (run_command, "_9",   8, 0, NULL, NULL)
-item (run_command, "_10",  9, 0, NULL, NULL)
-item (run_command, "_11", 10, 0, NULL, NULL)
-item (run_command, "_12", 11, 0, NULL, NULL)
-item (run_command, "_13", 12, 0, NULL, NULL)
-item (run_command, "_14", 13, 0, NULL, NULL)
-item (run_command, "_15", 14, 0, NULL, NULL)
-item (run_command, "_16", 15, 0, NULL, NULL)
-item (run_command, "_17", 16, 0, NULL, NULL)
-item (run_command, "_18", 17, 0, NULL, NULL)
-item (run_command, "_19", 18, 0, NULL, NULL)
-item (run_command, "_20", 19, 0, NULL, NULL)
-item (run_command, "_21", 20, 0, NULL, NULL)
-item (run_command, "_22", 21, 0, NULL, NULL)
-item (run_command, "_23", 22, 0, NULL, NULL)
-item (run_command, "_24", 23, 0, NULL, NULL)
-item (run_command, "_25", 24, 0, NULL, NULL)
-item (run_command, "_26", 25, 0, NULL, NULL)
-item (run_command, "_27", 26, 0, NULL, NULL)
-item (run_command, "_28", 27, 0, NULL, NULL)
-item (run_command, "_29", 28, 0, NULL, NULL)
-item (run_command, "_30", 29, 0, NULL, NULL)
-item (run_command, "_31", 30, 0, NULL, NULL)
-item (run_command, "_32", 31, 0, NULL, NULL)
-
-item (run_command, "_screenshot", 32, 0,
-      _("Take a screenshot"),
-      "Print")
-item (run_command, "_window_screenshot", 33, 0,
-      _("Take a screenshot of a window"),
-      "<Alt>Print")
-
-item (run_terminal, "", 0, 0,
-      _("Run a terminal"),
-      NULL)
+keybind (run_command_1,  handle_run_command,  0, 0, NULL, NULL)
+keybind (run_command_2,  handle_run_command,  1, 0, NULL, NULL)
+keybind (run_command_3,  handle_run_command,  2, 0, NULL, NULL)
+keybind (run_command_4,  handle_run_command,  3, 0, NULL, NULL)
+keybind (run_command_5,  handle_run_command,  4, 0, NULL, NULL)
+keybind (run_command_6,  handle_run_command,  5, 0, NULL, NULL)
+keybind (run_command_7,  handle_run_command,  6, 0, NULL, NULL)
+keybind (run_command_8,  handle_run_command,  7, 0, NULL, NULL)
+keybind (run_command_9,  handle_run_command,  8, 0, NULL, NULL)
+keybind (run_command_10, handle_run_command,  9, 0, NULL, NULL)
+keybind (run_command_11, handle_run_command, 10, 0, NULL, NULL)
+keybind (run_command_12, handle_run_command, 11, 0, NULL, NULL)
+keybind (run_command_13, handle_run_command, 12, 0, NULL, NULL)
+keybind (run_command_14, handle_run_command, 13, 0, NULL, NULL)
+keybind (run_command_15, handle_run_command, 14, 0, NULL, NULL)
+keybind (run_command_16, handle_run_command, 15, 0, NULL, NULL)
+keybind (run_command_17, handle_run_command, 16, 0, NULL, NULL)
+keybind (run_command_18, handle_run_command, 17, 0, NULL, NULL)
+keybind (run_command_19, handle_run_command, 18, 0, NULL, NULL)
+keybind (run_command_20, handle_run_command, 19, 0, NULL, NULL)
+keybind (run_command_21, handle_run_command, 20, 0, NULL, NULL)
+keybind (run_command_22, handle_run_command, 21, 0, NULL, NULL)
+keybind (run_command_23, handle_run_command, 22, 0, NULL, NULL)
+keybind (run_command_24, handle_run_command, 23, 0, NULL, NULL)
+keybind (run_command_25, handle_run_command, 24, 0, NULL, NULL)
+keybind (run_command_26, handle_run_command, 25, 0, NULL, NULL)
+keybind (run_command_27, handle_run_command, 26, 0, NULL, NULL)
+keybind (run_command_28, handle_run_command, 27, 0, NULL, NULL)
+keybind (run_command_29, handle_run_command, 28, 0, NULL, NULL)
+keybind (run_command_30, handle_run_command, 29, 0, NULL, NULL)
+keybind (run_command_31, handle_run_command, 30, 0, NULL, NULL)
+keybind (run_command_32, handle_run_command, 31, 0, NULL, NULL)
+
+keybind (run_command_screenshot, handle_run_command, 32, 0, "Print",
+      _("Take a screenshot"))
+keybind (run_command_window_screenshot, handle_run_command, 33, 0,"<Alt>Print",
+      _("Take a screenshot of a window"))
+
+keybind (run_terminal, handle_run_terminal, 0, 0, NULL, _("Run a terminal"))
 
 /* No description because this is undocumented */
-item (set_spew_mark, "", 0, 0, NULL, NULL)
+keybind (set_spew_mark, handle_set_spew_mark, 0, 0, NULL, NULL)
 
 #undef REVERSES_AND_REVERSED
 

Modified: trunk/src/core/window-bindings.h
==============================================================================
--- trunk/src/core/window-bindings.h	(original)
+++ trunk/src/core/window-bindings.h	Wed Oct 22 01:02:45 2008
@@ -20,51 +20,13 @@
  */
 
 /**
- * \file  A list of window keybinding information.
+ * A list of window keybinding 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) the name of the binding; a bareword identifier
- *   2) a suffix to add to the binding name to make the handler name
- *              (usually the empty string)
- *   3) an integer parameter to pass to the handler
- *   4) a set of boolean flags, ORed together.
- *         This is used in *this* file for completeness, but at present
- *         is not checked anywhere.  We use the flag BINDING_PER_WINDOW
- *         on all window-based bindings (i.e. every binding in this file).
- *   5) a short description.  Mostly, you won't use this.
- *         It must be marked translatable (i.e. inside "_(...)").
- *   6) 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.
- *
- * Possible future work:
- *  - merge with screen-bindings.h somehow
- *  - "suffix" is confusing; write it out in full
+ * Information about how this file works is in screen-bindings.h.
  */
 
-#ifndef item
-#error "item () must be defined when you include window-bindings.h"
+#ifndef keybind
+#error "keybind () must be defined when you include window-bindings.h"
 #endif
 
 /***********************************/
@@ -78,158 +40,138 @@
 #define BINDING_REVERSES      0x02
 #define BINDING_IS_REVERSED   0x04
 
-/* FIXME: There is somewhere better for these; remove them */
-#define PANEL_MAIN_MENU            -1
-#define PANEL_RUN_DIALOG           -2
-
 #endif /* _BINDINGS_DEFINED_CONSTANTS */
 
 
-item (activate_window_menu, "", 0, BINDING_PER_WINDOW,
-        _("Activate the window menu"),
-        "<Alt>Space")
-
-item (toggle_fullscreen, "", 0, BINDING_PER_WINDOW,
-        _("Toggle fullscreen mode"),
-        NULL)
-item (toggle_maximized, "", 0, BINDING_PER_WINDOW,
-        _("Toggle maximization state"),
-        NULL)
-item (toggle_above, "", 0, BINDING_PER_WINDOW,
-        _("Toggle whether a window will always be visible over other windows"),
-          NULL)
-
-item (maximize, "", 0, BINDING_PER_WINDOW,
-        _("Maximize window"),
-        "<Alt>F10")
-item (unmaximize, "", 0, BINDING_PER_WINDOW,
-        _("Unmaximize window"),
-        "<Alt>F5")
-
-item (toggle_shaded, "", 0, BINDING_PER_WINDOW,
-        _("Toggle shaded state"),
-        NULL)
-        
-item (minimize, "", 0, BINDING_PER_WINDOW,
-        _("Minimize window"),
-        "<Alt>F9")
-item (close, "", 0, BINDING_PER_WINDOW,
-        _("Close window"),
-        "<Alt>F4")
-item (begin_move, "", 0, BINDING_PER_WINDOW,
-        _("Move window"),
-        "<Alt>F7")
-item (begin_resize, "", 0, BINDING_PER_WINDOW,
-        _("Resize window"),
-        "<Alt>F8")
-
-item (toggle_on_all_workspaces, "", 0, BINDING_PER_WINDOW,
-        _("Toggle whether window is on all workspaces or just one"),
-          NULL)
-
-item (move_to_workspace, "_1", 0, BINDING_PER_WINDOW,
-        _("Move window to workspace 1"),
-        NULL)
-item (move_to_workspace, "_2", 1, BINDING_PER_WINDOW,
-        _("Move window to workspace 2"),
-        NULL)
-item (move_to_workspace, "_3", 2, BINDING_PER_WINDOW,
-        _("Move window to workspace 3"),
-        NULL)
-item (move_to_workspace, "_4", 3, BINDING_PER_WINDOW,
-        _("Move window to workspace 4"),
-        NULL)
-item (move_to_workspace, "_5", 4, BINDING_PER_WINDOW,
-        _("Move window to workspace 5"),
-        NULL)
-item (move_to_workspace, "_6", 5, BINDING_PER_WINDOW,
-        _("Move window to workspace 6"),
-        NULL)
-item (move_to_workspace, "_7", 6, BINDING_PER_WINDOW,
-        _("Move window to workspace 7"),
-        NULL)
-item (move_to_workspace, "_8", 7, BINDING_PER_WINDOW,
-        _("Move window to workspace 8"),
-        NULL)
-item (move_to_workspace, "_9", 8, BINDING_PER_WINDOW,
-        _("Move window to workspace 9"),
-        NULL)
-item (move_to_workspace, "_10", 9, BINDING_PER_WINDOW,
-        _("Move window to workspace 10"),
-        NULL)
-item (move_to_workspace, "_11", 10, BINDING_PER_WINDOW,
-        _("Move window to workspace 11"),
-        NULL)
-item (move_to_workspace, "_12", 11, BINDING_PER_WINDOW,
-        _("Move window to workspace 12"),
-        NULL)
+keybind (activate_window_menu, handle_activate_window_menu, 0,
+        BINDING_PER_WINDOW, "<Alt>Space",
+        _("Activate the window menu"))
+keybind (toggle_fullscreen, handle_toggle_fullscreen, 0, BINDING_PER_WINDOW,
+        NULL,
+        _("Toggle fullscreen mode"))
+keybind (toggle_maximized, handle_toggle_maximized, 0, BINDING_PER_WINDOW, NULL,
+        _("Toggle maximization state"))
+keybind (toggle_above, handle_toggle_above, 0, BINDING_PER_WINDOW, NULL,
+        _("Toggle whether a window will always be visible over other windows"))
+keybind (maximize, handle_maximize, 0, BINDING_PER_WINDOW, "<Alt>F10",
+        _("Maximize window"))
+keybind (unmaximize, handle_unmaximize, 0, BINDING_PER_WINDOW, "<Alt>F5",
+        _("Unmaximize window"))
+keybind (toggle_shaded, handle_toggle_shaded, 0, BINDING_PER_WINDOW, NULL,
+        _("Toggle shaded state"))
+keybind (minimize, handle_minimize, 0, BINDING_PER_WINDOW, "<Alt>F9",
+        _("Minimize window"))
+keybind (close, handle_close, 0, BINDING_PER_WINDOW, "<Alt>F4",
+        _("Close window"))
+keybind (begin_move, handle_begin_move, 0, BINDING_PER_WINDOW, "<Alt>F7",
+        _("Move window"))
+keybind (begin_resize, handle_begin_resize, 0, BINDING_PER_WINDOW, "<Alt>F8",
+        _("Resize window"))
+keybind (toggle_on_all_workspaces, handle_toggle_on_all_workspaces, 0,
+         BINDING_PER_WINDOW, NULL,
+        _("Toggle whether window is on all workspaces or just one"))
+
+keybind (move_to_workspace_1, handle_move_to_workspace, 0, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 1"))
+keybind (move_to_workspace_2, handle_move_to_workspace, 1, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 2"))
+keybind (move_to_workspace_3, handle_move_to_workspace, 2, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 3"))
+keybind (move_to_workspace_4, handle_move_to_workspace, 3, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 4"))
+keybind (move_to_workspace_5, handle_move_to_workspace, 4, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 5"))
+keybind (move_to_workspace_6, handle_move_to_workspace, 5, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 6"))
+keybind (move_to_workspace_7, handle_move_to_workspace, 6, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 7"))
+keybind (move_to_workspace_8, handle_move_to_workspace, 7, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 8"))
+keybind (move_to_workspace_9, handle_move_to_workspace, 8, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 9"))
+keybind (move_to_workspace_10, handle_move_to_workspace, 9, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 10"))
+keybind (move_to_workspace_11, handle_move_to_workspace, 10, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 11"))
+keybind (move_to_workspace_12, handle_move_to_workspace, 11, BINDING_PER_WINDOW,
+        NULL,
+        _("Move window to workspace 12"))
 
 /* 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
+ * If your definition of keybind() throws them away, you don't need to include
  * workspace.h, of course.
  */
 
-item (move_to_workspace, "_left", META_MOTION_LEFT, BINDING_PER_WINDOW,
-        _("Move window one workspace to the left"),
-        "<Control><Shift><Alt>Left")
-item (move_to_workspace, "_right", META_MOTION_RIGHT, BINDING_PER_WINDOW,
-        _("Move window one workspace to the right"),
-        "<Control><Shift><Alt>Right")
-item (move_to_workspace, "_up", META_MOTION_UP, BINDING_PER_WINDOW,
-        _("Move window one workspace up"),
-        "<Control><Shift><Alt>Up")
-item (move_to_workspace, "_down", META_MOTION_DOWN, BINDING_PER_WINDOW,
-        _("Move window one workspace down"),
-        "<Control><Shift><Alt>Down")
-
-item (raise_or_lower, "", 0, BINDING_PER_WINDOW,
-        _("Raise window if it's covered by another window, otherwise lower it"),
-           NULL)
-item (raise, "", 0, BINDING_PER_WINDOW,
-        _("Raise window above other windows"),
-        NULL)
-item (lower, "", 0, BINDING_PER_WINDOW,
-        _("Lower window below other windows"),
-        NULL)
-
-item (maximize_vertically, "", 0, BINDING_PER_WINDOW,
-        _("Maximize window vertically"),
-          NULL)
-item (maximize_horizontally, "", 0, BINDING_PER_WINDOW,
-        _("Maximize window horizontally"),
-          NULL)
-
-item (move_to_corner_nw, "", 0, BINDING_PER_WINDOW,
-        _("Move window to north-west (top left) corner"),
-          NULL)
-item (move_to_corner_ne, "", 0, BINDING_PER_WINDOW,
-        _("Move window to north-east (top right) corner"),
-          NULL)
-item (move_to_corner_sw, "", 0, BINDING_PER_WINDOW,
-        _("Move window to south-west (bottom left) corner"),
-          NULL)
-item (move_to_corner_se, "", 0, BINDING_PER_WINDOW,
-        _("Move window to south-east (bottom right) corner"),
-          NULL)
-
-item (move_to_side_n, "", 0, BINDING_PER_WINDOW,
-        _("Move window to north (top) side of screen"),
-          NULL)
-item (move_to_side_s, "", 0, BINDING_PER_WINDOW,
-        _("Move window to south (bottom) side of screen"),
-          NULL)
-item (move_to_side_e, "", 0, BINDING_PER_WINDOW,
-        _("Move window to east (right) side of screen"),
-          NULL)
-item (move_to_side_w, "", 0, BINDING_PER_WINDOW,
-        _("Move window to west (left) side of screen"),
-          NULL)
-item (move_to_center, "", 0, BINDING_PER_WINDOW,
-        _("Move window to center of screen"),
-          NULL)
+keybind (move_to_workspace_left, handle_move_to_workspace,
+         META_MOTION_LEFT, BINDING_PER_WINDOW, "<Control><Shift><Alt>Left",
+        _("Move window one workspace to the left"))
+keybind (move_to_workspace_right, handle_move_to_workspace,
+         META_MOTION_RIGHT, BINDING_PER_WINDOW, "<Control><Shift><Alt>Right",
+        _("Move window one workspace to the right"))
+keybind (move_to_workspace_up, handle_move_to_workspace,
+         META_MOTION_UP, BINDING_PER_WINDOW, "<Control><Shift><Alt>Up",
+        _("Move window one workspace up"))
+keybind (move_to_workspace_down, handle_move_to_workspace,
+         META_MOTION_DOWN, BINDING_PER_WINDOW, "<Control><Shift><Alt>Down",
+        _("Move window one workspace down"))
+
+keybind (raise_or_lower, handle_raise_or_lower, 0, BINDING_PER_WINDOW, NULL,
+        _("Raise window if it's covered by another window, otherwise lower it"))
+keybind (raise, handle_raise, 0, BINDING_PER_WINDOW, NULL,
+        _("Raise window above other windows"))
+keybind (lower, handle_lower, 0, BINDING_PER_WINDOW, NULL,
+        _("Lower window below other windows"))
+
+keybind (maximize_vertically, handle_maximize_vertically, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Maximize window vertically"))
+
+keybind (maximize_horizontally, handle_maximize_horizontally, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Maximize window horizontally"))
+
+keybind (move_to_corner_nw, handle_move_to_corner_nw, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to north-west (top left) corner"))
+keybind (move_to_corner_ne, handle_move_to_corner_ne, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to north-east (top right) corner"))
+keybind (move_to_corner_sw, handle_move_to_corner_sw, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to south-west (bottom left) corner"))
+keybind (move_to_corner_nw, handle_move_to_corner_se, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to south-east (bottom right) corner"))
+
+keybind (move_to_side_n, handle_move_to_side_n, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to north (top) side of screen"))
+keybind (move_to_side_s, handle_move_to_side_s, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to south (bottom) side of screen"))
+keybind (move_to_side_e, handle_move_to_side_e, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to east (right) side of screen"))
+keybind (move_to_side_w, handle_move_to_side_w, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to west (left) side of screen"))
+keybind (move_to_center, handle_move_to_center, 0,
+        BINDING_PER_WINDOW, NULL,
+        _("Move window to center of screen"))
 
 /* eof window-bindings.h */
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]