diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/keybindings.c | 41 | 
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, ¤t_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, | 
