]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/combobox.mm
Move wxCocoa's wxFontRefData from the header to the implementation file.
[wxWidgets.git] / src / cocoa / combobox.mm
index 041fd382c5cb67a01d79e40252630514218f4ea0..167078c5b96e4975193a0c7cfac56eead5b3686b 100644 (file)
@@ -80,6 +80,8 @@
 
 #include "wx/combobox.h"
 
+#include "wx/cocoa/objc/objc_uniquifying.h"
+
 #ifndef WX_PRECOMP
     #include "wx/window.h"
     #include "wx/log.h"
@@ -132,6 +134,7 @@ void wxCocoaNSComboBox::DisassociateNSComboBox(WX_NSComboBox cocoaNSComboBox)
 - (void)comboBoxWillDismiss:(NSNotification *)notification;
 - (void)comboBoxWillPopUp:(NSNotification *)notification;
 @end // wxPoserNSComboBox
+WX_DECLARE_GET_OBJC_CLASS(wxPoserNSComboBox,NSComboBox)
 
 //WX_IMPLEMENT_POSER(wxPoserNSComboBox);
 @implementation wxPoserNSComboBox : NSComboBox
@@ -158,16 +161,18 @@ void wxCocoaNSComboBox::DisassociateNSComboBox(WX_NSComboBox cocoaNSComboBox)
 }
 
 @end // implementation wxPoserNSComboBox
+WX_IMPLEMENT_GET_OBJC_CLASS(wxPoserNSComboBox,NSComboBox)
 
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 
 #import <AppKit/NSComboBox.h>
 
-IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxTextCtrl)
-BEGIN_EVENT_TABLE(wxComboBox, wxTextCtrl)
+IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
+BEGIN_EVENT_TABLE(wxComboBox, wxControl)
 END_EVENT_TABLE()
 WX_IMPLEMENT_COCOA_OWNER(wxComboBox,NSComboBox,NSTextField,NSView)
+WX_IMPLEMENT_COCOA_OWNER(wxComboBox,NSTextField,NSControl,NSView)
 
 bool wxComboBox::Create(wxWindow *parent, wxWindowID winid,
             const wxString& value,
@@ -198,7 +203,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID winid,
         return false;
 
     m_cocoaNSView = NULL;
-    SetNSComboBox([[wxPoserNSComboBox alloc] initWithFrame:MakeDefaultNSRect(size)]);
+    SetNSComboBox([[WX_GET_OBJC_CLASS(wxPoserNSComboBox) alloc] initWithFrame:MakeDefaultNSRect(size)]);
     [m_cocoaNSView release];
     [GetNSTextField() setStringValue:wxNSStringWithWxString(value.c_str())];
     [GetNSControl() sizeToFit];
@@ -313,4 +318,93 @@ void* wxComboBox::DoGetItemClientData(unsigned int nIndex) const
     return m_Datas[nIndex];
 }
 
+/////////////////////////////////////////////////////////////////////////////
+// wxTextEntry virtual implementations:
+
+void wxComboBox::WriteText(wxString const&)
+{
+}
+
+wxString wxComboBox::GetValue() const
+{
+    wxAutoNSAutoreleasePool pool;
+    return wxStringWithNSString([GetNSTextField() stringValue]);
+}
+
+void wxComboBox::Remove(long, long)
+{
+}
+
+void wxComboBox::Cut()
+{
+}
+
+void wxComboBox::Copy()
+{
+}
+
+void wxComboBox::Paste()
+{
+}
+
+void wxComboBox::Undo()
+{
+}
+
+void wxComboBox::Redo()
+{
+}
+
+bool wxComboBox::CanUndo() const
+{
+    return false;
+}
+
+bool wxComboBox::CanRedo() const
+{
+    return false;
+}
+
+void wxComboBox::SetInsertionPoint(long)
+{
+}
+
+long wxComboBox::GetInsertionPoint() const
+{
+    return 0;
+}
+
+wxTextPos wxComboBox::GetLastPosition() const
+{
+    // working - returns the size of the wxString
+    return (long)(GetValue().Len());
+}
+
+void wxComboBox::SetSelection(long, long)
+{
+}
+
+void wxComboBox::GetSelection(long*, long*) const
+{
+}
+
+bool wxComboBox::IsEditable() const
+{
+    return [GetNSTextField() isEditable];
+}
+
+void wxComboBox::SetEditable(bool editable)
+{
+    // first ensure that the current value is stored (in case the user had not finished editing
+    // before SetEditable(FALSE) was called)
+    DoSetValue(GetValue(),1);
+
+    [GetNSTextField() setEditable: editable];
+
+    // forces the focus on the textctrl to be lost - while focus is still maintained
+    // after SetEditable(FALSE) the user may still edit the control
+    // (might not the best way to do this..)
+    [GetNSTextField() abortEditing];
+}
+
 #endif // wxUSE_COMBOBOX