summaryrefslogtreecommitdiff
path: root/src/core/keybindings.c
diff options
context:
space:
mode:
authorThomas Thurman <tthurman@gnome.org>2008-09-01 01:32:39 +0000
committerThomas James Alexander Thurman <tthurman@src.gnome.org>2008-09-01 01:32:39 +0000
commit2095cce3ab47c70672e953ceda7633cab264227c (patch)
tree81f579f7627d3c6caa7b64d3da21ad603043cf5c /src/core/keybindings.c
parent5128bd4f2884ff625b945ccff5947a2330242b2f (diff)
downloadmetacity-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/core/keybindings.c')
-rw-r--r--src/core/keybindings.c36
1 files changed, 36 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,