+ for ( nBetween = fromColumn; nBetween <= toColumn; nBetween++ )
+ {
+ h_rect.width += OnGetColumnWidth(nBetween);
+ }
+
+ // refresh but specialize the behavior if we have a single target window
+ if ( wxVarVScrollHelper::GetTargetWindow() == wxVarHScrollHelper::GetTargetWindow() )
+ {
+ v_rect.x = h_rect.x;
+ v_rect.width = h_rect.width;
+ wxVarVScrollHelper::GetTargetWindow()->RefreshRect(v_rect);
+ }
+ else
+ {
+ v_rect.x = 0;
+ v_rect.width = wxVarVScrollHelper::GetNonOrientationTargetSize();
+ h_rect.y = 0;
+ h_rect.width = wxVarHScrollHelper::GetNonOrientationTargetSize();
+
+ wxVarVScrollHelper::GetTargetWindow()->RefreshRect(v_rect);
+ wxVarHScrollHelper::GetTargetWindow()->RefreshRect(h_rect);
+ }
+}
+
+wxPosition wxVarHVScrollHelper::VirtualHitTest(wxCoord x, wxCoord y) const
+{
+ return wxPosition(wxVarVScrollHelper::VirtualHitTest(y),
+ wxVarHScrollHelper::VirtualHitTest(x));
+}
+
+void wxVarHVScrollHelper::DoPrepareDC(wxDC& dc)
+{
+ wxVarVScrollHelper::DoPrepareDC(dc);
+ wxVarHScrollHelper::DoPrepareDC(dc);
+}
+
+bool wxVarHVScrollHelper::ScrollLayout()
+{
+ bool layout_result = false;
+ layout_result |= wxVarVScrollHelper::ScrollLayout();
+ layout_result |= wxVarHScrollHelper::ScrollLayout();
+ return layout_result;
+}
+
+wxSize wxVarHVScrollHelper::GetRowColumnCount() const
+{
+ return wxSize(GetColumnCount(), GetRowCount());
+}
+
+wxPosition wxVarHVScrollHelper::GetVisibleBegin() const
+{
+ return wxPosition(GetVisibleRowsBegin(), GetVisibleColumnsBegin());
+}
+
+wxPosition wxVarHVScrollHelper::GetVisibleEnd() const
+{
+ return wxPosition(GetVisibleRowsEnd(), GetVisibleColumnsEnd());
+}
+
+bool wxVarHVScrollHelper::IsVisible(size_t row, size_t column) const
+{
+ return IsRowVisible(row) && IsColumnVisible(column);
+}
+
+
+// ============================================================================
+// wx[V/H/HV]ScrolledWindow implementations
+// ============================================================================
+
+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( wxT("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);