From: Robin Dunn Date: Sat, 15 May 2004 19:21:55 +0000 (+0000) Subject: Tweaks to the generic scpinctrl to handle layouts on wxMac better and X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e459a7940dc71f6c7693354f67a67eb271c4ecff Tweaks to the generic scpinctrl to handle layouts on wxMac better and fixed alignment of the spinbutton. Also, since the generic spinctrl is used then the generic header should be included. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/spinctrl.h b/include/wx/spinctrl.h index ce1b7f3553..38ff4a0c59 100644 --- a/include/wx/spinctrl.h +++ b/include/wx/spinctrl.h @@ -64,7 +64,7 @@ protected: #elif defined(__WXMOTIF__) #include "wx/generic/spinctlg.h" #elif defined(__WXMAC__) - #include "wx/mac/spinctrl.h" + #include "wx/generic/spinctlg.h" #elif defined(__WXCOCOA__) #include "wx/generic/spinctlg.h" #endif // platform diff --git a/src/generic/spinctlg.cpp b/src/generic/spinctlg.cpp index 91ae4c9f5f..ff33ce7494 100644 --- a/src/generic/spinctlg.cpp +++ b/src/generic/spinctlg.cpp @@ -45,7 +45,11 @@ // ---------------------------------------------------------------------------- // the margin between the text control and the spin +#ifdef __WXMAC__ +static const wxCoord MARGIN = 4; +#else static const wxCoord MARGIN = 2; +#endif // ---------------------------------------------------------------------------- // wxSpinCtrlText: text control used by spin control @@ -58,6 +62,9 @@ public: : wxTextCtrl(spin->GetParent(), -1, value) { m_spin = spin; + + // remove the default minsize, the spinctrl will have one instead + SetSizeHints(-1,-1); } protected: @@ -104,6 +111,9 @@ public: m_spin = spin; SetWindowStyle(style | wxSP_VERTICAL); + + // remove the default minsize, the spinctrl will have one instead + SetSizeHints(-1,-1); } protected: @@ -174,24 +184,21 @@ bool wxSpinCtrl::Create(wxWindow *parent, initial = l; } - SetBackgroundColour(*wxRED); m_text = new wxSpinCtrlText(this, value); m_btn = new wxSpinCtrlButton(this, style); - + m_btn->SetRange(min, max); m_btn->SetValue(initial); #ifdef __WXMAC__ wxSize csize = size ; if ( size.y == -1 ) { - csize.y = m_text->GetSize().y ; + csize.y = m_text->GetSize().y; } - DoSetSize(pos.x, pos.y, csize.x, csize.y); + SetBestSize(csize); #else - wxSize best = GetBestSize(); - if ( size.x != -1 ) best.x = size.x; - if ( size.y != -1 ) best.y = size.y; - DoSetSize(pos.x, pos.y, best.x, best.y); + SetBestSize(size); #endif + // have to disable this window to avoid interfering it with message // processing to the text and the button... but pretend it is enabled to // make IsEnabled() return TRUE @@ -209,11 +216,13 @@ bool wxSpinCtrl::Create(wxWindow *parent, wxSpinCtrl::~wxSpinCtrl() { - // delete the controls now, don't leave them alive even though they woudl + // delete the controls now, don't leave them alive even though they would // still be eventually deleted by our parent - but it will be too late, the // user code expects them to be gone now delete m_text; + m_text = NULL ; delete m_btn; + m_btn = NULL ; } // ---------------------------------------------------------------------------- @@ -237,11 +246,7 @@ void wxSpinCtrl::DoMoveWindow(int x, int y, int width, int height) wxCoord wText = width - sizeBtn.x; m_text->SetSize(x, y, wText, height); -#ifdef __WXMAC__ - m_btn->SetSize(x + wText + MARGIN, y, -1, -1); -#else m_btn->SetSize(x + wText + MARGIN, y, -1, height); -#endif } // ----------------------------------------------------------------------------