summaryrefslogtreecommitdiff
path: root/sw/inc/doc.hxx
AgeCommit message (Collapse)Author
2024-09-17dont use GetItemSurrogates for gathering SvxUnderlineItemNoel Grandin
which is very expensive these days Change-Id: Ia8485f38b7aeb763a49a1acb433e22d1360694e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173513 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-17dont use GetItemSurrogates for gathering SvxColorItemNoel Grandin
which is very expensive these days Change-Id: I26da48f3b29bc3029d359214e0c50fa51e9e2194 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173479 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-09-16dont use GetItemSurrogates for gathering SvxBoxItemNoel Grandin
which is very expensive these days Change-Id: I654b85db2c22e95483c369b0aa9fd36f1f7c3849 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173360 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-12tdf#107184 sw: Added base text group feature to Asian Phonetic GuideJonathan Clark
This change adds a new button, Group, to the Asian Phonetic Guide. Clicking on this button will automatically merge all base text runs into a single base text run. Change-Id: I8bc2881f0c31d501f8a347156145a483bb4c96cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173241 Reviewed-by: Jonathan Clark <jonathan@libreoffice.org> Tested-by: Jenkins
2024-09-09dont use GetItemSurrogates for gathering SwFormatFieldNoel Grandin
which is very expensive these days Change-Id: I830e7829ee3b919647f44ab060bf170e5cf42189 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173035 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-09-09dont use GetItemSurrogates for gathering SvxOverlineItemNoel Grandin
which is very expensive these days Change-Id: I0ac24ba8ef4df9310b9e6ca5cfd7a132a61bb889 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173049 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-08dont use GetItemSurrogates for gathering SwFormatURLNoel Grandin
which is very expensive these days Change-Id: I6dbd6d1c66cd28c4f916842cd95f000215e52bc8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173033 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-08dont use GetItemSurrogates for gathering SwFormatINetFormatNoel Grandin
which is very expensive these days Change-Id: I7b552d9fec5e2971bb3c171b7dd132ee31b1a46e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173004 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-07dont use GetItemSurrogates for gathering SwTOXMarkNoel Grandin
which is very expensive these days Change-Id: I412c30310f001a7b7c9350a7e0da62bdcddc498c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173001 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-07dont use GetItemSurrogates for gathering SwFormatRefMarkNoel Grandin
which is very expensive these days Change-Id: I8698d3bb9a7d49a5444ed901859f636647e4d116 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172996 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-08-09tdf#140061 keep SwCharFormat instances alive while SwDoc is alivePatrick Luby
Change-Id: I22a7fc1e109e641932f348e9ac3b85f11ce46c9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171608 Reviewed-by: Patrick Luby <guibomacdev@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-07-22speed up O(n^2) loop in UpdateFieldContentsNoel Grandin
Change-Id: I53af2d1af22ed58acd384d33396e517d8a395f17 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170834 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-07-22Revert "improve perf of lcl_GetUniqueFlyName"Noel Grandin
This reverts commit a61128c95e324b096bf26fec5ad78e67567e0f82. Reason for revert: Causes trouble with UITests because the names of some objects are not predictable Change-Id: I6320efd694849542ae79f0dc67c15d35eedfb750 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170742 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-21improve perf of lcl_GetUniqueFlyNameNoel Grandin
reduces the load time of a complex document from 18s to 16s Change-Id: I5382e27bf1b6beaf7276ef46f10d43d5bf9822d6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170795 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-18(related tdf#126008) sw: allow removing table autoformat from a tableMichael Stahl
... via the Table->AutoFormat Styles... dialog: add a "None" option like already exists in Table->Insert Table... Change-Id: I41d5cb0a7dcd1bfe3e93fe56f0f42765149ff42b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170641 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2024-06-14loplugin:ostr in swNoel Grandin
Change-Id: Ibc8c3ce70d572e2e07ee6ae1e46996943cf90a5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168840 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-06-03tdf#161248 Don't duplicate bullets used in documentSamuel Mehrbrodt
Change-Id: I0ef01a6be8207d4cffc89b95dc9ca3bf1baf38d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168358 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> Tested-by: Jenkins
2024-05-23sw: Use SAL_RET_MAYBENULL in GetEditShell()Xisco Fauli
after 24889135773204c6e3002dcb417c75ff1a99ccd0 "check GetEditShell()" Change-Id: I5650e23e0c2a1c3eb81cfa71c57b809d8abc4b40 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167906 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
2024-05-17tdf#161137 sw: AutoText or Paste should copy paragraph indents for listsMichael Stahl
The first commit made the start and end node of the paste look like the list it was inserted into, but the middle nodes may have different paragraph styles and may have different left margin / first line indent. In addition to the SwNumRule, also copy any left margin or first line indent if it is effective on the node that the SwNumRule was taken from. Now all the list labels should be in the same place. Change-Id: Ia5794687ea0ff542f23289b1ca63ea99dae85bc3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167777 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2024-05-17tdf#161137 sw: fix AutoText or Paste overriding paragraph indentsMichael Stahl
The problem is that when a paragraph style specifies a SwNumRule, then this style's indents override the indents of the SwNumRule, but if the same SwNumRule is also added to the SwTextNode's mpAttrSet, then the style's indents no longer take effect. This happens both when inserting an AutoText, and when Pasting, into a list item, because DocumentContentOperationsManager::CopyImplImpl() sets the pNumRuleToPropagate as direct formatting on every pasted node. Add another flag to SwDoc::SetNumRule() to check if pNumRuleToPropagate was already in effect due to the paragraph style. Change-Id: Id98ad2a21eab4f8636fb36f9298a054cfe4f7784 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167766 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2024-05-16tdf#161056 Show bullets used in document in bullets dropdownSamuel Mehrbrodt
Change-Id: I40cfc39501006146f7c6c04a1f3c7cf877c6f1c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167186 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2024-03-21tdf#158556 speedup docx loadNoel Grandin
Avoid O(n^2) loop in SwXFrame::setPropertyValue, we even have an index to search for this stuff Reduces load time from 325s to 172s Change-Id: I6c6c03206ef81be1d7d7702a4313acd23d75442d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165044 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-11Use weak reference to SfxObjectShell in SfxEventHint to avoid use-after-freeMike Kaganski
The events may be processed after the shell has been destroyed. This is happening reliably after commit e2bfc34d146806a8f96be0cd2323d716f12cba4e (Reimplement OleComponentNative_Impl to use IGlobalInterfaceTable, 2024-03-11) when controlling LibreOffice from external Java scripts; but obviously, it could happen before as well. Now SotObject inherits from cppu::OWeakObject, instead of SvRefBase. Change-Id: I73a3531499a3068c801c98f40de39bdf8ad90b2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164458 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-02-19hide more symbolsNoel Grandin
using the bin/find-can-be-private-symbols.py script to find classes with large numbers of exported symbols that can hidden. before exported = 58104 imported = 30810 unused_exports = 35433 after exported = 55094 imported = 31073 unused_exports = 32423 Change-Id: Idd0a70ee3740afd5ca1a86771e0e2ff8090d102d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163456 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-01-06cid#1545576 COPY_INSTEAD_OF_MOVECaolán McNamara
Change-Id: I085cc6802ba72c2334398dd34be9eecdab2ea575 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161709 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-20c++20: use std::erase(_if) instead of std::remove(_if)+erase (sw)Julien Nabet
Change-Id: I67c231441b56f05da001beab5b893bc6a6a6a392 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159704 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-10-21Related: tdf#89178 Add an option to avoid converting some fields into textMike Kaganski
... during mail merge. In some modes (generating individual documents; creating PDF) the mail merge process converts all fields into text. But sometimes it is undesirable for fields not involved into mail merge itself: * It is inconsistent with how MS Word behaves; * The generated editable documents could benefit from having other fields kept as fields; * Some fields, when exported to PDF, produce different results: e.g., placeholder fields are output as empty spaces, not as placeholder text. An expert boolean configuration option is added: Office/Writer/FormLetter/ConvertToTextOnlyMMFields; it is false by default, in which case, the behavior is unchanged. When true, all fields in the mail merge document, except for database fields and hidden text fields, are not converted to text during mail merge process. Change-Id: Ibdb505ed3f2762db063bb0a91b674d27ecbc2e7f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158306 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-10-21Make ConvertFieldsToText privateMike Kaganski
Change-Id: Ie3d22b63260d2b2b05a46c5b2a6ca915cf9d4bcd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158304 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-09-28tdf#157492 sw: fix tracked drag & drop of table rowLászló Németh
Selecting table rows by the left row border, and moving them via drag & drop resulted only tracked deletion, but not tracked insertion. See also commit 3e6125c72f8c07c14df42d45571cab44f24e9f70 "tdf#155846 sw tracked table column: fix drag & drop". This reverts also commit 5a1c19624eda0c8b847af0dcee70b82502578ceb "tdf#146965 sw track changes: fix tracked table row moving". Change-Id: I7287e46188eee123b5fd36a5ec7ac5311699840b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157382 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2023-09-28tdf#155846 sw tracked table column: fix drag & dropLászló Németh
Selecting table columns by the top border, and moving them via drag & drop resulted only tracked deletion, but not tracked insertion. See also commit 912336f3c85d9a631fa0ac0f270bab04b204f619 "tdf#154599 sw: fix crash at drag & drop table columns". Change-Id: Ib392f0700ec8c17a342df435c8bb1883967b0711 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157370 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2023-07-12Simplify a bitMike Kaganski
Change-Id: I452619c5a1d0b414f09c1e3178fac9905b6d0374 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154349 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-07-05tdf#138504 svx,etc.: decorative flag on SdrObject shapesMichael Stahl
* SdrObject new member m_IsDecorative * new Undo SdrUndoObjDecorative * surprising amount of changes in sw including additional SwUndoFlyDecorative * svx API SvxShape property "Decorative" * UI checkbox "Decorative" * ODF import/export as loext:decorative on style:graphic-properties * PDF/UA export: ViewObjectContcat tag shapes with this flag as Artifact Change-Id: I37f7a0597eab92c6c6aff94fad6c16c59b231c80 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154063 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-06-23tdf#103064 Fix reset to parent style handlingMaxim Monastirsky
If the style ends up empty, it still needs modification broadcasting if it used to be non-empty. So let's just trust the pool notification for when to notify clients. And given that broadcasting happens now always after EnsureStyleHierarchy, I assume that the explicit broadcasting in SetParent is no longer needed. Also added broadcasting to the undo of a reset. And the undo actions were combined, so we don't get separate notifications for each reset attribute. Change-Id: Ia2895fe346ef337cc0b4fe5dc4275f5b2dc60cd7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153478 Tested-by: Jenkins Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2023-06-06tdf#155685 sw: fix crash on undo of ExtendedSelectAll with table at endMichael Stahl
While the selection with table at the end works for Copy, unfortunately it doesn't work for Delete, because SwUndoDelete can't handle it, and an empty SwTableNode+SwEndNode pair remains. This needs some extra code, extract a SwDoc::DelTable() out of SwDoc::DeleteRowCol() and call it from SwEditShell::DeleteSel() to create separate SwUndoDelete objects per table, which appears to work. (regression from commit d81379db730a163c5ff75d4f3a3cddbd7b5eddda) Change-Id: I1534b100d31bc279bce298d3c2bd235cffc1f9d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152628 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-05-01replace SwFrameFormats with sw::FrameFormats<SwFrameFormat*>Bjoern Michaelsen
- SwFrameFormats is now completely replaced by stronger typed sw::FrameFormats<>, thus remove it Change-Id: I7e655a83ba8cf01d1e68dccd1804c167e8daca9c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150455 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
2023-04-28Revert "Revert "introduce sw::SpzFrameFormat ...""Bjoern Michaelsen
apparently, in SwHistoryChangeFlyAnchor::SetInDoc, m_rFormat might actually reference a DrawFormat, not a FlyFormat, and that is likely fundamentally broken. But for now, lets just make m_rFormat a sw::SpzFrameFormat -- this already removes some pointless up and downcasting. This reverts commit 52acefd6024ec79f8333ba40eef83816eda3046f. Change-Id: I040d98548bf9ac1c25b93214224eb0812f8cb653 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151150 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
2023-04-28tdf#155028 Crash in: `anonymous namespace'::lcl_PasteFlyOrDrawFormatNoel Grandin
since commit 8611f6e259b807b4f19c8dc0eab86ca648891ce3 Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Thu May 27 10:27:46 2021 +0200 ref-count SdrObject The CloneSdrObj() call needs to return a rtl::Reference or the created object might get destroyed before we return a (now stale) pointer to it. Change-Id: I3de46b025887e6d460860b37677d2b18b90fb3e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151137 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-27Revert "introduce sw::SpzFrameFormat ..."Stephan Bergmann
This reverts commit 09cdcb5f37bb4e42da7b28db6e757b9f2affed14. It broke at least CppunitTest_sw_uiwriter3 (<https://ci.libreoffice.org//job/lo_ubsan/2756/>), > /sw/source/core/undo/rolbck.cxx:938:46: runtime error: downcast of address 0x61300041fd00 which does not point to an object of type 'SwFlyFrameFormat' > 0x61300041fd00: note: object is of type 'SwDrawFrameFormat' > 00 00 00 00 70 83 cf 09 25 7f 00 00 00 83 47 00 30 61 00 00 40 e5 43 00 30 61 00 00 80 66 5d 00 > ^~~~~~~~~~~~~~~~~~~~~~~ > vptr for 'SwDrawFrameFormat' > #0 0x7f24fca9c5b9 in SwHistoryChangeFlyAnchor::SetInDoc(SwDoc*, bool) /sw/source/core/undo/rolbck.cxx:938:46 > #1 0x7f24fca880f3 in SwHistory::Rollback(SwDoc*, unsigned short) /sw/source/core/undo/rolbck.cxx:1208:15 > #2 0x7f24fcb47832 in SwUndoDelete::UndoImpl(sw::UndoRedoContext&) /sw/source/core/undo/undel.cxx:1031:33 > #3 0x7f24fcb703c2 in SwUndo::UndoWithContext(SfxUndoContext&) /sw/source/core/undo/undobj.cxx:225:5 > #4 0x7f2543b8b57c in SfxUndoManager::ImplUndo(SfxUndoContext*) /svl/source/undo/undo.cxx:712:22 > #5 0x7f2543b8c4f8 in SfxUndoManager::UndoWithContext(SfxUndoContext&) /svl/source/undo/undo.cxx:664:12 > #6 0x7f24fca6a074 in sw::UndoManager::impl_DoUndoRedo(sw::UndoManager::UndoOrRedoType, unsigned long) /sw/source/core/undo/docundo.cxx:696:32 > #7 0x7f24fca6b38f in sw::UndoManager::UndoWithOffset(unsigned long) /sw/source/core/undo/docundo.cxx:731:16 > #8 0x7f24fa830b18 in SwEditShell::Undo(unsigned short, unsigned short) /sw/source/core/edit/edundo.cxx:141:57 > #9 0x7f250088f448 in SwWrtShell::Do(SwWrtShell::DoType, unsigned short, unsigned short) /sw/source/uibase/wrtsh/wrtundo.cxx:45:26 > #10 0x7f24ff7f16e2 in SwBaseShell::ExecUndo(SfxRequest&) /sw/source/uibase/shells/basesh.cxx:651:27 > #11 0x7f24ff7eea14 in SfxStubSwBaseShellExecUndo(SfxShell*, SfxRequest&) /workdir/SdiTarget/sw/sdi/swslots.hxx:2203:1 > #12 0x7f2523fbc059 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) /sfx2/source/control/dispatch.cxx:254:9 > #13 0x7f2523fd1ced in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) /sfx2/source/control/dispatch.cxx:753:9 > #14 0x7f2523f61333 in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot const*, SfxShell*) /sfx2/source/control/bindings.cxx:1060:22 > #15 0x7f252437496b in SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:688:53 > #16 0x7f2524377211 in SfxOfficeDispatch::dispatchWithNotification(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:266:16 > #17 0x7f24cad28dd6 in framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatch> const&, com::sun::star::util::URL const&, bool, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx:163:30 > #18 0x7f24cad27cb2 in framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx:120:16 > #19 0x7f24cad29684 in non-virtual thunk to framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx > #20 0x7f24e91d386d in unotest::MacrosTest::dispatchCommand(com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /unotest/source/cpp/macros_test.cxx:94:33 > #21 0x7f25319b2012 in testTdf132321::TestBody() /sw/qa/extras/uiwriter/uiwriter3.cxx:982:5 Change-Id: Ibeb181bc38cd6f88df76403cca8a15b45090633f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151027 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-04-25tdf#38194 tdf#106556 Enhancement to highlight direct formatting,Jim Raykowski
paragraph style, and character style use in Writer documents Initial commit to realize direct formatting, paragraph style, and character style highlighting enhancement requests. Highlighting of character direct formatting is turned on/off using .uno:HighlightCharDF. Highlighting of paragraph styles and character styles is turned on/off using a check box in the Sidebar Styles panel. Closing the Sidebar also turns paragraph and character style highlighting off. Paragraph direct formatting is indicated by a hatch pattern over the paragraph style highlight bar and also by "+ Paragraph Direct Formatting" appended to the tooltip that appears showing the name of the paragraph style when the mouse pointer is over the style highlight bar. Colors used for styles highlighting are determined by a hash of the style name. Lightgray is used for character direct formatting. Known issue: Tooltip doesn't show for paragraph style highlighting in tables and in frames where the highlighting bar is drawn outside of the frame. Change-Id: I6e00ee38c1c169bc7c6542a1782c03b2593e1891 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150451 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2023-04-24introduce sw::SpzFrameFormat ...Bjoern Michaelsen
- ... as a base class of frame formats allowed into the spz frame format container - with a private ctor and friends SwDrawFrameFormat and SwFlyFrameFormat so only these two classes derive from it - with that, switch over the SpzFrameFormats to only ever allow these types into the container - in followups, likely quite a bit of stronger typing can be introduced. - ultimately, it would be nice to have each SwDrawFrameFormats and SwFlyFrameFormats in their own strongly typed container in the end. Change-Id: Ic30efc1220aded701533c9ca5003d2aaf8bbdaec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150452 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
2023-04-20introduce sw::FrameFormats<>Bjoern Michaelsen
- a drop-in replacement for SwFrameFormats - ... but strongly typed sw::FrameFormats<SwTableFormat*> returns SwTableFormats - replace in SwDoc for GetTableFormats - also: use tags to name indices, lose the references to them as members - add an explicit Rename() member to allow both SwFrameFormats and sw::FrameFormat<> to be updated if a format is rename. This should be removed once all SwFrameFormats have been moved to sw::FrameFormats<>. - Ultimately it seems like a few linear iterations of the table formats can be replaced with an index-based accesss by name (in a follow-up). Change-Id: I1c49d64621104c964c95c6da0c84e01ee7f97028 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150243 Tested-by: Jenkins Reviewed-by: Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org>
2023-03-31tdf#154486: Use known name when inserting the table into the documentMike Kaganski
... instead of assinging a unique name at insertion time, then changing to the final value. As discussed in commit 1dd71d79e15bd8098e7c17c8fcea3748592a902f (tdf#154486: use importer-local map to deduplicate table names, 2023-03-31), the lookup for a unique table name has an O(n^2) complexity, and can make loading of thousands tables impossible. This changes import time from 23 s to ~2.5 s, and the time now depends on the number of tables linearly (e.g., 200 000 tables load in ~45 s). Change-Id: I0f2b5e37db2d370bccbc8c3430f895c864d9a4c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149840 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-03-09sw doc model dump: allow invoking this from outside sw/ in a debuggerMiklos Vajna
There is only a single SwDoc instance in many cases, having an easy to access pointer to that is helpful when the backtrace doesn't include a frame in sw/ code. This allows something like 'print SwDoc::s_pLast->dumpAsXml(0)' in gdb, even if e.g. the current frame is xmloff/, without hunting for a parent that is in sw/. Change-Id: Id70baf7919ef6fde7b834704741dab70531e7e2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148522 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-01-10tdf#152872 sw: conditionally hide paragraph breaksMichael Stahl
Add a 3rd kind of hiding to SwRootFrame and CheckParaRedlineMerge(). This is quite simple as only consecutive paragraphs are merged. There is an existing similar feature described in http://www.openoffice.org/specs/writer/hidden_text/hidden_text.sxw which results in 0-height text frames if all text is hidden - but that is unconditional, while Word shows the paragraph when control chars are shown, and hides it otherwise *iff* its paragraph marker is hidden (and there's no page break on it). Change-Id: I8290962ea58278e17b8f84bf6b2ca4bb2325aa8f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145162 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-12-27tdf#140666 Make delete reference possible from the NavigatorJim Raykowski
This patch makes it possible to delete a reference without having to do the steps given in the help. "References are fields. To remove a reference, delete the field. If you set a longer text as a reference and you do not want to re-enter it after deleting the reference, select the text and copy it to the clipboard. You can then reinsert it as "unformatted text" at the same position using the command Edit - Paste special. The text remains intact while the reference is deleted." Change-Id: If363340288de25aacbc28acd5858ce275f309af6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144406 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
2022-11-15sw: add online accessibility check implementationTomaž Vajngerl
Change-Id: Ic68aa91b1cbf23ac305ad4e361c56b91556757ee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141604 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-11-08sw: introduce a manager for content controlsMiklos Vajna
The VBA API for content controls can access e.g. the 3rd content control in the document, see <https://learn.microsoft.com/en-us/office/vba/api/word.contentcontrols>. To support something similar, first we need to track the content controls in the document, otherwise getting the Nth element of that list would require scanning the entire document, which would be slow. SwContentControlManager::m_aContentControls is a plain vector, because an o3tl::sorted_vector would require sorting at insert time, but our content controls are typically first created and only later inserted, and we want to use the insert position as the comparison key when sorting. This just keeps track of content controls (visible in the doc model XML dump), somewhat similar to sw::MetaFieldManager or SwFootnoteIdxs. UNO API to actually expose this is not yet added. Change-Id: I3f75334ffef684afc2c05a1bbdb7f247876d27ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142391 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2022-10-21sw: combine IGrammarContact and SwGrammarContactTomaž Vajngerl
Change-Id: I4b9ab45ff8e21fa5091894f2cd5e3c7de57df425 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141431 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2022-10-14sw: improve duplicated images in copied header/footer textMiklos Vajna
DOCX import currently maps linked headers to 2 Writer headers, the second header has a copy of the first header's content. The image in the first header is named 'Picture 1', the copied header names the image as 'Image1'. This is similar to what commit 41403fbff8140ad0ca7cf8f81d37cddcfbd19197 (sw: improve duplicated bookmarks in copied header/footer text, 2022-10-13) fixed for bookmarks, what happens is that sw::DocumentLayoutManager::CopyLayoutFormat() clears the name of the image, and then these are filled in at the end of the import in one shot, to improve performance. The downside is that it's not possible for an API user to know which was the original image and which is the copy. Fix the problem by tweaking the in-header-footer && not-in-mail-merge case to generate a name like 'Picture 1 Copy 1': this is meant to preserve the lost connection between the original image and its copy, while maintaining performance for the mail merge and body text cases where we expect lots of images. In the long run it would probably make sense to rather support linked headers/footers in Writer core so we don't have to create such a copy in the first place. Change-Id: I9679c0ce67131ed5c48eaecfcfd38abd1bcd3da4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141360 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2022-10-11use more string_view in swNoel Grandin
Change-Id: Ibefb8549834ba5011286e3221f1ae276e2c0c0bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141153 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>