]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/combobox_native.cpp
added generic version of wxDatePickerCtrl from Andres Pflug
[wxWidgets.git] / src / motif / combobox_native.cpp
index 846d4e10f3e3d799569bbe7eec3a2411af4a0b57..a6aad9ebb0cc99ffd04d6fb41d767087cfdf9190 100644 (file)
@@ -9,11 +9,15 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
 #include "wx/setup.h"
 
 #if wxUSE_COMBOBOX
 
 #include "wx/combobox.h"
+#include "wx/arrstr.h"
 
 #ifdef __VMS__
 #pragma message disable nosimpint
@@ -114,7 +118,6 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
     if( size.x != -1 ) best.x = size.x;
     if( size.y != -1 ) best.y = size.y;
 
-    SetCanAddEventHandler(true);
     AttachWidget (parent, m_mainWidget, (WXWidget) NULL,
                   pos.x, pos.y, best.x, best.y);
 
@@ -123,6 +126,20 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
     return true;
 }
 
+bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
+                        const wxString& value,
+                        const wxPoint& pos,
+                        const wxSize& size,
+                        const wxArrayString& choices,
+                        long style,
+                        const wxValidator& validator,
+                        const wxString& name)
+{
+    wxCArrayString chs(choices);
+    return Create(parent, id, value, pos, size, chs.GetCount(), 
+                  chs.GetStrings(), style, validator, name);
+}
+
 void wxComboBox::AdjustDropDownListSize()
 {
     int newListCount = -1, itemCount = GetCount();
@@ -198,6 +215,22 @@ int wxComboBox::DoAppend(const wxString& item)
     return GetCount() - 1;
 }
 
+int wxComboBox::DoInsert(const wxString& item, int pos)
+{
+    wxCHECK_MSG(!(GetWindowStyle() & wxCB_SORT), -1, wxT("can't insert into sorted list"));
+    wxCHECK_MSG((pos>=0) && (pos<=GetCount()), -1, wxT("invalid index"));
+
+    if (pos == GetCount())
+        return DoAppend(item);
+
+    wxXmString str( item.c_str() );
+    XmComboBoxAddItem((Widget) m_mainWidget, str(), pos+1, False);
+    m_noStrings ++;
+    AdjustDropDownListSize();
+
+    return GetCount() - 1;
+}
+
 void wxComboBox::Delete(int n)
 {
 #ifdef LESSTIF_VERSION
@@ -345,13 +378,13 @@ void  wxComboBoxCallback (Widget WXUNUSED(w), XtPointer clientData,
             wxCommandEvent event (wxEVT_COMMAND_COMBOBOX_SELECTED,
                                   item->GetId());
             int idx = cbs->item_position;
-            event.m_commandInt = idx;
-            event.m_commandString = item->GetString (idx);
+            event.SetInt(idx);
+            event.SetString( item->GetString (idx) );
             if ( item->HasClientObjectData() )
                 event.SetClientObject( item->GetClientObject(idx) );
             else if ( item->HasClientUntypedData() )
                 event.SetClientData( item->GetClientData(idx) );
-            event.m_extraLong = true;
+            event.SetExtraLong(true);
             event.SetEventObject(item);
             item->GetEventHandler()->ProcessEvent(event);
             break;
@@ -359,9 +392,9 @@ void  wxComboBoxCallback (Widget WXUNUSED(w), XtPointer clientData,
     case XmCR_VALUE_CHANGED:
         {
             wxCommandEvent event (wxEVT_COMMAND_TEXT_UPDATED, item->GetId());
-            event.m_commandInt = -1;
-            event.m_commandString = item->GetValue();
-            event.m_extraLong = true;
+            event.SetInt(-1);
+            event.SetString( item->GetValue() );
+            event.SetExtraLong(true);
             event.SetEventObject(item);
             item->GetEventHandler()->ProcessEvent(event);
             break;