diff win/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 b8caec82a4d2
children 634625c3239d
line wrap: on
line diff
--- a/win/dw.c	Thu Dec 19 02:18:12 2002 +0000
+++ b/win/dw.c	Thu Dec 19 04:16:32 2002 +0000
@@ -3571,13 +3571,10 @@
  */
 HMENUI API dw_menu_new(ULONG id)
 {
-	HMENUI tmp = malloc(sizeof(struct _hmenui));
-
-	if(!tmp)
-		return NULL;
-
-	tmp->menu = CreatePopupMenu();
-	tmp->hwnd = NULL;
+	HMENUI tmp;
+
+	tmp.menu = CreatePopupMenu();
+	tmp.hwnd = NULL;
 	return tmp;
 }
 
@@ -3588,15 +3585,12 @@
  */
 HMENUI API dw_menubar_new(HWND location)
 {
-	HMENUI tmp = malloc(sizeof(struct _hmenui));
-
-	if(!tmp)
-		return NULL;
-
-	tmp->menu = CreateMenu();
-	tmp->hwnd = location;
-
-	SetMenu(location, tmp->menu);
+	HMENUI tmp;
+
+	tmp.menu = CreateMenu();
+	tmp.hwnd = location;
+
+	SetMenu(location, tmp.menu);
 	return tmp;
 }
 
@@ -3607,12 +3601,8 @@
  */
 void API dw_menu_destroy(HMENUI *menu)
 {
-	if(menu && *menu)
-	{
-		DestroyMenu((*menu)->menu);
-		free(*menu);
-		*menu = NULL;
-	}
+	if(menu)
+		DestroyMenu(menu->menu);
 }
 
 /*
@@ -3629,12 +3619,6 @@
 HWND API dw_menu_append_item(HMENUI menux, char *title, ULONG id, ULONG flags, int end, int check, HMENUI submenu)
 {
 	MENUITEMINFO mii;
-	HMENU menu;
-
-	if(!menux)
-		return NULL;
-
-	menu = menux->menu;
 
 	mii.cbSize = sizeof(MENUITEMINFO);
 	mii.fMask = MIIM_ID | MIIM_SUBMENU | MIIM_TYPE;
@@ -3658,15 +3642,13 @@
 		mii.fType = MFT_SEPARATOR;
 
 	mii.wID = id;
-	mii.hSubMenu = submenu ? submenu->menu : 0;
+	mii.hSubMenu = submenu.menu;
 	mii.dwTypeData = title;
 	mii.cch = strlen(title);
 
-	InsertMenuItem(menu, 65535, TRUE, &mii);
-	if(menux->hwnd)
-		DrawMenuBar(menux->hwnd);
-	if(submenu)
-		free(submenu);
+	InsertMenuItem(menux.menu, 65535, TRUE, &mii);
+	if(menux.hwnd)
+		DrawMenuBar(menux.hwnd);
 	return (HWND)id;
 }
 
@@ -3680,12 +3662,6 @@
 void API dw_menu_item_set_check(HMENUI menux, unsigned long id, int check)
 {
 	MENUITEMINFO mii;
-	HMENU menu;
-
-	if(!menux)
-		return;
-
-	menu = menux->menu;
 
 	mii.cbSize = sizeof(MENUITEMINFO);
 	mii.fMask = MIIM_STATE;
@@ -3693,7 +3669,7 @@
 		mii.fState = MFS_CHECKED;
 	else
 		mii.fState = MFS_UNCHECKED;
-	SetMenuItemInfo(menu, id, FALSE, &mii);
+	SetMenuItemInfo(menux.menu, id, FALSE, &mii);
 }
 
 /*
@@ -3706,13 +3682,11 @@
  */
 void API dw_menu_popup(HMENUI *menu, HWND parent, int x, int y)
 {
-	if(menu && *menu)
+	if(menu)
 	{
 		popup = parent;
-		TrackPopupMenu((*menu)->menu, 0, x, y, 0, parent, NULL);
-		DestroyMenu((*menu)->menu);
-		free(*menu);
-		*menu = NULL;
+		TrackPopupMenu(menu->menu, 0, x, y, 0, parent, NULL);
+		DestroyMenu(menu->menu);
 	}
 }