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 }