diff options
Diffstat (limited to 'src/window.c')
-rw-r--r-- | src/window.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/window.c b/src/window.c index a0673049..f0ed4dd0 100644 --- a/src/window.c +++ b/src/window.c @@ -620,6 +620,33 @@ meta_window_focus (MetaWindow *window, } void +meta_window_change_workspace (MetaWindow *window, + MetaWorkspace *workspace) +{ + meta_verbose ("Changing window %s to workspace %d\n", + window->desc, meta_workspace_index (workspace)); + + /* See if we're already on this space */ + if (g_list_find (window->workspaces, workspace) != NULL) + { + meta_verbose ("Already on this workspace\n"); + return; + } + + /* Add first, to maintain invariant that we're always + * on some workspace. + */ + meta_workspace_add_window (workspace, window); + + /* Lamely rely on prepend */ + g_assert (window->workspaces->data == workspace); + + /* Remove from all other spaces */ + while (window->workspaces->next) /* while list size > 1 */ + meta_workspace_remove_window (window->workspaces->next->data, window); +} + +void meta_window_raise (MetaWindow *window) { meta_verbose ("Raising window %s\n", window->desc); |