X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/327788acc5e4915df4e9e97db7fb08a4c4a00cdd..7a5e53abb3f9ea13eba2880972306446e4e21e83:/src/mac/carbon/spinctrl.cpp diff --git a/src/mac/carbon/spinctrl.cpp b/src/mac/carbon/spinctrl.cpp index a083c8a3c5..b006866a06 100644 --- a/src/mac/carbon/spinctrl.cpp +++ b/src/mac/carbon/spinctrl.cpp @@ -8,24 +8,19 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "spinctlg.h" +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma implementation "spinctrl.h" #endif #include "wx/defs.h" -#ifndef WX_PRECOMP - #include "wx/textctrl.h" -#endif //WX_PRECOMP - #if wxUSE_SPINCTRL #include "wx/spinbutt.h" #include "wx/spinctrl.h" +#include "wx/textctrl.h" -#include "wx/spinctrl.h" - // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -44,6 +39,9 @@ public: : wxTextCtrl(spin , -1, value) { m_spin = spin; + + // remove the default minsize, the spinctrl will have one instead + SetSizeHints(-1,-1); } protected: @@ -88,14 +86,21 @@ public: : wxSpinButton(spin ) { m_spin = spin; - SetWindowStyle(style | wxSP_VERTICAL); + + // TODO: The spin button gets truncated a little bit due to size + // differences so change it's default size a bit. SMALL still gets a + // bit truncated, but MINI seems to be too small... Readdress this + // when the textctrl issues are all sorted out. + SetWindowVariant(wxWINDOW_VARIANT_SMALL); + + // remove the default minsize, the spinctrl will have one instead + SetSizeHints(-1,-1); } protected: void OnSpinButton(wxSpinEvent& eventSpin) { -#if defined(__WXMAC__) || defined(__WXMOTIF__) m_spin->SetTextValue(eventSpin.GetPosition()); wxCommandEvent event(wxEVT_COMMAND_SPINCTRL_UPDATED, m_spin->GetId()); @@ -103,10 +108,6 @@ protected: event.SetInt(eventSpin.GetPosition()); m_spin->GetEventHandler()->ProcessEvent(event); -#else - m_spin->SetTextValue(eventSpin.GetPosition()); - eventSpin.Skip(); -#endif } private: @@ -173,7 +174,7 @@ bool wxSpinCtrl::Create(wxWindow *parent, if ( size.y == -1 ) { csize.y = m_text->GetSize().y ; } - DoSetSize(pos.x , pos.y , csize.x, csize.y); + SetBestSize(csize); return TRUE; } @@ -195,6 +196,9 @@ wxSpinCtrl::~wxSpinCtrl() wxSize wxSpinCtrl::DoGetBestSize() const { + if (!m_btn || !m_text) + return GetSize(); + wxSize sizeBtn = m_btn->GetBestSize(), sizeText = m_text->GetBestSize(); @@ -210,7 +214,7 @@ void wxSpinCtrl::DoMoveWindow(int x, int y, int width, int height) wxCoord wText = width - sizeBtn.x; m_text->SetSize(0, 0, wText, height); - m_btn->SetSize(0 + wText + MARGIN, 0, -1, -1); + m_btn->SetSize(0 + wText + MARGIN, 0, -1, height); } // ---------------------------------------------------------------------------- @@ -319,4 +323,15 @@ void wxSpinCtrl::SetRange(int min, int max) m_btn->SetRange(min, max); } +void wxSpinCtrl::SetSelection(long from, long to) +{ + // if from and to are both -1, it means (in wxWidgets) that all text should + // be selected + if ( (from == -1) && (to == -1) ) + { + from = 0; + } + m_text->SetSelection(from, to); +} + #endif // wxUSE_SPINCTRL