X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f18eaf2687ab42c97ccf469a2617306cadc0c6ef..8a28bf768c888e3e5fc6aa3907baec9255a7b617:/src/generic/vscroll.cpp diff --git a/src/generic/vscroll.cpp b/src/generic/vscroll.cpp index a670b41955..a4256ef804 100644 --- a/src/generic/vscroll.cpp +++ b/src/generic/vscroll.cpp @@ -2,7 +2,7 @@ // Name: src/generic/vscroll.cpp // Purpose: wxVScrolledWindow implementation // Author: Vadim Zeitlin -// Modified by: Brad Anderson +// Modified by: Brad Anderson, David Warkentin // Created: 30.05.03 // RCS-ID: $Id$ // Copyright: (c) 2003 Vadim Zeitlin @@ -25,6 +25,7 @@ #endif #ifndef WX_PRECOMP + #include "wx/dc.h" #include "wx/sizer.h" #endif @@ -52,7 +53,7 @@ public: private: wxVarScrollHelperBase *m_scrollHelper; - DECLARE_NO_COPY_CLASS(wxVarScrollHelperEvtHandler) + wxDECLARE_NO_COPY_CLASS(wxVarScrollHelperEvtHandler); }; // ============================================================================ @@ -154,8 +155,9 @@ wxVarScrollHelperBase::wxVarScrollHelperBase(wxWindow *win) m_unitFirst = 0; m_win = - m_targetWindow = (wxWindow *)NULL; + m_targetWindow = NULL; + m_physicalScrolling = true; m_handler = NULL; m_win = win; @@ -538,7 +540,7 @@ bool wxVarScrollHelperBase::ScrollLayout() return m_targetWindow->wxWindow::Layout(); } -int wxVarScrollHelperBase::HitTest(wxCoord coord) const +int wxVarScrollHelperBase::VirtualHitTest(wxCoord coord) const { const size_t unitMax = GetVisibleEnd(); for ( size_t unit = GetVisibleBegin(); unit < unitMax; ++unit ) @@ -591,7 +593,7 @@ bool wxVarScrollHelperBase::DoScrollToUnit(size_t unit) // to avoid flicker. We can't do this if we have children because they // won't be scrolled if ( m_targetWindow->GetChildren().empty() && - GetVisibleBegin() >= unitLastOld || GetVisibleEnd() <= unitFirstOld ) + (GetVisibleBegin() >= unitLastOld || GetVisibleEnd() <= unitFirstOld) ) { // the simplest case: we don't have any old units left, just redraw // everything @@ -599,7 +601,12 @@ bool wxVarScrollHelperBase::DoScrollToUnit(size_t unit) } else // scroll the window { + // Avoid scrolling visible parts of the screen on Mac +#ifdef __WXMAC__ + if (m_physicalScrolling && m_targetWindow->IsShownOnScreen()) +#else if ( m_physicalScrolling ) +#endif { wxCoord dx = 0, dy = GetUnitsSize(GetVisibleBegin(), unitFirstOld); @@ -873,10 +880,10 @@ void wxVarHVScrollHelper::RefreshRowsColumns(size_t fromRow, size_t toRow, } } -wxPosition wxVarHVScrollHelper::HitTest(wxCoord x, wxCoord y) const +wxPosition wxVarHVScrollHelper::VirtualHitTest(wxCoord x, wxCoord y) const { - return wxPosition(wxVarVScrollHelper::HitTest(y), - wxVarHScrollHelper::HitTest(x)); + return wxPosition(wxVarVScrollHelper::VirtualHitTest(y), + wxVarHScrollHelper::VirtualHitTest(x)); } void wxVarHVScrollHelper::DoPrepareDC(wxDC& dc) @@ -922,3 +929,60 @@ IMPLEMENT_ABSTRACT_CLASS(wxVScrolledWindow, wxPanel) IMPLEMENT_ABSTRACT_CLASS(wxHScrolledWindow, wxPanel) IMPLEMENT_ABSTRACT_CLASS(wxHVScrolledWindow, wxPanel) + +#if WXWIN_COMPATIBILITY_2_8 + +// =========================================================================== +// wxVarVScrollLegacyAdaptor +// =========================================================================== + +size_t wxVarVScrollLegacyAdaptor::GetFirstVisibleLine() const +{ return GetVisibleRowsBegin(); } + +size_t wxVarVScrollLegacyAdaptor::GetLastVisibleLine() const +{ return GetVisibleRowsEnd() - 1; } + +size_t wxVarVScrollLegacyAdaptor::GetLineCount() const +{ return GetRowCount(); } + +void wxVarVScrollLegacyAdaptor::SetLineCount(size_t count) +{ SetRowCount(count); } + +void wxVarVScrollLegacyAdaptor::RefreshLine(size_t line) +{ RefreshRow(line); } + +void wxVarVScrollLegacyAdaptor::RefreshLines(size_t from, size_t to) +{ RefreshRows(from, to); } + +bool wxVarVScrollLegacyAdaptor::ScrollToLine(size_t line) +{ return ScrollToRow(line); } + +bool wxVarVScrollLegacyAdaptor::ScrollLines(int lines) +{ return ScrollRows(lines); } + +bool wxVarVScrollLegacyAdaptor::ScrollPages(int pages) +{ return ScrollRowPages(pages); } + +wxCoord wxVarVScrollLegacyAdaptor::OnGetLineHeight(size_t WXUNUSED(n)) const +{ + wxFAIL_MSG( _T("OnGetLineHeight() must be overridden if OnGetRowHeight() isn't!") ); + return -1; +} + +void wxVarVScrollLegacyAdaptor::OnGetLinesHint(size_t WXUNUSED(lineMin), + size_t WXUNUSED(lineMax)) const +{ +} + +wxCoord wxVarVScrollLegacyAdaptor::OnGetRowHeight(size_t n) const +{ + return OnGetLineHeight(n); +} + +void wxVarVScrollLegacyAdaptor::OnGetRowsHeightHint(size_t rowMin, + size_t rowMax) const +{ + OnGetLinesHint(rowMin, rowMax); +} + +#endif // WXWIN_COMPATIBILITY_2_8