]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/choice.mm
don't send duplicate set/kill focus events when the text control part of the control...
[wxWidgets.git] / src / cocoa / choice.mm
index 3dd3ae306b1cf714705a039c153b8d2d17dcf277..0da0563835ee64d5c96a43b0809a51ab51f8f550 100644 (file)
@@ -1,23 +1,28 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        cocoa/choice.mm
+// Name:        src/cocoa/choice.mm
 // Purpose:     wxChoice
 // Author:      David Elliott
 // Modified by:
 // Created:     2003/03/16
 // Purpose:     wxChoice
 // Author:      David Elliott
 // Modified by:
 // Created:     2003/03/16
-// RCS-ID:      $Id: 
+// Id:          $Id$
 // Copyright:   (c) 2003 David Elliott
 // Copyright:   (c) 2003 David Elliott
-// Licence:    wxWindows license
+// Licence:     wxWidgets licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
+
+#if wxUSE_CHOICE
+
+#include "wx/choice.h"
+
 #ifndef WX_PRECOMP
     #include "wx/log.h"
     #include "wx/app.h"
 #ifndef WX_PRECOMP
     #include "wx/log.h"
     #include "wx/app.h"
-    #include "wx/choice.h"
     #include "wx/arrstr.h"
 #endif //WX_PRECOMP
 
 #include "wx/cocoa/string.h"
     #include "wx/arrstr.h"
 #endif //WX_PRECOMP
 
 #include "wx/cocoa/string.h"
+#include "wx/cocoa/autorelease.h"
 
 #import <AppKit/NSPopUpButton.h>
 #import <AppKit/NSMenu.h>
 
 #import <AppKit/NSPopUpButton.h>
 #import <AppKit/NSMenu.h>
