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)
    {