summaryrefslogtreecommitdiff
path: root/src/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c27
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);