summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2021-05-01 00:24:00 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2021-05-01 00:24:00 +0300
commit9a5c9b51b327d9daf6c42310f2ff95c988f535ba (patch)
treed765f51eb79bfdec0619d5970d7c753d80e047ae
parent0cd7e91d6e31c1fd9934061b6fe49c2975292532 (diff)
downloadlibwnck-wip/muktupavels/pager.tar.gz
pager: add wnck_pager_set_workspace_sizewip/muktupavels/pager
It should be enough to have only minimum size like it was before a414519d7b45 commit. Widget should request minimum size it needs! Using allocated size is wrong as it means widgets will get only bigger. To reduce size container will need to underallocate widget and GTK will warn about that if consistency checks are enabled.
-rw-r--r--libwnck/pager.c82
-rw-r--r--libwnck/pager.h3
2 files changed, 26 insertions, 59 deletions
diff --git a/libwnck/pager.c b/libwnck/pager.c
index a563a4d..a24646a 100644
--- a/libwnck/pager.c
+++ b/libwnck/pager.c
@@ -122,8 +122,6 @@ 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,
@@ -249,7 +247,6 @@ 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;
@@ -687,62 +684,6 @@ 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,
@@ -2536,6 +2477,29 @@ wnck_pager_get_wrap_on_scroll (WnckPager *pager)
return pager->priv->wrap_on_scroll;
}
+/**
+ * wnck_pager_set_workspace_size:
+ * @pager: a #WnckPager.
+ * @workspace_size: workspace size.
+ *
+ * Sets wrokspace size.
+ *
+ * Since: 3.36
+ */
+void
+wnck_pager_set_workspace_size (WnckPager *pager,
+ int workspace_size)
+{
+ g_return_if_fail (WNCK_IS_PAGER (pager));
+
+ if (pager->priv->workspace_size == workspace_size)
+ return;
+
+ pager->priv->workspace_size = workspace_size;
+
+ gtk_widget_queue_resize (GTK_WIDGET (pager));
+}
+
static void
active_window_changed_callback (WnckScreen *screen,
WnckWindow *previous_window,
diff --git a/libwnck/pager.h b/libwnck/pager.h
index c67f2fa..8b85b66 100644
--- a/libwnck/pager.h
+++ b/libwnck/pager.h
@@ -120,6 +120,9 @@ void wnck_pager_set_wrap_on_scroll (WnckPager *pager,
gboolean wrap_on_scroll);
gboolean wnck_pager_get_wrap_on_scroll (WnckPager *pager);
+void wnck_pager_set_workspace_size (WnckPager *pager,
+ int workspace_size);
+
G_END_DECLS
#endif /* WNCK_PAGER_H */