X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f4da9a943131e6654f05dbf0761e52593d30e5b5..3508c1432884472f0d24f0f98c0dc75ed35df297:/src/univ/slider.cpp?ds=sidebyside diff --git a/src/univ/slider.cpp b/src/univ/slider.cpp index 25d5e99541..0e29c60806 100644 --- a/src/univ/slider.cpp +++ b/src/univ/slider.cpp @@ -60,6 +60,31 @@ #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 // ---------------------------------------------------------------------------- @@ -146,7 +171,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); @@ -821,6 +846,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 +865,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 +1010,10 @@ bool wxSlider::OnPageScroll(int pageInc) } // ---------------------------------------------------------------------------- -// wxStdSliderButtonInputHandler +// wxStdSliderInputHandler // ---------------------------------------------------------------------------- -bool wxStdSliderButtonInputHandler::HandleKey(wxInputConsumer *consumer, +bool wxStdSliderInputHandler::HandleKey(wxInputConsumer *consumer, const wxKeyEvent& event, bool pressed) { @@ -1029,7 +1062,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); @@ -1043,7 +1076,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); @@ -1058,10 +1091,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; }