From 32cd0ee6f9d07a328b3fc250037314dec6915b34 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Tue, 4 Jul 2006 00:19:59 +0000 Subject: [PATCH] * BufferView::Pimpl::update: - streamline a bit to only run updateMetrics once - do not take a backup copy of theCoords git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14332 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 43f384f602..2746534219 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -701,33 +701,29 @@ void BufferView::Pimpl::update(Update::flags flags) // Update macro store buffer_->buildMacros(); - CoordCache backup; - std::swap(theCoords, backup); - // This, together with doneUpdating(), verifies (using // asserts) that screen redraw is not called from // within itself. theCoords.startUpdating(); // First drawing step - updateMetrics(flags & Update::SinglePar); + bool singlePar = flags & Update::SinglePar; bool forceupdate(flags & (Update::Force | Update::SinglePar)); - if ((flags & Update::FitCursor) && fitCursor()) { - forceupdate = true; - updateMetrics(); - } - if ((flags & Update::MultiParSel) && multiParSel()) { + if ((flags & (Update::FitCursor | Update::MultiParSel)) + && (fitCursor() || multiParSel())) { forceupdate = true; - updateMetrics(); + singlePar = false; } + if (forceupdate) { // Second drawing step + updateMetrics(singlePar); owner_->workArea()->redraw(*bv_); } else { // Abort updating of the coord // cache - just restore the old one - std::swap(theCoords, backup); + theCoords.doneUpdating(); } } else owner_->workArea()->greyOut(); -- 2.39.2