X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5276b0a53cef4815230e39b54d2ecda14f72cbd1..b4572569856d405eb80c305674a9aeb8839e87d8:/src/common/combocmn.cpp diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index 0b5b37d372..15298838f0 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -85,7 +85,11 @@ #define wxCC_GENERIC_TLW_IS_DIALOG #define wxComboCtrlGenericTLW wxDialog -#include "wx/gtk/private.h" +#if defined(__WXGTK20__) +# include "wx/gtk/private.h" +#else +# include "wx/gtk1/private.h" +#endif // NB: Let's not be afraid to use wxGTK's wxPopupTransientWindow as a // 'perfect' popup, as it can succesfully host child controls even in @@ -231,10 +235,10 @@ static inline bool IsPopupWinTypePerfect( wxByte popupWinType ) #else return ( popupWinType == POPUPWIN_GENERICTLW #if POPUPWIN_IS_PERFECT - || popupWinType == POPUPWIN_WXPOPUPWINDOW + || popupWinType == POPUPWIN_WXPOPUPWINDOW #endif #if TRANSIENT_POPUPWIN_IS_PERFECT - || popupWinType == POPUPWIN_WXPOPUPTRANSIENTWINDOW + || popupWinType == POPUPWIN_WXPOPUPTRANSIENTWINDOW #endif ); #endif @@ -1198,7 +1202,7 @@ void wxComboCtrlBase::PositionTextCtrl( int textCtrlXAdjust, int textCtrlYAdjust // There is special custom paint area - it is better to // use some margin with the wxTextCtrl. m_text->SetMargins(m_marginLeft); - x = m_tcArea.x + m_widthCustomPaint + + x = m_tcArea.x + m_widthCustomPaint + m_marginLeft + textCtrlXAdjust; } @@ -2088,17 +2092,24 @@ void wxComboCtrlBase::OnButtonClick() { // Derived classes can override this method for totally custom // popup action - if ( !IsPopupWindowState(Visible) ) + switch ( GetPopupWindowState() ) { - wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_DROPDOWN, GetId()); - event.SetEventObject(this); - HandleWindowEvent(event); + case Hidden: + { + wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_DROPDOWN, GetId()); + event.SetEventObject(this); + HandleWindowEvent(event); - ShowPopup(); - } - else - { - HidePopup(true); + ShowPopup(); + break; + } + + case Animating: + case Visible: + { + HidePopup(true); + break; + } } }