aboutsummaryrefslogtreecommitdiff
path: root/src/gtkutils.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-04-11 08:46:30 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-04-11 08:46:30 +0000
commitc5eb06a5c93791a5cda0592a5b62ccc6d1cc3acb (patch)
treed62046cf445c7faa182d0286b3f38bbb69360e16 /src/gtkutils.c
parentbd44573ff03c4698c126fc1b7d32f0e4b2258ae4 (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.c30
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;