summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-03-17 18:37:35 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-03-17 18:37:35 +0000
commitb3570de983215cfe1ae7fddf97ca1a511bc3badc (patch)
tree32f1e0f2cd75cbf61f74cfed3cc0d63ce0bd9e71 /gtk
parentc4aa487d7273ff60250e92a2eb382779075555c9 (diff)
downloadgtk+-b3570de983215cfe1ae7fddf97ca1a511bc3badc.tar.gz
Clamp adjustment values on resize. (#170567, Tomislav Jonjic)
2005-03-17 Matthias Clasen <mclasen@redhat.com> * gtk/gtkiconview.c (gtk_icon_view_size_allocate): Clamp adjustment values on resize. (#170567, Tomislav Jonjic)
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtkiconview.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index 205e0d2e82..518bd00d32 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -953,6 +953,7 @@ gtk_icon_view_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
{
GtkIconView *icon_view;
+ GtkAdjustment *hadjustment, *vadjustment;
widget->allocation = *allocation;
@@ -968,19 +969,30 @@ gtk_icon_view_size_allocate (GtkWidget *widget,
MAX (icon_view->priv->height, allocation->height));
}
- icon_view->priv->hadjustment->page_size = allocation->width;
- icon_view->priv->hadjustment->page_increment = allocation->width * 0.9;
- icon_view->priv->hadjustment->step_increment = allocation->width * 0.1;
- icon_view->priv->hadjustment->lower = 0;
- icon_view->priv->hadjustment->upper = MAX (allocation->width, icon_view->priv->width);
- gtk_adjustment_changed (icon_view->priv->hadjustment);
-
- icon_view->priv->vadjustment->page_size = allocation->height;
- icon_view->priv->vadjustment->page_increment = allocation->height * 0.9;
- icon_view->priv->vadjustment->step_increment = allocation->width * 0.1;
- icon_view->priv->vadjustment->lower = 0;
- icon_view->priv->vadjustment->upper = MAX (allocation->height, icon_view->priv->height);
- gtk_adjustment_changed (icon_view->priv->vadjustment);
+ hadjustment = icon_view->priv->hadjustment;
+ vadjustment = icon_view->priv->vadjustment;
+
+ hadjustment->page_size = allocation->width;
+ hadjustment->page_increment = allocation->width * 0.9;
+ hadjustment->step_increment = allocation->width * 0.1;
+ hadjustment->lower = 0;
+ hadjustment->upper = MAX (allocation->width, icon_view->priv->width);
+
+ if (hadjustment->value > hadjustment->upper - hadjustment->page_size)
+ gtk_adjustment_set_value (hadjustment, MAX (0, hadjustment->upper - hadjustment->page_size));
+
+ gtk_adjustment_changed (hadjustment);
+
+ vadjustment->page_size = allocation->height;
+ vadjustment->page_increment = allocation->height * 0.9;
+ vadjustment->step_increment = allocation->height * 0.1;
+ vadjustment->lower = 0;
+ vadjustment->upper = MAX (allocation->height, icon_view->priv->height);
+
+ if (vadjustment->value > vadjustment->upper - vadjustment->page_size)
+ gtk_adjustment_set_value (vadjustment, MAX (0, vadjustment->upper - vadjustment->page_size));
+
+ gtk_adjustment_changed (vadjustment);
gtk_icon_view_layout (icon_view);
}