Mercurial > dwindows
changeset 1314:c969db49606e
Initial commit allowing dw_window_set_style() to work on menu item handles.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Fri, 04 Nov 2011 14:13:38 +0000 |
parents | 9f12bc79924b |
children | 9c585eaacb22 |
files | gtk/dw.c gtk3/dw.c mac/dw.m os2/dw.c win/dw.c |
diffstat | 5 files changed, 91 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/dw.c Fri Nov 04 12:30:23 2011 +0000 +++ b/gtk/dw.c Fri Nov 04 14:13:38 2011 +0000 @@ -10253,6 +10253,27 @@ if ( style & DW_DT_WORDBREAK ) gtk_label_set_line_wrap( GTK_LABEL(handle), TRUE ); } + if ( GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) ) + { + int check = 0; + + if ( style & DW_MIS_CHECKED ) + check = 1; + + _dw_ignore_click = 1; + if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(handle2)) != check) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(handle2), check); + _dw_ignore_click = 0; + } + if ( (GTK_IS_CHECK_MENU_ITEM(handle2) || GTK_IS_MENU_ITEM(handle2)) && (mask & (DW_MIS_ENABLED | DW_MIS_DISABLED) )) + { + _dw_ignore_click = 1; + if ( style & DW_MIS_ENABLED ) + gtk_widget_set_sensitive( handle2, TRUE ); + else + gtk_widget_set_sensitive( handle2, FALSE ); + _dw_ignore_click = 0; + } DW_MUTEX_UNLOCK; }
--- a/gtk3/dw.c Fri Nov 04 12:30:23 2011 +0000 +++ b/gtk3/dw.c Fri Nov 04 14:13:38 2011 +0000 @@ -8752,6 +8752,27 @@ if ( style & DW_DT_WORDBREAK ) gtk_label_set_line_wrap( GTK_LABEL(handle), TRUE ); } + if ( GTK_IS_CHECK_MENU_ITEM(handle2) && (mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) ) + { + int check = 0; + + if ( style & DW_MIS_CHECKED ) + check = 1; + + _dw_ignore_click = 1; + if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(handle2)) != check) + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(handle2), check); + _dw_ignore_click = 0; + } + if ( (GTK_IS_CHECK_MENU_ITEM(handle2) || GTK_IS_MENU_ITEM(handle2)) && (mask & (DW_MIS_ENABLED | DW_MIS_DISABLED) )) + { + _dw_ignore_click = 1; + if ( style & DW_MIS_ENABLED ) + gtk_widget_set_sensitive( handle2, TRUE ); + else + gtk_widget_set_sensitive( handle2, FALSE ); + _dw_ignore_click = 0; + } DW_MUTEX_UNLOCK; }
--- a/mac/dw.m Fri Nov 04 12:30:23 2011 +0000 +++ b/mac/dw.m Fri Nov 04 14:13:38 2011 +0000 @@ -7708,6 +7708,23 @@ } } } + else if([object isMemberOfClass:[DWMenuItem class]]) + { + if(mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED)) + { + if(style & DW_MIS_CHECKED) + [object setState:NSOnState]; + else if(style & DW_MIS_UNCHECKED) + [object setState:NSOffState]; + } + if(mask & (DW_MIS_ENABLED | DW_MIS_DISABLED)) + { + if(style & DW_MIS_ENABLED) + [object setEnabled:YES]; + else if(style & DW_MIS_DISABLED) + [object setEnabled:NO]; + } + } } /*
--- a/os2/dw.c Fri Nov 04 12:30:23 2011 +0000 +++ b/os2/dw.c Fri Nov 04 14:13:38 2011 +0000 @@ -6363,7 +6363,19 @@ */ void API dw_window_set_style(HWND handle, ULONG style, ULONG mask) { - WinSetWindowBits(handle, QWL_STYLE, style, mask); + if(handle < 65536) + { + char buffer[30]; + HMENUI mymenu; + + sprintf(buffer, "_dw_id%ld", handle); + mymenu = (HMENUI)dw_window_get_data(hwndApp, buffer); + + if(mymenu && WinIsWindow(dwhab, mymenu)) + dw_menu_item_set_state(mymenu, handle, style & mask); + } + else + WinSetWindowBits(handle, QWL_STYLE, style, mask); } /*
--- a/win/dw.c Fri Nov 04 12:30:23 2011 +0000 +++ b/win/dw.c Fri Nov 04 14:13:38 2011 +0000 @@ -6484,14 +6484,30 @@ */ void API dw_window_set_style(HWND handle, ULONG style, ULONG mask) { - ULONG tmp, currentstyle = GetWindowLong(handle, GWL_STYLE); - ColorInfo *cinfo = (ColorInfo *)GetWindowLongPtr(handle, GWLP_USERDATA); + ULONG tmp, currentstyle; + ColorInfo *cinfo; + + if(handle < (HWND)65536) + { + char buffer[31] = {0}; + HMENU mymenu; + ULONG id = (ULONG)handle; + + _snprintf(buffer, 30, "_dw_id%ld", id); + mymenu = (HMENU)dw_window_get_data(DW_HWND_OBJECT, buffer); + + if(mymenu && IsMenu(mymenu)) + dw_menu_item_set_state((HMENUI)mymenu, id, style & mask); + return; + } + + currentstyle = GetWindowLong(handle, GWL_STYLE); + cinfo = (ColorInfo *)GetWindowLongPtr(handle, GWLP_USERDATA); tmp = currentstyle | mask; tmp ^= mask; tmp |= style; - /* We are using SS_NOPREFIX as a VCENTER flag */ if(tmp & SS_NOPREFIX) {