diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-04-11 08:46:30 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-04-11 08:46:30 +0000 |
commit | c5eb06a5c93791a5cda0592a5b62ccc6d1cc3acb (patch) | |
tree | d62046cf445c7faa182d0286b3f38bbb69360e16 /src/gtkutils.c | |
parent | bd44573ff03c4698c126fc1b7d32f0e4b2258ae4 (diff) |
implemented message-to-folder DnD.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@207 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/gtkutils.c')
-rw-r--r-- | src/gtkutils.c | 30 |
1 files changed, 30 insertions, 0 deletions
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; |