X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/442b35b53bf95f5c6c003ea9ddbefd17adbc2a00..d9dd0c95df369be61d3dfa9314e87b589e50526a:/src/univ/spinbutt.cpp diff --git a/src/univ/spinbutt.cpp b/src/univ/spinbutt.cpp index 9721e5062c..f354520b59 100644 --- a/src/univ/spinbutt.cpp +++ b/src/univ/spinbutt.cpp @@ -1,10 +1,9 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: univ/spinbutt.cpp +// Name: src/univ/spinbutt.cpp // Purpose: implementation of the universal version of wxSpinButton // Author: Vadim Zeitlin // Modified by: // Created: 21.01.01 -// RCS-ID: $Id$ // Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -17,11 +16,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "spinbutbase.h" - #pragma implementation "univspinbutt.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -43,9 +37,6 @@ // implementation of wxSpinButton // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent) -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) - // ---------------------------------------------------------------------------- // creation // ---------------------------------------------------------------------------- @@ -101,13 +92,13 @@ bool wxSpinButton::Create(wxWindow *parent, if ( !wxSpinButtonBase::Create(parent, id, pos, size, style, wxDefaultValidator, name) ) - return FALSE; + return false; - SetBestSize(size); + SetInitialSize(size); CreateInputHandler(wxINP_HANDLER_SPINBTN); - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -144,14 +135,14 @@ int wxSpinButton::NormalizeValue(int value) const if ( value > m_max ) { if ( GetWindowStyleFlag() & wxSP_WRAP ) - value = m_min + (value - m_max) % (m_max - m_min); + value = m_min + (value - m_max - 1) % (m_max - m_min + 1); else value = m_max; } else if ( value < m_min ) { if ( GetWindowStyleFlag() & wxSP_WRAP ) - value = m_max - (m_min - value) % (m_max - m_min); + value = m_max - (m_min - value - 1) % (m_max - m_min + 1); else value = m_min; } @@ -167,7 +158,7 @@ bool wxSpinButton::ChangeValue(int inc) { // nothing changed - most likely because we are already at min/max // value - return FALSE; + return false; } wxSpinEvent event(inc > 0 ? wxEVT_SCROLL_LINEUP : wxEVT_SCROLL_LINEDOWN, @@ -178,7 +169,7 @@ bool wxSpinButton::ChangeValue(int inc) if ( GetEventHandler()->ProcessEvent(event) && !event.IsAllowed() ) { // programm has vetoed the event - return FALSE; + return false; } m_value = valueNew; @@ -187,7 +178,7 @@ bool wxSpinButton::ChangeValue(int inc) event.SetEventType(wxEVT_SCROLL_THUMBTRACK); (void)GetEventHandler()->ProcessEvent(event); - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -329,14 +320,14 @@ void wxSpinButton::CalcArrowRects(wxRect *rect1, wxRect *rect2) const } } -wxScrollArrows::Arrow wxSpinButton::HitTest(const wxPoint& pt) const +wxScrollArrows::Arrow wxSpinButton::HitTestArrow(const wxPoint& pt) const { wxRect rectArrow1, rectArrow2; CalcArrowRects(&rectArrow1, &rectArrow2); - if ( rectArrow1.Inside(pt) ) + if ( rectArrow1.Contains(pt) ) return wxScrollArrows::Arrow_First; - else if ( rectArrow2.Inside(pt) ) + else if ( rectArrow2.Contains(pt) ) return wxScrollArrows::Arrow_Second; else return wxScrollArrows::Arrow_None; @@ -357,7 +348,15 @@ bool wxSpinButton::PerformAction(const wxControlAction& action, else return wxControl::PerformAction(action, numArg, strArg); - return TRUE; + return true; +} + +/* static */ +wxInputHandler *wxSpinButton::GetStdInputHandler(wxInputHandler *handlerDef) +{ + static wxStdSpinButtonInputHandler s_handler(handlerDef); + + return &s_handler; } // ---------------------------------------------------------------------------- @@ -370,7 +369,7 @@ wxStdSpinButtonInputHandler(wxInputHandler *inphand) { } -bool wxStdSpinButtonInputHandler::HandleKey(wxControl *control, +bool wxStdSpinButtonInputHandler::HandleKey(wxInputConsumer *consumer, const wxKeyEvent& event, bool pressed) { @@ -390,43 +389,43 @@ bool wxStdSpinButtonInputHandler::HandleKey(wxControl *control, break; } - if ( !!action ) + if ( !action.IsEmpty() ) { - control->PerformAction(action); + consumer->PerformAction(action); - return TRUE; + return true; } } - return wxStdInputHandler::HandleKey(control, event, pressed); + return wxStdInputHandler::HandleKey(consumer, event, pressed); } -bool wxStdSpinButtonInputHandler::HandleMouse(wxControl *control, +bool wxStdSpinButtonInputHandler::HandleMouse(wxInputConsumer *consumer, const wxMouseEvent& event) { - wxSpinButton *spinbtn = wxStaticCast(control, wxSpinButton); + wxSpinButton *spinbtn = wxStaticCast(consumer->GetInputWindow(), wxSpinButton); if ( spinbtn->GetArrows().HandleMouse(event) ) { // don't refresh, everything is already done - return FALSE; + return false; } - return wxStdInputHandler::HandleMouse(control, event); + return wxStdInputHandler::HandleMouse(consumer, event); } -bool wxStdSpinButtonInputHandler::HandleMouseMove(wxControl *control, +bool wxStdSpinButtonInputHandler::HandleMouseMove(wxInputConsumer *consumer, const wxMouseEvent& event) { - wxSpinButton *spinbtn = wxStaticCast(control, wxSpinButton); + wxSpinButton *spinbtn = wxStaticCast(consumer->GetInputWindow(), wxSpinButton); if ( spinbtn->GetArrows().HandleMouseMove(event) ) { // processed by the arrows - return FALSE; + return false; } - return wxStdInputHandler::HandleMouseMove(control, event); + return wxStdInputHandler::HandleMouseMove(consumer, event); }