changeset 1375:611893219ba9

Implemented dw_menu_delete_item() on the Mac.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 22 Nov 2011 21:22:36 +0000
parents d5c1ce21577e
children 52bbb1acce61
files mac/dw.m
diffstat 1 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mac/dw.m	Tue Nov 22 21:13:02 2011 +0000
+++ b/mac/dw.m	Tue Nov 22 21:22:36 2011 +0000
@@ -7250,6 +7250,28 @@
 }
 
 /*
+ * Deletes the menu item specified.
+ * Parameters:
+ *       menu: The handle to the  menu in which the item was appended.
+ *       id: Menuitem id.
+ * Returns: 
+ *       DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
+ */
+int API dw_menu_delete_item(HMENUI menux, unsigned long itemid)
+{
+    id menu = menux;
+    NSMenuItem *menuitem = (NSMenuItem *)[menu itemWithTag:itemid];
+    
+    if(menuitem != nil)
+    {
+        [menu removeItem:menuitem];
+        [menuitem release];
+        return DW_ERROR_NONE;
+    }
+    return DW_ERROR_UNKNOWN;
+}
+
+/*
  * Sets the state of a menu item.
  * Parameters:
  *       menu: The handle to the existing menu.
@@ -7988,12 +8010,23 @@
     DW_MUTEX_LOCK;
     id object = handle;
 
-    /* Handle destroying a top-levle window */
+    /* Handle destroying a top-level window */
     if([ object isKindOfClass:[ NSWindow class ] ])
     {
         DWWindow *window = handle;
         [window close];
     }
+    /* Handle removing menu items from menus */
+    else if([ object isKindOfClass:[NSMenuItem class]])
+    {
+        NSMenu *menu = [object menu];
+        
+        if(menu)
+        {
+            [menu removeItem:object];
+            [object release];
+        }
+    }
     /* Handle destroying a control or box */
     else if([object isKindOfClass:[DWBox class]] || [object isKindOfClass:[DWGroupBox class]] || [object isKindOfClass:[NSControl class]])
     {