diff options
-rw-r--r-- | libwnck/pager.c | 82 | ||||
-rw-r--r-- | libwnck/pager.h | 3 |
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 */ |