diff options
author | Thomas Thurman <tthurman@gnome.org> | 2008-09-01 01:32:39 +0000 |
---|---|---|
committer | Thomas James Alexander Thurman <tthurman@src.gnome.org> | 2008-09-01 01:32:39 +0000 |
commit | 2095cce3ab47c70672e953ceda7633cab264227c (patch) | |
tree | 81f579f7627d3c6caa7b64d3da21ad603043cf5c /src | |
parent | 5128bd4f2884ff625b945ccff5947a2330242b2f (diff) | |
download | metacity-2095cce3ab47c70672e953ceda7633cab264227c.tar.gz |
Add new move_to_center keybinding, requested by Khanh-Dang Nguyen Thu Lam;
2008-09-01 Thomas Thurman <tthurman@gnome.org>
Add new move_to_center keybinding, requested by Khanh-Dang Nguyen
Thu Lam; closes #549979.
* src/include/prefs.h (void): add name of new binding
* src/core/prefs.c: added pref for it
* src/core/keybindings.c (handle_move_to_center): new function
* src/metacity.schemas.in: included new binding
svn path=/trunk/; revision=3839
Diffstat (limited to 'src')
-rw-r--r-- | src/core/keybindings.c | 36 | ||||
-rw-r--r-- | src/core/prefs.c | 1 | ||||
-rw-r--r-- | src/include/prefs.h | 1 | ||||
-rw-r--r-- | src/metacity.schemas.in | 24 |
4 files changed, 62 insertions, 0 deletions
diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 769ed95e..33fd4bf0 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -234,6 +234,11 @@ static void handle_move_to_corner_se (MetaDisplay *display, 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, @@ -489,6 +494,7 @@ static const MetaKeyHandler window_handlers[] = { { 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 } }; @@ -3037,6 +3043,36 @@ handle_move_to_side_w (MetaDisplay *display, } } +static void +handle_move_to_center (MetaDisplay *display, + MetaScreen *screen, + MetaWindow *window, + XEvent *event, + MetaKeyBinding *binding) +{ + MetaRectangle work_area; + MetaRectangle outer; + int orig_x, orig_y; + int frame_width, frame_height; + + if (!window) + return; + + meta_window_get_work_area_all_xineramas (window, &work_area); + meta_window_get_outer_rect (window, &outer); + meta_window_get_position (window, &orig_x, &orig_y); + + frame_width = (window->frame ? window->frame->child_x : 0); + frame_height = (window->frame ? window->frame->child_y : 0); + + meta_window_move_resize (window, + TRUE, + work_area.x + (work_area.width +frame_width -outer.width )/2, + work_area.y + (work_area.height+frame_height-outer.height)/2, + window->rect.width, + window->rect.height); +} + static gboolean process_workspace_switch_grab (MetaDisplay *display, MetaScreen *screen, diff --git a/src/core/prefs.c b/src/core/prefs.c index 82a4c2c9..f8cc3d5c 100644 --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -1929,6 +1929,7 @@ static MetaKeyPref window_bindings[] = { { 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 }, { NULL, NULL, FALSE } }; diff --git a/src/include/prefs.h b/src/include/prefs.h index 3e188531..4a76f409 100644 --- a/src/include/prefs.h +++ b/src/include/prefs.h @@ -231,6 +231,7 @@ void meta_prefs_set_compositing_manager (gboolean whether); #define META_KEYBINDING_MOVE_TO_SIDE_S "move_to_side_s" #define META_KEYBINDING_MOVE_TO_SIDE_E "move_to_side_e" #define META_KEYBINDING_MOVE_TO_SIDE_W "move_to_side_w" +#define META_KEYBINDING_MOVE_TO_CENTER "move_to_center" typedef enum _MetaKeyBindingAction { diff --git a/src/metacity.schemas.in b/src/metacity.schemas.in index 5e4f1dc3..20d34862 100644 --- a/src/metacity.schemas.in +++ b/src/metacity.schemas.in @@ -1329,6 +1329,30 @@ you set </locale> </schema> + <schema> + <key>/schemas/apps/metacity/window_keybindings/move_to_center</key> + <applyto>/apps/metacity/window_keybindings/move_to_center</applyto> + <owner>metacity</owner> + <type>string</type> + <!-- no default for this one --> + <locale name="C"> + <short>Move window to center of screen</short> + <long> + This keybinding moves a window into the center + of the screen. + + The format looks like "<Control>a" or + "<Shift><Alt>F1". + + 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. + </long> + </locale> + </schema> + <!-- Global Keybindings --> |