X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ae8032cf99972ef33be74433d7aa087fe0d0523..364f3b070071ee73e417a3770342d779774288e8:/src/msw/scrolbar.cpp?ds=sidebyside diff --git a/src/msw/scrolbar.cpp b/src/msw/scrolbar.cpp index 54a5cf7e27..33b0a0c581 100644 --- a/src/msw/scrolbar.cpp +++ b/src/msw/scrolbar.cpp @@ -27,62 +27,6 @@ #include "wx/msw/private.h" -#if wxUSE_EXTENDED_RTTI -WX_DEFINE_FLAGS( wxScrollBarStyle ) - -wxBEGIN_FLAGS( wxScrollBarStyle ) - // new style border flags, we put them first to - // use them for streaming out - wxFLAGS_MEMBER(wxBORDER_SIMPLE) - wxFLAGS_MEMBER(wxBORDER_SUNKEN) - wxFLAGS_MEMBER(wxBORDER_DOUBLE) - wxFLAGS_MEMBER(wxBORDER_RAISED) - wxFLAGS_MEMBER(wxBORDER_STATIC) - wxFLAGS_MEMBER(wxBORDER_NONE) - - // old style border flags - wxFLAGS_MEMBER(wxSIMPLE_BORDER) - wxFLAGS_MEMBER(wxSUNKEN_BORDER) - wxFLAGS_MEMBER(wxDOUBLE_BORDER) - wxFLAGS_MEMBER(wxRAISED_BORDER) - wxFLAGS_MEMBER(wxSTATIC_BORDER) - wxFLAGS_MEMBER(wxBORDER) - - // standard window styles - wxFLAGS_MEMBER(wxTAB_TRAVERSAL) - wxFLAGS_MEMBER(wxCLIP_CHILDREN) - wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) - wxFLAGS_MEMBER(wxWANTS_CHARS) - wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) - wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) - wxFLAGS_MEMBER(wxVSCROLL) - wxFLAGS_MEMBER(wxHSCROLL) - - wxFLAGS_MEMBER(wxSB_HORIZONTAL) - wxFLAGS_MEMBER(wxSB_VERTICAL) - -wxEND_FLAGS( wxScrollBarStyle ) - -IMPLEMENT_DYNAMIC_CLASS_XTI(wxScrollBar, wxControl,"wx/scrolbar.h") - -wxBEGIN_PROPERTIES_TABLE(wxScrollBar) - wxEVENT_RANGE_PROPERTY( Scroll , wxEVT_SCROLL_TOP , wxEVT_SCROLL_CHANGED , wxScrollEvent ) - - wxPROPERTY( ThumbPosition , int , SetThumbPosition, GetThumbPosition, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - wxPROPERTY( Range , int , SetRange, GetRange, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - wxPROPERTY( ThumbSize , int , SetThumbSize, GetThumbSize, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - wxPROPERTY( PageSize , int , SetPageSize, GetPageSize, 0 , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - wxPROPERTY_FLAGS( WindowStyle , wxScrollBarStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style -wxEND_PROPERTIES_TABLE() - -wxBEGIN_HANDLERS_TABLE(wxScrollBar) -wxEND_HANDLERS_TABLE() - -wxCONSTRUCTOR_5( wxScrollBar , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle ) -#else -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) -#endif - // Scrollbar bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, @@ -119,7 +63,6 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, return false; } - int position = scrollInfo.nPos; int maxPos = scrollInfo.nMax; // A page size greater than one has the effect of reducing the effective @@ -128,61 +71,54 @@ bool wxScrollBar::MSWOnScroll(int WXUNUSED(orientation), WXWORD wParam, if ( m_pageSize > 1 ) maxPos -= (m_pageSize - 1); + int position = scrollInfo.nPos; wxEventType scrollEvent = wxEVT_NULL; - - int nScrollInc; switch ( wParam ) { case SB_TOP: - nScrollInc = maxPos - position; + position = 0; scrollEvent = wxEVT_SCROLL_TOP; break; case SB_BOTTOM: - nScrollInc = -position; + position = maxPos; scrollEvent = wxEVT_SCROLL_BOTTOM; break; case SB_LINEUP: - nScrollInc = -1; + position--; scrollEvent = wxEVT_SCROLL_LINEUP; break; case SB_LINEDOWN: - nScrollInc = 1; + position++; scrollEvent = wxEVT_SCROLL_LINEDOWN; break; case SB_PAGEUP: - nScrollInc = -GetPageSize(); + position -= GetPageSize(); scrollEvent = wxEVT_SCROLL_PAGEUP; break; case SB_PAGEDOWN: - nScrollInc = GetPageSize(); + position += GetPageSize(); scrollEvent = wxEVT_SCROLL_PAGEDOWN; break; case SB_THUMBPOSITION: case SB_THUMBTRACK: - nScrollInc = scrollInfo.nTrackPos - position; + position = scrollInfo.nTrackPos; scrollEvent = wParam == SB_THUMBPOSITION ? wxEVT_SCROLL_THUMBRELEASE : wxEVT_SCROLL_THUMBTRACK; break; case SB_ENDSCROLL: - nScrollInc = 0; scrollEvent = wxEVT_SCROLL_CHANGED; break; - - default: - nScrollInc = 0; } - if ( nScrollInc ) + if ( position != scrollInfo.nPos ) { - position += nScrollInc; - if ( position < 0 ) position = 0; if ( position > maxPos ) @@ -220,9 +156,7 @@ void wxScrollBar::SetThumbPosition(int viewStart) int wxScrollBar::GetThumbPosition(void) const { - SCROLLINFO scrollInfo; - wxZeroMemory(scrollInfo); - scrollInfo.cbSize = sizeof(SCROLLINFO); + WinStruct scrollInfo; scrollInfo.fMask = SIF_POS; if ( !::GetScrollInfo(GetHwnd(), SB_CTL, &scrollInfo) )