[gtk+] a11y: Make submenu code handle non-existing submenus
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] a11y: Make submenu code handle non-existing submenus
- Date: Wed, 6 Jul 2011 19:02:37 +0000 (UTC)
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]