Kaydet (Commit) e1218439 authored tarafından Caolán McNamara's avatar Caolán McNamara

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
üst 56deaabb
......@@ -1653,6 +1653,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)
{
......@@ -1723,7 +1758,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(
......@@ -1733,6 +1768,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)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment