rendered paste bodyIndex: menu-item.c
===================================================================
RCS file: /cvs/ldtp/ldtp/src/menu-item.c,v
retrieving revision 1.7
diff -u -p -r1.7 menu-item.c
--- menu-item.c 21 Jul 2006 11:24:25 -0000 1.7
+++ menu-item.c 25 Jul 2006 19:27:15 -0000
@@ -152,21 +152,27 @@ menu_item_cb (FILE *fp,
gboolean combobox_flag,
char *combobox_name)
{
- int i;
+ int i = 0;
gint role;
- char *name = NULL;
- char *role_name = NULL;
- GList *menu_item = NULL;
- Accessible *current_menu_item = NULL;
+ char *name = NULL;
+ char *role_name = NULL;
+ GList *menu_item = NULL;
+ Accessible *current_menu_item = NULL;
Accessible *accessible_menu_item = NULL;
+
+ if (!fp || !event || !window_name || !window_type)
+ return;
g_print ("==DEBUG== Inside record menu\n");
- if (combobox_flag == FALSE ) {
+ if (combobox_flag == FALSE) {
current_menu_item = accessible_menu_item = event->source;
role = Accessible_getRole (accessible_menu_item);
- for(i = 0; role == SPI_ROLE_MENU ||
- role == SPI_ROLE_MENU_ITEM ||
- role == SPI_ROLE_CHECK_MENU_ITEM ||
- role == SPI_ROLE_RADIO_MENU_ITEM; i++) {
+ if (role != SPI_ROLE_MENU_ITEM &&
+ role != SPI_ROLE_CHECK_MENU_ITEM &&
+ role != SPI_ROLE_RADIO_MENU_ITEM) /*If current level doesn't, then no need to proceed*/
+ return;
+ for (i = 0; role == SPI_ROLE_MENU_ITEM ||
+ role == SPI_ROLE_CHECK_MENU_ITEM ||
+ role == SPI_ROLE_RADIO_MENU_ITEM; i++) {
name = Accessible_getName (current_menu_item);
menu_item = g_list_append (menu_item , g_strdup(name));
SPI_freeString (name);
@@ -182,9 +188,11 @@ menu_item_cb (FILE *fp,
if (current_menu_item)
role = Accessible_getRole (current_menu_item);
}
- if (current_menu_item && current_menu_item != accessible_menu_item) {
+ if (current_menu_item && current_menu_item != accessible_menu_item)
Accessible_unref (current_menu_item);
- }
+
+ if (i == 0) /* Means no navigation in the above for loop*/
+ return;
role_name = Accessible_getRoleName (event->source);
fprintf (fp, "<COMMAND><ACTION>SELECTMENU</ACTION>");
fprintf (fp, "<WINDOW>%s</WINDOW>", window_type);
@@ -208,17 +216,18 @@ menu_item_cb (FILE *fp,
// Free the variables used
g_list_free (menu_item);
}
- else if (combobox_flag == TRUE){
+ else if (combobox_name) {
name = Accessible_getName (event->source);
- fprintf (fp, "<COMMAND><ACTION>COMBOSELECT</ACTION>");
- fprintf (fp, "<WINDOW>%s</WINDOW>",window_type);
- fprintf (fp, "<OBJECTTYPE>combo box</OBJECTTYPE>");
- fprintf (fp, "<CONTEXT>%s</CONTEXT>", window_name);
- fprintf (fp, "<COMPONENT>%s</COMPONENT>", combobox_name);
- fprintf (fp, "<ARGUMENTS><ARGUMENT>%s</ARGUMENT></ARGUMENTS></COMMAND>\n",
- name);
- fflush (fp);
- SPI_freeString (name);
+ if (name) {
+ fprintf (fp, "<COMMAND><ACTION>COMBOSELECT</ACTION>");
+ fprintf (fp, "<WINDOW>%s</WINDOW>",window_type);
+ fprintf (fp, "<OBJECTTYPE>combo box</OBJECTTYPE>");
+ fprintf (fp, "<CONTEXT>%s</CONTEXT>", window_name);
+ fprintf (fp, "<COMPONENT>%s</COMPONENT>", combobox_name);
+ fprintf (fp, "<ARGUMENTS><ARGUMENT>%s</ARGUMENT></ARGUMENTS></COMMAND>\n", name);
+ fflush (fp);
+ SPI_freeString (name);
+ }
}
}