summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGökay Şatır <gokaysatir@gmail.com>2023-09-07 16:09:00 +0300
committerAndras Timar <andras.timar@collabora.com>2023-09-11 19:36:37 +0200
commit4a68adb1a63af4d477d827e579c73b9add1d0559 (patch)
tree5a1eafb1571f9a7a8e9eae3dfef69defc3317c7a
parent2bbf0369acd228f1dcf376c2afee5168db068979 (diff)
SW comments: Provide parent / child relations without position.
Signed-off-by: Gökay Şatır <gokaysatir@gmail.com> Change-Id: I7acba74ef0717bc07a675be17fc1909680138f00 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156689 Tested-by: Andras Timar <andras.timar@collabora.com> Reviewed-by: Andras Timar <andras.timar@collabora.com>
-rw-r--r--sw/inc/AnnotationWin.hxx2
-rw-r--r--sw/qa/uitest/navigator/tdf137274.py7
-rw-r--r--sw/source/uibase/docvw/AnnotationWin.cxx19
-rw-r--r--sw/source/uibase/docvw/AnnotationWin2.cxx2
-rw-r--r--sw/source/uibase/docvw/PostItMgr.cxx6
-rw-r--r--uitest/uitest/test.py3
6 files changed, 15 insertions, 24 deletions
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
index 19aa67dbfc5d..700293b61a84 100644
--- a/sw/inc/AnnotationWin.hxx
+++ b/sw/inc/AnnotationWin.hxx
@@ -81,8 +81,6 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public InterimItemWindow
sal_uInt32 MoveCaret();
- /// Calculate parent postit id of current annotation window
- sal_uInt32 CalcParent();
void InitAnswer(OutlinerParaObject const & rText);
bool IsProtected() const;
diff --git a/sw/qa/uitest/navigator/tdf137274.py b/sw/qa/uitest/navigator/tdf137274.py
index 5192045b8264..5273ddcb2f91 100644
--- a/sw/qa/uitest/navigator/tdf137274.py
+++ b/sw/qa/uitest/navigator/tdf137274.py
@@ -9,6 +9,7 @@
from uitest.framework import UITestCase
from libreoffice.uno.propertyvalue import mkPropertyValues
from uitest.uihelper.common import get_state_as_dict
+import time
class tdf137274(UITestCase):
@@ -59,7 +60,11 @@ class tdf137274(UITestCase):
self.ui_test.wait_until_child_is_available('Comment2')
# xComments needs reassigned after content tree change
- xComments = self.get_item(xContentTree, 'Comments')
+ while True:
+ xComments = self.get_item(xContentTree, 'Comments')
+ if '1' in xComments.getChildren():
+ break
+ time.sleep(self.ui_test.get_default_sleep())
self.assertEqual('Comments', get_state_as_dict(xComments)['Text'])
xComments.executeAction("EXPAND", tuple())
diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx b/sw/source/uibase/docvw/AnnotationWin.cxx
index 7ebdbead067b..16acc0cbf589 100644
--- a/sw/source/uibase/docvw/AnnotationWin.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin.cxx
@@ -387,25 +387,6 @@ sal_uInt32 SwAnnotationWin::MoveCaret()
: 1 + CountFollowing();
}
-// returns a non-zero postit parent id, if exists, otherwise 0 for root comments
-sal_uInt32 SwAnnotationWin::CalcParent()
-{
- SwTextField* pTextField = mpFormatField->GetTextField();
- SwPosition aPosition( pTextField->GetTextNode(), pTextField->GetStart() );
- SwTextAttr * const pTextAttr =
- pTextField->GetTextNode().GetTextAttrForCharAt(
- aPosition.GetContentIndex() - 1,
- RES_TXTATR_ANNOTATION );
- const SwField* pField = pTextAttr ? pTextAttr->GetFormatField().GetField() : nullptr;
- sal_uInt32 nParentId = 0;
- if (pField && pField->Which() == SwFieldIds::Postit)
- {
- const SwPostItField* pPostItField = static_cast<const SwPostItField*>(pField);
- nParentId = pPostItField->GetPostItId();
- }
- return nParentId;
-}
-
// counts how many SwPostItField we have right after the current one
sal_uInt32 SwAnnotationWin::CountFollowing()
{
diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx
index e8852a87f6e0..c5ca676895c0 100644
--- a/sw/source/uibase/docvw/AnnotationWin2.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin2.cxx
@@ -1118,6 +1118,8 @@ void SwAnnotationWin::ExecuteCommand(sal_uInt16 nSlot)
// Get newly created SwPostItField and set its paraIdParent
auto pPostItField = mrMgr.GetLatestPostItField();
pPostItField->SetParentId(GetTopReplyNote()->GetParaId());
+ pPostItField->SetParentPostItId(GetTopReplyNote()->GetPostItField()->GetPostItId());
+ pPostItField->SetParentName(GetTopReplyNote()->GetPostItField()->GetName());
}
break;
}
diff --git a/sw/source/uibase/docvw/PostItMgr.cxx b/sw/source/uibase/docvw/PostItMgr.cxx
index 07bf10be55c0..a0fda9fd7caa 100644
--- a/sw/source/uibase/docvw/PostItMgr.cxx
+++ b/sw/source/uibase/docvw/PostItMgr.cxx
@@ -746,7 +746,7 @@ void SwPostItMgr::LayoutPostIts()
pItem->mpPostIt = pPostIt;
if (mpAnswer)
{
- if (static_cast<bool>(pPostIt->CalcParent())) //do we really have another note in front of this one
+ if (pPostIt->GetPostItField()->GetParentPostItId() != 0) //do we really have another note in front of this one
pPostIt->InitAnswer(*mpAnswer);
mpAnswer.reset();
}
@@ -756,7 +756,9 @@ void SwPostItMgr::LayoutPostIts()
pItem->mLayoutStatus,
GetColorAnchor(pItem->maLayoutInfo.mRedlineAuthor));
pPostIt->SetSidebarPosition(pPage->eSidebarPosition);
- pPostIt->SetFollow(static_cast<bool>(pPostIt->CalcParent()));
+
+ if (pPostIt->GetPostItField()->GetParentPostItId() != 0)
+ pPostIt->SetFollow(true);
tools::Long aPostItHeight = 0;
if (bShowNotes)
diff --git a/uitest/uitest/test.py b/uitest/uitest/test.py
index 5442d46b1d90..c07667cd621a 100644
--- a/uitest/uitest/test.py
+++ b/uitest/uitest/test.py
@@ -43,6 +43,9 @@ class UITest(object):
if component is not None:
return component
+ def get_default_sleep(self):
+ return DEFAULT_SLEEP
+
def wait_for_top_focus_window(self, id):
while True:
win = self._xUITest.getTopFocusWindow()