All pastes #99902 Raw Edit

Nagappan

public text v1 · immutable
#99902 ·published 2006-07-25 19:28 UTC
rendered paste body
Index: 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);
+		}
 	}
 }