diff win/dw.c @ 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 47dbe605a03f
children 3f1ac800bf65
line wrap: on
line diff
--- 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)
    {