X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c4edb7acdf9982f9abebd3b24a40667e0048f750..d485bda109d5ef0fef36a3f737549e9b9f54baab:/src/univ/slider.cpp diff --git a/src/univ/slider.cpp b/src/univ/slider.cpp index d8fdc3acf3..dde7764218 100644 --- a/src/univ/slider.cpp +++ b/src/univ/slider.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: univ/slider.cpp +// Name: src/univ/slider.cpp // Purpose: implementation of the universal version of wxSlider // Author: Vadim Zeitlin // Modified by: @@ -48,18 +48,43 @@ #pragma hdrstop #endif -#ifndef WX_PRECOMP - #include "wx/dc.h" -#endif +#if wxUSE_SLIDER #include "wx/slider.h" -#if wxUSE_SLIDER +#ifndef WX_PRECOMP + #include "wx/dc.h" +#endif #include "wx/univ/renderer.h" #include "wx/univ/inphand.h" #include "wx/univ/theme.h" +// ---------------------------------------------------------------------------- +// wxStdSliderInputHandler: default slider input handling +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxStdSliderInputHandler : public wxStdInputHandler +{ +public: + // default ctor + wxStdSliderInputHandler(wxInputHandler *inphand) + : wxStdInputHandler(inphand) + { + } + + // base class methods + virtual bool HandleKey(wxInputConsumer *consumer, + const wxKeyEvent& event, + bool pressed); + virtual bool HandleMouse(wxInputConsumer *consumer, + const wxMouseEvent& event); + virtual bool HandleMouseMove(wxInputConsumer *consumer, + const wxMouseEvent& event); + + virtual bool HandleFocus(wxInputConsumer *consumer, const wxFocusEvent& event); +}; + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -71,8 +96,6 @@ static const wxCoord SLIDER_LABEL_MARGIN = 2; // implementation of wxSlider // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - BEGIN_EVENT_TABLE(wxSlider, wxControl) EVT_SIZE(wxSlider::OnSize) END_EVENT_TABLE() @@ -146,7 +169,7 @@ bool wxSlider::Create(wxWindow *parent, // call this after setting the range as the best size depends (at least if // we have wxSL_LABELS style) on the range - SetBestSize(size); + SetInitialSize(size); CreateInputHandler(wxINP_HANDLER_SLIDER); @@ -185,7 +208,7 @@ bool wxSlider::ChangeValueTo(int value) // this method is protected and we should only call it with normalized // value! - wxCHECK_MSG( IsInRange(value), false, _T("invalid slider value") ); + wxCHECK_MSG( IsInRange(value), false, wxT("invalid slider value") ); m_value = value; @@ -262,14 +285,14 @@ int wxSlider::GetMax() const void wxSlider::SetLineSize(int lineSize) { - wxCHECK_RET( lineSize >= 0, _T("invalid slider line size") ); + wxCHECK_RET( lineSize >= 0, wxT("invalid slider line size") ); m_lineSize = lineSize; } void wxSlider::SetPageSize(int pageSize) { - wxCHECK_RET( pageSize >= 0, _T("invalid slider page size") ); + wxCHECK_RET( pageSize >= 0, wxT("invalid slider page size") ); m_pageSize = pageSize; } @@ -298,7 +321,7 @@ int wxSlider::GetPageSize() const void wxSlider::SetThumbLength(int lenPixels) { - wxCHECK_RET( lenPixels >= 0, _T("invalid slider thumb size") ); + wxCHECK_RET( lenPixels >= 0, wxT("invalid slider thumb size") ); // use m_thumbSize here directly and not GetThumbLength() to avoid setting // it to the default value as we don't need it @@ -329,9 +352,9 @@ int wxSlider::GetThumbLength() const // wxSlider ticks // ---------------------------------------------------------------------------- -void wxSlider::SetTickFreq(int n, int WXUNUSED(dummy)) +void wxSlider::DoSetTickFreq(int n) { - wxCHECK_RET (n > 0, _T("invalid slider tick frequency")); + wxCHECK_RET (n > 0, wxT("invalid slider tick frequency")); if ( n != m_tickFreq ) { @@ -351,7 +374,7 @@ wxSize wxSlider::CalcLabelSize() const // there is no sense in trying to calc the labels size if we haven't got // any, the caller must check for it - wxCHECK_MSG( HasLabels(), size, _T("shouldn't be called") ); + wxCHECK_MSG( HasLabels(), size, wxT("shouldn't be called") ); wxCoord w1, h1, w2, h2; GetTextExtent(FormatValue(m_min), &w1, &h1); @@ -665,7 +688,7 @@ void wxSlider::CalcThumbRect(const wxRect *rectShaftIn, wxString wxSlider::FormatValue(int value) const { - return wxString::Format(_T("%d"), value); + return wxString::Format(wxT("%d"), value); } void wxSlider::DoDraw(wxControlRenderer *renderer) @@ -821,6 +844,14 @@ bool wxSlider::PerformAction(const wxControlAction& action, return true; } +/* static */ +wxInputHandler *wxSlider::GetStdInputHandler(wxInputHandler *handlerDef) +{ + static wxStdSliderInputHandler s_handler(handlerDef); + + return &s_handler; +} + // ---------------------------------------------------------------------------- // wxSlider implementation of wxControlWithThumb interface // ---------------------------------------------------------------------------- @@ -832,7 +863,7 @@ wxScrollThumb::Shaft wxSlider::HitTest(const wxPoint& pt) const CalcThumbRect(&rectShaft, &rectThumb, NULL); // check for possible shaft or thumb hit - if (!rectShaft.Inside(pt) && !rectThumb.Inside(pt)) + if (!rectShaft.Contains(pt) && !rectThumb.Contains(pt)) { return wxScrollThumb::Shaft_None; } @@ -977,10 +1008,10 @@ bool wxSlider::OnPageScroll(int pageInc) } // ---------------------------------------------------------------------------- -// wxStdSliderButtonInputHandler +// wxStdSliderInputHandler // ---------------------------------------------------------------------------- -bool wxStdSliderButtonInputHandler::HandleKey(wxInputConsumer *consumer, +bool wxStdSliderInputHandler::HandleKey(wxInputConsumer *consumer, const wxKeyEvent& event, bool pressed) { @@ -1009,12 +1040,10 @@ bool wxStdSliderButtonInputHandler::HandleKey(wxInputConsumer *consumer, action = wxACTION_SLIDER_LINE_DOWN; break; - case WXK_PRIOR: case WXK_PAGEUP: action = wxACTION_SLIDER_PAGE_UP; break; - case WXK_NEXT: case WXK_PAGEDOWN: action = wxACTION_SLIDER_PAGE_DOWN; break; @@ -1031,7 +1060,7 @@ bool wxStdSliderButtonInputHandler::HandleKey(wxInputConsumer *consumer, return wxStdInputHandler::HandleKey(consumer, event, pressed); } -bool wxStdSliderButtonInputHandler::HandleMouse(wxInputConsumer *consumer, +bool wxStdSliderInputHandler::HandleMouse(wxInputConsumer *consumer, const wxMouseEvent& event) { wxSlider *slider = wxStaticCast(consumer->GetInputWindow(), wxSlider); @@ -1045,7 +1074,7 @@ bool wxStdSliderButtonInputHandler::HandleMouse(wxInputConsumer *consumer, return wxStdInputHandler::HandleMouse(consumer, event); } -bool wxStdSliderButtonInputHandler::HandleMouseMove(wxInputConsumer *consumer, +bool wxStdSliderInputHandler::HandleMouseMove(wxInputConsumer *consumer, const wxMouseEvent& event) { wxSlider *slider = wxStaticCast(consumer->GetInputWindow(), wxSlider); @@ -1060,10 +1089,10 @@ bool wxStdSliderButtonInputHandler::HandleMouseMove(wxInputConsumer *consumer, } bool -wxStdSliderButtonInputHandler::HandleFocus(wxInputConsumer * WXUNUSED(consumer), +wxStdSliderInputHandler::HandleFocus(wxInputConsumer * WXUNUSED(consumer), const wxFocusEvent& WXUNUSED(event)) { - // slider's appearance changes when it gets/loses focus + // slider appearance changes when it gets/loses focus return true; }