diff options
Diffstat (limited to 'x11-misc/superswitcher/files/superswitcher-0.6-wnck-workspace.patch')
-rw-r--r-- | x11-misc/superswitcher/files/superswitcher-0.6-wnck-workspace.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/x11-misc/superswitcher/files/superswitcher-0.6-wnck-workspace.patch b/x11-misc/superswitcher/files/superswitcher-0.6-wnck-workspace.patch new file mode 100644 index 000000000000..90919a57485b --- /dev/null +++ b/x11-misc/superswitcher/files/superswitcher-0.6-wnck-workspace.patch @@ -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)); + } |