You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/x11-misc/superswitcher/files/superswitcher-0.6-wnck-work...

63 lines
1.9 KiB

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));
}