diff gtk/dw.c @ 185:f55677513954

Updated the menu code.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 19 Dec 2002 04:16:32 +0000
parents 0b3debaa9c6c
children efd4703450fa
line wrap: on
line diff
--- a/gtk/dw.c	Thu Dec 19 02:18:12 2002 +0000
+++ b/gtk/dw.c	Thu Dec 19 04:16:32 2002 +0000
@@ -1705,18 +1705,15 @@
 HMENUI dw_menu_new(unsigned long id)
 {
 	int _locked_by_me = FALSE;
-	HMENUI tmp = malloc(sizeof(struct _hmenui));
 	GtkAccelGroup *accel_group;
-
-	if(!tmp)
-		return NULL;
-
-	DW_MUTEX_LOCK;
-	tmp->menu = gtk_menu_new();
-	gtk_widget_show(tmp->menu);
+	HMENUI tmp;
+
+	DW_MUTEX_LOCK;
+	tmp = gtk_menu_new();
+	gtk_widget_show(tmp);
 	accel_group = gtk_accel_group_new();
-	gtk_object_set_data(GTK_OBJECT(tmp->menu), "id", (gpointer)id);
-	gtk_object_set_data(GTK_OBJECT(tmp->menu), "accel", (gpointer)accel_group);
+	gtk_object_set_data(GTK_OBJECT(tmp), "id", (gpointer)id);
+	gtk_object_set_data(GTK_OBJECT(tmp), "accel", (gpointer)accel_group);
 	DW_MUTEX_UNLOCK;
 	return tmp;
 }
@@ -1730,21 +1727,18 @@
 {
 	GtkWidget *box;
 	int _locked_by_me = FALSE;
-	HMENUI tmp = malloc(sizeof(struct _hmenui));
 	GtkAccelGroup *accel_group;
-
-	if(!tmp)
-		return NULL;
-
-	DW_MUTEX_LOCK;
-	tmp->menu = gtk_menu_bar_new();
+	HMENUI tmp;
+
+	DW_MUTEX_LOCK;
+	tmp = gtk_menu_bar_new();
 	box = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(location));
-	gtk_widget_show(tmp->menu);
+	gtk_widget_show(tmp);
 	accel_group = gtk_accel_group_new();
-	gtk_object_set_data(GTK_OBJECT(tmp->menu), "accel", (gpointer)accel_group);
+	gtk_object_set_data(GTK_OBJECT(tmp), "accel", (gpointer)accel_group);
 
 	if(box)
-		gtk_box_pack_end(GTK_BOX(box), tmp->menu, FALSE, FALSE, 0);
+		gtk_box_pack_end(GTK_BOX(box), tmp, FALSE, FALSE, 0);
 
 	DW_MUTEX_UNLOCK;
 	return tmp;
@@ -1762,8 +1756,7 @@
 		int _locked_by_me = FALSE;
 
 		DW_MUTEX_LOCK;
-		gtk_widget_destroy((*menu)->menu);
-		free(*menu);
+		gtk_widget_destroy(*menu);
 		*menu = NULL;
 		DW_MUTEX_UNLOCK;
 	}
@@ -1811,7 +1804,7 @@
 	guint tmp_key;
 	GtkAccelGroup *accel_group;
 
-	if(!menu || !menu->menu)
+	if(!menu)
 	{
 		free(tempbuf);
 		return NULL;
@@ -1820,8 +1813,8 @@
 	DW_MUTEX_LOCK;
 	accel = _removetilde(tempbuf, title);
 
-	accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu->menu), "accel");
-	submenucount = (int)gtk_object_get_data(GTK_OBJECT(menu->menu), "submenucount");
+	accel_group = (GtkAccelGroup *)gtk_object_get_data(GTK_OBJECT(menu), "accel");
+	submenucount = (int)gtk_object_get_data(GTK_OBJECT(menu), "submenucount");
 
 	if(strlen(tempbuf) == 0)
 		tmphandle=gtk_menu_item_new();
@@ -1842,7 +1835,7 @@
 				tmphandle=gtk_check_menu_item_new_with_label(tempbuf);
 			gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(tmphandle), TRUE);
 			sprintf(numbuf, "%lu", id);
-			gtk_object_set_data(GTK_OBJECT(menu->menu), numbuf, (gpointer)tmphandle);
+			gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle);
 		}
 		else
 		{
@@ -1867,15 +1860,15 @@
 
 		sprintf(tempbuf, "submenu%d", submenucount);
 		submenucount++;
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu->menu);
-		gtk_object_set_data(GTK_OBJECT(menu->menu), tempbuf, (gpointer)submenu->menu);
-		gtk_object_set_data(GTK_OBJECT(menu->menu), "submenucount", (gpointer)submenucount);
-	}
-
-	if(GTK_IS_MENU_BAR(menu->menu))
-		gtk_menu_bar_append(GTK_MENU_BAR(menu->menu), tmphandle);
+		gtk_menu_item_set_submenu(GTK_MENU_ITEM(tmphandle), submenu);
+		gtk_object_set_data(GTK_OBJECT(menu), tempbuf, (gpointer)submenu);
+		gtk_object_set_data(GTK_OBJECT(menu), "submenucount", (gpointer)submenucount);
+	}
+
+	if(GTK_IS_MENU_BAR(menu))
+		gtk_menu_bar_append(GTK_MENU_BAR(menu), tmphandle);
 	else
-		gtk_menu_append(GTK_MENU(menu->menu), tmphandle);
+		gtk_menu_append(GTK_MENU(menu), tmphandle);
 
 	gtk_object_set_data(GTK_OBJECT(tmphandle), "id", (gpointer)id);
 	free(tempbuf);
@@ -1920,12 +1913,12 @@
 	GtkWidget *tmphandle;
 	int _locked_by_me = FALSE;
 
-	if(!menu || !menu->menu)
+	if(!menu)
 		return;
 
 	DW_MUTEX_LOCK;
 	sprintf(numbuf, "%lu", id);
-	tmphandle = _find_submenu_id(menu->menu, numbuf);
+	tmphandle = _find_submenu_id(menu, numbuf);
 
 	if(tmphandle)
 	{
@@ -1955,8 +1948,7 @@
 	popup = parent;
 
 	DW_MUTEX_LOCK;
-	gtk_menu_popup(GTK_MENU((*menu)->menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME);
-	free(*menu);
+	gtk_menu_popup(GTK_MENU(*menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME);
 	*menu = NULL;
 	DW_MUTEX_UNLOCK;
 }