]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/menu.mm
GetMenuBar() now traverses up the hierarchy so it no longer has to be done here.
[wxWidgets.git] / src / cocoa / menu.mm
index 3c69ea748198f3b4aaefd49b673cb1a44e2e8680..2d662e4111e0b52a2a3e0751ddf2388defb6dd29 100644 (file)
@@ -24,6 +24,7 @@
 #endif // WX_PRECOMP
 
 #include "wx/cocoa/autorelease.h"
 #endif // WX_PRECOMP
 
 #include "wx/cocoa/autorelease.h"
+#include "wx/cocoa/string.h"
 
 #import <Foundation/NSString.h>
 #import <AppKit/NSMenu.h>
 
 #import <Foundation/NSString.h>
 #import <AppKit/NSMenu.h>
@@ -43,7 +44,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler)
 bool wxMenu::Create(const wxString& title, long style)
 {
     wxAutoNSAutoreleasePool pool;
 bool wxMenu::Create(const wxString& title, long style)
 {
     wxAutoNSAutoreleasePool pool;
-    m_cocoaNSMenu = [[NSMenu alloc] initWithTitle: [NSString stringWithCString: title.c_str()]];
+    m_cocoaNSMenu = [[NSMenu alloc] initWithTitle: wxNSStringWithWxString(title)];
     return true;
 }
 
     return true;
 }
 
@@ -52,22 +53,22 @@ wxMenu::~wxMenu()
     [m_cocoaNSMenu release];
 }
 
     [m_cocoaNSMenu release];
 }
 
-bool wxMenu::DoAppend(wxMenuItem *item)
+wxMenuItem* wxMenu::DoAppend(wxMenuItem *item)
 {
     wxAutoNSAutoreleasePool pool;
     if(!wxMenuBase::DoAppend(item))
 {
     wxAutoNSAutoreleasePool pool;
     if(!wxMenuBase::DoAppend(item))
-        return false;
+        return NULL;
     [m_cocoaNSMenu addItem: item->GetNSMenuItem()];
     [m_cocoaNSMenu addItem: item->GetNSMenuItem()];
-    return true;
+    return item;
 }
 
 }
 
-bool wxMenu::DoInsert(unsigned long pos, wxMenuItem *item)
+wxMenuItem* wxMenu::DoInsert(unsigned long pos, wxMenuItem *item)
 {
     wxAutoNSAutoreleasePool pool;
     if(!wxMenuBase::DoInsert(pos,item))
 {
     wxAutoNSAutoreleasePool pool;
     if(!wxMenuBase::DoInsert(pos,item))
-        return false;
+        return NULL;
     [m_cocoaNSMenu insertItem:item->GetNSMenuItem() atIndex:pos];
     [m_cocoaNSMenu insertItem:item->GetNSMenuItem() atIndex:pos];
-    return true;
+    return item;
 }
 
 wxMenuItem* wxMenu::DoRemove(wxMenuItem *item)
 }
 
 wxMenuItem* wxMenu::DoRemove(wxMenuItem *item)
@@ -105,12 +106,12 @@ wxMenuBar::~wxMenuBar()
 bool wxMenuBar::Append( wxMenu *menu, const wxString &title )
 {
     wxAutoNSAutoreleasePool pool;
 bool wxMenuBar::Append( wxMenu *menu, const wxString &title )
 {
     wxAutoNSAutoreleasePool pool;
-    wxLogDebug("append menu=%p, title=%s",menu,title.c_str());
+    wxLogTrace(wxTRACE_COCOA,wxT("append menu=%p, title=%s"),menu,title.c_str());
     if(!wxMenuBarBase::Append(menu,title))
         return false;
     wxASSERT(menu);
     wxASSERT(menu->GetNSMenu());
     if(!wxMenuBarBase::Append(menu,title))
         return false;
     wxASSERT(menu);
     wxASSERT(menu->GetNSMenu());
-    NSString *menuTitle = [[NSString alloc] initWithCString: wxStripMenuCodes(title).c_str()];
+    NSString *menuTitle = wxInitNSStringWithWxString([NSString alloc], wxStripMenuCodes(title));
     NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:NULL keyEquivalent:@""];
     [menu->GetNSMenu() setTitle:menuTitle];
     [newItem setSubmenu:menu->GetNSMenu()];
     NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:NULL keyEquivalent:@""];
     [menu->GetNSMenu() setTitle:menuTitle];
     [newItem setSubmenu:menu->GetNSMenu()];
@@ -125,14 +126,14 @@ bool wxMenuBar::Append( wxMenu *menu, const wxString &title )
 bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
 {
     wxAutoNSAutoreleasePool pool;
 bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
 {
     wxAutoNSAutoreleasePool pool;
-    wxLogDebug("insert pos=%lu, menu=%p, title=%s",pos,menu,title.c_str());
+    wxLogTrace(wxTRACE_COCOA,wxT("insert pos=%lu, menu=%p, title=%s"),pos,menu,title.c_str());
     // Get the current menu at this position
     wxMenu *nextmenu = GetMenu(pos);
     if(!wxMenuBarBase::Insert(pos,menu,title))
         return false;
     wxASSERT(menu);
     wxASSERT(menu->GetNSMenu());
     // Get the current menu at this position
     wxMenu *nextmenu = GetMenu(pos);
     if(!wxMenuBarBase::Insert(pos,menu,title))
         return false;
     wxASSERT(menu);
     wxASSERT(menu->GetNSMenu());
-    NSString *menuTitle = [[NSString alloc] initWithCString: title.c_str()];
+    NSString *menuTitle = wxInitNSStringWithWxString([NSString alloc], title);
     NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:NULL keyEquivalent:@""];
     [menu->GetNSMenu() setTitle:menuTitle];
     [newItem setSubmenu:menu->GetNSMenu()];
     NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:NULL keyEquivalent:@""];
     [menu->GetNSMenu() setTitle:menuTitle];
     [newItem setSubmenu:menu->GetNSMenu()];
@@ -180,7 +181,7 @@ wxString wxMenuBar::GetLabelTop(size_t pos) const
     wxMenu *menu = GetMenu(pos);
     int itemindex = [m_cocoaNSMenu indexOfItemWithSubmenu:menu->GetNSMenu()];
     wxASSERT(itemindex>=0);
     wxMenu *menu = GetMenu(pos);
     int itemindex = [m_cocoaNSMenu indexOfItemWithSubmenu:menu->GetNSMenu()];
     wxASSERT(itemindex>=0);
-    return wxString([[[m_cocoaNSMenu itemAtIndex:itemindex] title] lossyCString]);
+    return wxStringWithNSString([[m_cocoaNSMenu itemAtIndex:itemindex] title]);
 }
 
 void wxMenuBar::Attach(wxFrame *frame)
 }
 
 void wxMenuBar::Attach(wxFrame *frame)