]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/combobox.cpp
Applied patch [ 694561 ] FL Release build DLL include path
[wxWidgets.git] / src / univ / combobox.cpp
index 256853fbccec22a75c327a2ae08e1495e3ca8769..554986b03330f7c5783c48b9ca4aff5071e5d34c 100644 (file)
@@ -41,6 +41,7 @@
     #include "wx/validate.h"
 #endif
 
+#include "wx/tooltip.h"
 #include "wx/popupwin.h"
 
 #include "wx/univ/renderer.h"
@@ -124,6 +125,7 @@ public:
     virtual bool SetSelection(const wxString& value);
     virtual wxControl *GetControl() { return this; }
     virtual void OnShow();
+    virtual wxCoord GetBestWidth() const;
 
 protected:
     // we shouldn't return height too big from here
@@ -299,8 +301,15 @@ wxSize wxComboControl::DoGetBestClientSize() const
 {
     wxSize sizeBtn = m_btn->GetBestSize(),
            sizeText = m_text->GetBestSize();
+    wxCoord widthPopup = 0;
 
-    return wxSize(sizeText.x + g_comboMargin + sizeBtn.x, wxMax(sizeBtn.y, sizeText.y));
+    if (m_popup)
+    {
+        widthPopup = m_popup->GetBestWidth();
+    }
+
+    return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup), 
+                  wxMax(sizeBtn.y, sizeText.y));
 }
 
 void wxComboControl::DoMoveWindow(int x, int y, int width, int height)
@@ -351,6 +360,29 @@ bool wxComboControl::Show(bool show)
     return TRUE;
 }
 
+#if wxUSE_TOOLTIPS
+void wxComboControl::DoSetToolTip(wxToolTip *tooltip)
+{
+    wxControl::DoSetToolTip(tooltip);    
+
+    // Set tool tip for button and text box
+    if (m_text && m_btn)
+    {
+        if (tooltip)
+        {
+            const wxString &tip = tooltip->GetTip();
+            m_text->SetToolTip(tip);
+            m_btn->SetToolTip(tip);
+        }
+        else
+        {
+            m_text->SetToolTip(NULL);
+            m_btn->SetToolTip(NULL);
+        }
+    }
+}
+#endif // wxUSE_TOOLTIPS
+
 // ----------------------------------------------------------------------------
 // popup window handling
 // ----------------------------------------------------------------------------
@@ -591,6 +623,12 @@ void wxComboListBox::OnMouseMove(wxMouseEvent& event)
     }
 }
 
+wxCoord wxComboListBox::GetBestWidth() const
+{
+    wxSize size = wxListBox::GetBestSize();
+    return size.x;
+}
+
 wxSize wxComboListBox::DoGetBestClientSize() const
 {
     // don't return size too big or we risk to not fit on the screen