Commit f1583ba6 authored by Matthias Clasen's avatar Matthias Clasen Committed by Matthias Clasen

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)
parent 748f0aed
2005-04-29 Matthias Clasen <mclasen@redhat.com> 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. * tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash * gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
......
2005-04-29 Matthias Clasen <mclasen@redhat.com> 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. * tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash * gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
......
2005-04-29 Matthias Clasen <mclasen@redhat.com> 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. * tests/testiconview.c: Add some more tests.
* gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash * gtk/gtkiconview.c (gtk_icon_view_select_path): Don't crash
......
...@@ -3000,11 +3000,11 @@ static void ...@@ -3000,11 +3000,11 @@ static void
gtk_icon_view_scroll_to_item (GtkIconView *icon_view, gtk_icon_view_scroll_to_item (GtkIconView *icon_view,
GtkIconViewItem *item) GtkIconViewItem *item)
{ {
gint y, height; gint x, y, width, height;
gdouble value; gdouble value;
gdk_drawable_get_size (GDK_DRAWABLE (icon_view->priv->bin_window), NULL, &height); gdk_drawable_get_size (GDK_DRAWABLE (icon_view->priv->bin_window), &width, &height);
gdk_window_get_position (icon_view->priv->bin_window, NULL, &y); gdk_window_get_position (icon_view->priv->bin_window, &x, &y);
if (y + item->y < 0) if (y + item->y < 0)
{ {
...@@ -3015,8 +3015,22 @@ gtk_icon_view_scroll_to_item (GtkIconView *icon_view, ...@@ -3015,8 +3015,22 @@ gtk_icon_view_scroll_to_item (GtkIconView *icon_view,
{ {
value = icon_view->priv->vadjustment->value + y + item->y + item->height value = icon_view->priv->vadjustment->value + y + item->y + item->height
- GTK_WIDGET (icon_view)->allocation.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); 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 */ /* Public API */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment