Mercurial > dwindows
comparison os2/dw.c @ 1304:68f18dccfb8f
Experimental change to menu code on OS/2 to allow dw_window_enable/disable to work on menu item handles.
Also cleaned up some ancient code in the window data handler.. simplified and sped up.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 03 Nov 2011 08:38:34 +0000 |
parents | 66d4e16349e0 |
children | 18a31ab94e3d |
comparison
equal
deleted
inserted
replaced
1303:ca02c24e80c9 | 1304:68f18dccfb8f |
---|---|
5904 */ | 5904 */ |
5905 void API dw_window_disable(HWND handle) | 5905 void API dw_window_disable(HWND handle) |
5906 { | 5906 { |
5907 char tmpbuf[100]; | 5907 char tmpbuf[100]; |
5908 | 5908 |
5909 if(handle < 65536) | |
5910 { | |
5911 char buffer[30]; | |
5912 HMENUI mymenu; | |
5913 | |
5914 sprintf(buffer, "_dw_id%ld", handle); | |
5915 mymenu = (HMENUI)dw_window_get_data(hwndApp, buffer); | |
5916 | |
5917 if(mymenu && WinIsWindow(dwhab, mymenu)) | |
5918 dw_menu_item_set_state(mymenu, handle, DW_MIS_DISABLED); | |
5919 return; | |
5920 } | |
5921 | |
5909 if(dw_window_get_data(handle, "_dw_disabled")) | 5922 if(dw_window_get_data(handle, "_dw_disabled")) |
5910 return; | 5923 return; |
5911 | 5924 |
5912 WinQueryClassName(handle, 99, tmpbuf); | 5925 WinQueryClassName(handle, 99, tmpbuf); |
5913 dw_window_set_data(handle, "_dw_disabled", (void *)1); | 5926 dw_window_set_data(handle, "_dw_disabled", (void *)1); |
5956 { | 5969 { |
5957 ULONG fore = (ULONG)dw_window_get_data(handle, "_dw_fore"); | 5970 ULONG fore = (ULONG)dw_window_get_data(handle, "_dw_fore"); |
5958 ULONG back = (ULONG)dw_window_get_data(handle, "_dw_back"); | 5971 ULONG back = (ULONG)dw_window_get_data(handle, "_dw_back"); |
5959 HWND hwnd = _find_entryfield(handle); | 5972 HWND hwnd = _find_entryfield(handle); |
5960 | 5973 |
5974 if(handle < 65536) | |
5975 { | |
5976 char buffer[30]; | |
5977 HMENUI mymenu; | |
5978 | |
5979 sprintf(buffer, "_dw_id%ld", handle); | |
5980 mymenu = (HMENUI)dw_window_get_data(hwndApp, buffer); | |
5981 | |
5982 if(mymenu && WinIsWindow(dwhab, mymenu)) | |
5983 dw_menu_item_set_state(mymenu, handle, DW_MIS_ENABLED); | |
5984 return; | |
5985 } | |
5986 | |
5961 dw_window_set_data(handle, "_dw_disabled", 0); | 5987 dw_window_set_data(handle, "_dw_disabled", 0); |
5962 if(hwnd) | 5988 if(hwnd) |
5963 dw_window_set_data(hwnd, "_dw_disabled", 0); | 5989 dw_window_set_data(hwnd, "_dw_disabled", 0); |
5964 if(fore && back) | 5990 if(fore && back) |
5965 _dw_window_set_color(hwnd ? hwnd : handle, fore-1, back-1); | 5991 _dw_window_set_color(hwnd ? hwnd : handle, fore-1, back-1); |
10727 | 10753 |
10728 if (!*root) | 10754 if (!*root) |
10729 *root = new; | 10755 *root = new; |
10730 else | 10756 else |
10731 { | 10757 { |
10732 UserData *prev = NULL, *tmp = *root; | 10758 UserData *prev = *root, *tmp = prev->next; |
10759 | |
10733 while(tmp) | 10760 while(tmp) |
10734 { | 10761 { |
10735 prev = tmp; | 10762 prev = tmp; |
10736 tmp = tmp->next; | 10763 tmp = tmp->next; |
10737 } | 10764 } |
10738 if(prev) | 10765 prev->next = new; |
10739 prev->next = new; | |
10740 else | |
10741 *root = new; | |
10742 } | 10766 } |
10743 return TRUE; | 10767 return TRUE; |
10744 } | 10768 } |
10745 } | 10769 } |
10746 return FALSE; | 10770 return FALSE; |
10921 HWND owner; | 10945 HWND owner; |
10922 | 10946 |
10923 sprintf(buffer, "_dw_id%d", (int)window); | 10947 sprintf(buffer, "_dw_id%d", (int)window); |
10924 owner = (HWND)dw_window_get_data(hwndApp, buffer); | 10948 owner = (HWND)dw_window_get_data(hwndApp, buffer); |
10925 | 10949 |
10950 /* Make sure there are no dupes from popups */ | |
10951 dw_signal_disconnect_by_window(window); | |
10952 | |
10926 if(owner) | 10953 if(owner) |
10927 { | 10954 { |
10928 id = window; | 10955 id = window; |
10929 window = owner; | 10956 window = owner; |
10930 dw_window_set_data(hwndApp, buffer, 0); | |
10931 } | |
10932 else | |
10933 { | |
10934 /* If it is a popup menu clear all entries */ | |
10935 dw_signal_disconnect_by_window(window); | |
10936 } | 10957 } |
10937 } | 10958 } |
10938 _new_signal(message, window, id, sigfunc, data); | 10959 _new_signal(message, window, id, sigfunc, data); |
10939 } | 10960 } |
10940 } | 10961 } |