sw/source/core/SwNumberTree/SwNodeNum.cxx | 40 - sw/source/core/SwNumberTree/SwNumberTree.cxx | 206 +++---- sw/source/core/access/AccessibilityCheck.cxx | 367 ++++++------ sw/source/core/access/acccontext.cxx | 129 ++-- sw/source/core/access/accframebase.cxx | 62 +- sw/source/core/access/accmap.cxx | 792 +++++++++++++-------------- sw/source/core/access/accpage.cxx | 20 sw/source/core/access/accpara.cxx | 36 - sw/source/core/access/accselectionhelper.cxx | 26 9 files changed, 835 insertions(+), 843 deletions(-)
New commits: commit a27236b9071d3cf09adbb5bc4fea9edebe96d145 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Jul 30 10:32:56 2020 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Aug 1 13:28:56 2020 +0200 loplugin:flatten in sw/core/access Change-Id: I0116fe288b97d22c3f170f139fe95cfd06d89d8f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99935 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx index f77b002a67ff..38c00087bd52 100644 --- a/sw/source/core/SwNumberTree/SwNodeNum.cxx +++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx @@ -328,26 +328,26 @@ void SwNodeNum::UnregisterMeAndChildrenDueToRootDelete( SwNodeNum& rNodeNum ) UnregisterMeAndChildrenDueToRootDelete( *pChildNode ); } - if ( !bIsPhantom ) - { - SwTextNode* pTextNode( rNodeNum.GetTextNode() ); - if ( pTextNode ) - { - pTextNode->RemoveFromList(); - // --> clear all list attributes and the list style - std::set<sal_uInt16> aResetAttrsArray; - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ID ); - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_LEVEL ); - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ISRESTART ); - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_RESTARTVALUE ); - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ISCOUNTED ); - aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_NUMRULE ); - SwPaM aPam( *pTextNode ); - pTextNode->GetDoc()->ResetAttrs( aPam, false, - aResetAttrsArray, - false ); - } - } + if ( bIsPhantom ) + return; + + SwTextNode* pTextNode( rNodeNum.GetTextNode() ); + if ( !pTextNode ) + return; + + pTextNode->RemoveFromList(); + // --> clear all list attributes and the list style + std::set<sal_uInt16> aResetAttrsArray; + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ID ); + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_LEVEL ); + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ISRESTART ); + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_RESTARTVALUE ); + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_LIST_ISCOUNTED ); + aResetAttrsArray.insert( aResetAttrsArray.end(), RES_PARATR_NUMRULE ); + SwPaM aPam( *pTextNode ); + pTextNode->GetDoc()->ResetAttrs( aPam, false, + aResetAttrsArray, + false ); } // #i81002# diff --git a/sw/source/core/SwNumberTree/SwNumberTree.cxx b/sw/source/core/SwNumberTree/SwNumberTree.cxx index 2b2ab634b518..ab78733da94c 100644 --- a/sw/source/core/SwNumberTree/SwNumberTree.cxx +++ b/sw/source/core/SwNumberTree/SwNumberTree.cxx @@ -107,21 +107,21 @@ void SwNumberTreeNode::ClearObsoletePhantoms() { tSwNumberTreeChildren::iterator aIt = mChildren.begin(); - if (aIt != mChildren.end() && (*aIt)->IsPhantom()) - { - (*aIt)->ClearObsoletePhantoms(); + if (!(aIt != mChildren.end() && (*aIt)->IsPhantom())) + return; - if ((*aIt)->mChildren.empty()) - { - // #i60652# - // Because <mChildren.erase(aIt)> could destroy the element, which - // is referenced by <mItLastValid>, it's needed to adjust - // <mItLastValid> before erasing <aIt>. - SetLastValid(mChildren.end()); + (*aIt)->ClearObsoletePhantoms(); - delete *aIt; - mChildren.erase(aIt); - } + if ((*aIt)->mChildren.empty()) + { + // #i60652# + // Because <mChildren.erase(aIt)> could destroy the element, which + // is referenced by <mItLastValid>, it's needed to adjust + // <mItLastValid> before erasing <aIt>. + SetLastValid(mChildren.end()); + + delete *aIt; + mChildren.erase(aIt); } } @@ -130,102 +130,102 @@ void SwNumberTreeNode::ValidateHierarchical(const SwNumberTreeNode * pNode) cons tSwNumberTreeChildren::const_iterator aValidateIt = GetIterator(pNode); - if (aValidateIt != mChildren.end()) - { - OSL_ENSURE((*aValidateIt)->mpParent == this, "wrong parent"); + if (aValidateIt == mChildren.end()) + return; - tSwNumberTreeChildren::const_iterator aIt = mItLastValid; + OSL_ENSURE((*aValidateIt)->mpParent == this, "wrong parent"); - // --> - // improvement: - // - Only one time checked for <mChildren.end()>. - // - Less checks for each loop run. - // correction: - // - consider case that current node isn't counted and isn't the first - // child of its parent. In this case the number of last counted child - // of the previous node determines the start value for the following - // children loop, if all children have to be validated and the first - // one doesn't restart the counting. - SwNumberTree::tSwNumTreeNumber nTmpNumber( 0 ); - if (aIt != mChildren.end()) - nTmpNumber = (*aIt)->mnNumber; - else - { - aIt = mChildren.begin(); - (*aIt)->mbContinueingPreviousSubTree = false; + tSwNumberTreeChildren::const_iterator aIt = mItLastValid; - // determine default start value - // consider the case that the first child isn't counted. - nTmpNumber = (*aIt)->GetStartValue(); - if ( !(*aIt)->IsCounted() && - ( !(*aIt)->HasCountedChildren() || (*aIt)->IsPhantom() ) ) - { - --nTmpNumber; - } + // --> + // improvement: + // - Only one time checked for <mChildren.end()>. + // - Less checks for each loop run. + // correction: + // - consider case that current node isn't counted and isn't the first + // child of its parent. In this case the number of last counted child + // of the previous node determines the start value for the following + // children loop, if all children have to be validated and the first + // one doesn't restart the counting. + SwNumberTree::tSwNumTreeNumber nTmpNumber( 0 ); + if (aIt != mChildren.end()) + nTmpNumber = (*aIt)->mnNumber; + else + { + aIt = mChildren.begin(); + (*aIt)->mbContinueingPreviousSubTree = false; + + // determine default start value + // consider the case that the first child isn't counted. + nTmpNumber = (*aIt)->GetStartValue(); + if ( !(*aIt)->IsCounted() && + ( !(*aIt)->HasCountedChildren() || (*aIt)->IsPhantom() ) ) + { + --nTmpNumber; + } - // determine special start value for the case that first child - // doesn't restart the numbering and the parent node isn't counted - // and isn't the first child. - const bool bParentCounted( IsCounted() && - ( !IsPhantom() || - HasPhantomCountedParent() ) ); - if ( !(*aIt)->IsRestart() && - GetParent() && !bParentCounted ) + // determine special start value for the case that first child + // doesn't restart the numbering and the parent node isn't counted + // and isn't the first child. + const bool bParentCounted( IsCounted() && + ( !IsPhantom() || + HasPhantomCountedParent() ) ); + if ( !(*aIt)->IsRestart() && + GetParent() && !bParentCounted ) + { + tSwNumberTreeChildren::const_iterator aParentChildIt = + GetParent()->GetIterator( this ); + while ( aParentChildIt != GetParent()->mChildren.begin() ) { - tSwNumberTreeChildren::const_iterator aParentChildIt = - GetParent()->GetIterator( this ); - while ( aParentChildIt != GetParent()->mChildren.begin() ) + --aParentChildIt; + SwNumberTreeNode* pPrevNode( *aParentChildIt ); + if ( pPrevNode->GetChildCount() > 0 ) { - --aParentChildIt; - SwNumberTreeNode* pPrevNode( *aParentChildIt ); - if ( pPrevNode->GetChildCount() > 0 ) - { - (*aIt)->mbContinueingPreviousSubTree = true; - nTmpNumber = (*(pPrevNode->mChildren.rbegin()))->GetNumber(); - if ( (*aIt)->IsCounted() && - ( !(*aIt)->IsPhantom() || - (*aIt)->HasPhantomCountedParent() ) ) - { - ++nTmpNumber; - } - break; - } - else if ( pPrevNode->IsCounted() ) + (*aIt)->mbContinueingPreviousSubTree = true; + nTmpNumber = (*(pPrevNode->mChildren.rbegin()))->GetNumber(); + if ( (*aIt)->IsCounted() && + ( !(*aIt)->IsPhantom() || + (*aIt)->HasPhantomCountedParent() ) ) { - break; - } - else - { - // Previous node has no children and is not counted. - // Thus, next turn and check for the previous node. + ++nTmpNumber; } + break; + } + else if ( pPrevNode->IsCounted() ) + { + break; + } + else + { + // Previous node has no children and is not counted. + // Thus, next turn and check for the previous node. } } - - (*aIt)->mnNumber = nTmpNumber; } - while (aIt != aValidateIt) - { - ++aIt; - (*aIt)->mbContinueingPreviousSubTree = false; + (*aIt)->mnNumber = nTmpNumber; + } - // --> only for counted nodes the number - // has to be adjusted, compared to the previous node. - // this condition is hold also for nodes, which restart the numbering. - if ( (*aIt)->IsCounted() ) - { - if ((*aIt)->IsRestart()) - nTmpNumber = (*aIt)->GetStartValue(); - else - ++nTmpNumber; - } + while (aIt != aValidateIt) + { + ++aIt; + (*aIt)->mbContinueingPreviousSubTree = false; - (*aIt)->mnNumber = nTmpNumber; + // --> only for counted nodes the number + // has to be adjusted, compared to the previous node. + // this condition is hold also for nodes, which restart the numbering. + if ( (*aIt)->IsCounted() ) + { + if ((*aIt)->IsRestart()) + nTmpNumber = (*aIt)->GetStartValue(); + else + ++nTmpNumber; } - SetLastValid(aIt, true); + (*aIt)->mnNumber = nTmpNumber; } + + SetLastValid(aIt, true); } void SwNumberTreeNode::ValidateContinuous(const SwNumberTreeNode * pNode) const @@ -640,23 +640,23 @@ void SwNumberTreeNode::RemoveChild(SwNumberTreeNode * pChild) void SwNumberTreeNode::RemoveMe() { - if (mpParent) - { - SwNumberTreeNode * pSavedParent = mpParent; + if (!mpParent) + return; - pSavedParent->RemoveChild(this); + SwNumberTreeNode * pSavedParent = mpParent; - while (pSavedParent && pSavedParent->IsPhantom() && - pSavedParent->HasOnlyPhantoms()) - pSavedParent = pSavedParent->GetParent(); + pSavedParent->RemoveChild(this); - if (pSavedParent) - pSavedParent->ClearObsoletePhantoms(); + while (pSavedParent && pSavedParent->IsPhantom() && + pSavedParent->HasOnlyPhantoms()) + pSavedParent = pSavedParent->GetParent(); + + if (pSavedParent) + pSavedParent->ClearObsoletePhantoms(); #ifdef DBG_UTIL - IsSane(false); + IsSane(false); #endif - } } bool SwNumberTreeNode::IsValid() const diff --git a/sw/source/core/access/AccessibilityCheck.cxx b/sw/source/core/access/AccessibilityCheck.cxx index b59596da9a6b..b3bb024df39b 100644 --- a/sw/source/core/access/AccessibilityCheck.cxx +++ b/sw/source/core/access/AccessibilityCheck.cxx @@ -80,28 +80,28 @@ class NoTextNodeAltTextCheck : public NodeCheck return; OUString sAlternative = pNoTextNode->GetTitle(); - if (sAlternative.isEmpty()) - { - OUString sName = pNoTextNode->GetFlyFormat()->GetName(); + if (!sAlternative.isEmpty()) + return; - OUString sIssueText = SwResId(STR_NO_ALT).replaceAll("%OBJECT_NAME%", sName); + OUString sName = pNoTextNode->GetFlyFormat()->GetName(); - if (pNoTextNode->IsOLENode()) - { - auto pIssue = lclAddIssue(m_rIssueCollection, sIssueText, - sfx::AccessibilityIssueID::NO_ALT_OLE); - pIssue->setDoc(pNoTextNode->GetDoc()); - pIssue->setIssueObject(IssueObject::OLE); - pIssue->setObjectID(pNoTextNode->GetFlyFormat()->GetName()); - } - else if (pNoTextNode->IsGrfNode()) - { - auto pIssue = lclAddIssue(m_rIssueCollection, sIssueText, - sfx::AccessibilityIssueID::NO_ALT_GRAPHIC); - pIssue->setDoc(pNoTextNode->GetDoc()); - pIssue->setIssueObject(IssueObject::GRAPHIC); - pIssue->setObjectID(pNoTextNode->GetFlyFormat()->GetName()); - } + OUString sIssueText = SwResId(STR_NO_ALT).replaceAll("%OBJECT_NAME%", sName); + + if (pNoTextNode->IsOLENode()) + { + auto pIssue = lclAddIssue(m_rIssueCollection, sIssueText, + sfx::AccessibilityIssueID::NO_ALT_OLE); + pIssue->setDoc(pNoTextNode->GetDoc()); + pIssue->setIssueObject(IssueObject::OLE); + pIssue->setObjectID(pNoTextNode->GetFlyFormat()->GetName()); + } + else if (pNoTextNode->IsGrfNode()) + { + auto pIssue = lclAddIssue(m_rIssueCollection, sIssueText, + sfx::AccessibilityIssueID::NO_ALT_GRAPHIC); + pIssue->setDoc(pNoTextNode->GetDoc()); + pIssue->setIssueObject(IssueObject::GRAPHIC); + pIssue->setObjectID(pNoTextNode->GetFlyFormat()->GetName()); } } @@ -225,24 +225,24 @@ public: void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) + if (!pCurrent->IsTextNode()) + return; + + if (m_pPreviousTextNode) { - if (m_pPreviousTextNode) + for (auto& rPair : m_aNumberingCombinations) { - for (auto& rPair : m_aNumberingCombinations) + if (pCurrent->GetTextNode()->GetText().startsWith(rPair.second) + && m_pPreviousTextNode->GetText().startsWith(rPair.first)) { - if (pCurrent->GetTextNode()->GetText().startsWith(rPair.second) - && m_pPreviousTextNode->GetText().startsWith(rPair.first)) - { - OUString sNumbering = rPair.first + " " + rPair.second + "..."; - OUString sIssueText - = SwResId(STR_FAKE_NUMBERING).replaceAll("%NUMBERING%", sNumbering); - lclAddIssue(m_rIssueCollection, sIssueText); - } + OUString sNumbering = rPair.first + " " + rPair.second + "..."; + OUString sIssueText + = SwResId(STR_FAKE_NUMBERING).replaceAll("%NUMBERING%", sNumbering); + lclAddIssue(m_rIssueCollection, sIssueText); } } - m_pPreviousTextNode = pCurrent->GetTextNode(); } + m_pPreviousTextNode = pCurrent->GetTextNode(); } }; @@ -252,19 +252,19 @@ private: void checkTextRange(uno::Reference<text::XTextRange> const& xTextRange) { uno::Reference<beans::XPropertySet> xProperties(xTextRange, uno::UNO_QUERY); - if (xProperties->getPropertySetInfo()->hasPropertyByName("HyperLinkURL")) + if (!xProperties->getPropertySetInfo()->hasPropertyByName("HyperLinkURL")) + return; + + OUString sHyperlink; + xProperties->getPropertyValue("HyperLinkURL") >>= sHyperlink; + if (!sHyperlink.isEmpty()) { - OUString sHyperlink; - xProperties->getPropertyValue("HyperLinkURL") >>= sHyperlink; - if (!sHyperlink.isEmpty()) + OUString sText = xTextRange->getString(); + if (INetURLObject(sText) == INetURLObject(sHyperlink)) { - OUString sText = xTextRange->getString(); - if (INetURLObject(sText) == INetURLObject(sHyperlink)) - { - OUString sIssueText - = SwResId(STR_HYPERLINK_TEXT_IS_LINK).replaceFirst("%LINK%", sHyperlink); - lclAddIssue(m_rIssueCollection, sIssueText); - } + OUString sIssueText + = SwResId(STR_HYPERLINK_TEXT_IS_LINK).replaceFirst("%LINK%", sHyperlink); + lclAddIssue(m_rIssueCollection, sIssueText); } } } @@ -277,25 +277,23 @@ public: void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) + if (!pCurrent->IsTextNode()) + return; + + SwTextNode* pTextNode = pCurrent->GetTextNode(); + uno::Reference<text::XTextContent> xParagraph + = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); + if (!xParagraph.is()) + return; + + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); + while (xRunEnum->hasMoreElements()) { - SwTextNode* pTextNode = pCurrent->GetTextNode(); - uno::Reference<text::XTextContent> xParagraph - = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); - if (xParagraph.is()) + uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + if (xRun.is()) { - uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, - uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xRunEnum - = xRunEnumAccess->createEnumeration(); - while (xRunEnum->hasMoreElements()) - { - uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); - if (xRun.is()) - { - checkTextRange(xRun); - } - } + checkTextRange(xRun); } } } @@ -349,62 +347,62 @@ private: } uno::Reference<beans::XPropertySet> xProperties(xTextRange, uno::UNO_QUERY); - if (xProperties.is()) - { - // Foreground color - sal_Int32 nCharColor = {}; // spurious -Werror=maybe-uninitialized - if (!(xProperties->getPropertyValue("CharColor") >>= nCharColor)) - { // not sure this is impossible, can the default be void? - SAL_WARN("sw.a11y", "CharColor void"); - return; - } - Color aForegroundColor(nCharColor); - if (aForegroundColor == COL_AUTO) - return; + if (!xProperties.is()) + return; - const SwPageDesc* pPageDescription = pTextNode->FindPageDesc(); - const SwFrameFormat& rPageFormat = pPageDescription->GetMaster(); - const SwAttrSet& rPageSet = rPageFormat.GetAttrSet(); + // Foreground color + sal_Int32 nCharColor = {}; // spurious -Werror=maybe-uninitialized + if (!(xProperties->getPropertyValue("CharColor") >>= nCharColor)) + { // not sure this is impossible, can the default be void? + SAL_WARN("sw.a11y", "CharColor void"); + return; + } + Color aForegroundColor(nCharColor); + if (aForegroundColor == COL_AUTO) + return; - const XFillStyleItem* pXFillStyleItem( - rPageSet.GetItem<XFillStyleItem>(XATTR_FILLSTYLE, false)); - Color aPageBackground; + const SwPageDesc* pPageDescription = pTextNode->FindPageDesc(); + const SwFrameFormat& rPageFormat = pPageDescription->GetMaster(); + const SwAttrSet& rPageSet = rPageFormat.GetAttrSet(); - if (pXFillStyleItem && pXFillStyleItem->GetValue() == css::drawing::FillStyle_SOLID) - { - const XFillColorItem* rXFillColorItem - = rPageSet.GetItem<XFillColorItem>(XATTR_FILLCOLOR, false); - aPageBackground = rXFillColorItem->GetColorValue(); - } + const XFillStyleItem* pXFillStyleItem( + rPageSet.GetItem<XFillStyleItem>(XATTR_FILLSTYLE, false)); + Color aPageBackground; - sal_Int32 nCharBackColor = {}; // spurious -Werror=maybe-uninitialized + if (pXFillStyleItem && pXFillStyleItem->GetValue() == css::drawing::FillStyle_SOLID) + { + const XFillColorItem* rXFillColorItem + = rPageSet.GetItem<XFillColorItem>(XATTR_FILLCOLOR, false); + aPageBackground = rXFillColorItem->GetColorValue(); + } - if (!(xProperties->getPropertyValue("CharBackColor") >>= nCharBackColor)) - { - SAL_WARN("sw.a11y", "CharBackColor void"); - return; - } - // Determine the background color - // Try Character background (highlight) - Color aBackgroundColor(nCharBackColor); + sal_Int32 nCharBackColor = {}; // spurious -Werror=maybe-uninitialized - // If not character background color, try paragraph background color - if (aBackgroundColor == COL_AUTO) - aBackgroundColor = Color(nParaBackColor); + if (!(xProperties->getPropertyValue("CharBackColor") >>= nCharBackColor)) + { + SAL_WARN("sw.a11y", "CharBackColor void"); + return; + } + // Determine the background color + // Try Character background (highlight) + Color aBackgroundColor(nCharBackColor); - // If not paragraph background color, try page color - if (aBackgroundColor == COL_AUTO) - aBackgroundColor = aPageBackground; + // If not character background color, try paragraph background color + if (aBackgroundColor == COL_AUTO) + aBackgroundColor = Color(nParaBackColor); - // If not page color, assume white background color - if (aBackgroundColor == COL_AUTO) - aBackgroundColor = COL_WHITE; + // If not paragraph background color, try page color + if (aBackgroundColor == COL_AUTO) + aBackgroundColor = aPageBackground; - double fContrastRatio = calculateContrastRatio(aForegroundColor, aBackgroundColor); - if (fContrastRatio < 4.5) - { - lclAddIssue(m_rIssueCollection, SwResId(STR_TEXT_CONTRAST)); - } + // If not page color, assume white background color + if (aBackgroundColor == COL_AUTO) + aBackgroundColor = COL_WHITE; + + double fContrastRatio = calculateContrastRatio(aForegroundColor, aBackgroundColor); + if (fContrastRatio < 4.5) + { + lclAddIssue(m_rIssueCollection, SwResId(STR_TEXT_CONTRAST)); } } @@ -416,24 +414,22 @@ public: void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) + if (!pCurrent->IsTextNode()) + return; + + SwTextNode* pTextNode = pCurrent->GetTextNode(); + uno::Reference<text::XTextContent> xParagraph; + xParagraph = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); + if (!xParagraph.is()) + return; + + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); + while (xRunEnum->hasMoreElements()) { - SwTextNode* pTextNode = pCurrent->GetTextNode(); - uno::Reference<text::XTextContent> xParagraph; - xParagraph = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); - if (xParagraph.is()) - { - uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, - uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xRunEnum - = xRunEnumAccess->createEnumeration(); - while (xRunEnum->hasMoreElements()) - { - uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); - if (xRun.is()) - checkTextRange(xRun, xParagraph, pTextNode); - } - } + uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + if (xRun.is()) + checkTextRange(xRun, xParagraph, pTextNode); } } }; @@ -519,35 +515,34 @@ public: aFormattings.push_back(sFormattingType); pItem = aItemIter.NextItem(); } - if (!aFormattings.empty()) - { - o3tl::remove_duplicates(aFormattings); - auto pIssue - = lclAddIssue(m_rIssueCollection, SwResId(STR_TEXT_FORMATTING_CONVEYS_MEANING), - sfx::AccessibilityIssueID::TEXT_FORMATTING); - pIssue->setIssueObject(IssueObject::TEXT); - pIssue->setNode(pTextNode); - SwDoc* pDocument = pTextNode->GetDoc(); - pIssue->setDoc(pDocument); - pIssue->setStart(pTextAttr->GetStart()); - pIssue->setEnd(pTextAttr->GetAnyEnd()); - } + if (aFormattings.empty()) + return; + + o3tl::remove_duplicates(aFormattings); + auto pIssue = lclAddIssue(m_rIssueCollection, SwResId(STR_TEXT_FORMATTING_CONVEYS_MEANING), + sfx::AccessibilityIssueID::TEXT_FORMATTING); + pIssue->setIssueObject(IssueObject::TEXT); + pIssue->setNode(pTextNode); + SwDoc* pDocument = pTextNode->GetDoc(); + pIssue->setDoc(pDocument); + pIssue->setStart(pTextAttr->GetStart()); + pIssue->setEnd(pTextAttr->GetAnyEnd()); } void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) + if (!pCurrent->IsTextNode()) + return; + + SwTextNode* pTextNode = pCurrent->GetTextNode(); + if (pTextNode->HasHints()) { - SwTextNode* pTextNode = pCurrent->GetTextNode(); - if (pTextNode->HasHints()) + SwpHints& rHints = pTextNode->GetSwpHints(); + for (size_t i = 0; i < rHints.Count(); ++i) { - SwpHints& rHints = pTextNode->GetSwpHints(); - for (size_t i = 0; i < rHints.Count(); ++i) + const SwTextAttr* pTextAttr = rHints.Get(i); + if (pTextAttr->Which() == RES_TXTATR_AUTOFMT) { - const SwTextAttr* pTextAttr = rHints.Get(i); - if (pTextAttr->Which() == RES_TXTATR_AUTOFMT) - { - checkAutoFormat(pTextNode, pTextAttr); - } + checkAutoFormat(pTextNode, pTextAttr); } } } @@ -580,24 +575,22 @@ public: void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) + if (!pCurrent->IsTextNode()) + return; + + SwTextNode* pTextNode = pCurrent->GetTextNode(); + uno::Reference<text::XTextContent> xParagraph; + xParagraph = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); + if (!xParagraph.is()) + return; + + uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY); + uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration(); + while (xRunEnum->hasMoreElements()) { - SwTextNode* pTextNode = pCurrent->GetTextNode(); - uno::Reference<text::XTextContent> xParagraph; - xParagraph = SwXParagraph::CreateXParagraph(*pTextNode->GetDoc(), pTextNode); - if (xParagraph.is()) - { - uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, - uno::UNO_QUERY); - uno::Reference<container::XEnumeration> xRunEnum - = xRunEnumAccess->createEnumeration(); - while (xRunEnum->hasMoreElements()) - { - uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); - if (xRun.is()) - checkTextRange(xRun); - } - } + uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY); + if (xRun.is()) + checkTextRange(xRun); } } }; @@ -616,20 +609,20 @@ public: void check(SwNode* pCurrent) override { - if (pCurrent->IsTextNode()) - { - SwTextNode* pTextNode = pCurrent->GetTextNode(); - SwTextFormatColl* pCollection = pTextNode->GetTextColl(); - int nLevel = pCollection->GetAssignedOutlineStyleLevel(); - if (nLevel < 0) - return; + if (!pCurrent->IsTextNode()) + return; - if (nLevel > m_nPreviousLevel && std::abs(nLevel - m_nPreviousLevel) > 1) - { - lclAddIssue(m_rIssueCollection, SwResId(STR_HEADINGS_NOT_IN_ORDER)); - } - m_nPreviousLevel = nLevel; + SwTextNode* pTextNode = pCurrent->GetTextNode(); + SwTextFormatColl* pCollection = pTextNode->GetTextColl(); + int nLevel = pCollection->GetAssignedOutlineStyleLevel(); + if (nLevel < 0) + return; + + if (nLevel > m_nPreviousLevel && std::abs(nLevel - m_nPreviousLevel) > 1) + { + lclAddIssue(m_rIssueCollection, SwResId(STR_HEADINGS_NOT_IN_ORDER)); } + m_nPreviousLevel = nLevel; } }; @@ -692,18 +685,18 @@ public: void check(SwDoc* pDoc) override { SwDocShell* pShell = pDoc->GetDocShell(); - if (pShell) + if (!pShell) + return; + + const uno::Reference<document::XDocumentPropertiesSupplier> xDPS(pShell->GetModel(), + uno::UNO_QUERY_THROW); + const uno::Reference<document::XDocumentProperties> xDocumentProperties( + xDPS->getDocumentProperties()); + OUString sTitle = xDocumentProperties->getTitle(); + if (sTitle.isEmpty()) { - const uno::Reference<document::XDocumentPropertiesSupplier> xDPS(pShell->GetModel(), - uno::UNO_QUERY_THROW); - const uno::Reference<document::XDocumentProperties> xDocumentProperties( - xDPS->getDocumentProperties()); - OUString sTitle = xDocumentProperties->getTitle(); - if (sTitle.isEmpty()) - { - lclAddIssue(m_rIssueCollection, SwResId(STR_DOCUMENT_TITLE), - sfx::AccessibilityIssueID::DOCUMENT_TITLE); - } + lclAddIssue(m_rIssueCollection, SwResId(STR_DOCUMENT_TITLE), + sfx::AccessibilityIssueID::DOCUMENT_TITLE); } } }; diff --git a/sw/source/core/access/acccontext.cxx b/sw/source/core/access/acccontext.cxx index 3b9f0f1e61cc..14c76002e73a 100644 --- a/sw/source/core/access/acccontext.cxx +++ b/sw/source/core/access/acccontext.cxx @@ -302,25 +302,24 @@ void SwAccessibleContext::ScrolledIn() ::rtl::Reference< SwAccessibleContext > xParentImpl( GetMap()->GetContextImpl( pParent, false ) ); uno::Reference < XAccessibleContext > xThis( this ); - if( xParentImpl.is() ) - { - SetParent( xParentImpl.get() ); + if( !xParentImpl.is() ) + return; - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::CHILD; - aEvent.NewValue <<= xThis; + SetParent( xParentImpl.get() ); - xParentImpl->FireAccessibleEvent( aEvent ); + AccessibleEventObject aEvent; + aEvent.EventId = AccessibleEventId::CHILD; + aEvent.NewValue <<= xThis; - if( HasCursor() ) + xParentImpl->FireAccessibleEvent( aEvent ); + + if( HasCursor() ) + { + vcl::Window *pWin = GetWindow(); + if( pWin && pWin->HasFocus() ) { - vcl::Window *pWin = GetWindow(); - if( pWin && pWin->HasFocus() ) - { - FireStateChangedEvent( AccessibleStateType::FOCUSED, true ); - } + FireStateChangedEvent( AccessibleStateType::FOCUSED, true ); } - } } @@ -775,19 +774,19 @@ void SAL_CALL SwAccessibleContext::addAccessibleEventListener( void SAL_CALL SwAccessibleContext::removeAccessibleEventListener( const uno::Reference< XAccessibleEventListener >& xListener ) { - if (xListener.is() && m_nClientId) + if (!(xListener.is() && m_nClientId)) + return; + + SolarMutexGuard aGuard; + sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener ); + if ( !nListenerCount ) { - SolarMutexGuard aGuard; - sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener ); - if ( !nListenerCount ) - { - // no listeners anymore - // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client), - // and at least to us not firing any events anymore, in case somebody calls - // NotifyAccessibleEvent, again - comphelper::AccessibleEventNotifier::revokeClient( m_nClientId ); - m_nClientId = 0; - } + // no listeners anymore + // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client), + // and at least to us not firing any events anymore, in case somebody calls + // NotifyAccessibleEvent, again + comphelper::AccessibleEventNotifier::revokeClient( m_nClientId ); + m_nClientId = 0; } } @@ -1044,18 +1043,18 @@ void SwAccessibleContext::ScrolledInShape( ::accessibility::AccessibleShape *pAc aEvent.NewValue <<= xAcc; FireAccessibleEvent( aEvent ); - if( pAccImpl->GetState( AccessibleStateType::FOCUSED ) ) + if( !pAccImpl->GetState( AccessibleStateType::FOCUSED ) ) + return; + + vcl::Window *pWin = GetWindow(); + if( pWin && pWin->HasFocus() ) { - vcl::Window *pWin = GetWindow(); - if( pWin && pWin->HasFocus() ) - { - AccessibleEventObject aStateChangedEvent; - aStateChangedEvent.EventId = AccessibleEventId::STATE_CHANGED; - aStateChangedEvent.NewValue <<= AccessibleStateType::FOCUSED; - aStateChangedEvent.Source = xAcc; + AccessibleEventObject aStateChangedEvent; + aStateChangedEvent.EventId = AccessibleEventId::STATE_CHANGED; + aStateChangedEvent.NewValue <<= AccessibleStateType::FOCUSED; + aStateChangedEvent.Source = xAcc; - FireAccessibleEvent( aStateChangedEvent ); - } + FireAccessibleEvent( aStateChangedEvent ); } } @@ -1310,43 +1309,43 @@ void SwAccessibleContext::InvalidateFocus() // #i27301# - use new type definition for <_nStates> void SwAccessibleContext::InvalidateStates( AccessibleStates _nStates ) { - if( GetMap() ) + if( !GetMap() ) + return; + + SwViewShell *pVSh = GetMap()->GetShell(); + if( pVSh ) { - SwViewShell *pVSh = GetMap()->GetShell(); - if( pVSh ) + if( _nStates & AccessibleStates::EDITABLE ) { - if( _nStates & AccessibleStates::EDITABLE ) + bool bIsOldEditableState; + bool bIsNewEditableState = IsEditable( pVSh ); { - bool bIsOldEditableState; - bool bIsNewEditableState = IsEditable( pVSh ); - { - osl::MutexGuard aGuard( m_Mutex ); - bIsOldEditableState = m_isEditableState; - m_isEditableState = bIsNewEditableState; - } - - if( bIsOldEditableState != bIsNewEditableState ) - FireStateChangedEvent( AccessibleStateType::EDITABLE, - bIsNewEditableState ); + osl::MutexGuard aGuard( m_Mutex ); + bIsOldEditableState = m_isEditableState; + m_isEditableState = bIsNewEditableState; } - if( _nStates & AccessibleStates::OPAQUE ) - { - bool bIsOldOpaqueState; - bool bIsNewOpaqueState = IsOpaque( pVSh ); - { - osl::MutexGuard aGuard( m_Mutex ); - bIsOldOpaqueState = m_isOpaqueState; - m_isOpaqueState = bIsNewOpaqueState; - } - if( bIsOldOpaqueState != bIsNewOpaqueState ) - FireStateChangedEvent( AccessibleStateType::OPAQUE, - bIsNewOpaqueState ); - } + if( bIsOldEditableState != bIsNewEditableState ) + FireStateChangedEvent( AccessibleStateType::EDITABLE, + bIsNewEditableState ); } + if( _nStates & AccessibleStates::OPAQUE ) + { + bool bIsOldOpaqueState; + bool bIsNewOpaqueState = IsOpaque( pVSh ); + { + osl::MutexGuard aGuard( m_Mutex ); + bIsOldOpaqueState = m_isOpaqueState; + m_isOpaqueState = bIsNewOpaqueState; + } - InvalidateChildrenStates( GetFrame(), _nStates ); + if( bIsOldOpaqueState != bIsNewOpaqueState ) + FireStateChangedEvent( AccessibleStateType::OPAQUE, + bIsNewOpaqueState ); + } } + + InvalidateChildrenStates( GetFrame(), _nStates ); } void SwAccessibleContext::InvalidateRelation( sal_uInt16 nType ) diff --git a/sw/source/core/access/accframebase.cxx b/sw/source/core/access/accframebase.cxx index cfbfe9ecf678..a0d3aeacf73a 100644 --- a/sw/source/core/access/accframebase.cxx +++ b/sw/source/core/access/accframebase.cxx @@ -154,47 +154,47 @@ void SwAccessibleFrameBase::InvalidateCursorPos_() GetMap()->SetCursorContext( xThis ); } - if( bOldSelected != bNewSelected ) - { - vcl::Window *pWin = GetWindow(); - if( pWin && pWin->HasFocus() && bNewSelected ) - FireStateChangedEvent( AccessibleStateType::FOCUSED, bNewSelected ); - if( pWin && pWin->HasFocus() && !bNewSelected ) - FireStateChangedEvent( AccessibleStateType::FOCUSED, bNewSelected ); - if(bNewSelected) - { - uno::Reference< XAccessible > xParent( GetWeakParent() ); - if( xParent.is() ) - { - SwAccessibleContext *pAcc = - static_cast <SwAccessibleContext *>( xParent.get() ); + if( bOldSelected == bNewSelected ) + return; - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::SELECTION_CHANGED; - uno::Reference< XAccessible > xChild(this); - aEvent.NewValue <<= xChild; - pAcc->FireAccessibleEvent( aEvent ); - } - } + vcl::Window *pWin = GetWindow(); + if( pWin && pWin->HasFocus() && bNewSelected ) + FireStateChangedEvent( AccessibleStateType::FOCUSED, bNewSelected ); + if( pWin && pWin->HasFocus() && !bNewSelected ) + FireStateChangedEvent( AccessibleStateType::FOCUSED, bNewSelected ); + if(!bNewSelected) + return; + + uno::Reference< XAccessible > xParent( GetWeakParent() ); + if( xParent.is() ) + { + SwAccessibleContext *pAcc = + static_cast <SwAccessibleContext *>( xParent.get() ); + + AccessibleEventObject aEvent; + aEvent.EventId = AccessibleEventId::SELECTION_CHANGED; + uno::Reference< XAccessible > xChild(this); + aEvent.NewValue <<= xChild; + pAcc->FireAccessibleEvent( aEvent ); } } void SwAccessibleFrameBase::InvalidateFocus_() { vcl::Window *pWin = GetWindow(); - if( pWin ) - { - bool bSelected; + if( !pWin ) + return; - { - osl::MutexGuard aGuard( m_Mutex ); - bSelected = m_bIsSelected; - } - assert(bSelected && "focus object should be selected"); + bool bSelected; - FireStateChangedEvent( AccessibleStateType::FOCUSED, - pWin->HasFocus() && bSelected ); + { + osl::MutexGuard aGuard( m_Mutex ); + bSelected = m_bIsSelected; } + assert(bSelected && "focus object should be selected"); + + FireStateChangedEvent( AccessibleStateType::FOCUSED, + pWin->HasFocus() && bSelected ); } bool SwAccessibleFrameBase::HasCursor() diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx index fe2c2e1b0426..ce88aa618665 100644 --- a/sw/source/core/access/accmap.cxx +++ b/sw/source/core/access/accmap.cxx @@ -1470,25 +1470,25 @@ void SwAccessibleMap::InvalidateShapeInParaSelection() } mapTemp.clear(); - if( bMarkChanged && mpFrameMap) + if( !(bMarkChanged && mpFrameMap)) + return; + + for (SwAccessibleContext* pAccPara : vecAdd) { - for (SwAccessibleContext* pAccPara : vecAdd) + AccessibleEventObject aEvent; + aEvent.EventId = AccessibleEventId::SELECTION_CHANGED; + if (pAccPara) { - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::SELECTION_CHANGED; - if (pAccPara) - { - pAccPara->FireAccessibleEvent( aEvent ); - } + pAccPara->FireAccessibleEvent( aEvent ); } - for (SwAccessibleContext* pAccPara : vecRemove) + } + for (SwAccessibleContext* pAccPara : vecRemove) + { + AccessibleEventObject aEvent; + aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_REMOVE; + if (pAccPara) { - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_REMOVE; - if (pAccPara) - { - pAccPara->FireAccessibleEvent( aEvent ); - } + pAccPara->FireAccessibleEvent( aEvent ); } } } @@ -2103,39 +2103,39 @@ void SwAccessibleMap::RemoveGroupContext(const SdrObject *pParentObj) void SwAccessibleMap::AddGroupContext(const SdrObject *pParentObj, uno::Reference < XAccessible > const & xAccParent) { osl::MutexGuard aGuard( maMutex ); - if( mpShapeMap ) + if( !mpShapeMap ) + return; + + //here get all the sub list. + if (!pParentObj->IsGroupObject()) + return; + + if (!xAccParent.is()) + return; + + uno::Reference < XAccessibleContext > xContext = xAccParent->getAccessibleContext(); + if (!xContext.is()) + return; + + sal_Int32 nChildren = xContext->getAccessibleChildCount(); + for(sal_Int32 i = 0; i<nChildren; i++) { - //here get all the sub list. - if (pParentObj->IsGroupObject()) + uno::Reference < XAccessible > xChild = xContext->getAccessibleChild(i); + if (xChild.is()) { - if (xAccParent.is()) + uno::Reference < XAccessibleContext > xChildContext = xChild->getAccessibleContext(); + if (xChildContext.is()) { - uno::Reference < XAccessibleContext > xContext = xAccParent->getAccessibleContext(); - if (xContext.is()) + short nRole = xChildContext->getAccessibleRole(); + if (nRole == AccessibleRole::SHAPE) { - sal_Int32 nChildren = xContext->getAccessibleChildCount(); - for(sal_Int32 i = 0; i<nChildren; i++) + ::accessibility::AccessibleShape* pAccShape = static_cast < ::accessibility::AccessibleShape* >( xChild.get()); + uno::Reference < drawing::XShape > xShape = pAccShape->GetXShape(); + if (xShape.is()) { - uno::Reference < XAccessible > xChild = xContext->getAccessibleChild(i); - if (xChild.is()) - { - uno::Reference < XAccessibleContext > xChildContext = xChild->getAccessibleContext(); - if (xChildContext.is()) - { - short nRole = xChildContext->getAccessibleRole(); - if (nRole == AccessibleRole::SHAPE) - { - ::accessibility::AccessibleShape* pAccShape = static_cast < ::accessibility::AccessibleShape* >( xChild.get()); - uno::Reference < drawing::XShape > xShape = pAccShape->GetXShape(); - if (xShape.is()) - { - SdrObject* pObj = GetSdrObjectFromXShape(xShape); - AddShapeContext(pObj, xChild); - AddGroupContext(pObj,xChild); - } - } - } - } + SdrObject* pObj = GetSdrObjectFromXShape(xShape); + AddShapeContext(pObj, xChild); + AddGroupContext(pObj,xChild); } } } @@ -2160,59 +2160,59 @@ void SwAccessibleMap::RemoveContext( const SwFrame *pFrame ) { osl::MutexGuard aGuard( maMutex ); - if( mpFrameMap ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( pFrame ); - if( aIter != mpFrameMap->end() ) - { - mpFrameMap->erase( aIter ); + if( !mpFrameMap ) + return; - // Remove reference to old caret object. Though mxCursorContext - // is a weak reference and cleared automatically, clearing it - // directly makes sure to not keep a non-functional object. - uno::Reference < XAccessible > xOldAcc( mxCursorContext ); - if( xOldAcc.is() ) - { - SwAccessibleContext *pOldAccImpl = - static_cast< SwAccessibleContext *>( xOldAcc.get() ); - OSL_ENSURE( pOldAccImpl->GetFrame(), "old caret context is disposed" ); - if( pOldAccImpl->GetFrame() == pFrame ) - { - xOldAcc.clear(); // get an empty ref - mxCursorContext = xOldAcc; - } - } + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( pFrame ); + if( aIter == mpFrameMap->end() ) + return; - if( mpFrameMap->empty() ) - { - mpFrameMap.reset(); - } + mpFrameMap->erase( aIter ); + + // Remove reference to old caret object. Though mxCursorContext + // is a weak reference and cleared automatically, clearing it + // directly makes sure to not keep a non-functional object. + uno::Reference < XAccessible > xOldAcc( mxCursorContext ); + if( xOldAcc.is() ) + { + SwAccessibleContext *pOldAccImpl = + static_cast< SwAccessibleContext *>( xOldAcc.get() ); + OSL_ENSURE( pOldAccImpl->GetFrame(), "old caret context is disposed" ); + if( pOldAccImpl->GetFrame() == pFrame ) + { + xOldAcc.clear(); // get an empty ref + mxCursorContext = xOldAcc; } } + + if( mpFrameMap->empty() ) + { + mpFrameMap.reset(); + } } void SwAccessibleMap::RemoveContext( const SdrObject *pObj ) { osl::MutexGuard aGuard( maMutex ); - if( mpShapeMap ) - { - SwAccessibleShapeMap_Impl::iterator aIter = mpShapeMap->find( pObj ); - if( aIter != mpShapeMap->end() ) - { - uno::Reference < XAccessible > xTempHold( (*aIter).second ); - mpShapeMap->erase( aIter ); - RemoveGroupContext(pObj); - // The shape selection flag is not cleared, but one might do - // so but has to make sure that the removed context is the one - // that is selected. + if( !mpShapeMap ) + return; - if( mpShapeMap && mpShapeMap->empty() ) - { - mpShapeMap.reset(); - } - } + SwAccessibleShapeMap_Impl::iterator aIter = mpShapeMap->find( pObj ); + if( aIter == mpShapeMap->end() ) + return; + + uno::Reference < XAccessible > xTempHold( (*aIter).second ); + mpShapeMap->erase( aIter ); + RemoveGroupContext(pObj); + // The shape selection flag is not cleared, but one might do + // so but has to make sure that the removed context is the one + // that is selected. + + if( mpShapeMap && mpShapeMap->empty() ) + { + mpShapeMap.reset(); } } @@ -2236,115 +2236,115 @@ void SwAccessibleMap::A11yDispose( const SwFrame *pFrame, OSL_ENSURE( !aFrameOrObj.GetSwFrame() || aFrameOrObj.GetSwFrame()->IsAccessibleFrame(), "non accessible frame should be disposed" ); - if (aFrameOrObj.IsAccessible(GetShell()->IsPreview()) + if (!(aFrameOrObj.IsAccessible(GetShell()->IsPreview()) // fdo#87199 dispose the darn thing if it ever was accessible - || Contains(pFrame)) + || Contains(pFrame))) + return; + + ::rtl::Reference< SwAccessibleContext > xAccImpl; + ::rtl::Reference< SwAccessibleContext > xParentAccImpl; + ::rtl::Reference< ::accessibility::AccessibleShape > xShapeAccImpl; + // get accessible context for frame { - ::rtl::Reference< SwAccessibleContext > xAccImpl; - ::rtl::Reference< SwAccessibleContext > xParentAccImpl; - ::rtl::Reference< ::accessibility::AccessibleShape > xShapeAccImpl; - // get accessible context for frame - { - osl::MutexGuard aGuard( maMutex ); + osl::MutexGuard aGuard( maMutex ); - // First of all look for an accessible context for a frame - if( aFrameOrObj.GetSwFrame() && mpFrameMap ) + // First of all look for an accessible context for a frame + if( aFrameOrObj.GetSwFrame() && mpFrameMap ) + { + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); - if( aIter != mpFrameMap->end() ) - { - uno::Reference < XAccessible > xAcc( (*aIter).second ); - xAccImpl = static_cast< SwAccessibleContext *>( xAcc.get() ); - } + uno::Reference < XAccessible > xAcc( (*aIter).second ); + xAccImpl = static_cast< SwAccessibleContext *>( xAcc.get() ); } - if( !xAccImpl.is() && mpFrameMap ) - { - // If there is none, look if the parent is accessible. - const SwFrame *pParent = - SwAccessibleFrame::GetParent( aFrameOrObj, - GetShell()->IsPreview()); + } + if( !xAccImpl.is() && mpFrameMap ) + { + // If there is none, look if the parent is accessible. + const SwFrame *pParent = + SwAccessibleFrame::GetParent( aFrameOrObj, + GetShell()->IsPreview()); - if( pParent ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( pParent ); - if( aIter != mpFrameMap->end() ) - { - uno::Reference < XAccessible > xAcc( (*aIter).second ); - xParentAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); - } - } - } - if( !xParentAccImpl.is() && !aFrameOrObj.GetSwFrame() && mpShapeMap ) + if( pParent ) { - SwAccessibleShapeMap_Impl::iterator aIter = - mpShapeMap->find( aFrameOrObj.GetDrawObject() ); - if( aIter != mpShapeMap->end() ) + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( pParent ); + if( aIter != mpFrameMap->end() ) { uno::Reference < XAccessible > xAcc( (*aIter).second ); - xShapeAccImpl = - static_cast< ::accessibility::AccessibleShape *>( xAcc.get() ); + xParentAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); } } - if( pObj && GetShell()->ActionPend() && - (xParentAccImpl.is() || xShapeAccImpl.is()) ) + } + if( !xParentAccImpl.is() && !aFrameOrObj.GetSwFrame() && mpShapeMap ) + { + SwAccessibleShapeMap_Impl::iterator aIter = + mpShapeMap->find( aFrameOrObj.GetDrawObject() ); + if( aIter != mpShapeMap->end() ) { - // Keep a reference to the XShape to avoid that it - // is deleted with a SwFrameFormat::Modify. - uno::Reference < drawing::XShape > xShape( - const_cast< SdrObject * >( pObj )->getUnoShape(), - uno::UNO_QUERY ); - if( xShape.is() ) - { - mvShapes.push_back( xShape ); - } + uno::Reference < XAccessible > xAcc( (*aIter).second ); + xShapeAccImpl = + static_cast< ::accessibility::AccessibleShape *>( xAcc.get() ); } } - - // remove events stored for the frame + if( pObj && GetShell()->ActionPend() && + (xParentAccImpl.is() || xShapeAccImpl.is()) ) { - osl::MutexGuard aGuard( maEventMutex ); - if( mpEvents ) + // Keep a reference to the XShape to avoid that it + // is deleted with a SwFrameFormat::Modify. + uno::Reference < drawing::XShape > xShape( + const_cast< SdrObject * >( pObj )->getUnoShape(), + uno::UNO_QUERY ); + if( xShape.is() ) { - SwAccessibleEventMap_Impl::iterator aIter = - mpEventMap->find( aFrameOrObj ); - if( aIter != mpEventMap->end() ) - { - SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::DISPOSE, aFrameOrObj ); - AppendEvent( aEvent ); - } + mvShapes.push_back( xShape ); } } + } - // If the frame is accessible and there is a context for it, dispose - // the frame. If the frame is no context for it but disposing should - // take place recursive, the frame's children have to be disposed - // anyway, so we have to create the context then. - if( xAccImpl.is() ) + // remove events stored for the frame + { + osl::MutexGuard aGuard( maEventMutex ); + if( mpEvents ) { - xAccImpl->Dispose( bRecursive ); + SwAccessibleEventMap_Impl::iterator aIter = + mpEventMap->find( aFrameOrObj ); + if( aIter != mpEventMap->end() ) + { + SwAccessibleEvent_Impl aEvent( + SwAccessibleEvent_Impl::DISPOSE, aFrameOrObj ); + AppendEvent( aEvent ); + } } - else if( xParentAccImpl.is() ) - { - // If the frame is a cell frame, the table must be notified. - // If we are in an action, a table model change event will - // be broadcasted at the end of the action to give the table - // a chance to generate a single table change event. + } - xParentAccImpl->DisposeChild( aFrameOrObj, bRecursive, bCanSkipInvisible ); - } - else if( xShapeAccImpl.is() ) - { - RemoveContext( aFrameOrObj.GetDrawObject() ); - xShapeAccImpl->dispose(); - } + // If the frame is accessible and there is a context for it, dispose + // the frame. If the frame is no context for it but disposing should + // take place recursive, the frame's children have to be disposed + // anyway, so we have to create the context then. + if( xAccImpl.is() ) + { + xAccImpl->Dispose( bRecursive ); + } + else if( xParentAccImpl.is() ) + { + // If the frame is a cell frame, the table must be notified. + // If we are in an action, a table model change event will + // be broadcasted at the end of the action to give the table + // a chance to generate a single table change event. - if( mpPreview && pFrame && pFrame->IsPageFrame() ) - mpPreview->DisposePage( static_cast< const SwPageFrame *>( pFrame ) ); + xParentAccImpl->DisposeChild( aFrameOrObj, bRecursive, bCanSkipInvisible ); } + else if( xShapeAccImpl.is() ) + { + RemoveContext( aFrameOrObj.GetDrawObject() ); + xShapeAccImpl->dispose(); + } + + if( mpPreview && pFrame && pFrame->IsPageFrame() ) + mpPreview->DisposePage( static_cast< const SwPageFrame *>( pFrame ) ); } void SwAccessibleMap::InvalidatePosOrSize( const SwFrame *pFrame, @@ -2353,95 +2353,96 @@ void SwAccessibleMap::InvalidatePosOrSize( const SwFrame *pFrame, const SwRect& rOldBox ) { SwAccessibleChild aFrameOrObj( pFrame, pObj, pWindow ); - if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + if( !aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + return; + + ::rtl::Reference< SwAccessibleContext > xAccImpl; + ::rtl::Reference< SwAccessibleContext > xParentAccImpl; + const SwFrame *pParent =nullptr; { - ::rtl::Reference< SwAccessibleContext > xAccImpl; - ::rtl::Reference< SwAccessibleContext > xParentAccImpl; - const SwFrame *pParent =nullptr; - { - osl::MutexGuard aGuard( maMutex ); + osl::MutexGuard aGuard( maMutex ); - if( mpFrameMap ) + if( mpFrameMap ) + { + if( aFrameOrObj.GetSwFrame() ) { - if( aFrameOrObj.GetSwFrame() ) + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) + { + // If there is an accessible object already it is + // notified directly. + uno::Reference < XAccessible > xAcc( (*aIter).second ); + xAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); + } + } + if( !xAccImpl.is() ) + { + // Otherwise we look if the parent is accessible. + // If not, there is nothing to do. + pParent = + SwAccessibleFrame::GetParent( aFrameOrObj, + GetShell()->IsPreview()); + + if( pParent ) { SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + mpFrameMap->find( pParent ); if( aIter != mpFrameMap->end() ) { - // If there is an accessible object already it is - // notified directly. uno::Reference < XAccessible > xAcc( (*aIter).second ); - xAccImpl = + xParentAccImpl = static_cast< SwAccessibleContext *>( xAcc.get() ); } } - if( !xAccImpl.is() ) - { - // Otherwise we look if the parent is accessible. - // If not, there is nothing to do. - pParent = - SwAccessibleFrame::GetParent( aFrameOrObj, - GetShell()->IsPreview()); - - if( pParent ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( pParent ); - if( aIter != mpFrameMap->end() ) - { - uno::Reference < XAccessible > xAcc( (*aIter).second ); - xParentAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); - } - } - } } } + } - if( xAccImpl.is() ) + if( xAccImpl.is() ) + { + if( GetShell()->ActionPend() ) { - if( GetShell()->ActionPend() ) - { - SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::POS_CHANGED, xAccImpl.get(), - aFrameOrObj, rOldBox ); - AppendEvent( aEvent ); - } - else - { - FireEvents(); - if (xAccImpl->GetFrame()) // not if disposed by FireEvents() - { - xAccImpl->InvalidatePosOrSize(rOldBox); - } - } + SwAccessibleEvent_Impl aEvent( + SwAccessibleEvent_Impl::POS_CHANGED, xAccImpl.get(), + aFrameOrObj, rOldBox ); + AppendEvent( aEvent ); } - else if( xParentAccImpl.is() ) + else { - if( GetShell()->ActionPend() ) + FireEvents(); + if (xAccImpl->GetFrame()) // not if disposed by FireEvents() { - assert(pParent); - // tdf#99722 faster not to buffer events that won't be sent - if (!SwAccessibleChild(pParent).IsVisibleChildrenOnly() - || xParentAccImpl->IsShowing(rOldBox) - || xParentAccImpl->IsShowing(*this, aFrameOrObj)) - { - SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::CHILD_POS_CHANGED, - xParentAccImpl.get(), aFrameOrObj, rOldBox ); - AppendEvent( aEvent ); - } + xAccImpl->InvalidatePosOrSize(rOldBox); } - else + } + } + else if( xParentAccImpl.is() ) + { + if( GetShell()->ActionPend() ) + { + assert(pParent); + // tdf#99722 faster not to buffer events that won't be sent + if (!SwAccessibleChild(pParent).IsVisibleChildrenOnly() + || xParentAccImpl->IsShowing(rOldBox) + || xParentAccImpl->IsShowing(*this, aFrameOrObj)) { - FireEvents(); - xParentAccImpl->InvalidateChildPosOrSize( aFrameOrObj, - rOldBox ); + SwAccessibleEvent_Impl aEvent( + SwAccessibleEvent_Impl::CHILD_POS_CHANGED, + xParentAccImpl.get(), aFrameOrObj, rOldBox ); + AppendEvent( aEvent ); } } - else if(pParent) + else { + FireEvents(); + xParentAccImpl->InvalidateChildPosOrSize( aFrameOrObj, + rOldBox ); + } + } + else if(pParent) + { /* For child graphic and its parent paragraph,if split 2 graphic to 2 paragraph, will delete one graphic swfrm and new create 1 graphic swfrm , @@ -2450,114 +2451,113 @@ but when add graphic SwFrame ,the accessible of the new Paragraph is not created so the new graphic accessible 'parent is NULL, so run here: save the parent's SwFrame not the accessible object parent, */ - bool bIsValidFrame = false; - bool bIsTextParent = false; - if (aFrameOrObj.GetSwFrame()) - { - if (SwFrameType::Fly == pFrame->GetType()) - { - bIsValidFrame =true; - } - } - else if(pObj) - { - if (SwFrameType::Txt == pParent->GetType()) - { - bIsTextParent =true; - } - } - if( bIsValidFrame || bIsTextParent ) + bool bIsValidFrame = false; + bool bIsTextParent = false; + if (aFrameOrObj.GetSwFrame()) + { + if (SwFrameType::Fly == pFrame->GetType()) { - if( GetShell()->ActionPend() ) - { - SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::CHILD_POS_CHANGED, - pParent, aFrameOrObj, rOldBox ); - AppendEvent( aEvent ); - } - else - { - OSL_ENSURE(false,""); - } + bIsValidFrame =true; } } - } -} - -void SwAccessibleMap::InvalidateContent( const SwFrame *pFrame ) -{ - SwAccessibleChild aFrameOrObj( pFrame ); - if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) - { - uno::Reference < XAccessible > xAcc; + else if(pObj) { - osl::MutexGuard aGuard( maMutex ); - - if( mpFrameMap ) + if (SwFrameType::Txt == pParent->GetType()) { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); - if( aIter != mpFrameMap->end() ) - xAcc = (*aIter).second; + bIsTextParent =true; } } - - if( xAcc.is() ) + if( bIsValidFrame || bIsTextParent ) { - SwAccessibleContext *pAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); if( GetShell()->ActionPend() ) { SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::INVALID_CONTENT, pAccImpl, - aFrameOrObj ); + SwAccessibleEvent_Impl::CHILD_POS_CHANGED, + pParent, aFrameOrObj, rOldBox ); AppendEvent( aEvent ); } else { - FireEvents(); - pAccImpl->InvalidateContent(); + OSL_ENSURE(false,""); } } } } -void SwAccessibleMap::InvalidateAttr( const SwTextFrame& rTextFrame ) +void SwAccessibleMap::InvalidateContent( const SwFrame *pFrame ) { - SwAccessibleChild aFrameOrObj( &rTextFrame ); - if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + SwAccessibleChild aFrameOrObj( pFrame ); + if( !aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + return; + + uno::Reference < XAccessible > xAcc; { - uno::Reference < XAccessible > xAcc; - { - osl::MutexGuard aGuard( maMutex ); + osl::MutexGuard aGuard( maMutex ); - if( mpFrameMap ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); - if( aIter != mpFrameMap->end() ) - xAcc = (*aIter).second; - } + if( mpFrameMap ) + { + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) + xAcc = (*aIter).second; } + } - if( xAcc.is() ) + if( !xAcc.is() ) + return; + + SwAccessibleContext *pAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); + if( GetShell()->ActionPend() ) + { + SwAccessibleEvent_Impl aEvent( + SwAccessibleEvent_Impl::INVALID_CONTENT, pAccImpl, + aFrameOrObj ); + AppendEvent( aEvent ); + } + else + { + FireEvents(); + pAccImpl->InvalidateContent(); + } +} + +void SwAccessibleMap::InvalidateAttr( const SwTextFrame& rTextFrame ) +{ + SwAccessibleChild aFrameOrObj( &rTextFrame ); + if( !aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + return; + + uno::Reference < XAccessible > xAcc; + { + osl::MutexGuard aGuard( maMutex ); + + if( mpFrameMap ) { - SwAccessibleContext *pAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); - if( GetShell()->ActionPend() ) - { - SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::INVALID_ATTR, - pAccImpl, aFrameOrObj ); - aEvent.SetStates( AccessibleStates::TEXT_ATTRIBUTE_CHANGED ); - AppendEvent( aEvent ); - } - else - { - FireEvents(); - pAccImpl->InvalidateAttr(); - } + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) + xAcc = (*aIter).second; } } + + if( !xAcc.is() ) + return; + + SwAccessibleContext *pAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); + if( GetShell()->ActionPend() ) + { + SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::INVALID_ATTR, + pAccImpl, aFrameOrObj ); + aEvent.SetStates( AccessibleStates::TEXT_ATTRIBUTE_CHANGED ); + AppendEvent( aEvent ); + } + else + { + FireEvents(); + pAccImpl->InvalidateAttr(); + } } void SwAccessibleMap::InvalidateCursorPosition( const SwFrame *pFrame ) @@ -2843,46 +2843,46 @@ void SwAccessibleMap::InvalidateRelationSet_( const SwFrame* pFrame, { // first, see if this frame is accessible, and if so, get the respective SwAccessibleChild aFrameOrObj( pFrame ); - if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) - { - uno::Reference < XAccessible > xAcc; - { - osl::MutexGuard aGuard( maMutex ); + if( !aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + return; - if( mpFrameMap ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); - if( aIter != mpFrameMap->end() ) - { - xAcc = (*aIter).second; - } - } - } + uno::Reference < XAccessible > xAcc; + { + osl::MutexGuard aGuard( maMutex ); - // deliver event directly, or queue event - if( xAcc.is() ) + if( mpFrameMap ) { - SwAccessibleContext *pAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); - if( GetShell()->ActionPend() ) - { - SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES, - pAccImpl, SwAccessibleChild(pFrame), - ( bFrom - ? AccessibleStates::RELATION_FROM - : AccessibleStates::RELATION_TO ) ); - AppendEvent( aEvent ); - } - else + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) { - FireEvents(); - pAccImpl->InvalidateRelation( bFrom - ? AccessibleEventId::CONTENT_FLOWS_FROM_RELATION_CHANGED - : AccessibleEventId::CONTENT_FLOWS_TO_RELATION_CHANGED ); + xAcc = (*aIter).second; } } } + + // deliver event directly, or queue event + if( !xAcc.is() ) + return; + + SwAccessibleContext *pAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); + if( GetShell()->ActionPend() ) + { + SwAccessibleEvent_Impl aEvent( SwAccessibleEvent_Impl::CARET_OR_STATES, + pAccImpl, SwAccessibleChild(pFrame), + ( bFrom + ? AccessibleStates::RELATION_FROM + : AccessibleStates::RELATION_TO ) ); + AppendEvent( aEvent ); + } + else + { + FireEvents(); + pAccImpl->InvalidateRelation( bFrom + ? AccessibleEventId::CONTENT_FLOWS_FROM_RELATION_CHANGED + : AccessibleEventId::CONTENT_FLOWS_TO_RELATION_CHANGED ); + } } void SwAccessibleMap::InvalidateRelationSet( const SwFrame* pMaster, @@ -2904,44 +2904,44 @@ void SwAccessibleMap::InvalidateParaTextSelection( const SwTextFrame& _rTextFram { // first, see if this frame is accessible, and if so, get the respective SwAccessibleChild aFrameOrObj( &_rTextFrame ); - if( aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) - { - uno::Reference < XAccessible > xAcc; - { - osl::MutexGuard aGuard( maMutex ); + if( !aFrameOrObj.IsAccessible( GetShell()->IsPreview() ) ) + return; - if( mpFrameMap ) - { - SwAccessibleContextMap_Impl::iterator aIter = - mpFrameMap->find( aFrameOrObj.GetSwFrame() ); - if( aIter != mpFrameMap->end() ) - { - xAcc = (*aIter).second; - } - } - } + uno::Reference < XAccessible > xAcc; + { + osl::MutexGuard aGuard( maMutex ); - // deliver event directly, or queue event - if( xAcc.is() ) + if( mpFrameMap ) { - SwAccessibleContext *pAccImpl = - static_cast< SwAccessibleContext *>( xAcc.get() ); - if( GetShell()->ActionPend() ) - { - SwAccessibleEvent_Impl aEvent( - SwAccessibleEvent_Impl::CARET_OR_STATES, - pAccImpl, - SwAccessibleChild( &_rTextFrame ), - AccessibleStates::TEXT_SELECTION_CHANGED ); - AppendEvent( aEvent ); - } - else + SwAccessibleContextMap_Impl::iterator aIter = + mpFrameMap->find( aFrameOrObj.GetSwFrame() ); + if( aIter != mpFrameMap->end() ) { - FireEvents(); - pAccImpl->InvalidateTextSelection(); + xAcc = (*aIter).second; } } } + + // deliver event directly, or queue event + if( !xAcc.is() ) + return; + + SwAccessibleContext *pAccImpl = + static_cast< SwAccessibleContext *>( xAcc.get() ); + if( GetShell()->ActionPend() ) + { + SwAccessibleEvent_Impl aEvent( + SwAccessibleEvent_Impl::CARET_OR_STATES, + pAccImpl, + SwAccessibleChild( &_rTextFrame ), + AccessibleStates::TEXT_SELECTION_CHANGED ); + AppendEvent( aEvent ); + } + else + { + FireEvents(); + pAccImpl->InvalidateTextSelection(); + } } sal_Int32 SwAccessibleMap::GetChildIndex( const SwFrame& rParentFrame, @@ -3484,26 +3484,26 @@ void SwAccessibleMap::InvalidateTextSelectionOfAllParas() // second, handle previous selections - after the first step the data // structure of the previously known only contains the 'old' selections - if ( pPrevSelectedParas ) + if ( !pPrevSelectedParas ) + return; + + SwAccessibleSelectedParas_Impl::iterator aIter = pPrevSelectedParas->begin(); + for ( ; aIter != pPrevSelectedParas->end(); ++aIter ) { - SwAccessibleSelectedParas_Impl::iterator aIter = pPrevSelectedParas->begin(); - for ( ; aIter != pPrevSelectedParas->end(); ++aIter ) + uno::Reference < XAccessible > xAcc( (*aIter).first ); + if ( xAcc.is() ) { - uno::Reference < XAccessible > xAcc( (*aIter).first ); - if ( xAcc.is() ) + ::rtl::Reference < SwAccessibleContext > xAccImpl( + static_cast<SwAccessibleContext*>( xAcc.get() ) ); + if ( xAccImpl.is() && xAccImpl->GetFrame() ) { - ::rtl::Reference < SwAccessibleContext > xAccImpl( - static_cast<SwAccessibleContext*>( xAcc.get() ) ); - if ( xAccImpl.is() && xAccImpl->GetFrame() ) + const SwTextFrame* pTextFrame( + dynamic_cast<const SwTextFrame*>(xAccImpl->GetFrame()) ); + OSL_ENSURE( pTextFrame, + "<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - unexpected type of frame" ); + if ( pTextFrame ) { - const SwTextFrame* pTextFrame( - dynamic_cast<const SwTextFrame*>(xAccImpl->GetFrame()) ); - OSL_ENSURE( pTextFrame, - "<SwAccessibleMap::_SubmitTextSelectionChangedEvents()> - unexpected type of frame" ); - if ( pTextFrame ) - { - InvalidateParaTextSelection( *pTextFrame ); - } + InvalidateParaTextSelection( *pTextFrame ); } } } diff --git a/sw/source/core/access/accpage.cxx b/sw/source/core/access/accpage.cxx index 39cf02b4b88f..e8ea905d7368 100644 --- a/sw/source/core/access/accpage.cxx +++ b/sw/source/core/access/accpage.cxx @@ -90,19 +90,19 @@ void SwAccessiblePage::InvalidateCursorPos_() void SwAccessiblePage::InvalidateFocus_() { vcl::Window *pWin = GetWindow(); - if( pWin ) - { - bool bSelected; + if( !pWin ) + return; - { - osl::MutexGuard aGuard( m_Mutex ); - bSelected = m_bIsSelected; - } - OSL_ENSURE( bSelected, "focus object should be selected" ); + bool bSelected; - FireStateChangedEvent( AccessibleStateType::FOCUSED, - pWin->HasFocus() && bSelected ); + { + osl::MutexGuard aGuard( m_Mutex ); + bSelected = m_bIsSelected; } + OSL_ENSURE( bSelected, "focus object should be selected" ); + + FireStateChangedEvent( AccessibleStateType::FOCUSED, + pWin->HasFocus() && bSelected ); } SwAccessiblePage::SwAccessiblePage(std::shared_ptr<SwAccessibleMap> const& pInitMap, diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx index 4119275a75bc..b39f4c9439ef 100644 --- a/sw/source/core/access/accpara.cxx +++ b/sw/source/core/access/accpara.cxx @@ -303,27 +303,27 @@ void SwAccessibleParagraph::InvalidateContent_( bool bVisibleDataFired ) FireAccessibleEvent( aEvent ); } - if( rText != sOldText ) + if( rText == sOldText ) + return; + + OUString sNewDesc( GetDescription() ); + OUString sOldDesc; { - OUString sNewDesc( GetDescription() ); - OUString sOldDesc; - { - osl::MutexGuard aGuard( m_Mutex ); - sOldDesc = m_sDesc; - if( m_sDesc != sNewDesc ) - m_sDesc = sNewDesc; - } + osl::MutexGuard aGuard( m_Mutex ); + sOldDesc = m_sDesc; + if( m_sDesc != sNewDesc ) + m_sDesc = sNewDesc; + } - if( sNewDesc != sOldDesc ) - { - // The text is changed - AccessibleEventObject aEvent; - aEvent.EventId = AccessibleEventId::DESCRIPTION_CHANGED; - aEvent.OldValue <<= sOldDesc; - aEvent.NewValue <<= sNewDesc; + if( sNewDesc != sOldDesc ) + { + // The text is changed + AccessibleEventObject aEvent; + aEvent.EventId = AccessibleEventId::DESCRIPTION_CHANGED; + aEvent.OldValue <<= sOldDesc; + aEvent.NewValue <<= sNewDesc; - FireAccessibleEvent( aEvent ); - } + FireAccessibleEvent( aEvent ); } } diff --git a/sw/source/core/access/accselectionhelper.cxx b/sw/source/core/access/accselectionhelper.cxx index be92d4a2c5aa..9bcec4e19cd5 100644 --- a/sw/source/core/access/accselectionhelper.cxx +++ b/sw/source/core/access/accselectionhelper.cxx @@ -175,21 +175,21 @@ void SwAccessibleSelectionHelper::selectAllAccessibleChildren( ) // the first we can select, and select it. SwFEShell* pFEShell = GetFEShell(); - if( pFEShell ) - { - std::list< SwAccessibleChild > aChildren; - m_rContext.GetChildren( *(m_rContext.GetMap()), aChildren ); + if( !pFEShell ) + return; - for( const SwAccessibleChild& rChild : aChildren ) + std::list< SwAccessibleChild > aChildren; + m_rContext.GetChildren( *(m_rContext.GetMap()), aChildren ); + + for( const SwAccessibleChild& rChild : aChildren ) + { + const SdrObject* pObj = rChild.GetDrawObject(); + const SwFrame* pFrame = rChild.GetSwFrame(); + if( pObj && !(pFrame != nullptr && pFEShell->IsObjSelected()) ) { - const SdrObject* pObj = rChild.GetDrawObject(); - const SwFrame* pFrame = rChild.GetSwFrame(); - if( pObj && !(pFrame != nullptr && pFEShell->IsObjSelected()) ) - { - m_rContext.Select( const_cast< SdrObject *>( pObj ), nullptr==pFrame ); - if( pFrame ) - break; - } + m_rContext.Select( const_cast< SdrObject *>( pObj ), nullptr==pFrame ); + if( pFrame ) + break; } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits