core.git: Branch 'libreoffice-24-2' - filter/source
filter/source/svg/presentation_engine.js |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit edacf30340058707e02c3348a255435f4f4481b3 Author: Skyler Grey AuthorDate: Mon Mar 11 14:38:53 2024 + Commit: Skyler Grey CommitDate: Tue Mar 19 11:56:46 2024 +0100 exported SVGs: Stop bullets skipping animation Previously, we used the incorrect format for bullet point IDs, leading to them not being noticed by animation code, leading to them being skipped during animation. This meant that if you exported an SVG of an impress presentation, and you had a bullet list animating to appear later, you would see the bullets without the text from the start. Change-Id: Ibce764c0843778dd09b108fb251ce606255afb90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164661 Tested-by: Jenkins CollaboraOffice Reviewed-by: Gökay ŞATIR (cherry picked from commit 5ee89034692eb21f9a71c9a36cc205b09f24e856) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164871 Tested-by: Jenkins (cherry picked from commit c3327640208fb5117ca88878afd7e716981372c7) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164887 Reviewed-by: Skyler Grey diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 839bd1676ffd..fa42b89b2f8e 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -15110,7 +15110,7 @@ function AnimatedTextElement( aElement, aEventMultiplexer ) if( aBulletPlaceholderElem ) { var sId = aBulletPlaceholderElem.getAttribute( 'id' ); -sId = 'bullet-char(' + sId + ')'; +sId = 'bullet-char-' + sId; aBulletCharElem = theDocument.getElementById( sId ); if( aBulletCharElem ) {
core.git: filter/source
filter/source/svg/presentation_engine.js |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit c3327640208fb5117ca88878afd7e716981372c7 Author: Skyler Grey AuthorDate: Mon Mar 11 14:38:53 2024 + Commit: Skyler Grey CommitDate: Fri Mar 15 17:29:10 2024 +0100 exported SVGs: Stop bullets skipping animation Previously, we used the incorrect format for bullet point IDs, leading to them not being noticed by animation code, leading to them being skipped during animation. This meant that if you exported an SVG of an impress presentation, and you had a bullet list animating to appear later, you would see the bullets without the text from the start. Change-Id: Ibce764c0843778dd09b108fb251ce606255afb90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164661 Tested-by: Jenkins CollaboraOffice Reviewed-by: Gökay ŞATIR (cherry picked from commit 5ee89034692eb21f9a71c9a36cc205b09f24e856) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164871 Tested-by: Jenkins diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 839bd1676ffd..fa42b89b2f8e 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -15110,7 +15110,7 @@ function AnimatedTextElement( aElement, aEventMultiplexer ) if( aBulletPlaceholderElem ) { var sId = aBulletPlaceholderElem.getAttribute( 'id' ); -sId = 'bullet-char(' + sId + ')'; +sId = 'bullet-char-' + sId; aBulletCharElem = theDocument.getElementById( sId ); if( aBulletCharElem ) {
core.git: Branch 'distro/collabora/co-23.05' - filter/source
filter/source/svg/presentation_engine.js |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit 7fb108a29cff3ad157898350571aa068719761cc Author: Skyler Grey AuthorDate: Mon Mar 11 14:38:53 2024 + Commit: Skyler Grey CommitDate: Fri Mar 15 17:29:04 2024 +0100 exported SVGs: Stop bullets skipping animation Previously, we used the incorrect format for bullet point IDs, leading to them not being noticed by animation code, leading to them being skipped during animation. This meant that if you exported an SVG of an impress presentation, and you had a bullet list animating to appear later, you would see the bullets without the text from the start. Change-Id: Ibce764c0843778dd09b108fb251ce606255afb90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164661 Tested-by: Jenkins CollaboraOffice Reviewed-by: Gökay ŞATIR (cherry picked from commit f418738f9881ec183d02e9f3216d192951df52c1) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164870 diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 2f653ea486f0..93753988b565 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -15110,7 +15110,7 @@ function AnimatedTextElement( aElement, aEventMultiplexer ) if( aBulletPlaceholderElem ) { var sId = aBulletPlaceholderElem.getAttribute( 'id' ); -sId = 'bullet-char(' + sId + ')'; +sId = 'bullet-char-' + sId; aBulletCharElem = theDocument.getElementById( sId ); if( aBulletCharElem ) {
core.git: Branch 'distro/collabora/co-24.04' - filter/source
filter/source/svg/presentation_engine.js |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit 5ee89034692eb21f9a71c9a36cc205b09f24e856 Author: Skyler Grey AuthorDate: Mon Mar 11 14:38:53 2024 + Commit: Skyler Grey CommitDate: Fri Mar 15 14:12:19 2024 +0100 exported SVGs: Stop bullets skipping animation Previously, we used the incorrect format for bullet point IDs, leading to them not being noticed by animation code, leading to them being skipped during animation. This meant that if you exported an SVG of an impress presentation, and you had a bullet list animating to appear later, you would see the bullets without the text from the start. Change-Id: Ibce764c0843778dd09b108fb251ce606255afb90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164661 Tested-by: Jenkins CollaboraOffice Reviewed-by: Gökay ŞATIR diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 839bd1676ffd..fa42b89b2f8e 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -15110,7 +15110,7 @@ function AnimatedTextElement( aElement, aEventMultiplexer ) if( aBulletPlaceholderElem ) { var sId = aBulletPlaceholderElem.getAttribute( 'id' ); -sId = 'bullet-char(' + sId + ')'; +sId = 'bullet-char-' + sId; aBulletCharElem = theDocument.getElementById( sId ); if( aBulletCharElem ) {
core.git: Branch 'distro/collabora/co-23.05' - desktop/source sc/inc sc/sdi sc/source
desktop/source/lib/init.cxx |3 ++- sc/inc/inputopt.hxx |3 +++ sc/inc/sc.hrc |1 + sc/sdi/cellsh.sdi |2 ++ sc/sdi/scalc.sdi | 15 +++ sc/source/ui/app/inputhdl.cxx | 14 ++ sc/source/ui/inc/tabvwsh.hxx |5 + sc/source/ui/view/cellsh3.cxx | 20 8 files changed, 62 insertions(+), 1 deletion(-) New commits: commit 284f2759dedbc2375abdbaab5258efda4a52b8f5 Author: Skyler Grey AuthorDate: Mon Dec 4 14:08:09 2023 + Commit: Szymon Kłos CommitDate: Mon Dec 18 16:33:43 2023 +0100 calc: Add option to keep edit mode on enter/tab This change makes it so that, rather than leaving edit mode, enter and tab keep editing the new cell when they have moved. This is important on devices with an onscreen keyboard (e.g. iPads, Android tablets, Convertible Laptops, etc.), particularly in Collabora Online, as exiting edit mode hides the onscreen keyboard. It is not desirable to enable this by default, as arrow keys cannot move around the document when we are in edit mode (they move within the cell). Therefore, this commit also adds an .uno command so that we can activate or deactivate the option. In LibreOfficeKit we want to make sure not to share this setting among different users, so we also add this option in the view shell and switch which one we care about based on whether Kit is active. Change-Id: I5e6c93c64af0d201a8ec045fea5546e189baca74 Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160313 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 13fcfad60f1f..8855e9a60ed2 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -3852,7 +3852,8 @@ static void doc_iniUnoCommands () OUString(".uno:InsertPlainTextContentControl"), OUString(".uno:InsertPictureContentControl"), OUString(".uno:DataFilterAutoFilter"), -OUString(".uno:CellProtection") +OUString(".uno:CellProtection"), +OUString(".uno:MoveKeepInsertMode") }; util::URL aCommandURL; diff --git a/sc/inc/inputopt.hxx b/sc/inc/inputopt.hxx index 05e59aad5716..aa4b4078e5df 100644 --- a/sc/inc/inputopt.hxx +++ b/sc/inc/inputopt.hxx @@ -26,6 +26,7 @@ class ScInputOptions private: sal_uInt16 nMoveDir; // enum ScDirection boolbMoveSelection; +boolbMoveKeepEdit; boolbEnterEdit; boolbExtendFormat; boolbRangeFinder; @@ -47,6 +48,8 @@ public: boolGetMoveSelection() const{ return bMoveSelection; } voidSetEnterEdit(bool bSet) { bEnterEdit = bSet; } boolGetEnterEdit() const{ return bEnterEdit; } +voidSetMoveKeepEdit(bool bSet) { bMoveKeepEdit = bSet; } +boolGetMoveKeepEdit() const { return bMoveKeepEdit; } voidSetExtendFormat(bool bSet) { bExtendFormat = bSet; } boolGetExtendFormat() const { return bExtendFormat; } voidSetRangeFinder(bool bSet) { bRangeFinder = bSet; } diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc index 7d8e02aeed0d..89fa9058070c 100644 --- a/sc/inc/sc.hrc +++ b/sc/inc/sc.hrc @@ -247,6 +247,7 @@ class SvxZoomSliderItem; #define SID_OPEN_CALC (SC_FUNCTION_START + 4) #define SID_CONVERT_FORMULA_TO_VALUE(SC_FUNCTION_START + 5) +#define FID_MOVE_KEEP_INSERT_MODE (SC_FUNCTION_START + 6) #ifndef FILE_MENU_END // duplicated in sfx2/sfxsids.hrc #define FILE_MENU_END (SC_FUNCTION_START + 20) #endif diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi index 84217c63c949..7370d142607e 100644 --- a/sc/sdi/cellsh.sdi +++ b/sc/sdi/cellsh.sdi @@ -446,6 +446,8 @@ interface CellMovement ] SID_DATA_SELECT [ ExecMethod = Execute; StateMethod = GetState; ] SID_DETECTIVE_FILLMODE [ ExecMethod = Execute; StateMethod = GetState; ] // api: + +FID_MOVE_KEEP_INSERT_MODE [ ExecMethod = Execute; ] } diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi index 614293cc90bb..c62c8c549d10 100644 --- a/sc/sdi/scalc.sdi +++ b/sc/sdi/scalc.sdi @@ -6667,3 +6667,18 @@ SfxVoidItem AutoSum SID_AUTO_SUM ToolBoxConfig = TRUE, GroupId = SfxGroupId::Intern; ] + + +SfxVoidItem MoveKeepInsertMode FID_MOVE_KEEP_INSERT_MODE +(SfxBoolItem Enable FID_MOVE_KEEP_INSERT_MODE) +[ +AutoUpdate = FALSE, +FastCall = FALSE, +ReadOnlyDoc = FALSE, +Toggle = FALSE, +Container = FALSE, +RecordAbsolute = FALSE, +RecordPerSet; + +GroupId = SfxGroupId::Application; +] diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 1153a7dc03d4..0f7a2afc858f 100644 --- a/sc/source/ui/app/inputhdl.cxx +++
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/source xmloff/source
sw/source/filter/ww8/ww8atr.cxx |3 +++ xmloff/source/text/txtfldi.cxx |3 +++ 2 files changed, 6 insertions(+) New commits: commit 7471de2849e076304b6e59f4d78b83a272f46607 Author: Skyler Grey AuthorDate: Thu Nov 9 16:57:50 2023 + Commit: Miklos Vajna CommitDate: Fri Nov 10 08:13:11 2023 +0100 Fix STYLEREF crashes and forwards-compatibility This commit fixes a crash in STYLEREF caused by a dereferenced nullptr when serializing chapter fields for .doc export. Along with the STYLEREF changes, I also changed the chapter export logic to allow exporting chapter fields when they were in document text, and to use the style of the thing they pointed to. Unfortunately, in some cases that would be null. This commit makes us fall back to previous behavior in those cases. This commit also adds import logic for styleref on the TEXT namespace in addition to LO_EXT. This is important as if/when the STYLEREF field is no longer LO_EXT we want to be able to open new documents in old versions of libreoffice. This was erroneously missed when we changed TEXT references to LO_EXT in our export logic. Change-Id: I383828c9409afc8545af379307f528cee2e1a960 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159230 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 62ae243168ec..6e73e9255495 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -3430,6 +3430,9 @@ void AttributeOutputBase::TextField( const SwFormatField& rField ) // Otherwise, get the style of the text and use it as the style name const SwTextNode* pOutlineNd = pTextNd->FindOutlineNodeOfLevel(aCopy.GetLevel()); +if (!pOutlineNd) break; +// Sometimes we can't find the outline node, in that case let's just fallback to exporting the text + sStr = FieldString(ww::eSTYLEREF) + GetExport().GetStyleRefName(pOutlineNd->GetFormatColl()->GetName()); } diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 4b43240878af..07496cb74c05 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -408,6 +408,7 @@ XMLTextFieldImportContext::CreateTextFieldImportContext( case XML_ELEMENT(TEXT, XML_BOOKMARK_REF): case XML_ELEMENT(TEXT, XML_NOTE_REF): case XML_ELEMENT(TEXT, XML_SEQUENCE_REF): +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): pContext = new XMLReferenceFieldImportContext( rImport, rHlp, nToken ); break; @@ -2512,6 +2513,7 @@ void XMLReferenceFieldImportContext::startFastElement( case XML_ELEMENT(TEXT, XML_SEQUENCE_REF): nSource = ReferenceFieldSource::SEQUENCE_FIELD; break; +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): nSource = ReferenceFieldSource::STYLE; break; @@ -2593,6 +2595,7 @@ void XMLReferenceFieldImportContext::PrepareField( { case XML_ELEMENT(TEXT, XML_REFERENCE_REF): case XML_ELEMENT(TEXT, XML_BOOKMARK_REF): +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): xPropertySet->setPropertyValue("SourceName", Any(sName)); xPropertySet->setPropertyValue("ReferenceFieldFlags", Any(nFlags));
[Libreoffice-commits] core.git: sw/source xmloff/source
sw/source/filter/ww8/ww8atr.cxx |3 +++ xmloff/source/text/txtfldi.cxx |3 +++ 2 files changed, 6 insertions(+) New commits: commit 7924d8fc274bb611c829443e0eb1a53d883cc9a3 Author: Skyler Grey AuthorDate: Thu Nov 9 16:57:50 2023 + Commit: Miklos Vajna CommitDate: Fri Nov 10 08:12:28 2023 +0100 Fix STYLEREF crashes and forwards-compatibility This commit fixes a crash in STYLEREF caused by a dereferenced nullptr when serializing chapter fields for .doc export. Along with the STYLEREF changes, I also changed the chapter export logic to allow exporting chapter fields when they were in document text, and to use the style of the thing they pointed to. Unfortunately, in some cases that would be null. This commit makes us fall back to previous behavior in those cases. This commit also adds import logic for styleref on the TEXT namespace in addition to LO_EXT. This is important as if/when the STYLEREF field is no longer LO_EXT we want to be able to open new documents in old versions of libreoffice. This was erroneously missed when we changed TEXT references to LO_EXT in our export logic. Change-Id: I383828c9409afc8545af379307f528cee2e1a960 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159226 Tested-by: Jenkins Reviewed-by: Miklos Vajna diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 79446939957e..4949c7ffe6fd 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -3456,6 +3456,9 @@ void AttributeOutputBase::TextField( const SwFormatField& rField ) // Otherwise, get the style of the text and use it as the style name const SwTextNode* pOutlineNd = pTextNd->FindOutlineNodeOfLevel(aCopy.GetLevel()); +if (!pOutlineNd) break; +// Sometimes we can't find the outline node, in that case let's just fallback to exporting the text + sStr = FieldString(ww::eSTYLEREF) + GetExport().GetStyleRefName(pOutlineNd->GetFormatColl()->GetName()); } diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index e0f6a01ecca6..1228e232d328 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -408,6 +408,7 @@ XMLTextFieldImportContext::CreateTextFieldImportContext( case XML_ELEMENT(TEXT, XML_BOOKMARK_REF): case XML_ELEMENT(TEXT, XML_NOTE_REF): case XML_ELEMENT(TEXT, XML_SEQUENCE_REF): +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): pContext = new XMLReferenceFieldImportContext( rImport, rHlp, nToken ); break; @@ -2512,6 +2513,7 @@ void XMLReferenceFieldImportContext::startFastElement( case XML_ELEMENT(TEXT, XML_SEQUENCE_REF): nSource = ReferenceFieldSource::SEQUENCE_FIELD; break; +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): nSource = ReferenceFieldSource::STYLE; break; @@ -2593,6 +2595,7 @@ void XMLReferenceFieldImportContext::PrepareField( { case XML_ELEMENT(TEXT, XML_REFERENCE_REF): case XML_ELEMENT(TEXT, XML_BOOKMARK_REF): +case XML_ELEMENT(TEXT, XML_STYLE_REF): case XML_ELEMENT(LO_EXT, XML_STYLE_REF): xPropertySet->setPropertyValue("SourceName", Any(sName)); xPropertySet->setPropertyValue("ReferenceFieldFlags", Any(nFlags));
[Libreoffice-commits] core.git: sw/qa
sw/qa/core/fields/data/styleref-flags.docx |binary sw/qa/core/fields/data/styleref.odt|binary sw/qa/core/fields/data/suppress-non-numerical.docx |binary sw/qa/core/fields/fields.cxx | 215 - 4 files changed, 169 insertions(+), 46 deletions(-) New commits: commit fd5c75750f5c5448eec840033bce16375774a707 Author: Skyler Grey AuthorDate: Mon Oct 23 09:17:23 2023 + Commit: Caolán McNamara CommitDate: Thu Nov 2 10:27:52 2023 +0100 Improve and extend STYLEREF tests - I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19, Ib664fec059aa1f7f130acc76c253d5d298fa59f7 and Iad8e8001807f5ceeaedc9665838672695174a936 added STYLEREF flags. This commit adds tests for them - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 were partly broken due to the fields occasionally being inserted in the wrong place (i.e. at the end of the document), this commit makes sure to move the cursor before inserting a field - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 were not separated into sections which made it difficult to tell what was being tested. All STYLEREF tests that create documents are now clearly split into arrange/act/assert steps with comments denoting the sections - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 had a lot of repetition, particularly in creating the document, adding headings, etc. This has been refactored into some helper functions - I35dc36197b62fa53def4745da1d4755ece79ed22 was missing an ODF import test. This commit adds one Follow-Up-To: I25dd7a6940abee5651a784b9059fe23b32547d6c Follow-Up-To: I35dc36197b62fa53def4745da1d4755ece79ed22 Follow-Up-To: I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19 Follow-Up-To: Ib664fec059aa1f7f130acc76c253d5d298fa59f7 Follow-Up-To: Iad8e8001807f5ceeaedc9665838672695174a936 Follow-Up-To: Iecd3e83a6bd3f8c2c6adba5c7eba9ee55b773510 Follow-Up-To: Ifaa67fbc2d53b0d4fb85e7305b2dbdf78cf0a1ad Follow-Up-To: Id991c92b9aeaa054b136f7a3d9c7c8ea0026e514 Change-Id: I941b477c8e860270a400869cb9ea15e5561e402a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158352 Tested-by: Jenkins Tested-by: Caolán McNamara Reviewed-by: Caolán McNamara diff --git a/sw/qa/core/fields/data/styleref-flags.docx b/sw/qa/core/fields/data/styleref-flags.docx new file mode 100644 index ..443624a575e0 Binary files /dev/null and b/sw/qa/core/fields/data/styleref-flags.docx differ diff --git a/sw/qa/core/fields/data/styleref.odt b/sw/qa/core/fields/data/styleref.odt new file mode 100644 index ..27af5aae1f06 Binary files /dev/null and b/sw/qa/core/fields/data/styleref.odt differ diff --git a/sw/qa/core/fields/data/suppress-non-numerical.docx b/sw/qa/core/fields/data/suppress-non-numerical.docx new file mode 100644 index ..439e048b9f93 Binary files /dev/null and b/sw/qa/core/fields/data/suppress-non-numerical.docx differ diff --git a/sw/qa/core/fields/fields.cxx b/sw/qa/core/fields/fields.cxx index 9fae9cafef13..8e6a1488fa3a 100644 --- a/sw/qa/core/fields/fields.cxx +++ b/sw/qa/core/fields/fields.cxx @@ -7,8 +7,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include +#include #include -#include #include #include #include @@ -36,7 +37,6 @@ #include #include - #include #include @@ -182,27 +182,49 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf86790) CPPUNIT_ASSERT_EQUAL(sValue.first, xField->getPresentation(true)); CPPUNIT_ASSERT_EQUAL(sValue.second, xField->getPresentation(false)); } +CPPUNIT_ASSERT(!xFields->hasMoreElements()); +} + +void InsertParagraphBreak(const uno::Reference& xCursor) +{ +uno::Reference xText = xCursor->getText(); +xText->insertControlCharacter(xCursor, text::ControlCharacter::PARAGRAPH_BREAK, false); +} +void InsertHeading(const uno::Reference& xCursor, const OUString& content) +{ +uno::Reference xCursorPropertySet(xCursor, uno::UNO_QUERY); +uno::Reference xText = xCursor->getText(); + +xCursorPropertySet->setPropertyValue("ParaStyleName", uno::Any(OUString("Heading 1"))); +xText->insertString(xCursor, content, false); +InsertParagraphBreak(xCursor); } /// If there is referenced text both above and below, STYLEREF searches up CPPUNIT_TEST_FIXTURE(Test, testStyleRefSearchUp) { +// Arrange +// Create a document with headings both above and below a cursor createSwDoc(); uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); uno::Reference xText = xTextDocument->getText(); uno::Reference xCursor = xText->createTextCursor(); -uno::Reference xCursorPropertySet(xCursor, uno::UNO_QUERY); -xCursorPropertySet->setPropertyValue("ParaStyleName", uno::Any(OUString("Heading 1"))); -xText->insertString(xCursor, "Heading far above field", false); -
[Libreoffice-commits] core.git: sw/source sw/uiconfig
sw/source/core/fields/reffld.cxx | 21 + sw/uiconfig/swriter/ui/fldrefpage.ui |2 +- 2 files changed, 6 insertions(+), 17 deletions(-) New commits: commit 3e6d4a563f390638b285254d2128466b56ce03ba Author: Skyler Grey AuthorDate: Tue Oct 24 10:19:52 2023 + Commit: Caolán McNamara CommitDate: Mon Oct 30 20:11:31 2023 +0100 Improve STYLE_FROM_BOTTOM compatability with Word From my testing in Word, it doesn't honor the "search from bottom" flag when it is in the body, only in marginals. Additionally, it doesn't continue searching in the opposite order if the referenced content is not found on the current page, instead it searches in the same order as it would normally (i.e. pages above then pages below). This commit changes the behavior and UI of our from bottom flag to match. Change-Id: Id991c92b9aeaa054b136f7a3d9c7c8ea0026e514 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158452 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index c92d4b6d37bb..f034b1b52b5b 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -1384,8 +1384,6 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, case REF_STYLE: if (!pSelf) break; -bool bFlagFromBottom = (nFlags & REFFLDFLAG_STYLE_FROM_BOTTOM) == REFFLDFLAG_STYLE_FROM_BOTTOM; - const SwNodes& nodes = pDoc->GetNodes(); StyleRefElementType elementType = StyleRefElementType::Default; @@ -1434,6 +1432,8 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, // For marginals, styleref tries to act on the current page first // 1. Get the page we're on, search it from top to bottom +bool bFlagFromBottom = (nFlags & REFFLDFLAG_STYLE_FROM_BOTTOM) == REFFLDFLAG_STYLE_FROM_BOTTOM; + Point aPt; std::pair const tmp(aPt, false); @@ -1499,10 +1499,7 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, if (beforeStart) { -if (bFlagFromBottom) -pSearchThird.push_front(nodes[n]); -else -pSearchSecond.push_front(nodes[n]); +pSearchSecond.push_front(nodes[n]); } else if (beforeEnd) { @@ -1516,8 +1513,6 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, beforeEnd = false; } } -else if (bFlagFromBottom) -pSearchSecond.push_back(nodes[n]); else pSearchThird.push_back(nodes[n]); } @@ -1579,20 +1574,14 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, { if (beforeElement) { -if (bFlagFromBottom) -pSearchSecond.push_front(nodes[n]); -else -pSearchFirst.push_front(nodes[n]); +pSearchFirst.push_front(nodes[n]); if (*pReference == *nodes[n]) { beforeElement = false; } } -else if (bFlagFromBottom) -pSearchFirst.push_back(nodes[n]); -else -pSearchSecond.push_back(nodes[n]); +pSearchSecond.push_back(nodes[n]); } // 1. Search up until we hit the top of the document diff --git a/sw/uiconfig/swriter/ui/fldrefpage.ui b/sw/uiconfig/swriter/ui/fldrefpage.ui index 549a7a6e6f9a..8398e0a2ccf8 100644 --- a/sw/uiconfig/swriter/ui/fldrefpage.ui +++ b/sw/uiconfig/swriter/ui/fldrefpage.ui @@ -202,7 +202,7 @@ top -Search from bottom to top +Search this page from bottom to top True True False
[Libreoffice-commits] core.git: sw/inc sw/source
sw/inc/numrule.hxx |4 - sw/inc/reffld.hxx|5 - sw/source/core/doc/number.cxx| 121 ++- sw/source/core/fields/reffld.cxx | 44 +++--- sw/source/core/txtnode/ndtxt.cxx |1 sw/source/ui/fldui/fldref.cxx| 48 +-- sw/source/ui/fldui/fldref.hxx|1 7 files changed, 152 insertions(+), 72 deletions(-) New commits: commit 2ddd1378fc232fbc1d5162f2c44ecf71c6725732 Author: Skyler Grey AuthorDate: Tue Oct 24 16:22:30 2023 + Commit: Caolán McNamara CommitDate: Mon Oct 30 20:10:27 2023 +0100 Improve HIDE_NON_NUMERICAL compatibility with Word The previous implementation of REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL had some major incompatibilites with Word. In particular, it stripped letters even if they were included in the "numbering" system. This commit fixes a lot of the flaws in the previous implementation, so it's now a lot closer to Word. Change-Id: Ifaa67fbc2d53b0d4fb85e7305b2dbdf78cf0a1ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158451 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/sw/inc/numrule.hxx b/sw/inc/numrule.hxx index f642e21e746c..b21cc5259656 100644 --- a/sw/inc/numrule.hxx +++ b/sw/inc/numrule.hxx @@ -169,11 +169,13 @@ public: OUString MakeNumString( const SwNumberTree::tNumberVector & rNumVector, const bool bInclStrings = true, const unsigned int _nRestrictToThisLevel = MAXLEVEL, + const bool bHideNonNumerical = false, Extremities* pExtremities = nullptr, LanguageType nLang = LANGUAGE_SYSTEM) const; OUString MakeRefNumString( const SwNodeNum& rNodeNum, const bool bInclSuperiorNumLabels, - const int nRestrictInclToThisLevel ) const; + const int nRestrictInclToThisLevel, + const bool bHideNonNumerical ) const; OUString MakeParagraphStyleListString() const; /** @return list of associated text nodes */ diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index 3c1e3c63b5e6..b65e8c209633 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -117,11 +117,6 @@ private: virtual OUStringExpandImpl(SwRootFrame const* pLayout) const override; virtual std::unique_ptr Copy() const override; - -/// Strip out text that is not either a number or a delimiter. Used in STYLEREF for when you -/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y". Distinct from -/// GetExpandedTextOfReferencedTextNode so you can run it after any other processing -void StylerefStripNonnumerical(OUString& rText) const; public: SwGetRefField( SwGetRefFieldType*, OUString aSetRef, OUString aReferenceLanguage, sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_uLong nFormat ); diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx index 3ab36c63c160..d2cb98924e0f 100644 --- a/sw/source/core/doc/number.cxx +++ b/sw/source/core/doc/number.cxx @@ -648,9 +648,51 @@ OUString SwNumRule::MakeNumString( const SwNodeNum& rNum, bool bInclStrings ) co return OUString(); } +namespace { +/// Strip out text that is not a delimiter. Used in STYLEREF for when you +/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y" +/// Only used on the prefix/infix/suffix, so the numbers are not modified +void StripNonDelimiter(OUString& rText) +{ +std::vector charactersToKeep; + +for (int i = 0; i < rText.getLength(); i++) { +auto character = rText[i]; + + // tdf#86790# for Word compatibility: I haven't found any better way to determine whether a + // character is a delimiter than testing in Word and listing them out. Furthermore, I haven't + // found a list so I can't be certain this is the complete set- if there's a compatibility issue + // with this in the future, here's the first place to look... +if ( +character == '.' +|| character == ',' +|| character == ':' +|| character == ';' +|| character == '-' +|| character == '(' +|| character == ')' +|| character == '[' +|| character == ']' +|| character == '{' +|| character == '}' +|| character == '/' +|| character == '\\' +|| character == '|' +) +charactersToKeep.push_back(character); +} + +if (charactersToKeep.size()) +rText = OUString(charactersToKeep.data(), charactersToKeep.size()); +else +rText = OUString(); +} +} + OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVector,
[Libreoffice-commits] core.git: sw/inc sw/source
sw/inc/reffld.hxx|1 sw/source/core/doc/DocumentFieldsManager.cxx |5 sw/source/core/fields/reffld.cxx | 29 ++- 3 files changed, 34 insertions(+), 1 deletion(-) New commits: commit 15972993ff6e106a02954125269612179e1f33aa Author: Skyler Grey AuthorDate: Mon Oct 23 16:17:17 2023 + Commit: Caolán McNamara CommitDate: Mon Oct 30 20:08:56 2023 +0100 Fix incorrect marginal STYLEREF content in docx STYLEREF fields were previously not importing with the correct content when loading a docx document. This is because they were not updating when the document had finished loading- only partway through, and where a STYLEREF field is in relation to everything else in the document can change its content. This commit fixes that issue by adding STYLEREF fields to be refreshed whenever other fields that can change based on pages (e.g. page number) fields are updated. I suspect this could lead to double updates in some cases where both reference and page fields are being updated. I consider this a relatively minor issue in comparison to incorrect field content when specific documents are loaded, but a followup could be made improving this. This commit also fixes a minor typo in reffld.cxx where m_sText is always the filtered text when updating fields, even if we are updating m_sTextRLHidden instead. Change-Id: Iecd3e83a6bd3f8c2c6adba5c7eba9ee55b773510 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158450 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index 293b913c406b..3c1e3c63b5e6 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -100,6 +100,7 @@ public: SwRootFrame const* pLayout = nullptr, SwTextNode* pSelf = nullptr, SwFrame* pFrame = nullptr); void UpdateGetReferences(); +void UpdateStyleReferences(); }; class SW_DLLPUBLIC SwGetRefField final : public SwField diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index c8703e7f06ef..a7be3bb96394 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -1292,6 +1292,11 @@ void DocumentFieldsManager::UpdatePageFields(const SwTwips nDocPos) case SwFieldIds::DocStat: pFieldType->CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); break; +case SwFieldIds::GetRef: + static_cast(pFieldType)->UpdateStyleReferences(); +// Style references can vary across different pages (e.g. in header/footer) +// so they must be updated when page fields are +break; default: break; } } diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index 638baf0a5474..ee7791a68753 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -706,7 +706,7 @@ void SwGetRefField::UpdateField(const SwTextField* pFieldTextAttr, SwFrame* pFra rText = pTextNd->GetExpandText(pLayout, nStart, nEnd - nStart, false, false, false, ExpandMode(0)); } -FilterText(m_sText, GetLanguage(), m_sSetReferenceLanguage); +FilterText(rText, GetLanguage(), m_sSetReferenceLanguage); } } break; @@ -1167,6 +1167,33 @@ void SwGetRefFieldType::UpdateGetReferences() CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); } +void SwGetRefFieldType::UpdateStyleReferences() +{ +std::vector vFields; +GatherFields(vFields, false); +bool bModified = false; +for(auto pFormatField: vFields) +{ +// update only the GetRef fields which are also STYLEREF fields +SwGetRefField* pGRef = static_cast(pFormatField->GetField()); + +if (pGRef->GetSubType() != REF_STYLE) continue; + +const SwTextField* pTField; +if(!pGRef->GetLanguage() && +nullptr != (pTField = pFormatField->GetTextField()) && +pTField->GetpTextNode()) +{ + pGRef->SetLanguage(pTField->GetpTextNode()->GetLang(pTField->GetStart())); +} + +pGRef->UpdateField(pFormatField->GetTextField(), nullptr); +bModified = true; +} +if (bModified) +CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); +} + void SwGetRefFieldType::SwClientNotify(const SwModify&, const SfxHint& rHint) { if (rHint.GetId() != SfxHintId::SwLegacyModify)
[Libreoffice-commits] core.git: include/xmloff schema/libreoffice xmloff/inc xmloff/source
include/xmloff/xmltoken.hxx |2 schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng | 10 xmloff/inc/txtfld.hxx | 28 xmloff/inc/txtflde.hxx |9 +++ xmloff/inc/txtfldi.hxx |2 xmloff/source/core/xmltoken.cxx |2 xmloff/source/text/txtflde.cxx | 22 - xmloff/source/text/txtfldi.cxx | 13 + xmloff/source/token/tokens.txt |2 9 files changed, 87 insertions(+), 3 deletions(-) New commits: commit 6412a74b35a3e6089b65b4ad04549262e4bf93c8 Author: Skyler Grey AuthorDate: Fri Oct 20 14:30:31 2023 + Commit: Caolán McNamara CommitDate: Mon Oct 30 20:07:01 2023 +0100 Enable STYLEREF flag export/import with ODF This commit enables exporting the following STYLEREF flags with ODF - Search from bottom to top - Hide non numerical After this commit, the following steps have been implemented - The document model (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The layout (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The UI (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - UNO (Ib664fec059aa1f7f130acc76c253d5d298fa59f7) - DOCX/ODF filters (here and Ib664fec059aa1f7f130acc76c253d5d298fa59f7) Change-Id: Iad8e8001807f5ceeaedc9665838672695174a936 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158351 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx index d3c1b93ea6e4..066a55960e0b 100644 --- a/include/xmloff/xmltoken.hxx +++ b/include/xmloff/xmltoken.hxx @@ -1607,6 +1607,8 @@ namespace xmloff::token { XML_REFERENCE, XML_REFERENCE_END, XML_REFERENCE_FORMAT, +XML_REFERENCE_FROM_BOTTOM, +XML_REFERENCE_HIDE_NON_NUMERICAL, XML_REFERENCE_MARK, XML_REFERENCE_MARK_END, XML_REFERENCE_MARK_START, diff --git a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng index bf57af9b0be6..b9fbcfc7ce4b 100644 --- a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng +++ b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng @@ -2195,6 +2195,16 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1. + + + + + + + + + + diff --git a/xmloff/inc/txtfld.hxx b/xmloff/inc/txtfld.hxx new file mode 100644 index ..c562644a5f18 --- /dev/null +++ b/xmloff/inc/txtfld.hxx @@ -0,0 +1,28 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +/** @#file + * Constants, helpers etc. that need to be shared between text field import + * and export + */ + +#pragma once + +#define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100 +#define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL 0xc200 diff --git a/xmloff/inc/txtflde.hxx b/xmloff/inc/txtflde.hxx index 459dea29f550..f98fb7c5c421 100644 --- a/xmloff/inc/txtflde.hxx +++ b/xmloff/inc/txtflde.hxx @@ -34,6 +34,8 @@ #include #include +#include "txtfld.hxx" + class SvXMLExport; struct XMLPropertyState; @@ -239,6 +241,13 @@ private: bool i_bAutoStyles, bool i_bProgress, bool & rPrevCharIsSpace); + +void ProcessBoolean( +enum ::xmloff::token::XMLTokenEnum eXmlName,/// attribute token +bool bBool, /// attribute value +bool bDefault, +sal_uInt16 nPrefix); /// namespace + /// export a boolean attribute void ProcessBoolean( enum ::xmloff::token::XMLTokenEnum eXmlName,/// attribute token (namespace text) diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 0a15329c31ec..3d56c547811e 100644 --- a/xmloff/inc/txtfldi.hxx +++
[Libreoffice-commits] core.git: offapi/com sw/inc sw/source writerfilter/source
offapi/com/sun/star/text/textfield/GetReference.idl |4 sw/inc/unoprnms.hxx |1 + sw/source/core/fields/reffld.cxx| 10 ++ sw/source/core/inc/unofldmid.h |2 ++ sw/source/core/unocore/unofield.cxx | 12 +++- sw/source/core/unocore/unomap.cxx |1 + sw/source/filter/ww8/ww8atr.cxx | 11 +++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 18 ++ writerfilter/source/dmapper/PropertyIds.cxx |1 + writerfilter/source/dmapper/PropertyIds.hxx |1 + 10 files changed, 60 insertions(+), 1 deletion(-) New commits: commit e195c22533de44cd4f6afab7836c7eb6a613d202 Author: Skyler Grey AuthorDate: Fri Oct 20 13:07:12 2023 + Commit: Caolán McNamara CommitDate: Mon Oct 30 20:04:01 2023 +0100 Enable STYLEREF flag export/import with OOXML This commit enables exporting the following STYLEREF flags with OOXML - Search from bottom to top - Hide non numerical After this commit, the following steps have been implemented - The document model (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The layout (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The UI (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - UNO - DOCX filter Change-Id: Ib664fec059aa1f7f130acc76c253d5d298fa59f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158350 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/offapi/com/sun/star/text/textfield/GetReference.idl b/offapi/com/sun/star/text/textfield/GetReference.idl index 11bfc92b7705..c686b00b23cf 100644 --- a/offapi/com/sun/star/text/textfield/GetReference.idl +++ b/offapi/com/sun/star/text/textfield/GetReference.idl @@ -62,6 +62,10 @@ published service GetReference */ [optional, property] string ReferenceFieldLanguage; +/** contains extra flags which can modify the behaviour of the field +@since LibreOffice 24.2 + */ +[optional, property] short ReferenceFieldFlags; }; diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index 1ab2395fa67d..e83b1b601ef4 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -307,6 +307,7 @@ inline constexpr OUString UNO_NAME_PAGE_NUMBER_OFFSET = u"PageNumberOffset"_ustr inline constexpr OUString UNO_NAME_PLACEHOLDER = u"PlaceHolder"_ustr; inline constexpr OUString UNO_NAME_PLACEHOLDER_TYPE = u"PlaceHolderType"_ustr; inline constexpr OUString UNO_NAME_PRINT = u"Print"_ustr; +inline constexpr OUString UNO_NAME_REFERENCE_FIELD_FLAGS = u"ReferenceFieldFlags"_ustr; inline constexpr OUString UNO_NAME_REFERENCE_FIELD_PART = u"ReferenceFieldPart"_ustr; inline constexpr OUString UNO_NAME_REFERENCE_FIELD_SOURCE = u"ReferenceFieldSource"_ustr; inline constexpr OUString UNO_NAME_REFERENCE_FIELD_LANGUAGE = u"ReferenceFieldLanguage"_ustr; diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index 96b9716f7eac..638baf0a5474 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -974,6 +974,9 @@ bool SwGetRefField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const rAny <<= nSource; } break; +case FIELD_PROP_USHORT3: +rAny <<= m_nFlags; +break; case FIELD_PROP_PAR1: { OUString sTmp(GetPar1()); @@ -1076,6 +1079,13 @@ bool SwGetRefField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) case FIELD_PROP_PAR4: rAny >>= m_sSetReferenceLanguage; break; +case FIELD_PROP_USHORT3: +{ +sal_uInt16 nSetFlags = 0; +rAny >>= nSetFlags; +m_nFlags = nSetFlags; +} +break; case FIELD_PROP_SHORT1: { sal_Int16 nSetSeq = 0; diff --git a/sw/source/core/inc/unofldmid.h b/sw/source/core/inc/unofldmid.h index 59f4583f3d6f..8c1838f45636 100644 --- a/sw/source/core/inc/unofldmid.h +++ b/sw/source/core/inc/unofldmid.h @@ -51,6 +51,8 @@ #define FIELD_PROP_PAR6 36 #define FIELD_PROP_PAR7 37 +#define FIELD_PROP_USHORT3 38 + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx index b5d423e8fd42..74b530ed5a28 100644 --- a/sw/source/core/unocore/unofield.cxx +++ b/sw/source/core/unocore/unofield.cxx @@ -1043,6 +1043,7 @@ struct SwFieldProperties_Impl sal_Int32 nFormat; sal_uInt16 nUSHORT1; sal_uInt16 nUSHORT2; +sal_uInt16 nUSHORT3; sal_Int16 nSHORT1; sal_Int8nByte1; boolbFormatIsDefault; @@ -1058,6 +1059,7 @@ struct SwFieldProperties_Impl nFormat(0), nUSHORT1(0), nUSHORT2(0), +nUSHORT3(0), nSHORT1(0), nByte1(0),
[Libreoffice-commits] core.git: sw/inc sw/qa sw/source sw/uiconfig
sw/inc/crsrsh.hxx |2 sw/inc/reffld.hxx | 27 ++ sw/qa/extras/uiwriter/uiwriter7.cxx | 15 - sw/source/core/crsr/crstrvl.cxx |4 sw/source/core/fields/reffld.cxx| 99 +++--- sw/source/core/text/EnhancedPDFExportHelper.cxx |2 sw/source/core/unocore/unofield.cxx |1 sw/source/filter/ww8/ww8par5.cxx|8 sw/source/ui/fldui/fldref.cxx | 37 ++- sw/source/ui/fldui/fldref.hxx |4 sw/source/uibase/fldui/fldmgr.cxx | 21 +- sw/source/uibase/inc/wrtsh.hxx |2 sw/source/uibase/shells/textsh1.cxx |3 sw/source/uibase/wrtsh/move.cxx |4 sw/source/uibase/wrtsh/wrtsh2.cxx |3 sw/uiconfig/swriter/ui/fldrefpage.ui| 231 ++-- 16 files changed, 303 insertions(+), 160 deletions(-) New commits: commit 4bb1a7836abb49a9b0513958239f3998305201fd Author: Skyler Grey AuthorDate: Fri Oct 20 09:02:57 2023 + Commit: Miklos Vajna CommitDate: Fri Oct 27 08:07:21 2023 +0200 Add flags to STYLEREF This commit is part of an implementation for the following STYLEREF flags - Search from bottom to top, which sets the STYLEREF field to search downwards first, or from the bottom of the page in marginals - Hide non numerical, which hides all characters that are not either numbers or punctuation commonly used as delimiters. For example, if your STYLEREF said "Chapter 2.1", this setting would make it say "2.1" This commit implements: - The document model - The layout - The UI Change-Id: I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158349 Tested-by: Jenkins Reviewed-by: Miklos Vajna diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx index 233edb71c240..fd28607c5e32 100644 --- a/sw/inc/crsrsh.hxx +++ b/sw/inc/crsrsh.hxx @@ -702,7 +702,7 @@ public: bool SelectNxtPrvHyperlink( bool bNext ); bool GotoRefMark( const OUString& rRefMark, sal_uInt16 nSubType, -sal_uInt16 nSeqNo ); +sal_uInt16 nSeqNo, sal_uInt16 nFlags ); // get the nth character from the start or end of the current selection sal_Unicode GetChar( bool bEnd = true, tools::Long nOffset = 0 ); diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index bf9d563ab2ac..293b913c406b 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -34,6 +34,20 @@ class SwFrame; bool IsFrameBehind( const SwTextNode& rMyNd, sal_Int32 nMySttPos, const SwTextNode& rBehindNd, sal_Int32 nSttPos ); +#define REFFLDFLAG 0x4000 +#define REFFLDFLAG_BOOKMARK 0x4800 +#define REFFLDFLAG_FOOTNOTE 0x5000 +#define REFFLDFLAG_ENDNOTE 0x6000 +// #i83479# +#define REFFLDFLAG_HEADING 0x7100 +#define REFFLDFLAG_NUMITEM 0x7200 + +#define REFFLDFLAG_STYLE0xc000 +/* we skip past 0x8000, 0x9000, 0xa000 and 0xb000 as when we bitwise 'and' + with REFFLDFLAG they are false */ +#define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100 +#define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL0xc200 + enum REFERENCESUBTYPE { REF_SETREFATTR = 0, @@ -81,7 +95,7 @@ public: void MergeWithOtherDoc( SwDoc& rDestDoc ); static SwTextNode* FindAnchor( SwDoc* pDoc, const OUString& rRefMark, -sal_uInt16 nSubType, sal_uInt16 nSeqNo, +sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_Int32* pStt, sal_Int32* pEnd = nullptr, SwRootFrame const* pLayout = nullptr, SwTextNode* pSelf = nullptr, SwFrame* pFrame = nullptr); @@ -98,13 +112,18 @@ private: sal_uInt16 m_nSubType; /// reference to either a SwTextFootnote::m_nSeqNo or a SwSetExpField::mnSeqNo sal_uInt16 m_nSeqNo; +sal_uInt16 m_nFlags; virtual OUStringExpandImpl(SwRootFrame const* pLayout) const override; virtual std::unique_ptr Copy() const override; +/// Strip out text that is not either a number or a delimiter. Used in STYLEREF for when you +/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y". Distinct from +/// GetExpandedTextOfReferencedTextNode so you can run it after any other processing +void StylerefStripNonnumerical(OUString& rText) const; public: SwGetRefField( SwGetRefFieldType*, OUString aSetRef, OUString aReferenceLanguage, -sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFormat ); +sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_uLong nFormat ); virtual ~SwGetRefField() override; @@ -140,6 +159,10 @@ public:
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/qa
sw/qa/core/fields/data/styleref-flags.docx |binary sw/qa/core/fields/data/styleref.odt|binary sw/qa/core/fields/data/suppress-non-numerical.docx |binary sw/qa/core/fields/fields.cxx | 224 - 4 files changed, 172 insertions(+), 52 deletions(-) New commits: commit 5f4bbf5b8e9af5e98c34ce67d2a8b521ffcf50c6 Author: Skyler Grey AuthorDate: Mon Oct 23 09:17:23 2023 + Commit: Miklos Vajna CommitDate: Wed Oct 25 17:52:20 2023 +0200 Improve and extend STYLEREF tests - I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19, Ib664fec059aa1f7f130acc76c253d5d298fa59f7 and Iad8e8001807f5ceeaedc9665838672695174a936 added STYLEREF flags. This commit adds tests for them - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 were partly broken due to the fields occasionally being inserted in the wrong place (i.e. at the end of the document), this commit makes sure to move the cursor before inserting a field - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 were not separated into sections which made it difficult to tell what was being tested. All STYLEREF tests that create documents are now clearly split into arrange/act/assert steps with comments denoting the sections - The tests in I35dc36197b62fa53def4745da1d4755ece79ed22 had a lot of repetition, particularly in creating the document, adding headings, etc. This has been refactored into some helper functions - I35dc36197b62fa53def4745da1d4755ece79ed22 was missing an ODF import test. This commit adds one Follow-Up-To: I25dd7a6940abee5651a784b9059fe23b32547d6c Follow-Up-To: I35dc36197b62fa53def4745da1d4755ece79ed22 Follow-Up-To: I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19 Follow-Up-To: Ib664fec059aa1f7f130acc76c253d5d298fa59f7 Follow-Up-To: Iad8e8001807f5ceeaedc9665838672695174a936 Follow-Up-To: Iecd3e83a6bd3f8c2c6adba5c7eba9ee55b773510 Follow-Up-To: Ifaa67fbc2d53b0d4fb85e7305b2dbdf78cf0a1ad Follow-Up-To: Id991c92b9aeaa054b136f7a3d9c7c8ea0026e514 Change-Id: I941b477c8e860270a400869cb9ea15e5561e402a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158342 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/sw/qa/core/fields/data/styleref-flags.docx b/sw/qa/core/fields/data/styleref-flags.docx new file mode 100644 index ..443624a575e0 Binary files /dev/null and b/sw/qa/core/fields/data/styleref-flags.docx differ diff --git a/sw/qa/core/fields/data/styleref.odt b/sw/qa/core/fields/data/styleref.odt new file mode 100644 index ..27af5aae1f06 Binary files /dev/null and b/sw/qa/core/fields/data/styleref.odt differ diff --git a/sw/qa/core/fields/data/suppress-non-numerical.docx b/sw/qa/core/fields/data/suppress-non-numerical.docx new file mode 100644 index ..439e048b9f93 Binary files /dev/null and b/sw/qa/core/fields/data/suppress-non-numerical.docx differ diff --git a/sw/qa/core/fields/fields.cxx b/sw/qa/core/fields/fields.cxx index 4a3dd3af1593..934518d5b9f9 100644 --- a/sw/qa/core/fields/fields.cxx +++ b/sw/qa/core/fields/fields.cxx @@ -7,8 +7,9 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include +#include "reffld.hxx" #include -#include #include #include #include @@ -19,16 +20,11 @@ #include #include #include -#include #include -#include #include #include -#include #include -#include #include -#include #include #include #include @@ -40,9 +36,7 @@ #include #include -#include #include - #include #include @@ -191,27 +185,52 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf86790) CPPUNIT_ASSERT_EQUAL(sValue.first, xField->getPresentation(true)); CPPUNIT_ASSERT_EQUAL(sValue.second, xField->getPresentation(false)); } +CPPUNIT_ASSERT(!xFields->hasMoreElements()); +} + +namespace +{ +void InsertParagraphBreak(uno::Reference xCursor) +{ +uno::Reference xText = xCursor->getText(); +xText->insertControlCharacter(xCursor, text::ControlCharacter::PARAGRAPH_BREAK, false); +} +void InsertHeading(uno::Reference xCursor, OUString content) +{ +uno::Reference xCursorPropertySet(xCursor, uno::UNO_QUERY); +uno::Reference xText = xCursor->getText(); + +xCursorPropertySet->setPropertyValue("ParaStyleName", uno::Any(OUString("Heading 1"))); +xText->insertString(xCursor, content, false); +InsertParagraphBreak(xCursor); +} } /// If there is referenced text both above and below, STYLEREF searches up CPPUNIT_TEST_FIXTURE(Test, testStyleRefSearchUp) { +// Arrange +// Create a document with headings both above and below a cursor createSwDoc(); uno::Reference xTextDocument(mxComponent, uno::UNO_QUERY); uno::Reference xText = xTextDocument->getText(); uno::Reference xCursor = xText->createTextCursor(); -uno::Reference xCursorPropertySet(xCursor,
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/source sw/uiconfig
sw/source/core/fields/reffld.cxx | 21 + sw/uiconfig/swriter/ui/fldrefpage.ui |2 +- 2 files changed, 6 insertions(+), 17 deletions(-) New commits: commit 60c111838da81697a49b3011eebe8b1e05ad08bb Author: Skyler Grey AuthorDate: Tue Oct 24 10:19:52 2023 + Commit: Skyler Grey CommitDate: Wed Oct 25 16:36:51 2023 +0200 Improve STYLE_FROM_BOTTOM compatability with Word From my testing in Word, it doesn't honor the "search from bottom" flag when it is in the body, only in marginals. Additionally, it doesn't continue searching in the opposite order if the referenced content is not found on the current page, instead it searches in the same order as it would normally (i.e. pages above then pages below). This commit changes the behavior and UI of our from bottom flag to match. Change-Id: Id991c92b9aeaa054b136f7a3d9c7c8ea0026e514 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158382 Reviewed-by: Miklos Vajna Tested-by: Jenkins CollaboraOffice diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index 3a7bc4ae4e70..1f8aae4e3506 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -1385,8 +1385,6 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, case REF_STYLE: if (!pSelf) break; -bool bFlagFromBottom = (nFlags & REFFLDFLAG_STYLE_FROM_BOTTOM) == REFFLDFLAG_STYLE_FROM_BOTTOM; - const SwNodes& nodes = pDoc->GetNodes(); StyleRefElementType elementType = StyleRefElementType::Default; @@ -1435,6 +1433,8 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, // For marginals, styleref tries to act on the current page first // 1. Get the page we're on, search it from top to bottom +bool bFlagFromBottom = (nFlags & REFFLDFLAG_STYLE_FROM_BOTTOM) == REFFLDFLAG_STYLE_FROM_BOTTOM; + Point aPt; std::pair const tmp(aPt, false); @@ -1500,10 +1500,7 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, if (beforeStart) { -if (bFlagFromBottom) -pSearchThird.push_front(nodes[n]); -else -pSearchSecond.push_front(nodes[n]); +pSearchSecond.push_front(nodes[n]); } else if (beforeEnd) { @@ -1517,8 +1514,6 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, beforeEnd = false; } } -else if (bFlagFromBottom) -pSearchSecond.push_back(nodes[n]); else pSearchThird.push_back(nodes[n]); } @@ -1580,20 +1575,14 @@ SwTextNode* SwGetRefFieldType::FindAnchor(SwDoc* pDoc, const OUString& rRefMark, { if (beforeElement) { -if (bFlagFromBottom) -pSearchSecond.push_front(nodes[n]); -else -pSearchFirst.push_front(nodes[n]); +pSearchFirst.push_front(nodes[n]); if (*pReference == *nodes[n]) { beforeElement = false; } } -else if (bFlagFromBottom) -pSearchFirst.push_back(nodes[n]); -else -pSearchSecond.push_back(nodes[n]); +pSearchSecond.push_back(nodes[n]); } // 1. Search up until we hit the top of the document diff --git a/sw/uiconfig/swriter/ui/fldrefpage.ui b/sw/uiconfig/swriter/ui/fldrefpage.ui index 635cbb35fb41..8592211ef10e 100644 --- a/sw/uiconfig/swriter/ui/fldrefpage.ui +++ b/sw/uiconfig/swriter/ui/fldrefpage.ui @@ -201,7 +201,7 @@ top -Search from bottom to top +Search this page from bottom to top True True False
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/inc sw/source
sw/inc/numrule.hxx |4 - sw/inc/reffld.hxx|5 - sw/source/core/doc/number.cxx| 121 ++- sw/source/core/fields/reffld.cxx | 44 +++--- sw/source/core/txtnode/ndtxt.cxx |1 sw/source/ui/fldui/fldref.cxx| 48 +-- sw/source/ui/fldui/fldref.hxx|1 7 files changed, 152 insertions(+), 72 deletions(-) New commits: commit 6d2871efaebc9c36ba1d225e2f149e35d32db1d6 Author: Skyler Grey AuthorDate: Tue Oct 24 16:22:30 2023 + Commit: Miklos Vajna CommitDate: Wed Oct 25 16:16:39 2023 +0200 Improve HIDE_NON_NUMERICAL compatibility with Word The previous implementation of REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL had some major incompatibilites with Word. In particular, it stripped letters even if they were included in the "numbering" system. This commit fixes a lot of the flaws in the previous implementation, so it's now a lot closer to Word. Change-Id: Ifaa67fbc2d53b0d4fb85e7305b2dbdf78cf0a1ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158396 Reviewed-by: Miklos Vajna Tested-by: Jenkins CollaboraOffice diff --git a/sw/inc/numrule.hxx b/sw/inc/numrule.hxx index f642e21e746c..b21cc5259656 100644 --- a/sw/inc/numrule.hxx +++ b/sw/inc/numrule.hxx @@ -169,11 +169,13 @@ public: OUString MakeNumString( const SwNumberTree::tNumberVector & rNumVector, const bool bInclStrings = true, const unsigned int _nRestrictToThisLevel = MAXLEVEL, + const bool bHideNonNumerical = false, Extremities* pExtremities = nullptr, LanguageType nLang = LANGUAGE_SYSTEM) const; OUString MakeRefNumString( const SwNodeNum& rNodeNum, const bool bInclSuperiorNumLabels, - const int nRestrictInclToThisLevel ) const; + const int nRestrictInclToThisLevel, + const bool bHideNonNumerical ) const; OUString MakeParagraphStyleListString() const; /** @return list of associated text nodes */ diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index 3c1e3c63b5e6..b65e8c209633 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -117,11 +117,6 @@ private: virtual OUStringExpandImpl(SwRootFrame const* pLayout) const override; virtual std::unique_ptr Copy() const override; - -/// Strip out text that is not either a number or a delimiter. Used in STYLEREF for when you -/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y". Distinct from -/// GetExpandedTextOfReferencedTextNode so you can run it after any other processing -void StylerefStripNonnumerical(OUString& rText) const; public: SwGetRefField( SwGetRefFieldType*, OUString aSetRef, OUString aReferenceLanguage, sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_uLong nFormat ); diff --git a/sw/source/core/doc/number.cxx b/sw/source/core/doc/number.cxx index 3ab36c63c160..fffa5ea2a92c 100644 --- a/sw/source/core/doc/number.cxx +++ b/sw/source/core/doc/number.cxx @@ -648,9 +648,51 @@ OUString SwNumRule::MakeNumString( const SwNodeNum& rNum, bool bInclStrings ) co return OUString(); } +namespace { +/// Strip out text that is not a delimiter. Used in STYLEREF for when you +/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y" +/// Only used on the prefix/infix/suffix, so the numbers are not modified +void StripNonDelimiter(OUString& rText) +{ +std::vector charactersToKeep; + +for (int i = 0; i < rText.getLength(); i++) { +auto character = rText[i]; + + // tdf#86790# for Word compatibility: I haven't found any better way to determine whether a + // character is a delimiter than testing in Word and listing them out. Furthermore, I haven't + // found a list so I can't be certain this is the complete set- if there's a compatibility issue + // with this in the future, here's the first place to look... + if ( +character == '.' +|| character == ',' +|| character == ':' +|| character == ';' +|| character == '-' +|| character == '(' +|| character == ')' +|| character == '[' +|| character == ']' +|| character == '{' +|| character == '}' +|| character == '/' +|| character == '\\' +|| character == '|' +) +charactersToKeep.push_back(character); +} + +if (charactersToKeep.size()) +rText = OUString([0], charactersToKeep.size()); +else +rText = OUString(); +} +} + OUString SwNumRule::MakeNumString( const SwNumberTree::tNumberVector & rNumVector,
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/inc sw/source
sw/inc/reffld.hxx|1 sw/source/core/doc/DocumentFieldsManager.cxx |5 sw/source/core/fields/reffld.cxx | 29 ++- 3 files changed, 34 insertions(+), 1 deletion(-) New commits: commit 8c8682ddd62d7144ded88acde99aa7b0b0e1978b Author: Skyler Grey AuthorDate: Mon Oct 23 16:17:17 2023 + Commit: Miklos Vajna CommitDate: Wed Oct 25 12:23:24 2023 +0200 Fix incorrect marginal STYLEREF content in docx STYLEREF fields were previously not importing with the correct content when loading a docx document. This is because they were not updating when the document had finished loading- only partway through, and where a STYLEREF field is in relation to everything else in the document can change its content. This commit fixes that issue by adding STYLEREF fields to be refreshed whenever other fields that can change based on pages (e.g. page number) fields are updated. I suspect this could lead to double updates in some cases where both reference and page fields are being updated. I consider this a relatively minor issue in comparison to incorrect field content when specific documents are loaded, but a followup could be made improving this. This commit also fixes a minor typo in reffld.cxx where m_sText is always the filtered text when updating fields, even if we are updating m_sTextRLHidden instead. Change-Id: Iecd3e83a6bd3f8c2c6adba5c7eba9ee55b773510 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158361 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index 293b913c406b..3c1e3c63b5e6 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -100,6 +100,7 @@ public: SwRootFrame const* pLayout = nullptr, SwTextNode* pSelf = nullptr, SwFrame* pFrame = nullptr); void UpdateGetReferences(); +void UpdateStyleReferences(); }; class SW_DLLPUBLIC SwGetRefField final : public SwField diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index fc604900a139..204803ffb870 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -1351,6 +1351,11 @@ void DocumentFieldsManager::UpdatePageFields( SfxPoolItem* pMsgHint ) case SwFieldIds::DocStat: pFieldType->CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); break; +case SwFieldIds::GetRef: + static_cast(pFieldType)->UpdateStyleReferences(); +// Style references can vary across different pages (e.g. in header/footer) +// so they must be updated when page fields are +break; default: break; } } diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index 2720550795ff..552bded828d4 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -707,7 +707,7 @@ void SwGetRefField::UpdateField(const SwTextField* pFieldTextAttr, SwFrame* pFra rText = pTextNd->GetExpandText(pLayout, nStart, nEnd - nStart, false, false, false, ExpandMode(0)); } -FilterText(m_sText, GetLanguage(), m_sSetReferenceLanguage); +FilterText(rText, GetLanguage(), m_sSetReferenceLanguage); } } break; @@ -1168,6 +1168,33 @@ void SwGetRefFieldType::UpdateGetReferences() CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); } +void SwGetRefFieldType::UpdateStyleReferences() +{ +std::vector vFields; +GatherFields(vFields, false); +bool bModified = false; +for(auto pFormatField: vFields) +{ +// update only the GetRef fields which are also STYLEREF fields +SwGetRefField* pGRef = static_cast(pFormatField->GetField()); + +if (pGRef->GetSubType() != REF_STYLE) continue; + +const SwTextField* pTField; +if(!pGRef->GetLanguage() && +nullptr != (pTField = pFormatField->GetTextField()) && +pTField->GetpTextNode()) +{ + pGRef->SetLanguage(pTField->GetpTextNode()->GetLang(pTField->GetStart())); +} + +pGRef->UpdateField(pFormatField->GetTextField(), nullptr); +bModified = true; +} +if (bModified) +CallSwClientNotify(sw::LegacyModifyHint(nullptr, nullptr)); +} + void SwGetRefFieldType::SwClientNotify(const SwModify&, const SfxHint& rHint) { if (rHint.GetId() != SfxHintId::SwLegacyModify)
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - include/xmloff schema/libreoffice xmloff/inc xmloff/source
include/xmloff/xmltoken.hxx |2 schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng | 10 xmloff/inc/txtfld.hxx | 28 xmloff/inc/txtflde.hxx |8 +++ xmloff/inc/txtfldi.hxx |2 xmloff/source/core/xmltoken.cxx |2 xmloff/source/text/txtflde.cxx | 22 - xmloff/source/text/txtfldi.cxx | 13 + xmloff/source/token/tokens.txt |2 9 files changed, 86 insertions(+), 3 deletions(-) New commits: commit 7c13e0337f3a784d6f81296f12ae5d3e6aa5370d Author: Skyler Grey AuthorDate: Fri Oct 20 14:30:31 2023 + Commit: Miklos Vajna CommitDate: Wed Oct 25 08:22:01 2023 +0200 Enable STYLEREF flag export/import with ODF This commit enables exporting the following STYLEREF flags with ODF - Search from bottom to top - Hide non numerical After this commit, the following steps have been implemented - The document model (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The layout (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The UI (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - UNO (Ib664fec059aa1f7f130acc76c253d5d298fa59f7) - DOCX/ODF filters (here and Ib664fec059aa1f7f130acc76c253d5d298fa59f7) Change-Id: Iad8e8001807f5ceeaedc9665838672695174a936 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158265 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx index 5bb8528c81e6..1fb203e3469c 100644 --- a/include/xmloff/xmltoken.hxx +++ b/include/xmloff/xmltoken.hxx @@ -1604,6 +1604,8 @@ namespace xmloff::token { XML_REFERENCE, XML_REFERENCE_END, XML_REFERENCE_FORMAT, +XML_REFERENCE_FROM_BOTTOM, +XML_REFERENCE_HIDE_NON_NUMERICAL, XML_REFERENCE_MARK, XML_REFERENCE_MARK_END, XML_REFERENCE_MARK_START, diff --git a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng index 5f5040173bb8..c02dcf8925be 100644 --- a/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng +++ b/schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng @@ -2078,6 +2078,16 @@ xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1. + + + + + + + + + + diff --git a/xmloff/inc/txtfld.hxx b/xmloff/inc/txtfld.hxx new file mode 100644 index ..c562644a5f18 --- /dev/null +++ b/xmloff/inc/txtfld.hxx @@ -0,0 +1,28 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +/** @#file + * Constants, helpers etc. that need to be shared between text field import + * and export + */ + +#pragma once + +#define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100 +#define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL 0xc200 diff --git a/xmloff/inc/txtflde.hxx b/xmloff/inc/txtflde.hxx index 459dea29f550..dd4f3c698c73 100644 --- a/xmloff/inc/txtflde.hxx +++ b/xmloff/inc/txtflde.hxx @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -239,6 +240,13 @@ private: bool i_bAutoStyles, bool i_bProgress, bool & rPrevCharIsSpace); + +void ProcessBoolean( +enum ::xmloff::token::XMLTokenEnum eXmlName,/// attribute token +bool bBool, /// attribute value +bool bDefault, +sal_uInt16 nPrefix); /// namespace + /// export a boolean attribute void ProcessBoolean( enum ::xmloff::token::XMLTokenEnum eXmlName,/// attribute token (namespace text) diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 0a15329c31ec..3f87010e022d 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -34,6 +34,7 @@
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - offapi/com sw/inc sw/source writerfilter/source
offapi/com/sun/star/text/textfield/GetReference.idl |4 sw/inc/unoprnms.hxx |1 + sw/source/core/fields/reffld.cxx| 10 ++ sw/source/core/inc/unofldmid.h |2 ++ sw/source/core/unocore/unofield.cxx | 12 +++- sw/source/core/unocore/unomap.cxx |1 + sw/source/filter/ww8/ww8atr.cxx | 11 +++ writerfilter/source/dmapper/DomainMapper_Impl.cxx | 18 ++ writerfilter/source/dmapper/PropertyIds.cxx |1 + writerfilter/source/dmapper/PropertyIds.hxx |1 + 10 files changed, 60 insertions(+), 1 deletion(-) New commits: commit ce4c591f3bb9f0a7f97ce73d434991c061d1adb5 Author: Skyler Grey AuthorDate: Fri Oct 20 13:07:12 2023 + Commit: Miklos Vajna CommitDate: Tue Oct 24 08:38:16 2023 +0200 Enable STYLEREF flag export/import with OOXML This commit enables exporting the following STYLEREF flags with OOXML - Search from bottom to top - Hide non numerical After this commit, the following steps have been implemented - The document model (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The layout (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - The UI (I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19) - UNO - DOCX filter Change-Id: Ib664fec059aa1f7f130acc76c253d5d298fa59f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158261 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/offapi/com/sun/star/text/textfield/GetReference.idl b/offapi/com/sun/star/text/textfield/GetReference.idl index 11bfc92b7705..c686b00b23cf 100644 --- a/offapi/com/sun/star/text/textfield/GetReference.idl +++ b/offapi/com/sun/star/text/textfield/GetReference.idl @@ -62,6 +62,10 @@ published service GetReference */ [optional, property] string ReferenceFieldLanguage; +/** contains extra flags which can modify the behaviour of the field +@since LibreOffice 24.2 + */ +[optional, property] short ReferenceFieldFlags; }; diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index 9d484371ed5f..31b032c1d59b 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -312,6 +312,7 @@ inline constexpr OUStringLiteral UNO_NAME_PAGE_NUMBER_OFFSET = u"PageNumberOffse inline constexpr OUStringLiteral UNO_NAME_PLACEHOLDER = u"PlaceHolder"; inline constexpr OUStringLiteral UNO_NAME_PLACEHOLDER_TYPE = u"PlaceHolderType"; inline constexpr OUStringLiteral UNO_NAME_PRINT = u"Print"; +inline constexpr OUStringLiteral UNO_NAME_REFERENCE_FIELD_FLAGS = u"ReferenceFieldFlags"; inline constexpr OUStringLiteral UNO_NAME_REFERENCE_FIELD_PART = u"ReferenceFieldPart"; inline constexpr OUStringLiteral UNO_NAME_REFERENCE_FIELD_SOURCE = u"ReferenceFieldSource"; inline constexpr OUStringLiteral UNO_NAME_REFERENCE_FIELD_LANGUAGE = u"ReferenceFieldLanguage"; diff --git a/sw/source/core/fields/reffld.cxx b/sw/source/core/fields/reffld.cxx index d7e2e6ff75fd..2720550795ff 100644 --- a/sw/source/core/fields/reffld.cxx +++ b/sw/source/core/fields/reffld.cxx @@ -975,6 +975,9 @@ bool SwGetRefField::QueryValue( uno::Any& rAny, sal_uInt16 nWhichId ) const rAny <<= nSource; } break; +case FIELD_PROP_USHORT3: +rAny <<= m_nFlags; +break; case FIELD_PROP_PAR1: { OUString sTmp(GetPar1()); @@ -1077,6 +1080,13 @@ bool SwGetRefField::PutValue( const uno::Any& rAny, sal_uInt16 nWhichId ) case FIELD_PROP_PAR4: rAny >>= m_sSetReferenceLanguage; break; +case FIELD_PROP_USHORT3: +{ +sal_uInt16 nSetFlags = 0; +rAny >>= nSetFlags; +m_nFlags = nSetFlags; +} +break; case FIELD_PROP_SHORT1: { sal_Int16 nSetSeq = 0; diff --git a/sw/source/core/inc/unofldmid.h b/sw/source/core/inc/unofldmid.h index 59f4583f3d6f..8c1838f45636 100644 --- a/sw/source/core/inc/unofldmid.h +++ b/sw/source/core/inc/unofldmid.h @@ -51,6 +51,8 @@ #define FIELD_PROP_PAR6 36 #define FIELD_PROP_PAR7 37 +#define FIELD_PROP_USHORT3 38 + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/core/unocore/unofield.cxx b/sw/source/core/unocore/unofield.cxx index 5e74c3434190..63f614a76216 100644 --- a/sw/source/core/unocore/unofield.cxx +++ b/sw/source/core/unocore/unofield.cxx @@ -1055,6 +1055,7 @@ struct SwFieldProperties_Impl sal_Int32 nFormat; sal_uInt16 nUSHORT1; sal_uInt16 nUSHORT2; +sal_uInt16 nUSHORT3; sal_Int16 nSHORT1; sal_Int8nByte1; boolbFormatIsDefault; @@ -1070,6 +1071,7 @@ struct SwFieldProperties_Impl nFormat(0), nUSHORT1(0), nUSHORT2(0), +nUSHORT3(0), nSHORT1(0),
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/inc sw/qa sw/source sw/uiconfig
sw/inc/crsrsh.hxx |2 sw/inc/reffld.hxx | 27 ++ sw/qa/extras/uiwriter/uiwriter7.cxx | 15 - sw/source/core/crsr/crstrvl.cxx |4 sw/source/core/fields/reffld.cxx| 99 +++-- sw/source/core/text/EnhancedPDFExportHelper.cxx |2 sw/source/core/unocore/unofield.cxx |1 sw/source/filter/ww8/ww8par5.cxx|8 sw/source/ui/fldui/fldref.cxx | 37 ++- sw/source/ui/fldui/fldref.hxx |4 sw/source/uibase/fldui/fldmgr.cxx | 21 +- sw/source/uibase/inc/wrtsh.hxx |2 sw/source/uibase/shells/textsh1.cxx |3 sw/source/uibase/wrtsh/move.cxx |4 sw/source/uibase/wrtsh/wrtsh2.cxx |3 sw/uiconfig/swriter/ui/fldrefpage.ui| 239 ++-- 16 files changed, 307 insertions(+), 164 deletions(-) New commits: commit ff93cd6c71c5fdf7a89948bad79dc8d19a39f903 Author: Skyler Grey AuthorDate: Fri Oct 20 09:02:57 2023 + Commit: Miklos Vajna CommitDate: Fri Oct 20 16:51:49 2023 +0200 Add flags to STYLEREF This commit is part of an implementation for the following STYLEREF flags - Search from bottom to top, which sets the STYLEREF field to search downwards first, or from the bottom of the page in marginals - Hide non numerical, which hides all characters that are not either numbers or punctuation commonly used as delimiters. For example, if your STYLEREF said "Chapter 2.1", this setting would make it say "2.1" This commit implements: - The document model - The layout - The UI Change-Id: I7d8f455ffe90cface4f3b1acf6b9bef6a045ed19 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158233 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx index 639b29f3ed98..4694ae9ca578 100644 --- a/sw/inc/crsrsh.hxx +++ b/sw/inc/crsrsh.hxx @@ -698,7 +698,7 @@ public: bool SelectNxtPrvHyperlink( bool bNext ); bool GotoRefMark( const OUString& rRefMark, sal_uInt16 nSubType, -sal_uInt16 nSeqNo ); +sal_uInt16 nSeqNo, sal_uInt16 nFlags ); // get the nth character from the start or end of the current selection sal_Unicode GetChar( bool bEnd = true, tools::Long nOffset = 0 ); diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index bf9d563ab2ac..293b913c406b 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -34,6 +34,20 @@ class SwFrame; bool IsFrameBehind( const SwTextNode& rMyNd, sal_Int32 nMySttPos, const SwTextNode& rBehindNd, sal_Int32 nSttPos ); +#define REFFLDFLAG 0x4000 +#define REFFLDFLAG_BOOKMARK 0x4800 +#define REFFLDFLAG_FOOTNOTE 0x5000 +#define REFFLDFLAG_ENDNOTE 0x6000 +// #i83479# +#define REFFLDFLAG_HEADING 0x7100 +#define REFFLDFLAG_NUMITEM 0x7200 + +#define REFFLDFLAG_STYLE0xc000 +/* we skip past 0x8000, 0x9000, 0xa000 and 0xb000 as when we bitwise 'and' + with REFFLDFLAG they are false */ +#define REFFLDFLAG_STYLE_FROM_BOTTOM 0xc100 +#define REFFLDFLAG_STYLE_HIDE_NON_NUMERICAL0xc200 + enum REFERENCESUBTYPE { REF_SETREFATTR = 0, @@ -81,7 +95,7 @@ public: void MergeWithOtherDoc( SwDoc& rDestDoc ); static SwTextNode* FindAnchor( SwDoc* pDoc, const OUString& rRefMark, -sal_uInt16 nSubType, sal_uInt16 nSeqNo, +sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_Int32* pStt, sal_Int32* pEnd = nullptr, SwRootFrame const* pLayout = nullptr, SwTextNode* pSelf = nullptr, SwFrame* pFrame = nullptr); @@ -98,13 +112,18 @@ private: sal_uInt16 m_nSubType; /// reference to either a SwTextFootnote::m_nSeqNo or a SwSetExpField::mnSeqNo sal_uInt16 m_nSeqNo; +sal_uInt16 m_nFlags; virtual OUStringExpandImpl(SwRootFrame const* pLayout) const override; virtual std::unique_ptr Copy() const override; +/// Strip out text that is not either a number or a delimiter. Used in STYLEREF for when you +/// have chapters labelled "Chapter X.Y" and want to just keep the "X.Y". Distinct from +/// GetExpandedTextOfReferencedTextNode so you can run it after any other processing +void StylerefStripNonnumerical(OUString& rText) const; public: SwGetRefField( SwGetRefFieldType*, OUString aSetRef, OUString aReferenceLanguage, -sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFormat ); +sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uInt16 nFlags, sal_uLong nFormat ); virtual ~SwGetRefField() override; @@ -140,6
[Libreoffice-commits] core.git: include/xmloff offapi/com schema/libreoffice sw/inc sw/qa sw/source writerfilter/source xmloff/inc xmloff/source
include/xmloff/xmltoken.hxx |1 offapi/com/sun/star/text/ReferenceFieldSource.idl |5 schema/libreoffice/OpenDocument-v1.3+libreoffice-schema.rng | 23 sw/inc/fldref.hrc |1 sw/inc/reffld.hxx | 22 sw/qa/core/fields/data/tdf86790.docx|binary sw/qa/core/fields/fields.cxx| 228 + sw/qa/extras/ooxmlexport/ooxmlexport.cxx|2 sw/qa/extras/uiwriter/uiwriter8.cxx |6 sw/source/core/access/accpara.cxx |3 sw/source/core/crsr/crstrvl.cxx | 10 sw/source/core/fields/reffld.cxx| 484 +--- sw/source/core/text/txtfld.cxx | 10 sw/source/filter/ww8/wrtww8.hxx |3 sw/source/filter/ww8/ww8atr.cxx | 87 +- sw/source/filter/ww8/ww8par5.cxx|7 sw/source/ui/fldui/fldref.cxx | 70 + sw/source/ui/fldui/fldref.hxx |1 sw/source/uibase/docvw/edtwin2.cxx |2 sw/source/uibase/fldui/fldmgr.cxx |3 sw/source/uibase/utlui/content.cxx |2 writerfilter/source/dmapper/DomainMapper_Impl.cxx | 55 + writerfilter/source/dmapper/FieldTypes.hxx |5 xmloff/inc/txtflde.hxx |1 xmloff/source/core/xmltoken.cxx |1 xmloff/source/text/txtflde.cxx | 32 xmloff/source/text/txtfldi.cxx |5 xmloff/source/token/tokens.txt |1 28 files changed, 920 insertions(+), 150 deletions(-) New commits: commit 32c588dd1164aa2fc4c8120ddb74bd510cc082f9 Author: Skyler Grey AuthorDate: Thu Sep 14 08:48:16 2023 + Commit: Miklos Vajna CommitDate: Fri Oct 20 08:53:34 2023 +0200 tdf#86790: Add support for a word-style styleref STYLEREF is a field type in Word which changes its content based on nearby paragraphs. For example, upon creating a styleref referencing "Heading 1" you will see the text of the nearest "Heading 1"-styled paragraph that is above the field. This patch implements STYLEREF in Writer as a cross-reference. By using "insert>cross-reference>styles" you'll be presented with a list of styles. Selecting one and clicking "insert" will create a field which has text from the "most relevant" instance of the style. To find the most relevant instance we first search up for paragraphs with the style, and if there are any we take the closest. If there weren't any, we search down for paragraphs with the style. This patch also updates our use of STYLEREF for chapters exported to docx by using it for all chapters not only those in headers and footers. This allows us to approximate more chapter field functionality even when moving between Writer and Word. Finally, this patch adds some tests for STYLEREF: - testTdf86790 tests that the "sample file with STYLEREF" document from tdf#86790 has the correct fields - testStyleRefSearchUp tests that the STYLEREF searches up when there are bits of text both above and below it - testStyleRefSearchDown tests that the STYLEREF searches down when there are bits of text below it only - testMarginalStyleRef tests that the STYLEREF searches from the page top when it is placed in a footer - testFootnotetyleRef tests that the STYLEREF searches from the reference mark when it is placed in a footnote Still TODO: - [ ] Update documentation - [ ] Implement reverse-searching (\l) and nondelimiter suppression (\t) - Probably these 2 will be in a followup patch Change-Id: I25dd7a6940abee5651a784b9059fe23b32547d6c Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157456 Tested-by: Jenkins Reviewed-by: Miklos Vajna diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx index 773d54f79318..00d0d5f349e1 100644 --- a/include/xmloff/xmltoken.hxx +++ b/include/xmloff/xmltoken.hxx @@ -1902,6 +1902,7 @@ namespace xmloff::token { XML_STRUCTURE_PROTECTED, XML_STYLE, XML_STYLE_NAME, +XML_STYLE_REF, XML_STYLES, XML_STYLESHEET, XML_SUB_TABLE, diff --git a/offapi/com/sun/star/text/ReferenceFieldSource.idl b/offapi/com/sun/star/text/ReferenceFieldSource.idl index 1892fdc04cd8..91295fef2844 100644 --- a/offapi/com/sun/star/text/ReferenceFieldSource.idl +++
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/inc sw/qa sw/source writerfilter/source xmloff/source
sw/inc/reffld.hxx | 20 - sw/qa/core/fields/data/tdf86790.docx |binary sw/qa/core/fields/fields.cxx | 228 ++ sw/qa/extras/uiwriter/uiwriter7.cxx | 15 - sw/qa/extras/uiwriter/uiwriter8.cxx |6 sw/source/core/fields/reffld.cxx | 73 ++- sw/source/core/text/txtfld.cxx|7 sw/source/core/txtnode/atrfld.cxx |2 sw/source/core/unocore/unofield.cxx |2 sw/source/filter/ww8/ww8par5.cxx |8 sw/source/ui/fldui/fldref.cxx |6 sw/source/uibase/docvw/edtwin2.cxx|2 sw/source/uibase/fldui/fldmgr.cxx | 13 - sw/source/uibase/utlui/content.cxx|2 writerfilter/source/dmapper/DomainMapper_Impl.cxx |2 xmloff/source/text/txtfldi.cxx|4 16 files changed, 287 insertions(+), 103 deletions(-) New commits: commit 613249e2b208716aa71580ff0373bb201d9c2697 Author: Skyler Grey AuthorDate: Fri Oct 13 09:36:51 2023 + Commit: Miklos Vajna CommitDate: Thu Oct 19 08:18:14 2023 +0200 Add tests for STYLEREF and fix STYLEREF bugs - testTdf86790 tests that the "sample file with STYLEREF" document from tdf#86790 has the correct fields - testStyleRefSearchUp tests that the STYLEREF searches up when there are bits of text both above and below it - testStyleRefSearchDown tests that the STYLEREF searches down when there are bits of text below it only - testMarginalStyleRef tests that the STYLEREF searches from the page top when it is placed in a footer - testFootnotetyleRef tests that the STYLEREF searches from the reference mark when it is placed in a footnote - As an artifact of changing the STYLEREF namespace from TEXT to LO_EXT partway through, some references to STYLEREF being in TEXT still remained. This caused STYLEREFs saved to ODF to vanish on import. This has been fixed - Previously STYLEREF kept a pointer to the frame and text node containing it. Unfortunately, sometimes these could be destructed and the STYLEREF later asked to update which led to a crash due to use-after-free. STYLEREF no longer keeps a pointer to these values, instead preferring to not update when it is not given them - As part of the review process for I25dd7a6940abee5651a784b9059fe23b32547d6c we added SearchForStyleAnchor, a function used only in reffld.cxx, to an anonymous namespace. Unfortunately we neglected to do the same for StyleRefElementType just above it. This has been fixed Follow-Up-To: I25dd7a6940abee5651a784b9059fe23b32547d6c Change-Id: I35dc36197b62fa53def4745da1d4755ece79ed22 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157911 Tested-by: Jenkins CollaboraOffice Reviewed-by: Miklos Vajna diff --git a/sw/inc/reffld.hxx b/sw/inc/reffld.hxx index 28ced8dcc2cb..bf9d563ab2ac 100644 --- a/sw/inc/reffld.hxx +++ b/sw/inc/reffld.hxx @@ -99,22 +99,15 @@ private: /// reference to either a SwTextFootnote::m_nSeqNo or a SwSetExpField::mnSeqNo sal_uInt16 m_nSeqNo; -SwTextNode* m_pTextNode; ///< a pointer to the text node which contains the field -SwFrame* m_pFrame; ///< a pointer to the frame which contains the field -/* m_pTextNode and m_pFrame are used for STYLEREF, for other subtypes these will often be nullptr */ - virtual OUStringExpandImpl(SwRootFrame const* pLayout) const override; virtual std::unique_ptr Copy() const override; public: SwGetRefField( SwGetRefFieldType*, OUString aSetRef, OUString aReferenceLanguage, -sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFormat, -SwTextNode* pTextNode, SwFrame* pFrame ); +sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFormat ); virtual ~SwGetRefField() override; -void ChangeExpansion(SwFrame* pFrame, const SwTextField* pField); - virtual OUString GetFieldName() const override; const OUString& GetSetRefName() const { return m_sSetRefName; } @@ -126,9 +119,9 @@ public: and REF_STYLE. Note: This instance may be NULL (field in Undo/Redo). This will cause no update for these reference format types. */ -voidUpdateField( const SwTextField* pFieldTextAttr ); -voidUpdateField( const SwTextField* pFieldTextAttr, const SwRootFrame* const pLayout, - OUString& rText ); +voidUpdateField( const SwTextField* pFieldTextAttr, SwFrame* pFrame ); +voidUpdateField( const SwTextField* pFieldTextAttr, SwFrame* pFrame, + const SwRootFrame* const pLayout, OUString& rText );
[Libreoffice-commits] core.git: cui/source sw/source vcl/inc vcl/jsdialog
cui/source/tabpages/numpages.cxx |6 +- sw/source/ui/misc/num.cxx| 11 +-- vcl/inc/jsdialog/jsdialogbuilder.hxx |1 + vcl/jsdialog/enabled.cxx |1 + vcl/jsdialog/jsdialogbuilder.cxx |6 ++ 5 files changed, 14 insertions(+), 11 deletions(-) New commits: commit 328d6aae9e2b7a73f6672800629230f5b46d15b1 Author: Skyler Grey AuthorDate: Wed Aug 2 08:31:56 2023 + Commit: Caolán McNamara CommitDate: Sat Oct 14 14:30:17 2023 +0200 Re-enable Bullets and Numbering → Customize - Revert change If0f7b953a40ca1d5f469087cb8f362a949c39b37 - Enable jsdialog for the customize page - Fix numbering not being selected when switching level - Fix start at field not having a default when changing level type to one that can use it - Disable types that rely on supporting graphics in LOK as we cannot provide them Change-Id: I2517289b553b8a3e9ed62c64b6514c6aab3702b6 Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153806 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos (cherry picked from commit 6b9415005fee130e9d9b4b005a56975794a47934) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157957 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx index 45ee580f1667..d1cb79341281 100644 --- a/cui/source/tabpages/numpages.cxx +++ b/cui/source/tabpages/numpages.cxx @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -1089,7 +1090,9 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(weld::Container* pPage, weld::DialogC sal_uInt32 nCount = SvxNumberingTypeTable::Count(); for (sal_uInt32 i = 0; i < nCount; ++i) { -m_xFmtLB->append(OUString::number(SvxNumberingTypeTable::GetValue(i)), SvxNumberingTypeTable::GetString(i)); +int nValue = SvxNumberingTypeTable::GetValue(i); +if (comphelper::LibreOfficeKit::isActive() && (nValue & SVX_NUM_BITMAP)) continue; +m_xFmtLB->append(OUString::number(nValue), SvxNumberingTypeTable::GetString(i)); } // Get advanced numbering types from the component. @@ -1464,6 +1467,7 @@ void SvxNumOptionsTabPage::InitControls() else m_xBulColLB->SetNoSelection(); } +m_xStartED->set_value(1); // If this isn't set then changing the bullet type to a numbered type doesn't reset the start level switch(nBullet) { case SHOW_NUMBERING: diff --git a/sw/source/ui/misc/num.cxx b/sw/source/ui/misc/num.cxx index 0764a61be710..91e075d26124 100644 --- a/sw/source/ui/misc/num.cxx +++ b/sw/source/ui/misc/num.cxx @@ -873,16 +873,7 @@ SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(weld::Window* pParent, AddTabPage("bullets", RID_SVXPAGE_PICK_BULLET ); AddTabPage("outlinenum", RID_SVXPAGE_PICK_NUM ); AddTabPage("graphics", RID_SVXPAGE_PICK_BMP ); - -if (comphelper::LibreOfficeKit::isActive()) -{ -RemoveTabPage("customize"); -} -else -{ -AddTabPage("customize", RID_SVXPAGE_NUM_OPTIONS ); -} - +AddTabPage("customize", RID_SVXPAGE_NUM_OPTIONS ); AddTabPage("position", RID_SVXPAGE_NUM_POSITION ); } diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 33f5bdcbe881..030638e06e75 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -619,6 +619,7 @@ public: virtual void set_entry_text_without_notify(const OUString& rText); virtual void set_entry_text(const OUString& rText) override; virtual void set_active(int pos) override; +virtual void set_active_id(const OUString& rText) override; virtual bool changed_by_direct_pick() const override; void render_entry(int pos, int dpix, int dpiy); diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 78aa703a8b6e..c61be13c2b7c 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -53,6 +53,7 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"cui/ui/linetabpage.ui" || rUIFile == u"cui/ui/macroselectordialog.ui" || rUIFile == u"cui/ui/numberingformatpage.ui" +|| rUIFile == u"cui/ui/numberingoptionspage.ui" || rUIFile == u"cui/ui/numberingpositionpage.ui" || rUIFile == u"cui/ui/optlingupage.ui" || rUIFile == u"cui/ui/pageformatpage.ui" diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index ec0c4fec1573..91e09663bef1 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1665,6 +1665,12 @@ void JSComboBox::set_active(int pos) sendUpdate(); } +void JSComboBox::set_active_id(const OUString& rStr) +{ +sal_uInt16 nPos = find_id(rStr); +set_active(nPos); +} + bool JSComboBox::changed_by_direct_pick()
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - configure.ac desktop/qa desktop/source download.lst external/java_websocket external/Module_external.mk include/LibreOfficeKit incl
Makefile.fetch | 1 RepositoryExternal.mk| 12 configure.ac | 11 desktop/qa/desktop_lib/test_desktop_lib.cxx | 4 desktop/source/lib/init.cxx | 227 +++ download.lst | 5 external/Module_external.mk | 1 external/java_websocket/ExternalPackage_java_websocket.mk| 16 external/java_websocket/ExternalProject_java_websocket.mk| 31 external/java_websocket/Makefile | 7 external/java_websocket/Module_java_websocket.mk | 18 external/java_websocket/README | 3 external/java_websocket/UnpackedTarball_java_websocket.mk| 21 external/java_websocket/patches/ant-build.patch | 26 external/java_websocket/patches/no-slf4j.patch | 748 ++ include/LibreOfficeKit/LibreOfficeKit.h | 9 include/LibreOfficeKit/LibreOfficeKit.hxx| 26 include/sal/log-areas.dox| 1 readlicense_oo/license/license.xml | 18 ridljar/Jar_libreoffice.mk | 8 ridljar/com/sun/star/comp/helper/Bootstrap.java | 63 ridljar/com/sun/star/lib/connections/websocket/ConnectionDescriptor.java | 60 ridljar/com/sun/star/lib/connections/websocket/WebsocketConnection.java | 335 ridljar/com/sun/star/lib/connections/websocket/websocketConnector.java | 137 + ridljar/source/libreoffice/module-info.java | 1 ridljar/util/manifest| 3 ure/source/README| 2 27 files changed, 1792 insertions(+), 2 deletions(-) New commits: commit fe2a3980b4749ca6b60f17eed53afb14ef9f8ce9 Author: Skyler Grey AuthorDate: Fri Aug 18 13:30:35 2023 + Commit: Caolán McNamara CommitDate: Fri Sep 1 21:34:10 2023 +0200 Add a FunctionBasedURPConnection and a websocket URP connector - FunctionBasedURPConnection is used to enable a client to open a URP connection to a fresh Kit instance in COOL. - This URP connector can be used with that and https://github.com/CollaboraOnline/online/pull/6992 to use a Java Uno Remote Protocol client over websockets - For interoperability with existing Collabora Online websockets a prefix (urp ) is added to each message sent and a similar prefix (urp: ) is expected on each message recieved. This allows sending over the same websocket as other data is being transmitted through. If you are writing a bridge to work with this, you will need to add/strip the prefixes accordingly - This commit uses Java WebSocket (https://github.com/TooTallNate/Java-WebSocket) to send data over websockets. Change-Id: I2bda3d0b988bef7883f9b6829eeb5b7ae8075f27 Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155100 Reviewed-by: Michael Meeks Tested-by: Jenkins CollaboraOffice diff --git a/Makefile.fetch b/Makefile.fetch index 8295de2ab366..eb9acb0bd5a7 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -135,6 +135,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S $(call fetch_Optional,HYPHEN,HYPHEN_TARBALL) \ $(call fetch_Optional,ICU,ICU_TARBALL) \ $(call fetch_Optional,ICU,ICU_DATA_TARBALL) \ + $(call fetch_Optional,JAVA_WEBSOCKET,JAVA_WEBSOCKET_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLOW_ENGINE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLUTE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBBASE_TARBALL) \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index c4e9f4dac874..3cfff4ecea58 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -3728,7 +3728,6 @@ endef endif # SYSTEM_HSQLDB - ifeq ($(ENABLE_SCRIPTING_BEANSHELL),TRUE) ifneq ($(SYSTEM_BSH),) @@ -3887,6 +3886,17 @@ endef endif # SYSTEM_JFREEREPORT +# no known distro packaged java-websocket + +ifeq ($(ENABLE_JAVA),TRUE) +$(eval $(call gb_Helper_register_jars_for_install,URE,ure, \ + java_websocket \ +)) +endif + +define gb_Jar__use_java_websocket +$(call gb_Jar_use_jar,$(1),java_websocket) +endef # Executables
[Libreoffice-commits] core.git: configure.ac desktop/qa desktop/source download.lst external/java_websocket external/Module_external.mk include/LibreOfficeKit include/sal Makefile.fetch readlicense_oo
Makefile.fetch | 1 RepositoryExternal.mk| 11 configure.ac | 11 desktop/qa/desktop_lib/test_desktop_lib.cxx | 4 desktop/source/lib/init.cxx | 227 +++ download.lst | 5 external/Module_external.mk | 1 external/java_websocket/ExternalPackage_java_websocket.mk| 16 external/java_websocket/ExternalProject_java_websocket.mk| 31 external/java_websocket/Makefile | 7 external/java_websocket/Module_java_websocket.mk | 18 external/java_websocket/README | 3 external/java_websocket/UnpackedTarball_java_websocket.mk| 21 external/java_websocket/patches/ant-build.patch | 26 external/java_websocket/patches/no-slf4j.patch | 748 ++ include/LibreOfficeKit/LibreOfficeKit.h | 9 include/LibreOfficeKit/LibreOfficeKit.hxx| 26 include/sal/log-areas.dox| 1 readlicense_oo/license/license.xml | 18 ridljar/Jar_libreoffice.mk | 8 ridljar/com/sun/star/comp/helper/Bootstrap.java | 63 ridljar/com/sun/star/lib/connections/websocket/ConnectionDescriptor.java | 60 ridljar/com/sun/star/lib/connections/websocket/WebsocketConnection.java | 335 ridljar/com/sun/star/lib/connections/websocket/websocketConnector.java | 137 + ridljar/source/libreoffice/module-info.java | 1 ridljar/util/manifest| 3 ure/source/README| 2 27 files changed, 1792 insertions(+), 1 deletion(-) New commits: commit 8e246331f6f71320cfcc8defdd04e756a75f71cf Author: Skyler Grey AuthorDate: Fri Aug 18 13:30:35 2023 + Commit: Caolán McNamara CommitDate: Fri Sep 1 16:55:37 2023 +0200 Add a FunctionBasedURPConnection and a websocket URP connector - FunctionBasedURPConnection is used to enable a client to open a URP connection to a fresh Kit instance in COOL. - This URP connector can be used with that and https://github.com/CollaboraOnline/online/pull/6992 to use a Java Uno Remote Protocol client over websockets - For interoperability with existing Collabora Online websockets a prefix (urp ) is added to each message sent and a similar prefix (urp: ) is expected on each message recieved. This allows sending over the same websocket as other data is being transmitted through. If you are writing a bridge to work with this, you will need to add/strip the prefixes accordingly - This commit uses Java WebSocket (https://github.com/TooTallNate/Java-WebSocket) to send data over websockets. Change-Id: I2bda3d0b988bef7883f9b6829eeb5b7ae8075f27 Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151171 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/Makefile.fetch b/Makefile.fetch index 625e781dc36a..6640b0ade985 100644 --- a/Makefile.fetch +++ b/Makefile.fetch @@ -136,6 +136,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S $(call fetch_Optional,HYPHEN,HYPHEN_TARBALL) \ $(call fetch_Optional,ICU,ICU_TARBALL) \ $(call fetch_Optional,ICU,ICU_DATA_TARBALL) \ + $(call fetch_Optional,JAVA_WEBSOCKET,JAVA_WEBSOCKET_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLOW_ENGINE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_FLUTE_TARBALL) \ $(call fetch_Optional,JFREEREPORT,JFREEREPORT_LIBBASE_TARBALL) \ diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk index 0d70c7e966fb..a7f6dc3897ec 100644 --- a/RepositoryExternal.mk +++ b/RepositoryExternal.mk @@ -3915,6 +3915,17 @@ endef endif # SYSTEM_JFREEREPORT +# no known distro packaged Java-Websocket at present + +ifeq ($(ENABLE_JAVA),TRUE) +$(eval $(call gb_Helper_register_jars_for_install,URE,ure, \ + java_websocket \ +)) +endif + +define gb_Jar__use_java_websocket +$(call gb_Jar_use_jar,$(1),java_websocket) +endef # Executables diff --git a/configure.ac b/configure.ac index 5ce8454546c4..5a682dde4d61 100644 --- a/configure.ac +++ b/configure.ac @@ -12690,6
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - cui/source sw/source vcl/inc vcl/jsdialog
cui/source/tabpages/numpages.cxx |6 +- sw/source/ui/misc/num.cxx| 11 +-- vcl/inc/jsdialog/jsdialogbuilder.hxx |1 + vcl/jsdialog/enabled.cxx |1 + vcl/jsdialog/jsdialogbuilder.cxx |6 ++ 5 files changed, 14 insertions(+), 11 deletions(-) New commits: commit 6b9415005fee130e9d9b4b005a56975794a47934 Author: Skyler Grey AuthorDate: Wed Aug 2 08:31:56 2023 + Commit: Szymon Kłos CommitDate: Wed Aug 9 13:18:43 2023 +0200 Re-enable Bullets and Numbering → Customize - Revert change If0f7b953a40ca1d5f469087cb8f362a949c39b37 - Enable jsdialog for the customize page - Fix numbering not being selected when switching level - Fix start at field not having a default when changing level type to one that can use it - Disable types that rely on supporting graphics in LOK as we cannot provide them Change-Id: I2517289b553b8a3e9ed62c64b6514c6aab3702b6 Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153806 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx index 9b97d19460b5..1f5de3dc387b 100644 --- a/cui/source/tabpages/numpages.cxx +++ b/cui/source/tabpages/numpages.cxx @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -1089,7 +1090,9 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(weld::Container* pPage, weld::DialogC sal_uInt32 nCount = SvxNumberingTypeTable::Count(); for (sal_uInt32 i = 0; i < nCount; ++i) { -m_xFmtLB->append(OUString::number(SvxNumberingTypeTable::GetValue(i)), SvxNumberingTypeTable::GetString(i)); +int nValue = SvxNumberingTypeTable::GetValue(i); +if (comphelper::LibreOfficeKit::isActive() && (nValue & SVX_NUM_BITMAP)) continue; +m_xFmtLB->append(OUString::number(nValue), SvxNumberingTypeTable::GetString(i)); } // Get advanced numbering types from the component. @@ -1464,6 +1467,7 @@ void SvxNumOptionsTabPage::InitControls() else m_xBulColLB->SetNoSelection(); } +m_xStartED->set_value(1); // If this isn't set then changing the bullet type to a numbered type doesn't reset the start level switch(nBullet) { case SHOW_NUMBERING: diff --git a/sw/source/ui/misc/num.cxx b/sw/source/ui/misc/num.cxx index 137b6db9f015..a5caff53a0c8 100644 --- a/sw/source/ui/misc/num.cxx +++ b/sw/source/ui/misc/num.cxx @@ -873,16 +873,7 @@ SwSvxNumBulletTabDialog::SwSvxNumBulletTabDialog(weld::Window* pParent, AddTabPage("bullets", RID_SVXPAGE_PICK_BULLET ); AddTabPage("outlinenum", RID_SVXPAGE_PICK_NUM ); AddTabPage("graphics", RID_SVXPAGE_PICK_BMP ); - -if (comphelper::LibreOfficeKit::isActive()) -{ -RemoveTabPage("customize"); -} -else -{ -AddTabPage("customize", RID_SVXPAGE_NUM_OPTIONS ); -} - +AddTabPage("customize", RID_SVXPAGE_NUM_OPTIONS ); AddTabPage("position", RID_SVXPAGE_NUM_POSITION ); } diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 060a3e1bb72a..8ed7743c96dd 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -623,6 +623,7 @@ public: virtual void set_entry_text_without_notify(const OUString& rText); virtual void set_entry_text(const OUString& rText) override; virtual void set_active(int pos) override; +virtual void set_active_id(const OUString& rText) override; virtual bool changed_by_direct_pick() const override; }; diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 647cec05602b..4db6b0da9113 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -53,6 +53,7 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"cui/ui/linetabpage.ui" || rUIFile == u"cui/ui/macroselectordialog.ui" || rUIFile == u"cui/ui/numberingformatpage.ui" +|| rUIFile == u"cui/ui/numberingoptionspage.ui" || rUIFile == u"cui/ui/numberingpositionpage.ui" || rUIFile == u"cui/ui/optlingupage.ui" || rUIFile == u"cui/ui/pageformatpage.ui" diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index 5740e300ae9a..9d1bc1774165 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -1665,6 +1665,12 @@ void JSComboBox::set_active(int pos) sendUpdate(); } +void JSComboBox::set_active_id(const OUString& rStr) +{ +sal_uInt16 nPos = find_id(rStr); +set_active(nPos); +} + bool JSComboBox::changed_by_direct_pick() const { return true; } JSNotebook::JSNotebook(JSDialogSender* pSender, ::TabControl* pControl,
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - sw/source vcl/jsdialog
sw/source/ui/dialog/uiregionsw.cxx | 102 ++--- vcl/jsdialog/enabled.cxx |1 2 files changed, 53 insertions(+), 50 deletions(-) New commits: commit 6aff11f36ecd02613c0613c9e89883c81656d9f6 Author: Skyler Grey AuthorDate: Sun Feb 19 13:13:05 2023 + Commit: Szymon Kłos CommitDate: Thu Jul 6 11:48:41 2023 +0200 Make the format > sections > options dialog a jsdialog - This dialog was not properly tunneled so did not show on collabora online - Running asynchronously as a jsdialog both fixes this issue and is a general improvement (in that jsdialog conversion improves accessability, looks more consistent with the rest of COOL, etc.) Note- This commit was previously given the Change-Id Ie9a70da70bbb30de039ded82f738285b1b734421 however I have replaced it due to accidentally creating it against the wrong base branch. To see the old change go to https://gerrit.libreoffice.org/c/core/+/147295 Change-Id: I2715eb1d8e3e301e1519e2ef6b69c823e571d08c Signed-off-by: Skyler Grey Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151188 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice diff --git a/sw/source/ui/dialog/uiregionsw.cxx b/sw/source/ui/dialog/uiregionsw.cxx index f3560e8f2b67..89248e7eed8d 100644 --- a/sw/source/ui/dialog/uiregionsw.cxx +++ b/sw/source/ui/dialog/uiregionsw.cxx @@ -1048,57 +1048,59 @@ IMPL_LINK_NOARG(SwEditRegionDlg, OptionsHdl, weld::Button&, void) aSet.Put(SwFormatFrameSize(SwFrameSize::Variable, nWidth)); aSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(nWidth, nWidth))); -SwSectionPropertyTabDialog aTabDlg(m_xDialog.get(), aSet, m_rSh); -if (RET_OK != aTabDlg.run()) -return; - -const SfxItemSet* pOutSet = aTabDlg.GetOutputItemSet(); -if( !(pOutSet && pOutSet->Count()) ) -return; - -const SwFormatCol* pColItem = pOutSet->GetItemIfSet( -RES_COL, false ); -const SvxBrushItem* pBrushItem = pOutSet->GetItemIfSet( -RES_BACKGROUND, false ); -const SwFormatFootnoteAtTextEnd* pFootnoteItem = pOutSet->GetItemIfSet( -RES_FTN_AT_TXTEND, false ); -const SwFormatEndAtTextEnd* pEndItem = pOutSet->GetItemIfSet( -RES_END_AT_TXTEND, false ); -const SwFormatNoBalancedColumns* pBalanceItem = pOutSet->GetItemIfSet( -RES_COLUMNBALANCE, false ); -const SvxFrameDirectionItem* pFrameDirItem = pOutSet->GetItemIfSet( -RES_FRAMEDIR, false ); -const SvxLRSpaceItem* pLRSpaceItem = pOutSet->GetItemIfSet( -RES_LR_SPACE, false ); - -if( !(pColItem || - pBrushItem || - pFootnoteItem || - pEndItem || - pBalanceItem || - pFrameDirItem || - pLRSpaceItem) ) -return; - -m_xTree->selected_foreach([&](weld::TreeIter& rEntry) -{ -SectRepr* pRepr = weld::fromId(m_xTree->get_id(rEntry)); -if (pColItem) -pRepr->GetCol() = *pColItem; -if (pBrushItem) -pRepr->GetBackground().reset(pBrushItem->Clone()); -if (pFootnoteItem) -pRepr->GetFootnoteNtAtEnd() = *pFootnoteItem; -if (pEndItem) -pRepr->GetEndNtAtEnd() = *pEndItem; -if (pBalanceItem) -pRepr->GetBalance().SetValue(pBalanceItem->GetValue()); -if (pFrameDirItem) -pRepr->GetFrameDir()->SetValue(pFrameDirItem->GetValue()); -if (pLRSpaceItem) -pRepr->GetLRSpace().reset(pLRSpaceItem->Clone()); -return false; +auto pDlg = std::make_shared(m_xDialog.get(), aSet, m_rSh); +SfxTabDialogController::runAsync(pDlg, [pDlg, this](sal_Int32 nResult){ +if (nResult == RET_OK) { +const SfxItemSet* pOutSet = pDlg->GetOutputItemSet(); +if( !(pOutSet && pOutSet->Count()) ) +return; + +const SwFormatCol* pColItem = pOutSet->GetItemIfSet( +RES_COL, false ); +const SvxBrushItem* pBrushItem = pOutSet->GetItemIfSet( +RES_BACKGROUND, false ); +const SwFormatFootnoteAtTextEnd* pFootnoteItem = pOutSet->GetItemIfSet( +RES_FTN_AT_TXTEND, false ); +const SwFormatEndAtTextEnd* pEndItem = pOutSet->GetItemIfSet( +RES_END_AT_TXTEND, false ); +const SwFormatNoBalancedColumns* pBalanceItem = pOutSet->GetItemIfSet( +RES_COLUMNBALANCE, false ); +const SvxFrameDirectionItem* pFrameDirItem = pOutSet->GetItemIfSet( +RES_FRAMEDIR, false ); +const SvxLRSpaceItem* pLRSpaceItem = pOutSet->GetItemIfSet( +
[Libreoffice-commits] core.git: 2 commits - sw/source vcl/jsdialog
sw/source/ui/dialog/swdlgfact.cxx | 22 + sw/source/ui/dialog/swdlgfact.hxx | 14 sw/source/ui/frmdlg/cption.cxx| 34 - sw/source/uibase/shells/tabsh.cxx | 60 -- vcl/jsdialog/enabled.cxx |5 ++- 5 files changed, 90 insertions(+), 45 deletions(-) New commits: commit 19d02a1267cfa1e7a950af31a77d4a7888594630 Author: Skyler Grey AuthorDate: Fri Aug 12 10:31:42 2022 +0100 Commit: Szymon Kłos CommitDate: Mon Nov 21 11:17:21 2022 +0100 Make the number format dialog an async jsdialog - The dialog needs to be async in order for multiple people to be able to use it at once - If we don't make the item set a shared pointer, we will crash out with an error when we try to copy it after the OK button is pressed - As the dialog is tabbed, we need to enable the dialog for all UI files that the dialog uses rather than just the main dialog UI file Change-Id: I8d684e9e9ad49b8a85ee940864d7219b4115a6e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138270 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142990 Tested-by: Jenkins diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 68135716fcb9..56bce661390d 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -110,6 +110,16 @@ short SwAbstractSfxController_Impl::Execute() return m_xDlg->run(); } +short AbstractNumFormatDlg_Impl::Execute() +{ +return m_xDlg->run(); +} + +bool AbstractNumFormatDlg_Impl::StartExecuteAsync(AsyncContext ) +{ +return SfxSingleTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + short AbstractSwAsciiFilterDlg_Impl::Execute() { return m_xDlg->run(); @@ -356,11 +366,21 @@ const SfxItemSet* SwAbstractSfxController_Impl::GetOutputItemSet() const return m_xDlg->GetOutputItemSet(); } +const SfxItemSet* AbstractNumFormatDlg_Impl::GetOutputItemSet() const +{ +return m_xDlg->GetOutputItemSet(); +} + void SwAbstractSfxController_Impl::SetText(const OUString& rStr) { m_xDlg->set_title(rStr); } +void AbstractNumFormatDlg_Impl::SetText(const OUString& rStr) +{ +m_xDlg->set_title(rStr); +} + void AbstractSwAsciiFilterDlg_Impl::FillOptions( SwAsciiOptions& rOptions ) { m_xDlg->FillOptions(rOptions); @@ -833,7 +853,7 @@ VclPtr SwAbstractDialogFactory_Impl::CreateSwBackgroundDialog VclPtr SwAbstractDialogFactory_Impl::CreateNumFormatDialog(weld::Widget* pParent, const SfxItemSet& rSet) { -return VclPtr::Create(std::make_unique(pParent, rSet)); +return VclPtr::Create(std::make_shared(pParent, rSet)); } VclPtr SwAbstractDialogFactory_Impl::CreateSwAsciiFilterDlg(weld::Window* pParent, diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index c0326249a15b..5e110dfbdd59 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -126,6 +126,20 @@ public: virtual void SetText(const OUString& rStr) override; }; +class AbstractNumFormatDlg_Impl : public SfxAbstractDialog +{ +std::shared_ptr m_xDlg; +public: +explicit AbstractNumFormatDlg_Impl(std::shared_ptr p) +: m_xDlg(std::move(p)) +{ +} +virtual short Execute() override; +virtual bool StartExecuteAsync(AsyncContext ) override; +virtual const SfxItemSet* GetOutputItemSet() const override; +virtual void SetText(const OUString& rStr) override; +}; + class AbstractSwAsciiFilterDlg_Impl : public AbstractSwAsciiFilterDlg { std::unique_ptr m_xDlg; diff --git a/sw/source/uibase/shells/tabsh.cxx b/sw/source/uibase/shells/tabsh.cxx index ab93b027e69f..3082c5e36e98 100644 --- a/sw/source/uibase/shells/tabsh.cxx +++ b/sw/source/uibase/shells/tabsh.cxx @@ -695,58 +695,62 @@ void SwTableShell::Execute(SfxRequest ) FieldUnit eMetric = ::GetDfltMetric(dynamic_cast( pView) != nullptr ); SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric))); SvNumberFormatter* pFormatter = rSh.GetNumberFormatter(); -SfxItemSetFixed -aCoreSet( GetPool() ); +auto pCoreSet = std::make_shared>( GetPool() ); SfxItemSetFixed - aBoxSet( *aCoreSet.GetPool() ); + aBoxSet( *pCoreSet->GetPool() ); rSh.GetTableBoxFormulaAttrs( aBoxSet ); SfxItemState eState = aBoxSet.GetItemState(RES_BOXATR_FORMAT); if(eState == SfxItemState::DEFAULT) { -aCoreSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, +pCoreSet->Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, pFormatter->GetFormatIndex(NF_TEXT, LANGUAGE_SYSTEM)));
[Libreoffice-commits] core.git: 2 commits - include/sfx2 sfx2/source sw/source vcl/jsdialog
include/sfx2/dinfdlg.hxx | 19 + sfx2/source/dialog/dinfdlg.cxx | 115 --- sw/source/ui/frmdlg/cption.cxx |7 ++ sw/source/uibase/inc/cption.hxx |1 sw/source/uibase/uiview/viewdlg2.cxx | 11 ++- vcl/jsdialog/enabled.cxx |7 +- 6 files changed, 106 insertions(+), 54 deletions(-) New commits: commit 9a0a7ae8f62cc8233b71057caa6bc88c69ee94a1 Author: Skyler Grey AuthorDate: Fri Aug 19 12:23:20 2022 +0100 Commit: Szymon Kłos CommitDate: Sun Nov 20 15:34:05 2022 +0100 Make the insert caption dialog an async jsdialog - Using StartExecuteAsync instead of Execute to execute the dialog makes it run asyncly - We need to add a handler for the OK button, otherwise the event won't be fired when it's clicked. There seem to be varying names for this throughout the codebase, I've chosen OKHdl as it's short, appears to be relatively common and fits well with the existing OptionHdl and CaptionHdl that the other buttons on the dialog use - Lastly, we need to enable the JSDialog builder in vcl/jsdialog/enabled.cxx so that the dialog becomes a JSDialog Still TODO: - Convert the dialogs that open when you press "auto" or "options" buttons (will be in a followup review) Change-Id: Ieabbc4e69c4aa065506f7dc6c823d83e4d784c2f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138313 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142988 Tested-by: Jenkins diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx index 01ebc9d685c4..8b3c14afe0a6 100644 --- a/sw/source/ui/frmdlg/cption.cxx +++ b/sw/source/ui/frmdlg/cption.cxx @@ -138,6 +138,7 @@ SwCaptionDialog::SwCaptionDialog(weld::Window *pParent, SwView ) m_xSepEdit->connect_changed(aLk); m_xFormatBox->connect_changed(LINK(this, SwCaptionDialog, SelectListBoxHdl)); +m_xOKButton->connect_clicked(LINK(this, SwCaptionDialog, OKHdl)); m_xOptionButton->connect_clicked(LINK(this, SwCaptionDialog, OptionHdl)); m_xAutoCaptionButton->connect_clicked(LINK(this, SwCaptionDialog, CaptionHdl)); m_xAutoCaptionButton->set_accessible_description(SwResId(STR_A11Y_DESC_AUTO)); @@ -267,6 +268,12 @@ SwCaptionDialog::SwCaptionDialog(weld::Window *pParent, SwView ) DrawSample(); } +IMPL_LINK_NOARG(SwCaptionDialog, OKHdl, weld::Button&, void) +{ +Apply(); +m_xDialog->response(RET_OK); +} + void SwCaptionDialog::Apply() { InsCaptionOpt aOpt; diff --git a/sw/source/uibase/inc/cption.hxx b/sw/source/uibase/inc/cption.hxx index 0a7bc9ef64c7..5ff685a8cedf 100644 --- a/sw/source/uibase/inc/cption.hxx +++ b/sw/source/uibase/inc/cption.hxx @@ -64,6 +64,7 @@ class SwCaptionDialog final : public SfxDialogController DECL_LINK(ModifyComboHdl, weld::ComboBox&, void); DECL_LINK(OptionHdl, weld::Button&, void); DECL_LINK(CaptionHdl, weld::Button&, void); +DECL_LINK(OKHdl, weld::Button&, void); void Apply(); diff --git a/sw/source/uibase/uiview/viewdlg2.cxx b/sw/source/uibase/uiview/viewdlg2.cxx index eed4eddcc064..19678d38fdcb 100644 --- a/sw/source/uibase/uiview/viewdlg2.cxx +++ b/sw/source/uibase/uiview/viewdlg2.cxx @@ -46,15 +46,18 @@ using namespace css; -void SwView::ExecDlgExt(SfxRequest const ) +void SwView::ExecDlgExt(SfxRequest const& rReq) { -switch ( rReq.GetSlot() ) +switch (rReq.GetSlot()) { case FN_INSERT_CAPTION: { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); -ScopedVclPtr pDialog(pFact->CreateSwCaptionDialog(GetFrameWeld(), *this )); -pDialog->Execute(); +VclPtr pDialog( +pFact->CreateSwCaptionDialog(GetFrameWeld(), *this)); +pDialog->StartExecuteAsync([pDialog](sal_Int32) { +pDialog->disposeOnce(); +}); break; } case SID_INSERT_SIGNATURELINE: diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 6923056183af..89b50c96fab1 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -69,7 +69,8 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"sfx/ui/documentpropertiesdialog.ui" || rUIFile == u"sfx/ui/custominfopage.ui" || rUIFile == u"sfx/ui/cmisinfopage.ui" || rUIFile == u"sfx/ui/descriptioninfopage.ui" || rUIFile == u"sfx/ui/documentinfopage.ui" -|| rUIFile == u"sfx/ui/linefragment.ui" || rUIFile == u"sfx/ui/editdurationdialog.ui") +|| rUIFile == u"sfx/ui/linefragment.ui" || rUIFile == u"sfx/ui/editdurationdialog.ui" +|| rUIFile == u"modules/swriter/ui/insertcaption.ui") { return true; } commit 930b96dee6250eb8d51f25e2e1020bd1e028db03 Author: NickWingate AuthorDate: Tue Aug 9 10:54:40
[Libreoffice-commits] core.git: 2 commits - cui/uiconfig vcl/jsdialog
cui/uiconfig/ui/widgettestdialog.ui |1 + vcl/jsdialog/enabled.cxx|3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) New commits: commit 6179026d162a4281ae158ccca7897f6059f1338c Author: Skyler Grey AuthorDate: Wed Jul 27 16:46:24 2022 + Commit: Szymon Kłos CommitDate: Sun Nov 20 10:42:36 2022 +0100 Add a title to the widget test dialog - Previously the widget test dialog didn't have a title, however most of the other dialogs do. This commit adds a title to the dialog Signed-off-by: Skyler Grey Change-Id: I8b61e00e93cd71a6a7bf068537d9cbcdc735753d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137534 Tested-by: Jenkins CollaboraOffice Reviewed-by: Rashesh Padia Reviewed-by: Pedro Silva Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142975 Tested-by: Jenkins Reviewed-by: Szymon Kłos diff --git a/cui/uiconfig/ui/widgettestdialog.ui b/cui/uiconfig/ui/widgettestdialog.ui index ce8e52879fec..787deda37171 100644 --- a/cui/uiconfig/ui/widgettestdialog.ui +++ b/cui/uiconfig/ui/widgettestdialog.ui @@ -4,6 +4,7 @@ False +Test Widgets dialog commit 318d6175f2cf4328bbd6e88f4f64adfe314d759b Author: Skyler Grey AuthorDate: Thu Aug 4 11:24:19 2022 +0100 Commit: Szymon Kłos CommitDate: Sun Nov 20 10:42:24 2022 +0100 Enable JSDialogs on the split cells dialog - This dialog works properly when JSDialog rendering is enabled for it - This dialog is already async, so there aren't multi-user issues like there are on some other dialogs Signed-off-by: Skyler Grey Change-Id: I036ca7ab15e0ab472ff961ef643053f8f6771c0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137791 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142973 Tested-by: Jenkins diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 3d830d07cf56..6cad5ecad14e 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -64,7 +64,8 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"cui/ui/widgettestdialog.ui" || rUIFile == u"modules/swriter/ui/contentcontroldlg.ui" || rUIFile == u"modules/swriter/ui/contentcontrollistitemdlg.ui" -|| rUIFile == u"modules/swriter/ui/splittable.ui") +|| rUIFile == u"modules/swriter/ui/splittable.ui" +|| rUIFile == u"cui/ui/splitcellsdialog.ui") { return true; }
[Libreoffice-commits] core.git: sw/source vcl/jsdialog
sw/source/ui/dialog/swdlgfact.cxx |7 ++- sw/source/ui/dialog/swdlgfact.hxx |5 +++-- sw/source/uibase/inc/splittbl.hxx | 12 +++- sw/source/uibase/shells/tabsh.cxx | 18 ++ vcl/jsdialog/enabled.cxx |3 ++- 5 files changed, 36 insertions(+), 9 deletions(-) New commits: commit b5d3a3ac031d055e433eb2b79b48f6d00fb0e0d6 Author: Skyler Grey AuthorDate: Wed Aug 3 09:54:45 2022 +0100 Commit: Szymon Kłos CommitDate: Sun Nov 20 10:40:49 2022 +0100 Turn the split table dialog into an async JSDialog - Previously the split table dialog was not an async dialog, and it wasn't a JSDialog either - A non-async dialog has issues when multiple people try to change something using the dialog at the same time. Generally the changes from one person will not be applied until all people who opened the dialog later than them have submitted - This PR makes the dialog async, fixing multi-user issues with it - This PR makes the dialog into a JSDialog, rendering it on the client with native HTML elements Signed-off-by: Skyler Grey Change-Id: I9254bc1b635531c8b38d1ade76f99ffdda145b35 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137741 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142972 Tested-by: Jenkins diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 6e9ebc873ab7..68135716fcb9 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -120,6 +120,11 @@ short AbstractSplitTableDialog_Impl::Execute() return m_xDlg->run(); } +bool AbstractSplitTableDialog_Impl::StartExecuteAsync(AsyncContext ) +{ +return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + short AbstractSwTableWidthDlg_Impl::Execute() { return m_xDlg->run(); @@ -978,7 +983,7 @@ VclPtr SwAbstractDialogFactory_Impl::CreateSwSortingDialog(we VclPtr SwAbstractDialogFactory_Impl::CreateSplitTableDialog(weld::Window *pParent, SwWrtShell ) { -return VclPtr::Create(std::make_unique(pParent, rSh)); +return VclPtr::Create(std::make_shared(pParent, rSh)); } VclPtr SwAbstractDialogFactory_Impl::CreateSwSelGlossaryDlg(weld::Window *pParent, const OUString ) diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index f97ff430c294..c0326249a15b 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -236,13 +236,14 @@ public: class AbstractSplitTableDialog_Impl : public AbstractSplitTableDialog // add for { -std::unique_ptr m_xDlg; +std::shared_ptr m_xDlg; public: -explicit AbstractSplitTableDialog_Impl(std::unique_ptr p) +explicit AbstractSplitTableDialog_Impl(std::shared_ptr p) : m_xDlg(std::move(p)) { } virtual short Execute() override; +virtual bool StartExecuteAsync(AsyncContext ) override; virtual SplitTable_HeadlineOption GetSplitMode() override; }; diff --git a/sw/source/uibase/inc/splittbl.hxx b/sw/source/uibase/inc/splittbl.hxx index 8c8891c1df1b..0311f08d4043 100644 --- a/sw/source/uibase/inc/splittbl.hxx +++ b/sw/source/uibase/inc/splittbl.hxx @@ -49,7 +49,17 @@ public: return nRet; } -SplitTable_HeadlineOption GetSplitMode() const { return m_nSplit; } +SplitTable_HeadlineOption GetSplitMode() const +{ +auto nSplit = SplitTable_HeadlineOption::ContentCopy; +if (m_xBoxAttrCopyWithParaRB->get_active()) +nSplit = SplitTable_HeadlineOption::BoxAttrAllCopy; +else if (m_xBoxAttrCopyNoParaRB->get_active()) +nSplit = SplitTable_HeadlineOption::BoxAttrCopy; +else if (m_xBorderCopyRB->get_active()) +nSplit = SplitTable_HeadlineOption::BorderCopy; +return nSplit; +} }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/shells/tabsh.cxx b/sw/source/uibase/shells/tabsh.cxx index 01bd9389c152..ab93b027e69f 100644 --- a/sw/source/uibase/shells/tabsh.cxx +++ b/sw/source/uibase/shells/tabsh.cxx @@ -1082,10 +1082,20 @@ void SwTableShell::Execute(SfxRequest ) else { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); -ScopedVclPtr pDlg(pFact->CreateSplitTableDialog(GetView().GetFrameWeld(), rSh)); -pDlg->Execute(); -rReq.AppendItem( SfxUInt16Item( FN_PARAM_1, static_cast(pDlg->GetSplitMode()) ) ); -bCallDone = true; +VclPtr pDlg(pFact->CreateSplitTableDialog(GetView().GetFrameWeld(), rSh)); + +SwWrtShell* pSh = + +pDlg->StartExecuteAsync([pDlg, pSh](int nResult) { +if (nResult == RET_OK) +{ +const auto aSplitMode =
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - sw/source vcl/jsdialog
sw/source/ui/dialog/swdlgfact.cxx | 22 +- sw/source/ui/dialog/swdlgfact.hxx | 14 + sw/source/uibase/shells/tabsh.cxx | 58 -- vcl/jsdialog/enabled.cxx |4 +- 4 files changed, 69 insertions(+), 29 deletions(-) New commits: commit e6bfcb1e5d64d3cd76ede9019b4ddaac00159144 Author: Skyler Grey AuthorDate: Fri Aug 12 10:31:42 2022 +0100 Commit: Szymon Kłos CommitDate: Mon Aug 22 14:46:14 2022 +0200 Make the number format dialog an async jsdialog - The dialog needs to be async in order for multiple people to be able to use it at once - If we don't make the item set a shared pointer, we will crash out with an error when we try to copy it after the OK button is pressed - As the dialog is tabbed, we need to enable the dialog for all UI files that the dialog uses rather than just the main dialog UI file Change-Id: I8d684e9e9ad49b8a85ee940864d7219b4115a6e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138270 Tested-by: Jenkins CollaboraOffice Reviewed-by: Szymon Kłos diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index ba883398486a..4c9eac2c2834 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -110,6 +110,16 @@ short SwAbstractSfxController_Impl::Execute() return m_xDlg->run(); } +short AbstractNumFormatDlg_Impl::Execute() +{ +return m_xDlg->run(); +} + +bool AbstractNumFormatDlg_Impl::StartExecuteAsync(AsyncContext ) +{ +return SfxSingleTabDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + short AbstractSwAsciiFilterDlg_Impl::Execute() { return m_xDlg->run(); @@ -356,11 +366,21 @@ const SfxItemSet* SwAbstractSfxController_Impl::GetOutputItemSet() const return m_xDlg->GetOutputItemSet(); } +const SfxItemSet* AbstractNumFormatDlg_Impl::GetOutputItemSet() const +{ +return m_xDlg->GetOutputItemSet(); +} + void SwAbstractSfxController_Impl::SetText(const OUString& rStr) { m_xDlg->set_title(rStr); } +void AbstractNumFormatDlg_Impl::SetText(const OUString& rStr) +{ +m_xDlg->set_title(rStr); +} + void AbstractSwAsciiFilterDlg_Impl::FillOptions( SwAsciiOptions& rOptions ) { m_xDlg->FillOptions(rOptions); @@ -832,7 +852,7 @@ VclPtr SwAbstractDialogFactory_Impl::CreateSwBackgroundDialog VclPtr SwAbstractDialogFactory_Impl::CreateNumFormatDialog(weld::Widget* pParent, const SfxItemSet& rSet) { -return VclPtr::Create(std::make_unique(pParent, rSet)); +return VclPtr::Create(std::make_shared(pParent, rSet)); } VclPtr SwAbstractDialogFactory_Impl::CreateSwAsciiFilterDlg(weld::Window* pParent, diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index b756a4de614e..ce809d3eaaa4 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -125,6 +125,20 @@ public: virtual void SetText(const OUString& rStr) override; }; +class AbstractNumFormatDlg_Impl : public SfxAbstractDialog +{ +std::shared_ptr m_xDlg; +public: +explicit AbstractNumFormatDlg_Impl(std::shared_ptr p) +: m_xDlg(std::move(p)) +{ +} +virtual short Execute() override; +virtual bool StartExecuteAsync(AsyncContext ) override; +virtual const SfxItemSet* GetOutputItemSet() const override; +virtual void SetText(const OUString& rStr) override; +}; + class AbstractSwAsciiFilterDlg_Impl : public AbstractSwAsciiFilterDlg { std::unique_ptr m_xDlg; diff --git a/sw/source/uibase/shells/tabsh.cxx b/sw/source/uibase/shells/tabsh.cxx index 4d83dd1ec756..9fbd241f3f20 100644 --- a/sw/source/uibase/shells/tabsh.cxx +++ b/sw/source/uibase/shells/tabsh.cxx @@ -695,57 +695,61 @@ void SwTableShell::Execute(SfxRequest ) FieldUnit eMetric = ::GetDfltMetric(dynamic_cast( pView) != nullptr ); SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric))); SvNumberFormatter* pFormatter = rSh.GetNumberFormatter(); -SfxItemSetFixed -aCoreSet( GetPool() ); +auto pCoreSet = std::make_shared>( GetPool() ); SfxItemSetFixed - aBoxSet( *aCoreSet.GetPool() ); + aBoxSet( *pCoreSet->GetPool() ); rSh.GetTableBoxFormulaAttrs( aBoxSet ); SfxItemState eState = aBoxSet.GetItemState(RES_BOXATR_FORMAT); if(eState == SfxItemState::DEFAULT) { -aCoreSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, +pCoreSet->Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, pFormatter->GetFormatIndex(NF_TEXT, LANGUAGE_SYSTEM))); } else -aCoreSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, +
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - sw/source vcl/jsdialog
sw/source/ui/frmdlg/cption.cxx | 34 +++--- vcl/jsdialog/enabled.cxx |3 ++- 2 files changed, 21 insertions(+), 16 deletions(-) New commits: commit 62a2c025eb9704dde8c78e86eef1231c2a6cdffc Author: Skyler Grey AuthorDate: Wed Aug 17 13:17:25 2022 +0100 Commit: Szymon Kłos CommitDate: Mon Aug 22 07:40:50 2022 +0200 Make the insert caption options an async jsdialog - In https://gerrit.libreoffice.org/c/core/+/138313, the insert caption dialog was converted to an async jsdialog. It has 2 subdialogs which it opens when you press the 'options' and 'auto' buttons - This review converts the first of these (the options dialog) to an async jsdialog as well, bringing it up to parity with the parent dialog Change-Id: I703b66d8c786d8cbb0b1285014247b38d8d70605 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138442 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx index 8d8752fb7783..f22e881a0210 100644 --- a/sw/source/ui/frmdlg/cption.cxx +++ b/sw/source/ui/frmdlg/cption.cxx @@ -311,21 +311,25 @@ IMPL_LINK_NOARG(SwCaptionDialog, OptionHdl, weld::Button&, void) OUString sFieldTypeName = m_xCategoryBox->get_active_text(); if(sFieldTypeName == m_sNone) sFieldTypeName.clear(); -SwSequenceOptionDialog aDlg(m_xDialog.get(), rView, sFieldTypeName); -aDlg.SetApplyBorderAndShadow(bCopyAttributes); -aDlg.SetCharacterStyle( sCharacterStyle ); -aDlg.SetOrderNumberingFirst( bOrderNumberingFirst ); -aDlg.run(); -bCopyAttributes = aDlg.IsApplyBorderAndShadow(); -sCharacterStyle = aDlg.GetCharacterStyle(); -//#i61007# order of captions -if( bOrderNumberingFirst != aDlg.IsOrderNumberingFirst() ) -{ -bOrderNumberingFirst = aDlg.IsOrderNumberingFirst(); - SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst); -ApplyCaptionOrder(); -} -DrawSample(); +auto pDlg = std::make_shared(m_xDialog.get(), rView, sFieldTypeName); +pDlg->SetApplyBorderAndShadow(bCopyAttributes); +pDlg->SetCharacterStyle( sCharacterStyle ); +pDlg->SetOrderNumberingFirst( bOrderNumberingFirst ); + +GenericDialogController::runAsync(pDlg, [pDlg, this](sal_Int32 nResult){ +if (nResult == RET_OK) { +bCopyAttributes = pDlg->IsApplyBorderAndShadow(); +sCharacterStyle = pDlg->GetCharacterStyle(); +//#i61007# order of captions +if( bOrderNumberingFirst != pDlg->IsOrderNumberingFirst() ) +{ +bOrderNumberingFirst = pDlg->IsOrderNumberingFirst(); + SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst); +ApplyCaptionOrder(); +} +DrawSample(); +} +}); } IMPL_LINK_NOARG(SwCaptionDialog, SelectListBoxHdl, weld::ComboBox&, void) diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index f608dad9f3e8..2b4e2fcf3957 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -67,7 +67,8 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"sfx/ui/custominfopage.ui" || rUIFile == u"sfx/ui/cmisinfopage.ui" || rUIFile == u"sfx/ui/descriptioninfopage.ui" || rUIFile == u"sfx/ui/documentinfopage.ui" || rUIFile == u"sfx/ui/linefragment.ui" || rUIFile == u"sfx/ui/editdurationdialog.ui" -|| rUIFile == u"modules/swriter/ui/insertcaption.ui") +|| rUIFile == u"modules/swriter/ui/insertcaption.ui" +|| rUIFile == u"modules/swriter/ui/captionoptions.ui") { return true; }
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - sw/source vcl/jsdialog
sw/source/ui/frmdlg/cption.cxx |7 +++ sw/source/uibase/inc/cption.hxx |1 + sw/source/uibase/uiview/viewdlg2.cxx | 11 +++ vcl/jsdialog/enabled.cxx | 10 -- 4 files changed, 19 insertions(+), 10 deletions(-) New commits: commit 6b36c22cd3197e79ac3420bdca98eb5574b64f81 Author: Skyler Grey AuthorDate: Fri Aug 19 12:23:20 2022 +0100 Commit: Szymon Kłos CommitDate: Mon Aug 22 07:40:24 2022 +0200 Make the insert caption dialog an async jsdialog - Using StartExecuteAsync instead of Execute to execute the dialog makes it run asyncly - We need to add a handler for the OK button, otherwise the event won't be fired when it's clicked. There seem to be varying names for this throughout the codebase, I've chosen OKHdl as it's short, appears to be relatively common and fits well with the existing OptionHdl and CaptionHdl that the other buttons on the dialog use - Lastly, we need to enable the JSDialog builder in vcl/jsdialog/enabled.cxx so that the dialog becomes a JSDialog Still TODO: - Convert the dialogs that open when you press "auto" or "options" buttons (will be in a followup review) Change-Id: Ieabbc4e69c4aa065506f7dc6c823d83e4d784c2f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138313 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx index 867e16fa56dc..8d8752fb7783 100644 --- a/sw/source/ui/frmdlg/cption.cxx +++ b/sw/source/ui/frmdlg/cption.cxx @@ -137,6 +137,7 @@ SwCaptionDialog::SwCaptionDialog(weld::Window *pParent, SwView ) m_xSepEdit->connect_changed(aLk); m_xFormatBox->connect_changed(LINK(this, SwCaptionDialog, SelectListBoxHdl)); +m_xOKButton->connect_clicked(LINK(this, SwCaptionDialog, OKHdl)); m_xOptionButton->connect_clicked(LINK(this, SwCaptionDialog, OptionHdl)); m_xAutoCaptionButton->connect_clicked(LINK(this, SwCaptionDialog, CaptionHdl)); @@ -265,6 +266,12 @@ SwCaptionDialog::SwCaptionDialog(weld::Window *pParent, SwView ) DrawSample(); } +IMPL_LINK_NOARG(SwCaptionDialog, OKHdl, weld::Button&, void) +{ +Apply(); +m_xDialog->response(RET_OK); +} + void SwCaptionDialog::Apply() { InsCaptionOpt aOpt; diff --git a/sw/source/uibase/inc/cption.hxx b/sw/source/uibase/inc/cption.hxx index b442857a44b8..f5640d2b877b 100644 --- a/sw/source/uibase/inc/cption.hxx +++ b/sw/source/uibase/inc/cption.hxx @@ -64,6 +64,7 @@ class SwCaptionDialog final : public SfxDialogController DECL_LINK(ModifyComboHdl, weld::ComboBox&, void); DECL_LINK(OptionHdl, weld::Button&, void); DECL_LINK(CaptionHdl, weld::Button&, void); +DECL_LINK(OKHdl, weld::Button&, void); void Apply(); diff --git a/sw/source/uibase/uiview/viewdlg2.cxx b/sw/source/uibase/uiview/viewdlg2.cxx index dd0da7acef95..c1131f1f590b 100644 --- a/sw/source/uibase/uiview/viewdlg2.cxx +++ b/sw/source/uibase/uiview/viewdlg2.cxx @@ -46,15 +46,18 @@ using namespace css; -void SwView::ExecDlgExt(SfxRequest const ) +void SwView::ExecDlgExt(SfxRequest const& rReq) { -switch ( rReq.GetSlot() ) +switch (rReq.GetSlot()) { case FN_INSERT_CAPTION: { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); -ScopedVclPtr pDialog(pFact->CreateSwCaptionDialog(GetFrameWeld(), *this )); -pDialog->Execute(); +VclPtr pDialog( +pFact->CreateSwCaptionDialog(GetFrameWeld(), *this)); +pDialog->StartExecuteAsync([pDialog](sal_Int32) { +pDialog->disposeOnce(); +}); break; } case SID_INSERT_SIGNATURELINE: diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 7c1fe9b6f6b2..f608dad9f3e8 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -64,12 +64,10 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"modules/swriter/ui/splittable.ui" || rUIFile == u"cui/ui/splitcellsdialog.ui" || rUIFile == u"sfx/ui/documentpropertiesdialog.ui" -|| rUIFile == u"sfx/ui/custominfopage.ui" -|| rUIFile == u"sfx/ui/cmisinfopage.ui" -|| rUIFile == u"sfx/ui/descriptioninfopage.ui" -|| rUIFile == u"sfx/ui/documentinfopage.ui" -|| rUIFile == u"sfx/ui/linefragment.ui" -|| rUIFile == u"sfx/ui/editdurationdialog.ui") +|| rUIFile == u"sfx/ui/custominfopage.ui" || rUIFile == u"sfx/ui/cmisinfopage.ui" +|| rUIFile == u"sfx/ui/descriptioninfopage.ui" || rUIFile == u"sfx/ui/documentinfopage.ui" +|| rUIFile == u"sfx/ui/linefragment.ui" || rUIFile == u"sfx/ui/editdurationdialog.ui" +|| rUIFile == u"modules/swriter/ui/insertcaption.ui") { return true; }
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - vcl/jsdialog
vcl/jsdialog/enabled.cxx |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) New commits: commit c55f174445db16252957a78a31ca911593f81dc0 Author: Skyler Grey AuthorDate: Thu Aug 4 11:24:19 2022 +0100 Commit: Szymon Kłos CommitDate: Fri Aug 5 08:56:17 2022 +0200 Enable JSDialogs on the split cells dialog - This dialog works properly when JSDialog rendering is enabled for it - This dialog is already async, so there aren't multi-user issues like there are on some other dialogs Signed-off-by: Skyler Grey Change-Id: I036ca7ab15e0ab472ff961ef643053f8f6771c0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137791 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index f0d8ed530dcf..e17c93e574f3 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -61,7 +61,8 @@ bool isBuilderEnabled(std::u16string_view rUIFile, bool bMobile) || rUIFile == u"cui/ui/widgettestdialog.ui" || rUIFile == u"modules/swriter/ui/contentcontroldlg.ui" || rUIFile == u"modules/swriter/ui/contentcontrollistitemdlg.ui" -|| rUIFile == u"modules/swriter/ui/splittable.ui") +|| rUIFile == u"modules/swriter/ui/splittable.ui" +|| rUIFile == u"cui/ui/splitcellsdialog.ui") { return true; }
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - sw/source vcl/jsdialog
sw/source/ui/dialog/swdlgfact.cxx |7 ++- sw/source/ui/dialog/swdlgfact.hxx |5 +++-- sw/source/ui/table/splittbl.cxx | 11 +-- sw/source/uibase/inc/splittbl.hxx | 12 ++-- sw/source/uibase/shells/tabsh.cxx | 18 ++ vcl/jsdialog/enabled.cxx |3 ++- 6 files changed, 36 insertions(+), 20 deletions(-) New commits: commit bcabb3d1891fc67fb4e4b35642c2d55340994ecc Author: Skyler Grey AuthorDate: Wed Aug 3 09:54:45 2022 +0100 Commit: Pedro Silva CommitDate: Thu Aug 4 10:24:55 2022 +0200 Turn the split table dialog into an async JSDialog - Previously the split table dialog was not an async dialog, and it wasn't a JSDialog either - A non-async dialog has issues when multiple people try to change something using the dialog at the same time. Generally the changes from one person will not be applied until all people who opened the dialog later than them have submitted - This PR makes the dialog async, fixing multi-user issues with it - This PR makes the dialog into a JSDialog, rendering it on the client with native HTML elements Signed-off-by: Skyler Grey Change-Id: I9254bc1b635531c8b38d1ade76f99ffdda145b35 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137741 Reviewed-by: Szymon Kłos Tested-by: Jenkins CollaboraOffice diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index 17f0ed1d3a03..ba883398486a 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -120,6 +120,11 @@ short AbstractSplitTableDialog_Impl::Execute() return m_xDlg->run(); } +bool AbstractSplitTableDialog_Impl::StartExecuteAsync(AsyncContext ) +{ +return weld::GenericDialogController::runAsync(m_xDlg, rCtx.maEndDialogFn); +} + short AbstractSwTableWidthDlg_Impl::Execute() { return m_xDlg->run(); @@ -972,7 +977,7 @@ VclPtr SwAbstractDialogFactory_Impl::CreateSwSortingDialog(we VclPtr SwAbstractDialogFactory_Impl::CreateSplitTableDialog(weld::Window *pParent, SwWrtShell ) { -return VclPtr::Create(std::make_unique(pParent, rSh)); +return VclPtr::Create(std::make_shared(pParent, rSh)); } VclPtr SwAbstractDialogFactory_Impl::CreateSwSelGlossaryDlg(weld::Window *pParent, const OUString ) diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx index 8690d9db8129..b756a4de614e 100644 --- a/sw/source/ui/dialog/swdlgfact.hxx +++ b/sw/source/ui/dialog/swdlgfact.hxx @@ -222,13 +222,14 @@ public: class AbstractSplitTableDialog_Impl : public AbstractSplitTableDialog // add for { -std::unique_ptr m_xDlg; +std::shared_ptr m_xDlg; public: -explicit AbstractSplitTableDialog_Impl(std::unique_ptr p) +explicit AbstractSplitTableDialog_Impl(std::shared_ptr p) : m_xDlg(std::move(p)) { } virtual short Execute() override; +virtual bool StartExecuteAsync(AsyncContext ) override; virtual SplitTable_HeadlineOption GetSplitMode() override; }; diff --git a/sw/source/ui/table/splittbl.cxx b/sw/source/ui/table/splittbl.cxx index 0deb5d03093c..0af89a160121 100644 --- a/sw/source/ui/table/splittbl.cxx +++ b/sw/source/ui/table/splittbl.cxx @@ -28,21 +28,12 @@ SwSplitTableDlg::SwSplitTableDlg(weld::Window* pParent, SwWrtShell& rSh) , m_xBoxAttrCopyNoParaRB(m_xBuilder->weld_radio_button("customheading")) , m_xBorderCopyRB(m_xBuilder->weld_radio_button("noheading")) , rShell(rSh) -, m_nSplit(SplitTable_HeadlineOption::ContentCopy) { } void SwSplitTableDlg::Apply() { -m_nSplit = SplitTable_HeadlineOption::ContentCopy; -if (m_xBoxAttrCopyWithParaRB->get_active()) -m_nSplit = SplitTable_HeadlineOption::BoxAttrAllCopy; -else if (m_xBoxAttrCopyNoParaRB->get_active()) -m_nSplit = SplitTable_HeadlineOption::BoxAttrCopy; -else if (m_xBorderCopyRB->get_active()) -m_nSplit = SplitTable_HeadlineOption::BorderCopy; - -rShell.SplitTable(m_nSplit); +rShell.SplitTable(GetSplitMode()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/inc/splittbl.hxx b/sw/source/uibase/inc/splittbl.hxx index 99e61f7d4075..b826914e4720 100644 --- a/sw/source/uibase/inc/splittbl.hxx +++ b/sw/source/uibase/inc/splittbl.hxx @@ -34,7 +34,6 @@ private: std::unique_ptr m_xBorderCopyRB; SwWrtShell& rShell; -SplitTable_HeadlineOption m_nSplit; void Apply(); @@ -49,7 +48,16 @@ public: return nRet; } -SplitTable_HeadlineOption GetSplitMode() const { return m_nSplit; } +SplitTable_HeadlineOption GetSplitMode() const { +auto nSplit = SplitTable_HeadlineOption::ContentCopy; +if (m_xBoxAttrCopyWithParaRB->get_active()) +nSplit = SplitTable_HeadlineOption::BoxAttrAllCopy; +else if (m_xBoxAttrCopyNoParaRB->get_active()) +nSplit = SplitTable_HeadlineOption::BoxAttrCopy;
[Libreoffice-commits] core.git: Branch 'distro/collabora/co-22.05' - cui/uiconfig
cui/uiconfig/ui/widgettestdialog.ui |1 + 1 file changed, 1 insertion(+) New commits: commit e57f9d1651c5abdce1228f070b5c1f3bd0830d1d Author: Skyler Grey AuthorDate: Wed Jul 27 16:46:24 2022 + Commit: Pedro Silva CommitDate: Thu Jul 28 08:56:36 2022 +0200 Add a title to the widget test dialog - Previously the widget test dialog didn't have a title, however most of the other dialogs do. This commit adds a title to the dialog Signed-off-by: Skyler Grey Change-Id: I8b61e00e93cd71a6a7bf068537d9cbcdc735753d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137534 Tested-by: Jenkins CollaboraOffice Reviewed-by: Rashesh Padia Reviewed-by: Pedro Silva diff --git a/cui/uiconfig/ui/widgettestdialog.ui b/cui/uiconfig/ui/widgettestdialog.ui index ce8e52879fec..787deda37171 100644 --- a/cui/uiconfig/ui/widgettestdialog.ui +++ b/cui/uiconfig/ui/widgettestdialog.ui @@ -4,6 +4,7 @@ False +Test Widgets dialog