[gtk+] treeview: Use tick callback



commit b3b1c672ee449b3799d2c793c960f7accc8f2720
Author: Benjamin Otte <otte redhat com>
Date:   Fri May 17 18:16:42 2013 +0200

    treeview: Use tick callback
    
    instead of a timer for the presize callback.

 gtk/gtktreeview.c |   27 ++++++++++++++-------------
 1 files changed, 14 insertions(+), 13 deletions(-)
---
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index d98f276..fb67860 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -314,7 +314,7 @@ struct _GtkTreeViewPrivate
   /* we cache it for simplicity of the code */
   gint dy;
 
-  guint presize_handler_timer;
+  guint presize_handler_tick_cb;
   guint validate_rows_timer;
   guint scroll_sync_timer;
 
@@ -717,7 +717,6 @@ static gboolean validate_rows_handler    (GtkTreeView *tree_view);
 static gboolean do_validate_rows         (GtkTreeView *tree_view,
                                          gboolean     queue_resize);
 static gboolean validate_rows            (GtkTreeView *tree_view);
-static gboolean presize_handler_callback (gpointer     data);
 static void     install_presize_handler  (GtkTreeView *tree_view);
 static void     install_scroll_sync_handler (GtkTreeView *tree_view);
 static void     gtk_tree_view_set_top_row   (GtkTreeView *tree_view,
@@ -1753,7 +1752,7 @@ gtk_tree_view_init (GtkTreeView *tree_view)
   tree_view->priv->press_start_x = -1;
   tree_view->priv->press_start_y = -1;
   tree_view->priv->reorderable = FALSE;
-  tree_view->priv->presize_handler_timer = 0;
+  tree_view->priv->presize_handler_tick_cb = 0;
   tree_view->priv->scroll_sync_timer = 0;
   tree_view->priv->fixed_height = -1;
   tree_view->priv->fixed_height_mode = FALSE;
@@ -2391,10 +2390,10 @@ gtk_tree_view_unrealize (GtkWidget *widget)
       priv->open_dest_timeout = 0;
     }
 
-  if (priv->presize_handler_timer != 0)
+  if (priv->presize_handler_tick_cb != 0)
     {
-      g_source_remove (priv->presize_handler_timer);
-      priv->presize_handler_timer = 0;
+      gtk_widget_remove_tick_callback (widget, priv->presize_handler_tick_cb);
+      priv->presize_handler_tick_cb = 0;
     }
 
   if (priv->validate_rows_timer != 0)
@@ -6850,7 +6849,7 @@ do_presize_handler (GtkTreeView *tree_view)
       tree_view->priv->mark_rows_col_dirty = FALSE;
     }
   validate_visible_area (tree_view);
-  tree_view->priv->presize_handler_timer = 0;
+  tree_view->priv->presize_handler_tick_cb = 0;
 
   if (tree_view->priv->fixed_height_mode)
     {
@@ -6870,11 +6869,13 @@ do_presize_handler (GtkTreeView *tree_view)
 }
 
 static gboolean
-presize_handler_callback (gpointer data)
+presize_handler_callback (GtkWidget     *widget,
+                          GdkFrameClock *clock,
+                          gpointer       unused)
 {
-  do_presize_handler (GTK_TREE_VIEW (data));
+  do_presize_handler (GTK_TREE_VIEW (widget));
                   
-  return FALSE;
+  return G_SOURCE_REMOVE;
 }
 
 static void
@@ -6883,10 +6884,10 @@ install_presize_handler (GtkTreeView *tree_view)
   if (! gtk_widget_get_realized (GTK_WIDGET (tree_view)))
     return;
 
-  if (! tree_view->priv->presize_handler_timer)
+  if (! tree_view->priv->presize_handler_tick_cb)
     {
-      tree_view->priv->presize_handler_timer =
-       gdk_threads_add_idle_full (GTK_PRIORITY_RESIZE - 2, presize_handler_callback, tree_view, NULL);
+      tree_view->priv->presize_handler_tick_cb =
+       gtk_widget_add_tick_callback (GTK_WIDGET (tree_view), presize_handler_callback, NULL, NULL);
     }
   if (! tree_view->priv->validate_rows_timer)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]