[gtk+] widget: reset all controllers when the widget becomes insensitive



commit 90424289fb8dbe1f0ef948f71a919082e4b9627d
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Jun 5 15:31:35 2014 +0200

    widget: reset all controllers when the widget becomes insensitive
    
    Widgets becoming insensitive won't receive further events, but there
    could be chances the controllers don't get properly notified and reset
    in those situations.

 gtk/gtkwidget.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 39c0338..27e2896 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -12681,6 +12681,19 @@ gtk_widget_propagate_state (GtkWidget    *widget,
           g_list_free (devices);
         }
 
+      if (!gtk_widget_is_sensitive (widget))
+        {
+          EventControllerData *data;
+          GList *l;
+
+          /* Reset all controllers */
+          for (l = priv->event_controllers; l; l = l->next)
+            {
+              data = l->data;
+              gtk_event_controller_reset (data->controller);
+            }
+        }
+
       if (GTK_IS_CONTAINER (widget))
         {
           GtkStateData child_data;


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