# HG changeset patch # User Antoine Bodin # Date 1298410199 -3600 # Node ID f833e6b4eead06891b8a142015fafb7463396e0d # Parent 05bcd96a7adb91a6a50353247b3c7e602b0cd986 Add patch for superswitcher I forgot diff -r 05bcd96a7adb -r f833e6b4eead superswitcher/stuff/superswitcher-0.6-wnck-workspace.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/superswitcher/stuff/superswitcher-0.6-wnck-workspace.patch Tue Feb 22 22:29:59 2011 +0100 @@ -0,0 +1,62 @@ +It seems like wnck_window_is_skip_pager isn't all we need to check. + +--- superswitcher/src/screen.c ++++ superswitcher/src/screen.c +@@ -505,6 +505,7 @@ + static SSWindow * + add_window_to_screen (SSScreen *screen, WnckWindow *wnck_window) + { ++ WnckWorkspace *wnck_workspace; + SSWindow *window; + SSWorkspace *workspace; + int n; +@@ -513,7 +514,13 @@ + return NULL; + } + +- n = wnck_workspace_get_number (wnck_window_get_workspace (wnck_window)); ++ wnck_workspace = wnck_window_get_workspace (wnck_window); ++ ++ if (wnck_workspace == NULL) { ++ return NULL; ++ } ++ ++ n = wnck_workspace_get_number (wnck_workspace); + workspace = ss_screen_get_nth_workspace (screen, n); + + window = ss_window_new (workspace, wnck_window); +--- superswitcher/src/window.c ++++ superswitcher/src/window.c +@@ -254,6 +254,7 @@ + static void + on_workspace_changed (WnckWindow *wnck_window, gpointer data) + { ++ WnckWorkspace *wnck_workspace; + SSWindow *window; + SSWorkspace *old_workspace; + SSWorkspace *new_workspace; +@@ -261,12 +262,19 @@ + + window = (SSWindow *) data; + old_workspace = window->workspace; +- new_workspace_id = wnck_workspace_get_number (wnck_window_get_workspace (wnck_window)); +- new_workspace = ss_screen_get_nth_workspace (old_workspace->screen, new_workspace_id); +- + ss_workspace_remove_window (old_workspace, window); ++ ++ wnck_workspace = wnck_window_get_workspace (wnck_window); ++ if (wnck_workspace) { ++ new_workspace_id = wnck_workspace_get_number (wnck_workspace); ++ new_workspace = ss_screen_get_nth_workspace (old_workspace->screen, new_workspace_id); ++ ++ ss_workspace_add_window (new_workspace, window); ++ window->workspace = new_workspace; ++ } else { ++ window->workspace = NULL; ++ } ++ +- window->workspace = new_workspace; +- ss_workspace_add_window (new_workspace, window); + window->new_window_index = -1; + gtk_widget_queue_draw (gtk_widget_get_toplevel (window->widget)); + }