X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0a936028d443885f8faf0ffa74766b5825dda77b..985acf8734d61067c66b4812a9dd9da90d725851:/src/msw/slider95.cpp diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp index 479a180b82..8bef10518a 100644 --- a/src/msw/slider95.cpp +++ b/src/msw/slider95.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/slider.cpp +// Name: src/msw/slider.cpp // Purpose: wxSlider, using the Win95 (and later) trackbar control // Author: Julian Smart // Modified by: @@ -14,10 +14,6 @@ // declarations // ============================================================================ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "slider95.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- @@ -31,19 +27,15 @@ #if wxUSE_SLIDER +#include "wx/slider.h" + #ifndef WX_PRECOMP + #include "wx/msw/wrapcctl.h" // include "properly" #include "wx/brush.h" #endif -#include "wx/slider.h" #include "wx/msw/subwin.h" -#if !(defined(__GNUWIN32_OLD__) && !defined(__CYGWIN10__)) - #include -#endif - -#define USE_DEFERRED_SIZING 1 - // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -109,7 +101,7 @@ wxBEGIN_FLAGS( wxSliderStyle ) wxEND_FLAGS( wxSliderStyle ) -IMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider, wxControl,"wx/scrolbar.h") +IMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider, wxControl,"wx/slider.h") wxBEGIN_PROPERTIES_TABLE(wxSlider) wxEVENT_RANGE_PROPERTY( Scroll , wxEVT_SCROLL_TOP , wxEVT_SCROLL_CHANGED , wxScrollEvent ) @@ -190,7 +182,7 @@ wxSlider::Create(wxWindow *parent, } }; - wxASSERT_MSG( !(style & wxSL_VERTICAL) | !(style & wxSL_HORIZONTAL), + wxASSERT_MSG( !(style & wxSL_VERTICAL) || !(style & wxSL_HORIZONTAL), _T("incompatible slider direction and orientation") ); @@ -460,16 +452,6 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height) return; } - // if our parent had prepared a defer window handle for us, use it (unless - // we are a top level window) - wxWindowMSW *parent = GetParent(); - -#if USE_DEFERRED_SIZING - HDWP hdwp = parent && !IsTopLevel() ? (HDWP)parent->m_hDWP : NULL; -#else - HDWP hdwp = 0; -#endif - // be careful to position the slider itself after moving the labels as // otherwise our GetBoundingBox(), which is called from WM_SIZE handler, // would return a wrong result and wrong size would be cached internally @@ -482,21 +464,20 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height) // position all labels: min at the top, value in the middle and max at // the bottom - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Min], + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Min], xLabel, y, wLabel, hLabel); - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Value], + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Value], xLabel, y + (height - hLabel)/2, wLabel, hLabel); - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Max], - xLabel, y + height - hLabel, wLabel, hLabel); + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Max], + xLabel, y + height - hLabel, wLabel, hLabel); // position the slider itself along the left/right edge - wxMoveWindowDeferred(hdwp, this, GetHwnd(), - HasFlag(wxSL_LEFT) ? x : x + wLabel + HGAP, - y + hLabel/2, - width - wLabel - HGAP, - height - hLabel); + wxSliderBase::DoMoveWindow(HasFlag(wxSL_LEFT) ? x : x + wLabel + HGAP, + y + hLabel/2, + width - wLabel - HGAP, + height - hLabel); } else // horizontal { @@ -507,30 +488,21 @@ void wxSlider::DoMoveWindow(int x, int y, int width, int height) // position all labels: min on the left, value in the middle and max to // the right - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Min], - x, yLabel, wLabel, hLabel); + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Min], + x, yLabel, wLabel, hLabel); - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Value], - x + (width - wLabel)/2, yLabel, wLabel, hLabel); + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Value], + x + (width - wLabel)/2, yLabel, wLabel, hLabel); - wxMoveWindowDeferred(hdwp, this, (*m_labels)[SliderLabel_Max], - x + width - wLabel, yLabel, wLabel, hLabel); + DoMoveSibling((HWND)(*m_labels)[SliderLabel_Max], + x + width - wLabel, yLabel, wLabel, hLabel); // position the slider itself along the top/bottom edge - wxMoveWindowDeferred(hdwp, this, GetHwnd(), - x, - HasFlag(wxSL_TOP) ? y : y + hLabel, - width, - height - hLabel); + wxSliderBase::DoMoveWindow(x, + HasFlag(wxSL_TOP) ? y : y + hLabel, + width, + height - hLabel); } - -#if USE_DEFERRED_SIZING - if ( parent ) - { - // hdwp must be updated as it may have been changed - parent->m_hDWP = (WXHANDLE)hdwp; - } -#endif } wxSize wxSlider::DoGetBestSize() const @@ -601,7 +573,7 @@ void wxSlider::SetValue(int value) if ( m_labels ) { - ::SetWindowText((*m_labels)[SliderLabel_Value], Format(value)); + ::SetWindowText((*m_labels)[SliderLabel_Value], Format(value).wx_str()); } } @@ -615,8 +587,10 @@ void wxSlider::SetRange(int minValue, int maxValue) if ( m_labels ) { - ::SetWindowText((*m_labels)[SliderLabel_Min], Format(ValueInvertOrNot(m_rangeMin))); - ::SetWindowText((*m_labels)[SliderLabel_Max], Format(ValueInvertOrNot(m_rangeMax))); + ::SetWindowText((*m_labels)[SliderLabel_Min], + Format(ValueInvertOrNot(m_rangeMin)).wx_str()); + ::SetWindowText((*m_labels)[SliderLabel_Max], + Format(ValueInvertOrNot(m_rangeMax)).wx_str()); } }