summaryrefslogtreecommitdiff
path: root/src/core/keybindings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/keybindings.c')
-rw-r--r--src/core/keybindings.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 2b71b3fa..11b8daf4 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -2672,6 +2672,47 @@ handle_move_to_center (MetaDisplay *display,
window->rect.height);
}
+
+static void
+handle_move_to_monitor (MetaDisplay *display,
+ MetaScreen *screen,
+ MetaWindow *window,
+ XEvent *event,
+ MetaKeyBinding *binding)
+{
+ MetaScreenDirection move_direction = binding->handler->data;
+ MetaXineramaScreenInfo* current;
+ MetaXineramaScreenInfo* neighbour;
+ MetaRectangle current_window_rect;
+ int new_x;
+ int new_y;
+
+
+ current = meta_screen_get_xinerama_for_window(screen, window);
+ neighbour = meta_screen_get_xinerama_neighbor(screen, current->number, move_direction);
+
+ if(neighbour == NULL ||
+ current->number == neighbour->number)
+ return;
+
+ if(META_WINDOW_TILED (window))
+ {
+ window->tile_monitor_number = neighbour->number;
+ return;
+ }
+
+ meta_window_get_client_root_coords(window, &current_window_rect);
+
+ new_x = current_window_rect.x - current->rect.x + neighbour->rect.x;
+ new_y = current_window_rect.y - current->rect.y + neighbour->rect.y;
+ /* target_rect.width = window->rect.width; */
+ /* target_rect.height = window->rect.height; */
+ /* Maybe do some resizing? */
+
+ meta_window_move(window, TRUE, new_x, new_y);
+
+}
+
static gboolean
process_workspace_switch_grab (MetaDisplay *display,
MetaScreen *screen,