]> code.ossystems Code Review - openembedded-core.git/commitdiff
GTK+ 2.11: Update range patch
authorRoss Burton <ross@openedhand.com>
Tue, 4 Sep 2007 13:23:10 +0000 (13:23 +0000)
committerRoss Burton <ross@openedhand.com>
Tue, 4 Sep 2007 13:23:10 +0000 (13:23 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2686 311d38ba-8fff-0310-9ca6-ca027cbcb966

meta/packages/gtk+/gtk+-2.11.6/range-no-redraw.patch
meta/packages/gtk+/gtk+_2.11.6.bb

index 15de0c25d8f87b05754bd8fa98408d1c4f165236..14387b8a2ecf6e8a089cac4d63763b7d34486c2a 100644 (file)
-Index: gtk/gtkrange.c
-===================================================================
---- gtk/gtkrange.c     (revision 18523)
-+++ gtk/gtkrange.c     (working copy)
-@@ -99,8 +99,10 @@
-   GtkSensitivityType lower_sensitivity;
+5f084ea0849d5967a3c22821542ecaaa8accb398
+diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
+index bd95351..64e0e59 100644
+--- gtk/gtkrange.c
++++ gtk/gtkrange.c
+@@ -109,6 +109,8 @@ struct _GtkRangeLayout
    GtkSensitivityType upper_sensitivity;
  
    gdouble fill_level;
 +
-+  guint motion_idle;
++  guint motion_idle_id;
  };
  
  
-@@ -1721,6 +1723,16 @@
-                  &handled);
+@@ -205,6 +207,8 @@ static gboolean      gtk_range_real_change_value        (GtkRange      *range,
+ static void          gtk_range_update_value             (GtkRange      *range);
+ static gboolean      gtk_range_key_press                (GtkWidget     *range,
+                                                        GdkEventKey   *event);
++static void          gtk_range_add_motion_idle          (GtkRange *range);
++static void          gtk_range_remove_motion_idle       (GtkRange *range);
+ static guint signals[LAST_SIGNAL];
+@@ -1167,6 +1171,7 @@ gtk_range_destroy (GtkObject *object)
+   gtk_range_remove_step_timer (range);
+   gtk_range_remove_update_timer (range);
++  gtk_range_remove_motion_idle (range);
+   
+   if (range->adjustment)
+     {
+@@ -1276,6 +1281,7 @@ gtk_range_unrealize (GtkWidget *widget)
+   gtk_range_remove_step_timer (range);
+   gtk_range_remove_update_timer (range);
++  gtk_range_remove_motion_idle (range);
+   
+   gdk_window_set_user_data (range->event_window, NULL);
+   gdk_window_destroy (range->event_window);
+@@ -2165,7 +2171,7 @@ gtk_range_motion_notify (GtkWidget      *widget,
+     gtk_widget_queue_draw (widget);
+   if (range->layout->grab_location == MOUSE_SLIDER)
+-    update_slider_position (range, x, y);
++    gtk_range_add_motion_idle (range);
+   /* We handled the event if the mouse was in the range_rect */
+   return range->layout->mouse_location != MOUSE_OUTSIDE;
+@@ -3335,9 +3341,10 @@ initial_timeout (gpointer data)
+   g_object_get (settings, "gtk-timeout-repeat", &timeout, NULL);
+   range = GTK_RANGE (data);
+-  range->timer->timeout_id = gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR,
+-                                            second_timeout,
+-                                            range);
++  range->timer->timeout_id =
++    gdk_threads_add_timeout (timeout * SCROLL_DELAY_FACTOR,
++                             second_timeout,
++                             range);
+   /* remove self */
+   return FALSE;
+ }
+@@ -3357,9 +3364,8 @@ gtk_range_add_step_timer (GtkRange      *range,
+   range->timer = g_new (GtkRangeStepTimer, 1);
+-  range->timer->timeout_id = gdk_threads_add_timeout (timeout,
+-                                            initial_timeout,
+-                                            range);
++  range->timer->timeout_id =
++    gdk_threads_add_timeout (timeout, initial_timeout, range);
+   range->timer->step = step;
+   gtk_range_scroll (range, range->timer->step);
+@@ -3397,9 +3403,8 @@ gtk_range_reset_update_timer (GtkRange *range)
+ {
+   gtk_range_remove_update_timer (range);
+-  range->update_timeout_id = gdk_threads_add_timeout (UPDATE_DELAY,
+-                                            update_timeout,
+-                                            range);
++  range->update_timeout_id =
++    gdk_threads_add_timeout (UPDATE_DELAY, update_timeout, range);
+ }
+ static void
+@@ -3412,5 +3417,40 @@ gtk_range_remove_update_timer (GtkRange *range)
+     }
  }
  
 +static gboolean
-+update_slider_position_idle (GtkRange *range)
++motion_idle (gpointer data)
 +{
-+  update_slider_position (range, range->layout->mouse_x,range->layout->mouse_y); 
++  GtkRange *range = data;
++  GtkRangeLayout *layout = range->layout;
 +
-+  range->layout->motion_idle = 0;
++  update_slider_position (range, layout->mouse_x, layout->mouse_y); 
++
++  layout->motion_idle_id = 0;
 +
 +  return FALSE;
 +}
 +
- static void 
- stop_scrolling (GtkRange *range)
- {
-@@ -1860,8 +1872,8 @@
-   if (gtk_range_update_mouse_location (range))
-     gtk_widget_queue_draw (widget);
--  if (range->layout->grab_location == MOUSE_SLIDER)
--    update_slider_position (range, x, y);
-+  if (range->layout->grab_location == MOUSE_SLIDER && !range->layout->motion_idle)
-+    range->layout->motion_idle = g_idle_add ((GSourceFunc)update_slider_position_idle, range);
-   /* We handled the event if the mouse was in the range_rect */
-   return range->layout->mouse_location != MOUSE_OUTSIDE;
++static void
++gtk_range_add_motion_idle (GtkRange *range)
++{
++  if (!range->layout->motion_idle_id)
++    {
++      range->layout->motion_idle_id =
++        gdk_threads_add_idle_full (GDK_PRIORITY_REDRAW,
++                                   motion_idle, range,
++                                   NULL);
++    }
++}
++
++static void
++gtk_range_remove_motion_idle (GtkRange *range)
++{
++  if (range->layout->motion_idle_id != 0)
++    {
++      g_source_remove (range->layout->motion_idle_id);
++      range->layout->motion_idle_id = 0;
++    }
++}
++
+ #define __GTK_RANGE_C__
+ #include "gtkaliasdef.c"
index 6aa9d052af842c0903336522022709118a7d4530..186923b06866aca300c538a03fb739cc0e0bda47 100644 (file)
@@ -1,7 +1,7 @@
 require gtk+.inc
 
 DEPENDS += "cairo"
-PR = "r2"
+PR = "r3"
 
 # disable per default - untested and not all patches included.
 DEFAULT_PREFERENCE = "-1"