summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-04-29 16:20:07 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-04-29 16:20:07 +0000
commitf1583ba6277c227db8d6f2e5060a4c8f28d30dd2 (patch)
tree22eec4354204c30216657eb47750a794d6545055
parent748f0aed6337cec54cdb48169baf8a024fa8202a (diff)
downloadgtk+-f1583ba6277c227db8d6f2e5060a4c8f28d30dd2.tar.gz
Also scroll horizontally when necessary, and keep the northwest corner of
2005-04-29 Matthias Clasen <mclasen@redhat.com> * gtk/gtkiconview.c (gtk_icon_view_scroll_to_item): Also scroll horizontally when necessary, and keep the northwest corner of the item visible. (#300913, Mathias Hasselmann)
-rw-r--r--ChangeLog4
-rw-r--r--ChangeLog.pre-2-104
-rw-r--r--ChangeLog.pre-2-84
-rw-r--r--gtk/gtkiconview.c20
4 files changed, 29 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 759bc04010..b00a5d9414 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2005-04-29 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkiconview.c (gtk_icon_view_scroll_to_item): Also
+ scroll horizontally when necessary, and keep the northwest
+ corner of the item visible. (#300913, Mathias Hasselmann)
+
* tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 759bc04010..b00a5d9414 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,5 +1,9 @@
2005-04-29 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkiconview.c (gtk_icon_view_scroll_to_item): Also
+ scroll horizontally when necessary, and keep the northwest
+ corner of the item visible. (#300913, Mathias Hasselmann)
+
* tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 759bc04010..b00a5d9414 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,5 +1,9 @@
2005-04-29 Matthias Clasen <mclasen@redhat.com>
+ * gtk/gtkiconview.c (gtk_icon_view_scroll_to_item): Also
+ scroll horizontally when necessary, and keep the northwest
+ corner of the item visible. (#300913, Mathias Hasselmann)
+
* tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c
index 568e9ca9a0..08d195206a 100644
--- a/gtk/gtkiconview.c
+++ b/gtk/gtkiconview.c
@@ -3000,11 +3000,11 @@ static void
gtk_icon_view_scroll_to_item (GtkIconView *icon_view,
GtkIconViewItem *item)
{
- gint y, height;
+ gint x, y, width, height;
gdouble value;
- gdk_drawable_get_size (GDK_DRAWABLE (icon_view->priv->bin_window), NULL, &height);
- gdk_window_get_position (icon_view->priv->bin_window, NULL, &y);
+ gdk_drawable_get_size (GDK_DRAWABLE (icon_view->priv->bin_window), &width, &height);
+ gdk_window_get_position (icon_view->priv->bin_window, &x, &y);
if (y + item->y < 0)
{
@@ -3015,8 +3015,22 @@ gtk_icon_view_scroll_to_item (GtkIconView *icon_view,
{
value = icon_view->priv->vadjustment->value + y + item->y + item->height
- GTK_WIDGET (icon_view)->allocation.height;
+ value = MIN (value, icon_view->priv->vadjustment->value + y + item->y);
gtk_adjustment_set_value (icon_view->priv->vadjustment, value);
}
+
+ if (x + item->x < 0)
+ {
+ value = icon_view->priv->hadjustment->value + x + item->x;
+ gtk_adjustment_set_value (icon_view->priv->hadjustment, value);
+ }
+ else if (x + item->x + item->width > GTK_WIDGET (icon_view)->allocation.width)
+ {
+ value = icon_view->priv->hadjustment->value + x + item->x + item->width
+ - GTK_WIDGET (icon_view)->allocation.width;
+ value = MIN (value, icon_view->priv->hadjustment->value + x + item->x);
+ gtk_adjustment_set_value (icon_view->priv->hadjustment, value);
+ }
}
/* Public API */