[gtk+] a11y: Make submenu code handle non-existing submenus



commit 15ab20fdfb5b148e0626d3f81cd22210951b724e
Author: Benjamin Otte <otte redhat com>
Date:   Wed Jul 6 20:55:11 2011 +0200

    a11y: Make submenu code handle non-existing submenus
    
    As we're going to merge the two accessibles for submenus, we need to
    make sure the code that insisted on submenus can handle the case where
    no submenu exists.

 gtk/a11y/gtksubmenuitemaccessible.c |   37 ++++++++++++++++++++++------------
 1 files changed, 24 insertions(+), 13 deletions(-)
---
diff --git a/gtk/a11y/gtksubmenuitemaccessible.c b/gtk/a11y/gtksubmenuitemaccessible.c
index f9a0453..7d0695e 100644
--- a/gtk/a11y/gtksubmenuitemaccessible.c
+++ b/gtk/a11y/gtksubmenuitemaccessible.c
@@ -41,10 +41,11 @@ gtk_submenu_item_accessible_initialize (AtkObject *obj,
   ATK_OBJECT_CLASS (gtk_submenu_item_accessible_parent_class)->initialize (obj, data);
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (data));
-  g_return_if_fail (submenu);
-
-  g_signal_connect (submenu, "add", G_CALLBACK (menu_item_add_gtk), NULL);
-  g_signal_connect (submenu, "remove", G_CALLBACK (menu_item_remove_gtk), NULL);
+  if (submenu)
+    {
+      g_signal_connect (submenu, "add", G_CALLBACK (menu_item_add_gtk), NULL);
+      g_signal_connect (submenu, "remove", G_CALLBACK (menu_item_remove_gtk), NULL);
+    }
 
   obj->role = ATK_ROLE_MENU;
 }
@@ -78,7 +79,9 @@ gtk_submenu_item_accessible_add_selection (AtkSelection *selection,
     return FALSE;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE);
+  if (submenu == NULL)
+    return FALSE;
+
   shell = GTK_MENU_SHELL (submenu);
   kids = gtk_container_get_children (GTK_CONTAINER (shell));
   length = g_list_length (kids);
@@ -98,7 +101,6 @@ gtk_submenu_item_accessible_add_selection (AtkSelection *selection,
 static gboolean
 gtk_submenu_item_accessible_clear_selection (AtkSelection *selection)
 {
-  GtkMenuShell *shell;
   GtkWidget *widget;
   GtkWidget *submenu;
 
@@ -107,10 +109,11 @@ gtk_submenu_item_accessible_clear_selection (AtkSelection *selection)
     return FALSE;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE);
-  shell = GTK_MENU_SHELL (submenu);
+  if (submenu == NULL)
+    return FALSE;
+
+  gtk_menu_shell_deselect (GTK_MENU_SHELL (submenu));
 
-  gtk_menu_shell_deselect (shell);
   return TRUE;
 }
 
@@ -132,7 +135,9 @@ gtk_submenu_item_accessible_ref_selection (AtkSelection *selection,
     return NULL;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), NULL);
+  if (submenu == NULL)
+    return NULL;
+
   shell = GTK_MENU_SHELL (submenu);
 
   item = gtk_menu_shell_get_selected_item (shell);
@@ -158,7 +163,9 @@ gtk_submenu_item_accessible_get_selection_count (AtkSelection *selection)
     return 0;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), 0);
+  if (submenu == NULL)
+    return 0;
+
   shell = GTK_MENU_SHELL (submenu);
 
   if (gtk_menu_shell_get_selected_item (shell) != NULL)
@@ -183,7 +190,9 @@ gtk_submenu_item_accessible_is_child_selected (AtkSelection *selection,
     return FALSE;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE);
+  if (submenu == NULL)
+    return FALSE;
+
   shell = GTK_MENU_SHELL (submenu);
 
   item = gtk_menu_shell_get_selected_item (shell);
@@ -214,7 +223,9 @@ gtk_submenu_item_accessible_remove_selection (AtkSelection *selection,
     return FALSE;
 
   submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget));
-  g_return_val_if_fail (GTK_IS_MENU_SHELL (submenu), FALSE);
+  if (submenu == NULL)
+    return FALSE;
+
   shell = GTK_MENU_SHELL (submenu);
 
   item = gtk_menu_shell_get_selected_item (shell);



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