@@ -56,6 +61,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID winid,
             const wxValidator& validator,
             const wxString& name)
 {
             const wxValidator& validator,
             const wxString& name)
 {
+    wxAutoNSAutoreleasePool pool;
     if(!CreateControl(parent,winid,pos,size,style,validator,name))
         return false;
 
     if(!CreateControl(parent,winid,pos,size,style,validator,name))
         return false;
 
@@ -73,7 +79,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID winid,
         {
             m_sortedStrings->Add(choices[i]);
         }
         {
             m_sortedStrings->Add(choices[i]);
         }
-        for(size_t i=0; i < m_sortedStrings->GetCount(); i++)
+        for(unsigned int i=0; i < m_sortedStrings->GetCount(); i++)
         {
             [nsmenu addItemWithTitle:wxNSStringWithWxString(
                     m_sortedStrings->Item(i))
         {
             [nsmenu addItemWithTitle:wxNSStringWithWxString(
                     m_sortedStrings->Item(i))
@@ -108,7 +114,7 @@ wxChoice::~wxChoice()
 
     if(HasClientObjectData())
     {
 
     if(HasClientObjectData())
     {
-        for(size_t i=0; i < m_itemsClientData.GetCount(); i++)
+        for(unsigned int i=0; i < m_itemsClientData.GetCount(); i++)
             delete (wxClientData*)m_itemsClientData.Item(i);
     }
     m_itemsClientData.Clear();
             delete (wxClientData*)m_itemsClientData.Item(i);
     }
     m_itemsClientData.Clear();
@@ -134,14 +140,14 @@ void wxChoice::Clear()
         m_sortedStrings->Clear();
     if(HasClientObjectData())
     {
         m_sortedStrings->Clear();
     if(HasClientObjectData())
     {
-        for(size_t i=0; i < m_itemsClientData.GetCount(); i++)
+        for(unsigned int i=0; i < m_itemsClientData.GetCount(); i++)
             delete (wxClientData*)m_itemsClientData.Item(i);
     }
     m_itemsClientData.Clear();
     [(NSPopUpButton*)m_cocoaNSView removeAllItems];
 }
 
             delete (wxClientData*)m_itemsClientData.Item(i);
     }
     m_itemsClientData.Clear();
     [(NSPopUpButton*)m_cocoaNSView removeAllItems];
 }
 
-void wxChoice::Delete(int n)
+void wxChoice::Delete(unsigned int n)
 {
     if(m_sortedStrings)
         m_sortedStrings->RemoveAt(n);
 {
     if(m_sortedStrings)
         m_sortedStrings->RemoveAt(n);
@@ -151,24 +157,26 @@ void wxChoice::Delete(int n)
     [(NSPopUpButton*)m_cocoaNSView removeItemAtIndex:n];
 }
 
     [(NSPopUpButton*)m_cocoaNSView removeItemAtIndex:n];
 }
 
-int wxChoice::GetCount() const
+unsigned int wxChoice::GetCount() const
 {
 {
-    return [(NSPopUpButton*)m_cocoaNSView numberOfItems];
+    return (unsigned int)[(NSPopUpButton*)m_cocoaNSView numberOfItems];
 }
 
 }
 
-wxString wxChoice::GetString(int n) const
+wxString wxChoice::GetString(unsigned int n) const
 {
 {
+    wxAutoNSAutoreleasePool pool;
     return wxStringWithNSString([(NSPopUpButton*)m_cocoaNSView itemTitleAtIndex:n]);
 }
 
     return wxStringWithNSString([(NSPopUpButton*)m_cocoaNSView itemTitleAtIndex:n]);
 }
 
-void wxChoice::SetString(int n, const wxString& title)
+void wxChoice::SetString(unsigned int n, const wxString& title)
 {
     NSMenuItem *item = [(NSPopUpButton*)m_cocoaNSView itemAtIndex:n];
     [item setTitle:wxNSStringWithWxString(title)];
 }
 
 {
     NSMenuItem *item = [(NSPopUpButton*)m_cocoaNSView itemAtIndex:n];
     [item setTitle:wxNSStringWithWxString(title)];
 }
 
-int wxChoice::FindString(const wxString& title) const
+int wxChoice::FindString(const wxString& title, bool bCase) const
 {
 {
+    // FIXME: use wxItemContainerImmutable::FindString for bCase parameter
     return [(NSPopUpButton*)m_cocoaNSView indexOfItemWithTitle:
         wxNSStringWithWxString(title)];
 }
     return [(NSPopUpButton*)m_cocoaNSView indexOfItemWithTitle:
         wxNSStringWithWxString(title)];
 }
@@ -180,6 +188,7 @@ int wxChoice::GetSelection() const
 
 int wxChoice::DoAppend(const wxString& title)
 {
 
 int wxChoice::DoAppend(const wxString& title)
 {
+    wxAutoNSAutoreleasePool pool;
     NSMenu *nsmenu = [(NSPopUpButton*)m_cocoaNSView menu];
     NSMenuItem *item;
     if(m_sortedStrings)
     NSMenu *nsmenu = [(NSPopUpButton*)m_cocoaNSView menu];
     NSMenuItem *item;
     if(m_sortedStrings)
@@ -199,7 +208,7 @@ int wxChoice::DoAppend(const wxString& title)
     return [nsmenu indexOfItem:item];
 }
 
     return [nsmenu indexOfItem:item];
 }
 
-int wxChoice::DoInsert(const wxString& title, int pos)
+int wxChoice::DoInsert(const wxString& title, unsigned int pos)
 {
     if(m_sortedStrings)
         return DoAppend(title);
 {
     if(m_sortedStrings)
         return DoAppend(title);
@@ -210,28 +219,30 @@ int wxChoice::DoInsert(const wxString& title, int pos)
     return [nsmenu indexOfItem:item];
 }
 
     return [nsmenu indexOfItem:item];
 }
 
-void wxChoice::DoSetItemClientData(int n, void *data)
+void wxChoice::DoSetItemClientData(unsigned int n, void *data)
 {
     m_itemsClientData.Item(n) = data;
 }
 
 {
     m_itemsClientData.Item(n) = data;
 }
 
-void* wxChoice::DoGetItemClientData(int n) const
+void* wxChoice::DoGetItemClientData(unsigned int n) const
 {
     return m_itemsClientData.Item(n);
 }
 
 {
     return m_itemsClientData.Item(n);
 }
 
-void wxChoice::DoSetItemClientObject(int n, wxClientData *data)
+void wxChoice::DoSetItemClientObject(unsigned int n, wxClientData *data)
 {
     m_itemsClientData.Item(n) = data;
 }
 
 {
     m_itemsClientData.Item(n) = data;
 }
 
-wxClientData* wxChoice::DoGetItemClientObject(int n) const
+wxClientData* wxChoice::DoGetItemClientObject(unsigned int n) const
 {
     return (wxClientData*)m_itemsClientData.Item(n);
 }
 
 void wxChoice::SetSelection(int n)
 {
 {
     return (wxClientData*)m_itemsClientData.Item(n);
 }
 
 void wxChoice::SetSelection(int n)
 {
+    wxAutoNSAutoreleasePool pool;
     [(NSPopUpButton*)m_cocoaNSView selectItemAtIndex:n];
 }
 
     [(NSPopUpButton*)m_cocoaNSView selectItemAtIndex:n];
 }
 
+#endif