From c5eb06a5c93791a5cda0592a5b62ccc6d1cc3acb Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 11 Apr 2005 08:46:30 +0000 Subject: implemented message-to-folder DnD. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@207 ee746299-78ed-0310-b773-934348b2243d --- src/gtkutils.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/gtkutils.c') diff --git a/src/gtkutils.c b/src/gtkutils.c index bf30b9a1..02cb7a36 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -478,6 +478,36 @@ gboolean gtkut_tree_view_find_collapsed_parent(GtkTreeView *treeview, return FALSE; } +#define SCROLL_EDGE_SIZE 15 + +/* borrowed from gtktreeview.c */ +void gtkut_tree_view_vertical_autoscroll(GtkTreeView *treeview) +{ + GdkRectangle visible_rect; + gint y, wy; + gint offset; + GtkAdjustment *vadj; + gfloat value; + + gdk_window_get_pointer(gtk_tree_view_get_bin_window(treeview), + NULL, &wy, NULL); + gtk_tree_view_widget_to_tree_coords(treeview, 0, wy, NULL, &y); + + gtk_tree_view_get_visible_rect(treeview, &visible_rect); + + /* see if we are near the edge. */ + offset = y - (visible_rect.y + 2 * SCROLL_EDGE_SIZE); + if (offset > 0) { + offset = y - (visible_rect.y + visible_rect.height - 2 * SCROLL_EDGE_SIZE); + if (offset < 0) + return; + } + + vadj = gtk_tree_view_get_vadjustment(treeview); + value = CLAMP(vadj->value + offset, 0.0, vadj->upper - vadj->page_size); + gtk_adjustment_set_value(vadj, value); +} + void gtkut_combo_set_items(GtkCombo *combo, const gchar *str1, ...) { va_list args; -- cgit v1.2.3