]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/combobox.cpp
Take into account cell's own size, not only the
[wxWidgets.git] / src / univ / combobox.cpp
index e261d32fde980c3ea90aae45abb10330a6fde134..43e9e551728169cfa6eb8eae9f8e57018d755e13 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        univ/combobox.cpp
+// Name:        src/univ/combobox.cpp
 // Purpose:     wxComboControl and wxComboBox implementation
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "univcombobox.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
@@ -131,6 +127,11 @@ public:
     virtual void SetSelection(int n) { DoSetSelection(n, true); }
     void SetSelection(int n, bool select) { DoSetSelection(n, select); }
 
+    // used to process wxUniv actions
+    bool PerformAction(const wxControlAction& action,
+                       long numArg,
+                       const wxString& strArg);
+
 protected:
     // we shouldn't return height too big from here
     virtual wxSize DoGetBestClientSize() const;
@@ -144,11 +145,6 @@ protected:
     // called whenever the user selects or activates a listbox item
     void OnSelect(wxCommandEvent& event);
 
-    // used to process wxUniv actions
-    bool PerformAction(const wxControlAction& action,
-                       long numArg,
-                       const wxString& strArg);
-
 private:
     // has the mouse been released on this control?
     bool m_clicked;
@@ -330,7 +326,7 @@ void wxComboControl::DoMoveWindow(int x, int y, int width, int height)
     wxSize sizeBtn = m_btn->GetBestSize();
 
     wxCoord wText = width - sizeBtn.x;
-    wxPoint p = GetParent() ? GetParent()->GetClientAreaOrigin() : wxPoint();
+    wxPoint p = GetParent() ? GetParent()->GetClientAreaOrigin() : wxPoint(0,0);
     m_text->SetSize(x - p.x, y - p.y, wText, height);
     m_btn->SetSize(x - p.x + wText, y - p.y, sizeBtn.x, height);
 }
@@ -544,7 +540,7 @@ bool wxComboListBox::SetSelection(const wxString& value)
     // always matches), but we want to show the first one in such case
     if ( value.empty() )
     {
-        if ( GetCount() )
+        if ( GetCount() > 0 )
         {
             wxListBox::SetSelection(0);
         }
@@ -576,7 +572,7 @@ void wxComboListBox::OnSelect(wxCommandEvent& event)
         event2.SetId(m_combo->GetId());
         m_combo->ProcessEvent(event2);
     }
-    //else: ignore the events resultign from just moving the mouse initially
+    //else: ignore the events resulting from just moving the mouse initially
 }
 
 void wxComboListBox::OnShow()
@@ -614,7 +610,7 @@ void wxComboListBox::OnMouseMove(wxMouseEvent& event)
     // while a wxComboListBox is shown, it always has capture, so if it doesn't
     // we're about to go away anyhow (normally this shouldn't happen at all,
     // but I don't put assert here as it just might do on other platforms and
-    // it doesn't break anythign anyhow)
+    // it doesn't break anything anyhow)
     if ( this == wxWindow::GetCapture() )
     {
         if ( HitTest(event.GetPosition()) == wxHT_WINDOW_INSIDE )
@@ -802,7 +798,7 @@ void wxComboBox::Clear()
 
 void wxComboBox::Delete(int n)
 {
-    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Delete") );
+    wxCHECK_RET( IsValid(n), _T("invalid index in wxComboBox::Delete") );
 
     if (GetSelection() == n)
         GetText()->SetValue(wxEmptyString);
@@ -810,33 +806,33 @@ void wxComboBox::Delete(int n)
     GetLBox()->Delete(n);
 }
 
-int wxComboBox::GetCount() const
+size_t wxComboBox::GetCount() const
 {
     return GetLBox()->GetCount();
 }
 
 wxString wxComboBox::GetString(int n) const
 {
-    wxCHECK_MSG( (n >= 0) && (n < GetCount()), wxEmptyString, _T("invalid index in wxComboBox::GetString") );
+    wxCHECK_MSG( IsValid(n), wxEmptyString, _T("invalid index in wxComboBox::GetString") );
 
     return GetLBox()->GetString(n);
 }
 
 void wxComboBox::SetString(int n, const wxString& s)
 {
-    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::SetString") );
+    wxCHECK_RET( IsValid(n), _T("invalid index in wxComboBox::SetString") );
 
     GetLBox()->SetString(n, s);
 }
 
-int wxComboBox::FindString(const wxString& s) const
+int wxComboBox::FindString(const wxString& s, bool bCase) const
 {
-    return GetLBox()->FindString(s);
+    return GetLBox()->FindString(s, bCase);
 }
 
 void wxComboBox::SetSelection(int n)
 {
-    wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") );
+    wxCHECK_RET( IsValid(n), _T("invalid index in wxComboBox::Select") );
 
     GetLBox()->SetSelection(n);
     GetText()->SetValue(GetLBox()->GetString(n));
@@ -863,9 +859,9 @@ int wxComboBox::DoAppend(const wxString& item)
 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"));
+    wxCHECK_MSG(IsValidInsert(pos), -1, wxT("invalid index"));
 
-    if (pos == GetCount())
+    if ((size_t)pos == GetCount())
         return DoAppend(item);
 
     GetLBox()->Insert(item, pos);