summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */