summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorJim Raykowski <raykowj@gmail.com>2020-08-27 16:44:36 -0800
committerJim Raykowski <raykowj@gmail.com>2020-09-03 09:14:05 +0200
commit09e35aafccf2792c7a25e4d8a896b69f0ab47e04 (patch)
tree3baab5ec386783b7b173090c074f45b74bd5d4cc /sw
parentf51aaf80002c74af78c8934a3dff4938e1f55acd (diff)
tdf#136212 Fix Writer Navigator blink jump
when table, frame, image, OLE and draw objects are hidden This patch fixes Writer Navigator blinking and scrolling back to highlighted entry when table, frame, image, OLE and draw objects are hidden by using checkVisiblityChanged function approach used by SwContentType::FillMemberList ContentTypeId::REGION case. For detailed explanation see commit f5f6781acb292783033caea0147ff98490c78d89 and tdf#118322 Avoid blinking in Explorer for 'Section' part Change-Id: Ia119b7153394e09d8ae226a5a0c2f4d6d1d2838a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101515 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
Diffstat (limited to 'sw')
-rw-r--r--sw/source/uibase/utlui/content.cxx45
1 files changed, 35 insertions, 10 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index cf7329ee267f..36cf1449881c 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -571,7 +571,6 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
}
break;
-
case ContentTypeId::TABLE :
{
const size_t nCount = m_pWrtShell->GetTableFrameFormatCount(true);
@@ -590,10 +589,18 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
pCnt->SetInvisible();
m_pMember->insert(std::unique_ptr<SwContent>(pCnt));
+ }
- if(nOldMemberCount > i &&
- (*pOldMember)[i]->IsInvisible() != pCnt->IsInvisible())
- *pbLevelOrVisibilityChanged = true;
+ if (nullptr != pbLevelOrVisibilityChanged)
+ {
+ assert(pOldMember);
+ // need to check visibility (and equal entry number) after
+ // creation due to a sorted list being used here (before,
+ // entries with same index were compared already at creation
+ // time what worked before a sorted list was used)
+ *pbLevelOrVisibilityChanged = checkVisibilityChanged(
+ *pOldMember,
+ *m_pMember);
}
}
break;
@@ -635,9 +642,18 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
!aAskItem.pObject ) // not visible
pCnt->SetInvisible();
m_pMember->insert(std::unique_ptr<SwContent>(pCnt));
- if (nOldMemberCount > i &&
- (*pOldMember)[i]->IsInvisible() != pCnt->IsInvisible())
- *pbLevelOrVisibilityChanged = true;
+ }
+
+ if(nullptr != pbLevelOrVisibilityChanged)
+ {
+ assert(pOldMember);
+ // need to check visibility (and equal entry number) after
+ // creation due to a sorted list being used here (before,
+ // entries with same index were compared already at creation
+ // time what worked before a sorted list was used)
+ *pbLevelOrVisibilityChanged = checkVisibilityChanged(
+ *pOldMember,
+ *m_pMember);
}
}
break;
@@ -803,11 +819,20 @@ void SwContentType::FillMemberList(bool* pbLevelOrVisibilityChanged)
pCnt->SetInvisible();
m_pMember->insert(std::unique_ptr<SwContent>(pCnt));
m_nMemberCount++;
- if (nOldMemberCount > i &&
- (*pOldMember)[i]->IsInvisible() != pCnt->IsInvisible() )
- *pbLevelOrVisibilityChanged = true;
}
}
+
+ if (nullptr != pbLevelOrVisibilityChanged)
+ {
+ assert(pOldMember);
+ // need to check visibility (and equal entry number) after
+ // creation due to a sorted list being used here (before,
+ // entries with same index were compared already at creation
+ // time what worked before a sorted list was used)
+ *pbLevelOrVisibilityChanged = checkVisibilityChanged(
+ *pOldMember,
+ *m_pMember);
+ }
}
}
break;