comparison 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
comparison
equal deleted inserted replaced
467:ecf1df2edcee 468:0a2f13ba2d5c
413 413
414 SetWindowLongPtr(handle, GWLP_USERDATA, 0); 414 SetWindowLongPtr(handle, GWLP_USERDATA, 0);
415 free(thiscinfo); 415 free(thiscinfo);
416 } 416 }
417 return TRUE; 417 return TRUE;
418 }
419
420 void _free_menu_data(HMENU menu)
421 {
422 /* TODO: This needs to call this on all submenus */
423 dw_signal_disconnect_by_name((HWND)menu, DW_SIGNAL_CLICKED);
418 } 424 }
419 425
420 /* Convert to our internal color scheme */ 426 /* Convert to our internal color scheme */
421 ULONG _internal_color(ULONG color) 427 ULONG _internal_color(ULONG color)
422 { 428 {
1814 1820
1815 if(windowfunc) 1821 if(windowfunc)
1816 windowfunc((void *)mp2); 1822 windowfunc((void *)mp2);
1817 break; 1823 break;
1818 case WM_USER+5: 1824 case WM_USER+5:
1819 dw_signal_disconnect_by_name((HWND)mp1, DW_SIGNAL_CLICKED); 1825 _free_menu_data((HMENU)mp1);
1826 DestroyMenu((HMENU)mp1);
1820 break; 1827 break;
1821 case WM_NOTIFY: 1828 case WM_NOTIFY:
1822 { 1829 {
1823 NMHDR FAR *tem=(NMHDR FAR *)mp2; 1830 NMHDR FAR *tem=(NMHDR FAR *)mp2;
1824 1831
4033 if(IsWindow(*menu) && !IsMenu(mymenu)) 4040 if(IsWindow(*menu) && !IsMenu(mymenu))
4034 mymenu = (HMENU)dw_window_get_data(*menu, "_dw_menu"); 4041 mymenu = (HMENU)dw_window_get_data(*menu, "_dw_menu");
4035 4042
4036 popup = parent; 4043 popup = parent;
4037 TrackPopupMenu(mymenu, 0, x, y, 0, parent, NULL); 4044 TrackPopupMenu(mymenu, 0, x, y, 0, parent, NULL);
4038 /* TODO: This needs to call this on all submenus */
4039 PostMessage(DW_HWND_OBJECT, WM_USER+5, (LPARAM)mymenu, 0); 4045 PostMessage(DW_HWND_OBJECT, WM_USER+5, (LPARAM)mymenu, 0);
4040 DestroyMenu(mymenu);
4041 } 4046 }
4042 } 4047 }
4043 4048
4044 4049
4045 /* 4050 /*