]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/combobox.cpp
use MoreFilesX instead of MoreFiles when building with Apple Developer Tools
[wxWidgets.git] / src / univ / combobox.cpp
index 2e0af935fae706c3b90de79fe93550893b1b1fac..256853fbccec22a75c327a2ae08e1495e3ca8769 100644 (file)
    3. which passes them to the popup window if it is popped up
  */
 
    3. which passes them to the popup window if it is popped up
  */
 
+// constants
+// ----------------------------------------------------------------------------
+
+// the margin between the text control and the combo button
+static const wxCoord g_comboMargin = 2;
+
 // ----------------------------------------------------------------------------
 // wxComboButton is just a normal button except that it sends commands to the
 // combobox and not its parent
 // ----------------------------------------------------------------------------
 // wxComboButton is just a normal button except that it sends commands to the
 // combobox and not its parent
@@ -294,7 +300,7 @@ wxSize wxComboControl::DoGetBestClientSize() const
     wxSize sizeBtn = m_btn->GetBestSize(),
            sizeText = m_text->GetBestSize();
 
     wxSize sizeBtn = m_btn->GetBestSize(),
            sizeText = m_text->GetBestSize();
 
-    return wxSize(sizeBtn.x + sizeText.x, wxMax(sizeBtn.y, sizeText.y));
+    return wxSize(sizeText.x + g_comboMargin + sizeBtn.x, wxMax(sizeBtn.y, sizeText.y));
 }
 
 void wxComboControl::DoMoveWindow(int x, int y, int width, int height)
 }
 
 void wxComboControl::DoMoveWindow(int x, int y, int width, int height)
@@ -718,10 +724,16 @@ void wxComboBox::SetEditable(bool editable)
 void wxComboBox::Clear()
 {
     GetLBox()->Clear();
 void wxComboBox::Clear()
 {
     GetLBox()->Clear();
+    GetText()->SetValue(wxEmptyString);
 }
 
 void wxComboBox::Delete(int n)
 {
 }
 
 void wxComboBox::Delete(int n)
 {
+    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Delete") );
+
+    if (GetSelection() == n)
+        GetText()->SetValue(wxEmptyString);
+
     GetLBox()->Delete(n);
 }
 
     GetLBox()->Delete(n);
 }
 
@@ -732,11 +744,15 @@ int wxComboBox::GetCount() const
 
 wxString wxComboBox::GetString(int n) const
 {
 
 wxString wxComboBox::GetString(int n) const
 {
+    wxCHECK_MSG( (n >= 0) && (n < GetCount()), wxEmptyString, _T("invalid index in wxComboBox::GetString") );
+
     return GetLBox()->GetString(n);
 }
 
 void wxComboBox::SetString(int n, const wxString& s)
 {
     return GetLBox()->GetString(n);
 }
 
 void wxComboBox::SetString(int n, const wxString& s)
 {
+    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::SetString") );
+
     GetLBox()->SetString(n, s);
 }
 
     GetLBox()->SetString(n, s);
 }
 
@@ -747,7 +763,7 @@ int wxComboBox::FindString(const wxString& s) const
 
 void wxComboBox::Select(int n)
 {
 
 void wxComboBox::Select(int n)
 {
-    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid combobox index") );
+    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") );
 
     GetLBox()->SetSelection(n);
     GetText()->SetValue(GetLBox()->GetString(n));
 
     GetLBox()->SetSelection(n);
     GetText()->SetValue(GetLBox()->GetString(n));
@@ -755,8 +771,15 @@ void wxComboBox::Select(int n)
 
 int wxComboBox::GetSelection() const
 {
 
 int wxComboBox::GetSelection() const
 {
+#if 1 // FIXME:: What is the correct behavior?
     // if the current value isn't one of the listbox strings, return -1
     // if the current value isn't one of the listbox strings, return -1
+    return GetLBox()->GetSelection();
+#else    
+    // Why oh why is this done this way? 
+    // It is not because the value displayed in the text can be found 
+    // in the list that it is the item that is selected!
     return FindString(GetText()->GetValue());
     return FindString(GetText()->GetValue());
+#endif
 }
 
 int wxComboBox::DoAppend(const wxString& item)
 }
 
 int wxComboBox::DoAppend(const wxString& item)