diff win/dw.c @ 468:0a2f13ba2d5c

More menu fixes, free signal handlers and memory on OS/2, and the begining for Windows.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 08 Oct 2003 21:40:06 +0000
parents ecf1df2edcee
children 7952b9c1dc07
line wrap: on
line diff
--- a/win/dw.c	Wed Oct 08 10:01:09 2003 +0000
+++ b/win/dw.c	Wed Oct 08 21:40:06 2003 +0000
@@ -417,6 +417,12 @@
 	return TRUE;
 }
 
+void _free_menu_data(HMENU menu)
+{
+	/* TODO: This needs to call this on all submenus */
+	dw_signal_disconnect_by_name((HWND)menu, DW_SIGNAL_CLICKED);
+}
+
 /* Convert to our internal color scheme */
 ULONG _internal_color(ULONG color)
 {
@@ -1816,7 +1822,8 @@
 			windowfunc((void *)mp2);
 		break;
 	case WM_USER+5:
-		dw_signal_disconnect_by_name((HWND)mp1, DW_SIGNAL_CLICKED);
+		_free_menu_data((HMENU)mp1);
+		DestroyMenu((HMENU)mp1);
 		break;
 	case WM_NOTIFY:
 		{
@@ -4035,9 +4042,7 @@
 
 		popup = parent;
 		TrackPopupMenu(mymenu, 0, x, y, 0, parent, NULL);
-		/* TODO: This needs to call this on all submenus */
 		PostMessage(DW_HWND_OBJECT, WM_USER+5, (LPARAM)mymenu, 0);
-		DestroyMenu(mymenu);
 	}
 }