Mercurial > dwindows
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 /* |