]> git.lyx.org Git - lyx.git/commitdiff
* BufferView::Pimpl::update:
authorLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 4 Jul 2006 00:19:59 +0000 (00:19 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 4 Jul 2006 00:19:59 +0000 (00:19 +0000)
- 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

index 43f384f6022cf2dfc2a628cd366f57ba633c02fb..2746534219c8811d1bf94cf30ffc90a6dc21dd95 100644 (file)
@@ -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();