summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2022-02-24 17:00:14 +0200
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2022-02-24 17:00:14 +0200
commit4801263cd0ee2805b8bb79ba1769cf191e3daca1 (patch)
treed11c344685aa0544700975d4877f768617fb136c
parent044d4b571aedda1384d8f5980567ae3dbb49d0f4 (diff)
downloadlibwnck-4801263cd0ee2805b8bb79ba1769cf191e3daca1.tar.gz
tasklist: use WnckHandle to get screen
-rw-r--r--libwnck/tasklist.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libwnck/tasklist.c b/libwnck/tasklist.c
index 8791b10..24c9533 100644
--- a/libwnck/tasklist.c
+++ b/libwnck/tasklist.c
@@ -187,6 +187,8 @@ typedef struct _skipped_window
struct _WnckTasklistPrivate
{
+ WnckHandle *handle;
+
WnckScreen *screen;
WnckTask *active_task; /* NULL if active window not in tasklist */
@@ -1077,6 +1079,8 @@ wnck_tasklist_finalize (GObject *object)
tasklist->priv->free_icon_loader_data = NULL;
tasklist->priv->icon_loader_data = NULL;
+ g_clear_object (&tasklist->priv->handle);
+
G_OBJECT_CLASS (wnck_tasklist_parent_class)->finalize (object);
}
@@ -2142,11 +2146,16 @@ wnck_tasklist_realize (GtkWidget *widget)
{
WnckTasklist *tasklist;
GdkScreen *gdkscreen;
+ int screen_number;
tasklist = WNCK_TASKLIST (widget);
gdkscreen = gtk_widget_get_screen (widget);
- tasklist->priv->screen = wnck_screen_get (gdk_x11_screen_get_screen_number (gdkscreen));
+ screen_number = gdk_x11_screen_get_screen_number (gdkscreen);
+
+ tasklist->priv->screen = _wnck_handle_get_screen (tasklist->priv->handle,
+ screen_number);
+
g_assert (tasklist->priv->screen != NULL);
#ifdef HAVE_STARTUP_NOTIFICATION
@@ -2541,6 +2550,7 @@ wnck_tasklist_new (void)
WnckTasklist *tasklist;
tasklist = g_object_new (WNCK_TYPE_TASKLIST, NULL);
+ tasklist->priv->handle = g_object_ref (_wnck_get_handle ());
return GTK_WIDGET (tasklist);
}
@@ -3913,7 +3923,7 @@ wnck_task_motion_timeout (gpointer data)
* There should only be *one* activate call.
*/
ws = wnck_window_get_workspace (task->window);
- if (ws && ws != wnck_screen_get_active_workspace (wnck_screen_get_default ()))
+ if (ws && ws != wnck_screen_get_active_workspace (task->tasklist->priv->screen))
{
wnck_workspace_activate (ws, task->dnd_timestamp);
}