libwnck/libwnck-realistic-layout.patch

58 lines
2.1 KiB
Diff

This fixes a problem of overaggressively grouping windows in the
tasklist with our default size 24 panel. See bnc #148840 for
details and a screenshot.
Index: libwnck/tasklist.c
===================================================================
--- libwnck/tasklist.c.orig
+++ libwnck/tasklist.c
@@ -216,6 +216,9 @@ struct _WnckTasklistPrivate
int *size_hints;
int size_hints_len;
+ gint last_width;
+ gint last_height;
+
WnckLoadIconFunction icon_loader;
void *icon_loader_data;
GDestroyNotify free_icon_loader_data;
@@ -692,6 +695,9 @@ wnck_tasklist_init (WnckTasklist *taskli
for (i = 0; i < N_SCREEN_CONNECTIONS; i++)
tasklist->priv->screen_connections[i] = 0;
+ tasklist->priv->last_width = -1;
+ tasklist->priv->last_height = -1;
+
tasklist->priv->idle_callback_tag = 0;
tasklist->priv->size_hints = NULL;
@@ -1324,8 +1330,16 @@ wnck_tasklist_size_request (GtkWidget
tasklist->priv->max_button_width = wnck_tasklist_get_button_size (widget);
tasklist->priv->max_button_height = max_height;
- fake_allocation.width = GTK_WIDGET (tasklist)->allocation.width;
- fake_allocation.height = GTK_WIDGET (tasklist)->allocation.height;
+ /* fake_allocation.width = GTK_WIDGET (tasklist)->allocation.width;
+ fake_allocation.height = GTK_WIDGET (tasklist)->allocation.height; */
+ if (tasklist->priv->last_width != -1)
+ fake_allocation.width = tasklist->priv->last_width;
+ else
+ fake_allocation.width = GTK_WIDGET (tasklist)->allocation.width;
+ if (tasklist->priv->last_height != -1)
+ fake_allocation.height = tasklist->priv->last_height;
+ else
+ fake_allocation.height = GTK_WIDGET (tasklist)->allocation.height;
array = g_array_new (FALSE, FALSE, sizeof (int));
@@ -1501,6 +1515,9 @@ wnck_tasklist_size_allocate (GtkWidget
tasklist = WNCK_TASKLIST (widget);
+ tasklist->priv->last_width = allocation->width;
+ tasklist->priv->last_height = allocation->height;
+
n_windows = g_list_length (tasklist->priv->windows);
n_startup_sequences = g_list_length (tasklist->priv->startup_sequences);
n_grouped_buttons = 0;