parent
62f03913de
commit
60d70e2c97
@ -0,0 +1,84 @@
|
|||||||
|
From bd06f80114633be741e8db2d69565d191555a539 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Fri, 11 Apr 2014 14:45:39 +0100
|
||||||
|
Subject: [PATCH] Resolves: rhbz#1081176: don't jump to cursor pos when...
|
||||||
|
|
||||||
|
launching a new window view of a document. This was happening because of
|
||||||
|
(temporary) activation of the modified flag (from updating the document stats
|
||||||
|
in the bottom bar) triggering a scrolll to the current cursor position of the
|
||||||
|
old document
|
||||||
|
|
||||||
|
Change-Id: I6e1a3c07b66ff6373345850d1449f17c1f0baa17
|
||||||
|
(cherry picked from commit e12184393f0591b5c5d9218062cc0a4bced6d4e6)
|
||||||
|
---
|
||||||
|
sw/source/core/doc/doc.cxx | 40 +++++++++++++++++++++++++++++++++++++++-
|
||||||
|
1 file changed, 39 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
|
||||||
|
index 6382d74..6b54528 100644
|
||||||
|
--- a/sw/source/core/doc/doc.cxx
|
||||||
|
+++ b/sw/source/core/doc/doc.cxx
|
||||||
|
@@ -1650,6 +1650,41 @@ void SwDoc::CalculatePagePairsForProspectPrinting(
|
||||||
|
// thus we are done here.
|
||||||
|
}
|
||||||
|
|
||||||
|
+namespace
|
||||||
|
+{
|
||||||
|
+ class LockAllViews
|
||||||
|
+ {
|
||||||
|
+ std::stack<bool> m_aViewWasLocked;
|
||||||
|
+ SwViewShell* m_pViewShell;
|
||||||
|
+ public:
|
||||||
|
+ LockAllViews(SwViewShell *pViewShell)
|
||||||
|
+ : m_pViewShell(pViewShell)
|
||||||
|
+ {
|
||||||
|
+ if (!m_pViewShell)
|
||||||
|
+ return;
|
||||||
|
+ SwViewShell *pSh = m_pViewShell;
|
||||||
|
+ do
|
||||||
|
+ {
|
||||||
|
+ m_aViewWasLocked.push(pSh->IsViewLocked());
|
||||||
|
+ pSh->LockView(true);
|
||||||
|
+ pSh = (SwViewShell*)pSh->GetNext();
|
||||||
|
+ } while (pSh != m_pViewShell);
|
||||||
|
+ }
|
||||||
|
+ ~LockAllViews()
|
||||||
|
+ {
|
||||||
|
+ if (!m_pViewShell)
|
||||||
|
+ return;
|
||||||
|
+ SwViewShell *pSh = m_pViewShell;
|
||||||
|
+ do
|
||||||
|
+ {
|
||||||
|
+ pSh->LockView(m_aViewWasLocked.top());
|
||||||
|
+ m_aViewWasLocked.pop();
|
||||||
|
+ pSh = (SwViewShell*)pSh->GetNext();
|
||||||
|
+ } while (pSh != m_pViewShell);
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// returns true while there is more to do
|
||||||
|
bool SwDoc::IncrementalDocStatCalculate(long nChars, bool bFields)
|
||||||
|
{
|
||||||
|
@@ -1720,7 +1755,7 @@ bool SwDoc::IncrementalDocStatCalculate(long nChars, bool bFields)
|
||||||
|
aStat[n++].Value <<= (sal_Int32)mpDocStat->nCharExcludingSpaces;
|
||||||
|
|
||||||
|
// For e.g. autotext documents there is no pSwgInfo (#i79945)
|
||||||
|
- SfxObjectShell * const pObjShell( GetDocShell() );
|
||||||
|
+ SwDocShell* pObjShell(GetDocShell());
|
||||||
|
if (pObjShell)
|
||||||
|
{
|
||||||
|
const uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
|
||||||
|
@@ -1730,6 +1765,9 @@ bool SwDoc::IncrementalDocStatCalculate(long nChars, bool bFields)
|
||||||
|
// #i96786#: do not set modified flag when updating statistics
|
||||||
|
const bool bDocWasModified( IsModified() );
|
||||||
|
const ModifyBlocker_Impl b(pObjShell);
|
||||||
|
+ // rhbz#1081176: don't jump to cursor pos because of (temporary)
|
||||||
|
+ // activation of modified flag triggering move to input position
|
||||||
|
+ LockAllViews aViewGuard((SwViewShell*)pObjShell->GetWrtShell());
|
||||||
|
xDocProps->setDocumentStatistics(aStat);
|
||||||
|
if (!bDocWasModified)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
1.8.5.3
|
||||||
|
|
Loading…
Reference in new issue