]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkmain.c
GtkLabelAccessible: Sanity check _get_text() input values
[~andy/gtk] / gtk / gtkmain.c
index 56f2226d2f38eb2fdb84d8a1e2f3c93c492755c7..f5b4c5a520fcab8e9317930f1a416597990c8b45 100644 (file)
 #include "gtkwidgetprivate.h"
 #include "gtkwindowprivate.h"
 
-#include "a11y/gailutil.h"
+#include "a11y/gtkaccessibility.h"
 
 /* Private type definitions
  */
@@ -669,9 +669,6 @@ gettext_initialization (void)
 #endif  
 }
 
-/* XXX: Remove me after getting rid of gail */
-extern void _gtk_accessibility_init (void);
-
 static void
 do_post_parse_initialization (int    *argc,
                               char ***argv)
@@ -712,9 +709,6 @@ do_post_parse_initialization (int    *argc,
 
   _gtk_register_resource ();
 
-  /* do what the call to gtk_type_init() used to do */
-  g_type_init ();
-
   _gtk_accel_map_init ();
 
   /* Set the 'initialized' flag.
@@ -1172,11 +1166,15 @@ gtk_main (void)
 
   if (gtk_main_loop_level == 0)
     {
+      /* Keep this section in sync with gtk_application_shutdown() */
+
       /* Try storing all clipboard data we have */
       _gtk_clipboard_store_all ();
 
       /* Synchronize the recent manager singleton */
       _gtk_recent_manager_sync ();
+
+      _gtk_accessibility_shutdown ();
     }
 }
 
@@ -1556,7 +1554,7 @@ gtk_main_do_event (GdkEvent *event)
    * This is the key to implementing modality.
    */
   if (!grab_widget ||
-      (gtk_widget_is_sensitive (event_widget) &&
+      ((gtk_widget_is_sensitive (event_widget) || event->type == GDK_SCROLL) &&
        gtk_widget_is_ancestor (event_widget, grab_widget)))
     grab_widget = event_widget;
 
@@ -2242,7 +2240,7 @@ gtk_invoke_key_snoopers (GtkWidget *grab_widget,
   GSList *slist;
   gint return_val = FALSE;
 
-  return_val = _gail_util_key_snooper (grab_widget, (GdkEventKey *) event);
+  return_val = _gtk_accessibility_key_snooper (grab_widget, (GdkEventKey *) event);
 
   slist = key_snoopers;
   while (slist && !return_val)
@@ -2436,7 +2434,15 @@ propagate_event_down (GtkWidget *widget,
       widget = (GtkWidget *)l->data;
 
       if (!gtk_widget_is_sensitive (widget))
-        handled_event = TRUE;
+        {
+          /* stop propagating on SCROLL, but don't handle the event, so it
+           * can propagate up again and reach its handling widget
+           */
+          if (event->type == GDK_SCROLL)
+            break;
+          else
+            handled_event = TRUE;
+        }
       else
         handled_event = _gtk_widget_captured_event (widget, event);
     }