X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6522713c7527e5f683a107dff8f40e3ea19a4745..bcd3d8d9e26e41615d26d457ba0e2b84b80a0356:/src/univ/combobox.cpp diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index 2a7117c254..76544591d4 100644 --- a/src/univ/combobox.cpp +++ b/src/univ/combobox.cpp @@ -76,25 +76,35 @@ public: wxComboButton(wxComboControl *combo) : wxBitmapButton(combo->GetParent(), -1, wxNullBitmap, wxDefaultPosition, wxDefaultSize, - wxBORDER_NONE) + wxBORDER_NONE | wxBU_EXACTFIT) { m_combo = combo; - wxBitmap bmpNormal, bmpPressed, bmpDisabled; + wxBitmap bmpNormal, bmpFocus, bmpPressed, bmpDisabled; + + GetRenderer()->GetComboBitmaps(&bmpNormal, + &bmpFocus, + &bmpPressed, + &bmpDisabled); - GetRenderer()->GetComboBitmaps(&bmpNormal, &bmpPressed, &bmpDisabled); SetBitmapLabel(bmpNormal); - SetBitmapFocus(bmpNormal); - SetBitmapSelected(bmpPressed); - SetBitmapDisabled(bmpDisabled); + SetBitmapFocus(bmpFocus.Ok() ? bmpFocus : bmpNormal); + SetBitmapSelected(bmpPressed.Ok() ? bmpPressed : bmpNormal); + SetBitmapDisabled(bmpDisabled.Ok() ? bmpDisabled : bmpNormal); -// SetSize(bmpNormal.GetWidth(), bmpNormal.GetHeight()); + SetBestSize(wxDefaultSize); } protected: void OnButton(wxCommandEvent& event) { m_combo->ShowPopup(); } - virtual wxSize DoGetBestSize() const { return GetSize(); } + virtual wxSize DoGetBestClientSize() const + { + const wxBitmap& bmp = GetBitmapLabel(); + + return wxSize(bmp.GetWidth(), bmp.GetHeight()); + + } private: wxComboControl *m_combo; @@ -241,7 +251,8 @@ bool wxComboControl::Create(wxWindow *parent, m_heightPopup = size.y - DoGetBestSize().y; } - DoSetSize(pos.x, pos.y, size.x, size.y); + SetBestSize(size); + Move(pos); // create the popup window immediately here to allow creating the controls // with parent == GetPopupWindow() from the derived class ctor @@ -300,11 +311,11 @@ void wxComboControl::DoMoveWindow(int x, int y, int width, int height) width -= rectBorders.x + rectBorders.width; height -= rectBorders.y + rectBorders.height; - wxSize sizeBtn = m_btn->GetSize(); + wxSize sizeBtn = m_btn->GetBestSize(); wxCoord wText = width - sizeBtn.x; m_text->SetSize(x, y, wText, height); - m_btn->SetSize(x + wText, y, -1, height); + m_btn->SetSize(x + wText, y, sizeBtn.x, height); } // ----------------------------------------------------------------------------