From a193ea09f9c5e7f6c57fd9114ec8ea47befd008c Mon Sep 17 00:00:00 2001 From: Martin Vermeer Date: Mon, 20 Mar 2006 15:05:07 +0000 Subject: [PATCH] Selective expose patch * metricsinfo.h (ViewMetricsInfo): add size parameter * BufferView_pimpl.C (BufferView::Pimpl::metrics): return size * frontends/screen.C (LyXScreen::redraw): expose selectively, using y1, y2 in vi, and exposing lower grey at end using size test git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13432 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 5 ++++- src/frontends/screen.C | 5 ++++- src/metricsinfo.h | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index d1529f798e..7a7ed01840 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -1348,6 +1348,8 @@ ViewMetricsInfo BufferView::Pimpl::metrics(bool singlepar) theCoords.clear(); BufferView & bv = *bv_; LyXText * const text = bv.text(); + lyx::pit_type size = int(text->paragraphs().size()); + if (anchor_ref_ > int(text->paragraphs().size() - 1)) { anchor_ref_ = int(text->paragraphs().size() - 1); offset_ref_ = 0; @@ -1434,7 +1436,8 @@ ViewMetricsInfo BufferView::Pimpl::metrics(bool singlepar) << " pit2: " << pit2 << " npit: " << npit << " singlepar: " << singlepar + << "size: " << size << endl; - return ViewMetricsInfo(pit1, pit2, y1, y2, singlepar); + return ViewMetricsInfo(pit1, pit2, y1, y2, singlepar, size); } diff --git a/src/frontends/screen.C b/src/frontends/screen.C index d7a1f34e55..b029e285c5 100644 --- a/src/frontends/screen.C +++ b/src/frontends/screen.C @@ -219,7 +219,10 @@ void LyXScreen::redraw(BufferView & bv, ViewMetricsInfo const & vi) workarea().getPainter().start(); paintText(bv, vi); lyxerr[Debug::DEBUG] << "Redraw screen" << endl; - expose(0, 0, workarea().workWidth(), workarea().workHeight()); + int const ymin = std::max(vi.y1, 0); + int const ymax = + ( vi.p2 < vi.size - 1 ? vi.y2 : workarea().workHeight() ); + expose(0, ymin, workarea().workWidth(), ymax - ymin); workarea().getPainter().end(); theCoords.doneUpdating(); } diff --git a/src/metricsinfo.h b/src/metricsinfo.h index ad9b33f677..a1a241451e 100644 --- a/src/metricsinfo.h +++ b/src/metricsinfo.h @@ -102,13 +102,14 @@ class ViewMetricsInfo { public: ViewMetricsInfo(lyx::pit_type p1, lyx::pit_type p2, int y1, int y2, - bool singlepar) : p1(p1), p2(p2), y1(y1), y2(y2), - singlepar(singlepar) {} + bool singlepar, lyx::pit_type size) : p1(p1), p2(p2), + y1(y1), y2(y2), singlepar(singlepar), size(size) {} lyx::pit_type p1; lyx::pit_type p2; int y1; int y2; bool singlepar; + lyx::pit_type size; }; -- 2.39.5