[libwnck/wip/muktupavels/revert-3456b747] Revert "pager: do not change workspace size from size_allocate"
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libwnck/wip/muktupavels/revert-3456b747] Revert "pager: do not change workspace size from size_allocate"
- Date: Tue, 21 Dec 2021 20:00:24 +0000 (UTC)
commit 8191f080c0c0b2471f329d4bee329487a2b37729
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Dec 21 22:00:04 2021 +0200
Revert "pager: do not change workspace size from size_allocate"
This reverts commit 3456b747b6381f17d48629dd8fdd4d511e739b10.
libwnck/pager.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
---
diff --git a/libwnck/pager.c b/libwnck/pager.c
index c769d62..a563a4d 100644
--- a/libwnck/pager.c
+++ b/libwnck/pager.c
@@ -122,6 +122,8 @@ static void wnck_pager_get_preferred_height_for_width (GtkWidget *widget,
int width,
int *minimum_height,
int *natural_height);
+static void wnck_pager_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
static gboolean wnck_pager_draw (GtkWidget *widget,
cairo_t *cr);
static gboolean wnck_pager_button_press (GtkWidget *widget,
@@ -247,6 +249,7 @@ wnck_pager_class_init (WnckPagerClass *klass)
widget_class->get_preferred_width_for_height = wnck_pager_get_preferred_width_for_height;
widget_class->get_preferred_height = wnck_pager_get_preferred_height;
widget_class->get_preferred_height_for_width = wnck_pager_get_preferred_height_for_width;
+ widget_class->size_allocate = wnck_pager_size_allocate;
widget_class->draw = wnck_pager_draw;
widget_class->button_press_event = wnck_pager_button_press;
widget_class->button_release_event = wnck_pager_button_release;
@@ -684,6 +687,62 @@ wnck_pager_get_preferred_height_for_width (GtkWidget *widget,
*natural_height = *minimum_height = MAX (height, 0);
}
+static gboolean
+_wnck_pager_queue_resize (gpointer data)
+{
+ gtk_widget_queue_resize (GTK_WIDGET (data));
+ return FALSE;
+}
+
+static void
+wnck_pager_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ WnckPager *pager;
+ int workspace_size;
+ GtkBorder padding;
+ int width;
+ int height;
+
+ pager = WNCK_PAGER (widget);
+
+ width = allocation->width;
+ height = allocation->height;
+
+ _wnck_pager_get_padding (pager, &padding);
+ width -= padding.left + padding.right;
+ height -= padding.top + padding.bottom;
+
+ g_assert (pager->priv->n_rows > 0);
+
+ if (pager->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ if (pager->priv->show_all_workspaces)
+ workspace_size = (width - (pager->priv->n_rows - 1)) / pager->priv->n_rows;
+ else
+ workspace_size = width;
+ }
+ else
+ {
+ if (pager->priv->show_all_workspaces)
+ workspace_size = (height - (pager->priv->n_rows - 1))/ pager->priv->n_rows;
+ else
+ workspace_size = height;
+ }
+
+ workspace_size = MAX (workspace_size, 1);
+
+ if (workspace_size != pager->priv->workspace_size)
+ {
+ pager->priv->workspace_size = workspace_size;
+ g_idle_add (_wnck_pager_queue_resize, pager);
+ return;
+ }
+
+ GTK_WIDGET_CLASS (wnck_pager_parent_class)->size_allocate (widget,
+ allocation);
+}
+
static void
get_workspace_rect (WnckPager *pager,
int space,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]