34542 Commits
Author SHA1 Message Date
elioperdreau b2554fe7f0 Merge upstream LibreOffice master into ODFStudio main 2026-10-08 12:56:19 +02:00
Armin Le Grand (collabora) 760394bbad Remove XFillAttrSetItem and XLineAttrSetItem
Both are derived from SfxSetItem which means they contain
a SfxItemSet themselves. That leads to problems since at
their construction time a SfxItemPool has to be known and
it *should* not be different to the one of the ItemSet
that Item gets added later - that leads to the 2nd class
of problems.

In the long therm we should get rid of all SfxSetItems.
This change simplifies already some stuff, including that
the standard Items for DrawObjects reduces by two (and
more due to containing a whole ItemSet) and e.g. the
problem that these Items had to be converted to hard
attributes in the done fixes for copy/pasting Slides.

Signed-off-by: Armin Le Grand (collabora) <Armin.LeGrand@collabora.com>
Change-Id: I8b1c6cabdaa43ed6062811b5508ab3dece47a755
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6795
Reviewed-by: Armin Le Grand <armin.legrand@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit e67458a9b769fe7a3a7ee0739ed6d5c46dbc0692)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211734
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-08 08:56:42 +02:00
JebediahKermanIII bc7260827a tdf#173555 make function in _xpoly/b2dpolygontools a real warp.
The old implementation did a standard bilinear/"quad" warp on... the
Bezier control points.

That's not correct. A much better approximation of warping the points on
the curve itself can be achieved by first subdividing the curve into
smaller segments over which the bilinear warp is closer to affine. So,
the error is lower. Why did I do this? Because the grid pattern
indicates it's a bilinear warp and I was very confused when it wasn't.

Change-Id: I9478007c8662455ddbb56fa9d7e6dff425c8e718
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210921
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2026-10-08 06:54:56 +02:00
Michael Weghorn b25df6df3f svx: Port ExtrusionDirectionWindow from ValueSet to weld::IconView
Port the widget to select the extrusion direction from using
a ValueSet widget to using weld::IconView.

This helps to be more consistent with other platform/toolkit
widgets and reduces custom widget logic.

Adjust indices used to account for the fact that
weld::IconView indices are 0-based while the ValueSet ones
are 1-based.

The popup can be triggered like this:

* open attachment 175894 from tdf#145296
* make sure the "3D-Settings" toolbar is enabled
  in "View" -> "Toolbars" -> "3D-Settings"
* select the extruded shape
* press the "Direction" button in the "3D-Settings"
  toolbar

Change-Id: I045bd1d605b0f5bb5c4ad7eeb3247e50356b39b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211907
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:51:46 +02:00
Michael Weghorn 8e1c047cf7 svx: Resave directionwindow.ui with glade 3.40
The popup can be triggered like this:

* open attachment 175894 from tdf#145296
* make sure the "3D-Settings" toolbar is enabled
  in "View" -> "Toolbars" -> "3D-Settings"
* select the extruded shape
* press the "Direction" button in the "3D-Settings"
  toolbar

Change-Id: If9c59a5d2e1d5232a909a4ad8a9e9e6086149ec5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211906
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:51:35 +02:00
Michael Weghorn b08518a14a svx: Drop ExtrusionDirectionWindow::maImgDirection only used in ctor
No need to store the images in a class member as they're
only used once in the ctor when inserting items into
the ValueSet. Just use a local variable and create the
images in the existing loop that inserts the items.

Change-Id: Ifa6722a88f97aac35e1b3c17ee9db7606c1ef001
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211905
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:51:08 +02:00
Michael Weghorn 0bf31b7f4c svx: Port ExtrusionLightingWindow from ValueSet to weld::IconView
Port the widget to select the lighting from using
a ValueSet widget to using weld::IconView.

This helps to be more consistent with other platform/toolkit
widgets and reduces custom widget logic.

Adjust indices used to account for the fact that
weld::IconView indices are 0-based while the ValueSet ones
are 1-based.

The popup can be triggered like this:

* open attachment 175894 from tdf#145296
* make sure the "3D-Settings" toolbar is enabled
  in "View" -> "Toolbars" -> "3D-Settings"
* select the extruded shape
* press the "Lighting" button in the "3D-Settings"
  toolbar

Change-Id: I28d86251b70149574535dc7b583660dbe42e9a0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211903
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:50:48 +02:00
Michael Weghorn 1050ed2e56 svx: Resave lightingwindow.ui with glade 3.40
The popup can be triggered like this:

* open attachment 175894 from tdf#145296
* make sure the "3D-Settings" toolbar is enabled
  in "View" -> "Toolbars" -> "3D-Settings"
* select the extruded shape
* press the "Lighting" button in the "3D-Settings"
  toolbar

Change-Id: I195d1d7973b12541c7296433324b67a19dcd8021
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211902
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:50:39 +02:00
Michael Weghorn f3df5034a9 svx: Resave extrustiondepthdialog.ui with glade 3.40
The dialog can be triggered like this:

* open attachment 175894 from tdf#145296
* make sure the "3D-Settings" toolbar is enabled
  in "View" -> "Toolbars" -> "3D-Settings"
* select the extruded shape
* press the "Depth" button in the "3D-Settings"
  toolbar and select "Custom"

Change-Id: Ia7da2d663569f733451a692a0a6201cc19b5fe9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211900
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:50:16 +02:00
Michael Weghorn 0e206454b1 svtools: Drop now unused WB_NAMEFIELD logic from ValueSet
The last case where that style flag was set was ported
away from ValueSet to use weld::IconView instead in earlier
commit

    Change-Id: I1c23a305322105608d0152bcd0b0fa195be14eff
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Oct 6 11:48:21 2026 +0200

        cui: Port Callout tab page from ValueSet to weld::IconView

Therefore, drop the logic in ValueSet handling that
flag, to simplify the code.

This also means that the `pItem` param for ValueSet::ImplDrawSelect
is now unused, so drop that one, too.

Change-Id: I0150e699602a625874e5a09b8df38110f52c0c03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211898
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:49:55 +02:00
Michael Weghorn 0cda587b29 svx: Set slot ID for DefaultShapesPanel IconView item ID
Following

    Change-Id: I3cdb85a966693514521637f672255ba086b9eb19
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Oct 6 09:33:08 2026 +0200

        svx: Port shapes panel from ValueSet to weld::IconView

, stop storing the slot IDs/UNO commands corresponding to the
items in the icon views in DefaultShapesPanel in a map and
instead store them as the ID of the items directly in the
weld::IconView, which simplifies the logic a bit.

Change-Id: I97643abd64436cf106b88f835edf6e5c8fb5f7c3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211857
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:46:30 +02:00
Michael Weghorn 969a6481a4 svx: Port shapes panel from ValueSet to weld::IconView
Port the widgets to select shapes to insert in the
Draw/Impress "Shapes" sidebar panel from using a ValueSet
widget to using weld::IconView.

This helps to be more consistent with other platform/toolkit
widgets and reduces custom widget logic.

Adjust indices used to account for the fact that
weld::IconView indices are 0-based while the ValueSet ones
are 1-based.

The UI can be triggered like this:

* start Impress
* open the sidebar
* switch to the "Shapes" sidebar deck

Change-Id: I3cdb85a966693514521637f672255ba086b9eb19
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211856
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:46:20 +02:00
Michael Weghorn 30e7c4110b svx: Reduce scope of local variables
Change-Id: I5252cb01439e071211567e7c8e5cfc5ef1e67e5b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211855
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:46:03 +02:00
Michael Weghorn f8055586e7 svx: Iterate over map elements once instead of twice
Instead of iterating over the DefaultShapesPanel::m_aShapesSetMap
elements twice, do so only once and just do everything that needs to be done
for each of the elements right away.

Change-Id: I0b774ccbed7e5110f57d0ce6cc6cf2382a6b923e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211854
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:45:45 +02:00
Michael Weghorn 2bfea7889c svx: Merge DefaultShapesPanel::{Initialize,populateShapes}
Merge DefaultShapesPanel::populateShapes into its only caller,
DefaultShapesPanel::Initialize.

This will also allow to merge the two for loops into one in an upcoming
commit.

Change-Id: I404d056424cc80bda76332543deee6ff287094ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211853
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:45:28 +02:00
Michael Weghorn 153b3d0aa3 svx: Use '#pragma once in DefaultShapesPanel.hxx
Change-Id: Idaff017b86c9a095f14b00df38febe1e2024cc01
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211852
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:45:08 +02:00
Justin Luth 72d2a706a3 tdf#173510 sc: prevent crash when table style deselected
This fixes a 26.8 regression from
commit 4fb31ea85f.

Format - AutoFormat Styles and Ctrl-click to de-select the style.

Change-Id: I94961ec11932d76fc945fbb11031f22174111459
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211929
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-10-07 13:20:15 +02:00
Justin Luth 327a555d56 tdf#173510 svx: update preview when table style is de-selected
This fixes a 26.8 regression from
commit 4fb31ea85f

Change-Id: Ifbd749eccbf6a5bb5f292100d0d16c6eb9246109
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211926
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-10-07 04:09:57 +02:00
Justin Luth f74731de65 tdf#173510 svx: prevent a third crash when table style deselected
This fixes a 26.8 regression from
commit 4fb31ea85f.

It looks like it was a mistake to not include it here in the first place,
but doubly so when a table style is deselected (via Ctrl-click).
In that case, if the user pressed the edit button,
LibreOffice would crash because of an attempted -1 index access.

Change-Id: I98038dad3693fba26d17022bec75bd201340c1cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211923
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-10-07 04:07:44 +02:00
Justin Luth c08511c560 tdf#173510 svx: prevent another crash when table style deselected
This fixes a regression from
commit 4fb31ea85f

When you de-select a table style in Table - AutoFormat Styles,
then the checkboxes below were left enabled despite a -1 index,
so the rename and renew buttons would crash.

Change-Id: I3c9601476f874116e43387ee40e934932a44b311
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211922
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2026-10-07 04:07:13 +02:00
Justin Luth dc7f772380 tdf#173510 svx: prevent crash when table style deselected
This fixes a 26.8 regression from
commit 4fb31ea85f.

When Table - AutoFormat styles has the style de-selected (via a Ctrl-click),
then SelFormatHdl would call UpdateChecks and crash
when GetData tried to access an index of -1.

Change-Id: I2302436d19ef99584cdb7c4e41738894756e9e8a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211921
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
2026-10-07 04:03:01 +02:00
Andrea Gelmini 7f03b3cf68 Remove duplicated include
Change-Id: I713d9f077a83eb9a64fc1a732caddf9c42bd7bef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211815
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2026-10-05 23:14:19 +02:00
Michael Weghorn 9a61140c32 svx: Switch to weld::TreeView in LineWidthPopup
Instead of using a custom ValueSet subclass to
draw images and text next to them for selection
in the line width popup, use a weld::TreeView with
two columns: one for the image, and one for the text.

This is similar to what

      commit b185d34642
      Author: Michael Weghorn <m.weghorn@posteo.de>
      Date:   Fri Nov 28 14:12:04 2025 +0100

          tdf#168120 sc: Switch to weld::TreeView in CellLineStyleControl

did elswhere.

Adjust indices used to account for the fact that
weld::TreeView indices are 0-based while the ValueSet ones
are 1-based.

The special "Last custom value" entry so far was
using two separate images, depending on whether
or not it was enabled/sensitive or not: If it is
disabled, a greyed out variant of the image was used.
With the switch to weld::TreeView, leave that up
to the TreeView by simply enabling/disabling the
corresponding row using weld::TreeView::set_sensitive
for the corresponding row.

Drop the now unused LineWidthValueSet.

This switch to weld::TreeView reduces custom widget
logic and custom drawing and makes this more consistent
with other widgets used elsewhere (e.g. like for the
one mentioned in the commit above, the usual font
is used now as well, and it also aligns the behavior
more with that one.)

The popup for configuring the line thickness that uses
this code can be triggered like this:

* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
  "Thickness" button/combobox

Change-Id: I423e80bba9e81a98e80652f6486970d40286362e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211735
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-05 22:59:44 +02:00
Vissarion Fisikopoulos 34f425f8b8 tdf#170190 svx: keep the operator of every condition in form filter text
When a filter condition on a column has more than one part, e.g.
"LIKE A* AND LIKE *e", only the first part was converted back to UI text
with its operator; the rest were appended as bare values
("LIKE A* AND *e"). Convert all parts the same way and add a UITest.

Change-Id: Id6a2ecd5593003c3a9fcef1955f2c672ec1ed520
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211425
Tested-by: Jenkins
Reviewed-by: Vissarion Fisikopoulos <vfisikop@libreoffice.org>
2026-10-05 09:32:43 +02:00
Armin Le Grand (collabora) 5519a3d407 Correct StyleSheet handling when cloning to different Model II
Until now the 'local' StyleSheet got set, but that may
not be the same as the original. It was/gets identified just
by searching by name and type, not comparing content.

What to do? We could...

(a) the Style-Friendly way:
 - check if StyleSheet is identical
  - if not, create a new in-between StyleSheet hosting missing Items
  - if yes, use, done.

(b) the pragmatic/practical way:
 - Just hard-attribute the Items that are detected as different
   similar to what BurnInStyleSheetAttributes does/did, but only
   for a view differing Items

(b) is the most simple for now, but will lead to more hard
attributes. The other possibilities will be better in the
long term. For now, I will use (b).

Note that there are more cases in that VERY complex and grown
stuff emerging from SdDrawDocument::PasteBookmarkAsPage. More
things will need to be fixed, see this as a 1st step.

Needed to adapt postProcessAfterCloneToDifferentModel due to
UT testTdf96206 failing, see comment there for details.

That 1st implementation showed weaknesses with those Items
critical and only on MasterPages, so decided to give up on
that and implement ContentCompare to SdPage::Equals. That
was easier than thought: No parameter needed, only used by
InsertBookmarkAsPage_FindDuplicateLayouts::operator(). Thus,
SdPage::Equals needs no change, just SdrObject::Equals.

Due to still problems with Items corrected in Objects on
MasterPages I will for now exclude this.

Could now isolate remaining problems, these are defaults
and/or PresObj things on MasterPages. Important is that I can
completely correct all Items for all Objects in
postProcessAfterCloneToDifferentModel. I can react to these
false-positives in the ContentCompare in SdrObject::Equals.

Signed-off-by: Armin Le Grand (collabora) <Armin.LeGrand@collabora.com>
Change-Id: I10e17c8d6a893dbe92ab716182f07bafce1f3284
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6595
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Armin Le Grand <armin.legrand@collabora.com>
(cherry picked from commit 92ffaeac04c5c8586006b026f29ce12fba3674f1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211729
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:54 +02:00
Stephan Bergmann 1c0b50766a Fix heap-use-after-free
...as seen once during JunitTest_forms_complex,

> ==2007790==ERROR: AddressSanitizer: heap-use-after-free on address 0x7ccbfe8b3a38 at pc 0x7f5c5361ed51 bp 0x7b5bd4ac7420 sp 0x7b5bd4ac7418
> READ of size 2 at 0x7ccbfe8b3a38 thread T8
>  #0 in SfxItemPool::IsInRange(unsigned short) const at engine/include/svl/itempool.hxx:331:66
>  #1 in SfxItemPool::getTargetPool(unsigned short) const at engine/svl/source/items/itempool.cxx:452:9
>  #2 in SfxItemPool::CheckItemInfoFlag(unsigned short, unsigned short) const at engine/svl/source/items/itempool.cxx:461:26
>  #3 in SfxItemPool::NeedsSurrogateSupport(unsigned short) const at engine/include/svl/itempool.hxx:343:18
>  #4 in SfxItemSet::checkRemovePoolRegistration(SfxPoolItem const*) at engine/svl/source/items/itemset.cxx:384:20
>  #5 in SfxItemSet::ClearSingleItem_PrepareRemove(SfxPoolItem const*) at engine/svl/source/items/itemset.cxx:364:5
>  #6 in SfxItemSet::ClearAllItemsImpl() at engine/svl/source/items/itemset.cxx:443:9
>  #7 in SfxItemSet::~SfxItemSet() at engine/svl/source/items/itemset.cxx:318:5
>  #8 in std::_Optional_payload_base<SfxItemSet>::_M_destroy() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/optional:305:23
>  #9 in std::_Optional_payload_base<SfxItemSet>::_M_reset() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/optional:341:4
>  #10 in std::_Optional_payload<SfxItemSet, false, false, false>::~_Optional_payload() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/optional:464:57
>  #11 in std::_Optional_base<SfxItemSet, false, false>::~_Optional_base() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/optional:488:12
>  #12 in std::optional<SfxItemSet>::~optional() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/optional:781:11
>  #13 in sdr::properties::DefaultProperties::~DefaultProperties() at engine/svx/source/sdr/properties/defaultproperties.cxx:92:50
>  #14 in sdr::properties::AttributeProperties::~AttributeProperties() at engine/svx/source/sdr/properties/attributeproperties.cxx:221:9
>  #15 in sdr::properties::TextProperties::~TextProperties() at engine/svx/source/sdr/properties/textproperties.cxx:79:9
>  #16 in sdr::properties::RectangleProperties::~RectangleProperties() at engine/svx/source/sdr/properties/rectangleproperties.cxx:38:9
>  #17 in sdr::properties::RectangleProperties::~RectangleProperties() at engine/svx/source/sdr/properties/rectangleproperties.cxx:37:9
>  #18 in std::default_delete<sdr::properties::BaseProperties>::operator()(sdr::properties::BaseProperties*) const at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/unique_ptr.h:92:2
>  #19 in std::__uniq_ptr_impl<sdr::properties::BaseProperties, std::default_delete<sdr::properties::BaseProperties>>::reset(sdr::properties::BaseProperties*) at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/unique_ptr.h:204:4
>  #20 in std::unique_ptr<sdr::properties::BaseProperties, std::default_delete<sdr::properties::BaseProperties>>::reset(sdr::properties::BaseProperties*) at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/unique_ptr.h:530:7
>  #21 in SdrObject::~SdrObject() at engine/svx/source/svdraw/svdobj.cxx:589:18
>  #22 in SdrAttrObj::~SdrAttrObj() at engine/svx/source/svdraw/svdoattr.cxx:42:28
>  #23 in SdrTextObj::~SdrTextObj() at engine/svx/source/svdraw/svdotext.cxx:156:1
>  #24 in SdrRectObj::~SdrRectObj() at engine/svx/source/svdraw/svdorect.cxx:69:25
>  #25 in SdrUnoObj::~SdrUnoObj() at engine/svx/source/svdraw/svdouno.cxx:223:1
>  #26 in FmFormObj::~FmFormObj() at engine/svx/source/form/fmobj.cxx:120:1
>  #27 in FmFormObj::~FmFormObj() at engine/svx/source/form/fmobj.cxx:113:1
>  #28 in SdrObject::release() at engine/svx/source/svdraw/svdobj.cxx:612:9
>  #29 in rtl::Reference<SdrObject>::clear() at engine/include/rtl/ref.hxx:181:19
>  #30 in SvxShape::~SvxShape() at engine/svx/source/unodraw/unoshape.cxx:199:21
>  #31 in SvxShapeText::~SvxShapeText() at engine/svx/source/unodraw/unoshape.cxx:3828:1
>  #32 in SvxShapeControl::~SvxShapeControl() at engine/svx/source/unodraw/unoshap2.cxx:393:1
>  #33 in SvxShapeControl::~SvxShapeControl() at engine/svx/source/unodraw/unoshap2.cxx:392:1
>  #34 in cppu::OWeakObject::release() at engine/cppuhelper/source/weak.cxx:231:9
>  #35 in cppu::OWeakAggObject::release() at engine/cppuhelper/source/weak.cxx:293:22
>  #36 in cppu::WeakAggImplHelper12<com::sun::star::drawing::XShape, com::sun::star::lang::XComponent, com::sun::star::beans::XPropertySet, com::sun::star::beans::XMultiPropertySet, com::sun::star::beans::XPropertyState, com::sun::star::lang::XUnoTunnel, com::sun::star::container::XNamed, com::sun::star::drawing::XGluePointsSupplier, com::sun::star::container::XChild, com::sun::star::lang::XServiceInfo, com::sun::star::document::XActionLockable, com::sun::star::beans::XMultiPropertyStates>::release() at engine/include/cppuhelper/implbase12.hxx:161:31
>  #37 in SvxShapeText::release() at engine/include/svx/unoshape.hxx:357:17
>  #38 in SvxShapeControl::release() at engine/include/svx/unoshape.hxx:508:21
>  #39 in freeUnoInterfaceProxy at engine/bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:42:19
>  #40 in (anonymous namespace)::s_stub_defenv_revokeInterface(__va_list_tag (*) [1]) at engine/cppu/source/uno/lbenv.cxx:369:17
>  #41 in s_environment_invoke_v(_uno_Environment*, _uno_Environment*, void (*)(__va_list_tag (*) [1]), __va_list_tag (*) [1]) at engine/cppu/source/uno/EnvStack.cxx:292:9
>  #42 in uno_Environment_invoke_v at engine/cppu/source/uno/EnvStack.cxx:310:5
>  #43 in uno_Environment_invoke at engine/cppu/source/uno/EnvStack.cxx:318:5
>  #44 in (anonymous namespace)::defenv_revokeInterface(_uno_ExtEnvironment*, void*) at engine/cppu/source/uno/lbenv.cxx:423:5
>  #45 in releaseProxy at engine/bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:78:9
>  #46 in com::sun::star::uno::UnoInterfaceReference::~UnoInterfaceReference() at engine/include/uno/dispatcher.hxx:93:9
>  #47 in binaryurp::Bridge::releaseStub(rtl::OUString const&, com::sun::star::uno::TypeDescription const&) at engine/binaryurp/source/bridge.cxx:509:1
>  #48 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny>>*) const at engine/binaryurp/source/incomingrequest.cxx:138:18
>  #49 in binaryurp::IncomingRequest::execute() const at engine/binaryurp/source/incomingrequest.cxx:79:26
>  #50 in request at engine/binaryurp/source/reader.cxx:86:9
>  #51 in cppu_threadpool::JobQueue::enter(void const*, bool) at engine/cppu/source/threadpool/jobqueue.cxx:100:17
>  #52 in cppu_threadpool::ORequestThread::run() at engine/cppu/source/threadpool/thread.cxx:165:31
>  #53 in threadFunc at engine/include/osl/thread.hxx:175:15
>  #54 in osl_thread_start_Impl(void*) at engine/sal/osl/unx/thread.cxx:240:9
>
> 0x7ccbfe8b3a38 is located 184 bytes inside of 648-byte region [0x7ccbfe8b3980,0x7ccbfe8b3c08)
> freed by thread T23 here:
>  #0 in operator delete(void*, unsigned long) at ~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:187:3
>  #1 in SdrItemPool::~SdrItemPool() at engine/svx/source/svdraw/svdattr.cxx:514:1
>  #2 in salhelper::SimpleReferenceObject::release() at engine/include/salhelper/simplereferenceobject.hxx:61:13
>  #3 in rtl::Reference<SfxItemPool>::~Reference() at engine/include/rtl/ref.hxx:116:22
>  #4 in SdrModel::~SdrModel() at engine/svx/source/svdraw/svdmodel.cxx:275:1
>  #5 in FmFormModel::~FmFormModel() at engine/svx/source/form/fmmodel.cxx:69:1
>  #6 in SdDrawDocument::~SdDrawDocument() at engine/sd/source/core/drawdoc.cxx:418:1
>  #7 in sd::DrawDocShell::~DrawDocShell() at engine/sd/source/ui/docshell/docshell.cxx:192:9
>  #8 in sd::GraphicDocShell::~GraphicDocShell() at engine/sd/source/ui/docshell/grdocsh.cxx:57:38
>  #9 in sd::GraphicDocShell::~GraphicDocShell() at engine/sd/source/ui/docshell/grdocsh.cxx:57:37
>  #10 in cppu::OWeakObject::release() at engine/cppuhelper/source/weak.cxx:231:9
>  #11 in rtl::Reference<SfxObjectShell>::~Reference() at engine/include/rtl/ref.hxx:116:22
>  #12 in IMPL_SfxBaseModel_DataContainer::~IMPL_SfxBaseModel_DataContainer() at engine/sfx2/source/doc/sfxbasemodel.cxx:268:5
>  #13 in void std::destroy_at<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/stl_construct.h:88:15
>  #14 in void std::_Destroy<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/stl_construct.h:164:7
>  #15 in void std::allocator_traits<std::allocator<void>>::destroy<IMPL_SfxBaseModel_DataContainer>(std::allocator<void>&, IMPL_SfxBaseModel_DataContainer*) at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/alloc_traits.h:863:4
>  #16 in std::_Sp_counted_ptr_inplace<IMPL_SfxBaseModel_DataContainer, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/shared_ptr_base.h:650:2
>  #17 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/shared_ptr_base.h:423:8
>  #18 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/shared_ptr_base.h:1100:11
>  #19 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/shared_ptr_base.h:1574:31
>  #20 in std::__shared_ptr<IMPL_SfxBaseModel_DataContainer, (__gnu_cxx::_Lock_policy)2>::reset() at ~/gcc/inst/lib/gcc/x86_64-pc-linux-gnu/17.0.0/../../../../include/c++/17.0.0/bits/shared_ptr_base.h:1692:9
>  #21 in SfxBaseModel::dispose() at engine/sfx2/source/doc/sfxbasemodel.cxx:802:13
>  #22 in SdXImpressDocument::dispose() at engine/sd/source/ui/unoidl/unomodel.cxx:5515:19
>  #23 in SfxBaseModel::close(bool) at engine/sfx2/source/doc/sfxbasemodel.cxx:1544:5
>  #24 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) at engine/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:87:5
>  #25 in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) at engine/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:230:13
>  #26 in unoInterfaceProxyDispatch at engine/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:410:13
>  #27 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny>>*) const at engine/binaryurp/source/incomingrequest.cxx:236:13
>  #28 in binaryurp::IncomingRequest::execute() const at engine/binaryurp/source/incomingrequest.cxx:79:26
>  #29 in request at engine/binaryurp/source/reader.cxx:86:9
>  #30 in cppu_threadpool::JobQueue::enter(void const*, bool) at engine/cppu/source/threadpool/jobqueue.cxx:100:17
>  #31 in cppu_threadpool::ORequestThread::run() at engine/cppu/source/threadpool/thread.cxx:165:31
>  #32 in threadFunc at engine/include/osl/thread.hxx:175:15
>  #33 in osl_thread_start_Impl(void*) at engine/sal/osl/unx/thread.cxx:240:9

Change-Id: Ib38eb730f9178976d4432f77857b4f09ebfbdbcf
Signed-off-by: Stephan Bergmann <stephan.bergmann@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6296
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
(cherry picked from commit 7a151cb95d66be93ef2a2687d1ff55ca37daa410)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211728
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:33 +02:00
Xisco Fauli 7003eb6fc6 fix headers
Change-Id: Ia2732cc041367bc113654bc424ea6621f3961e9f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211724
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-05 08:52:04 +02:00
Michael Weghorn 19da11d8f9 svx: Resave defaultshapespanel.ui with glade 3.40
This is used for the "Default" section in the
Impress/Draw "Shapes" sidebar deck.

Change-Id: I783ce750b98a112f2aa3c5a1c8f6fe86e2402d03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211733
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
2026-10-05 08:48:33 +02:00
Michael Weghorn 97bbfedf42 svx: Use OUString literals in SvxShapeCommandsMap ctor
Change-Id: Ia409297982b341fc3e1562378339b49bb7f88078
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211732
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
2026-10-05 08:48:20 +02:00
Michael Weghorn d4867f33e9 svx: Use vector instead of map that only uses element index as key
The std::map<sal_uInt16, OUString> members of SvxShapeCommandsMap
use ascending integers for the key, i.e. keys start with 0
and go up to N-1 if N is the number of elements.

Vector elements can be accessed by index as well, so switch to
using std::vector to simplify the logic.

To be safe, add an index check in
DefaultShapesPanel::ShapeSelectHdl
(std::map::operator[]() would implicitly insert a new
element when called with a non-existing key.) and
switch to std::vector::at() that performs bounds checks.

Change-Id: I0afc8d53a98d529b0d30344fccedd2167b5f595c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211731
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-05 08:48:09 +02:00
Michael Weghorn 0e696c7ec5 svx: Don't use 'p' prefix for non-pointer members
The `p` naming prefix is for pointers. Don't use it for
non-pointer members, to avoid confusion.

Change-Id: I8fa5faee5af10d69e5096036dd939bd2b22749ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211730
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-05 08:48:00 +02:00
Michael Weghorn cf80890d16 svx: Drop commented code from GalleryBrowser ctor
commit 09c6204b63
    Date:   Thu Feb 29 17:15:23 2024 +0100

        tdf#81880 Search the Gallery

dropped the `maThemeSelectionHandler` member, but left this
code using it, but commented out. Drop it, as it's no longer
relevant.

Change-Id: I50c8f255a2eb993497aafe20b5bafab18054b682
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211743
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-04 23:12:25 +02:00
Michael Weghorn 6d9b8d423a svx: Switch GalleryPreview::mpParent to reference
... and rename accordingly. This makes clear it's
always non-null.

Change-Id: I33b68dcf3f6cff8680249671121efe25333bbd61
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211742
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-04 23:11:58 +02:00
Michael Weghorn b52914ff4e svx: Drop superfluous local var in GalleryPreview::KeyInput
Just use GalleryPreview::mpParent directly.

Change-Id: I2ea18576496b2fc532b83502bd386579caa55a5d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211741
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-04 23:11:47 +02:00
Michael Weghorn b97af65b5d svx: Switch GalleryIconView::mpParent to reference
... and rename accordingly. This makes clear it's
always non-null.

Change-Id: I95774bd2e4b6e830f6550f0277217489848be068
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211740
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-04 23:11:39 +02:00
Andrea Gelmini 3bc01f0c99 Fix typos
Change-Id: I3fb0e9e9d2b16195bf9445d01da8b5936c148544
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211770
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-10-03 10:23:57 +02:00
Michael Weghorn 9c385138fd svx: Draw filled rect at once instead of one line at a time
Simplify drawing a line of N pixels height by drawing a
filled rectangle of that height, instead of drawing N lines
with a height of 1 pixel each.

The popup for configuring the line thickness that uses
this code can be triggered like this:

* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
  "Thickness" button/combobox

Change-Id: Ie5f3bb7c25cfddaf17f3b181f6d0cac4723e1459
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211711
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 11:22:00 +02:00
Michael Weghorn d5c619d39f svx: Don't calculate the same Y coord twice
`aLineEnd` uses the same calculation for the Y coordinate as `aLineStart`.
Simplify and make that more obvious by reusing the already calculated
one from `aLineStart`

Change-Id: I7e12c6fcf526d50dcd6d1d9dc19805cc01837c2e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211710
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 11:21:35 +02:00
Michael Weghorn da48b6c1f2 svx: Replace LineWidthValueSet::SetSelItem
Inline the logic when called with a non-zero param
to the only caller that passes a non-zero value.

Rename to LineWidthValueSet::UnselectItems and stop
passing any param for the callers previously passing
a zero parameter.

This will also make it a bit more straight-forward
to port away from the custom LineWidthValueSet to using
a weld::TreeView in an upcoming commit.

The popup for configuring the line thickness that uses
this code can be triggered like this:

* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
  "Thickness" button/combobox

Change-Id: Ieed1323cd8d82c498a676c4408754880f61a8fcd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211709
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-02 11:21:28 +02:00
Michael Weghorn 3637c687b5 svx: Stop double-tracking of selected entry in LineWidthValueSet
Instead of tracking the currently selected entry via
LineWidthValueSet::nSelItem in addition to using the
selection logic of the ValueSet base class, drop that
separate member and use the existing ValueSet logic
to determine what item is selected.

This will also make it a bit more straight-forward
to port away from the custom LineWidthValueSet to using
a weld::TreeView in an upcoming commit.

The popup for configuring the line thickness that uses
this code can be triggered like this:

* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
  "Thickness" button/combobox

Change-Id: Ie45eb1233b70c7a5ff814ade3fde774e2eb983b7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211708
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 11:21:21 +02:00
Michael Weghorn 13730b3da0 svx: Resave floatinglineproperty.ui with glade 3.40
This is used for the popup that allows configuring the
line thickness which can be triggered like this:

* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
  "Thickness" button/combobox

Change-Id: Ib06e95f19d33e983c9641e920572cd57a3272b5a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211707
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 11:21:04 +02:00
Michael Weghorn d01ab87ffb svx: Drop commented code in LineWidthValueSet::UserDraw
It's commented out ever since it was added in

    commit d02f75a8c3
    Date:   Wed Apr 10 08:20:16 2013 +0000

        Resolves: #i121420# merge sidebar feature

Change-Id: I90d9c52eb0b8ed3eea53731c9aad92390e7ab853
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211706
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 11:20:59 +02:00
Michael Weghorn d16199baa9 tdf#173695 svx: Set fixed height for ColorWindow's icon view
Following up to

    commit 6296615b8d (master-android)
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Sep 29 14:20:18 2026 +0200

        tdf#173695 svx: Ensure minimum height for ColorWindow

and

    commit 5c53840b57
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Sep 30 10:15:59 2026 +0200

        tdf#173695 svx: Increase min height for ColorWindow icon view to 250

, switch from using a minimum height of 250 to using
that as the fixed height.

The idea of using a minimum size was to still allow
using more space for the ColorWindow when a palette
with a lot of colors is initially selected.

However, the fact that the size of the popup differs
depending on what palette is initiallly selected is
considered confusing/as a bug, so instead use a fixed
height after all, see discussion in tdf#173695 for
more details/background.

A fixed height was also used when SvxColorValueSet
was still used in ColorWindow, i.e. before

    commit a4d5983b4e
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri Jun 5 11:48:54 2026 +0200

        tdf#130857 Port ColorWindow from SvxColorValueSet to ColorIconView

By then, the size could more easily be optimized to
just fit the colors of the "Standard" palette. With
weld::IconView being used now, the exact spacing can
differ depending on what toolkit/theme/style is used, see
the above-mentioned 5c53840b57
for more details.

Which properties are evaluated in the .ui file
depends on the weld implementation.
While the GTK implementation evaluates
GtkScrolledWindow::min-content-height
and GtkScrolledWindow::max-content-height, the vcl one
doesn't do that. Also set GtkWidget::height-request so
the fixed height also applies for that one.

Change-Id: I7c49218872610bcf345b35849d664f85d29fdc47
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211678
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-02 09:48:33 +02:00
Noel Grandin 212d17f7ea add a non-const GetEditEngine() method to Outliner
to avoid const-casting all over the place

Change-Id: I75f3442341894dbe4e12cc7995669dc7f3bf63f7
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13354
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 318e2cf839c6311d4a69572b4534f554bdda3f96)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211604
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-10-01 09:01:52 +02:00
Michael Weghorn 353f378196 svx a11y: Work around linker issue LNK2005 in MSVC build
Add an intermediate OAccessible subclass to avoid this
linker error otherwise seen in my local --with-visual-studio=2022
build on Windows:

    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual class com::sun::star::uno::Any __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::queryInterface(class com::sun::star::uno::Type const &)" (?queryInterface@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAA?AVAny@uno@star@sun@com@@AEBVType@4567@@Z) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::acquire(void)" (?acquire@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAAXXZ) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual void __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::release(void)" (?release@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAAXXZ) already defined in GraphCtlAccessibleContext.o
    icomphelper.lib(comphelper.dll) : error LNK2005: "public: virtual class com::sun::star::uno::Sequence<class com::sun::star::uno::Type> __cdecl cppu::ImplInheritanceHelper<class comphelper::OAccessible,class com::sun::star::accessibility::XAccessibleSelection>::getTypes(void)" (?getTypes@?$ImplInheritanceHelper@VOAccessible@comphelper@@VXAccessibleSelection@accessibility@star@sun@com@@@cppu@@UEAA?AV?$Sequence@VType@uno@star@sun@com@@@uno@star@sun@com@@XZ) already defined in GraphCtlAccessibleContext.o
       Creating library C:/Users/mwegh/development/git/libreoffice/workdir/LinkTarget/Library/isvx.lib and object C:/Users/mwegh/development/git/libreoffice/workdir/LinkTarget/Library/isvx.exp
    C:\Users\mwegh\development\git\libreoffice\instdir\program\svxlo.dll : fatal error LNK1169: one or more multiply defined symbols found

This is somewhat similar to

    commit f5667d1e3b
    Date:   Thu Jun 26 18:25:31 2025 +0500

        Fix error LNK2005 in MSVC after recent sd changes

Change-Id: I8f01ea095d0a196c61521f92ea9ec76217941aeb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211618
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-30 18:57:57 +02:00
Michael Weghorn 47932ec399 svx a11y: Stop mentioning no more existing AccessibleContext service
That UNO service was dropped in

    commit bcd90334e8
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Sep 2 10:31:59 2026 +0200

        [API CHANGE] a11y: Drop com.sun.star.accessibility.AccessibleContext

, so don't claim to implement it.

Change-Id: I8c569f1db4c05228ba18a2d8e20b96b8712764f3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211617
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 18:57:50 +02:00
Michael Weghorn 5c53840b57 tdf#173695 svx: Increase min height for ColorWindow icon view to 250
Earlier commit

    commit 6296615b8d
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Sep 29 14:20:18 2026 +0200

        tdf#173695 svx: Ensure minimum height for ColorWindow

had ensured a minimum height of 200 pixels for the ColorIconView
in ColorWindow.

As discussed in tdf#173695, increase the minimum height
to 250 pixels which should be sufficient to show all rows of the
"Standard" color palette even if different styles/themes
(when using an actual toolkit like GTK or QT) may result
in slightly different spacing.

Quoting explanation from tdf#173695 comment 5 of why at least 10 rows
should be shown:

> The "Standard" palette does not merely contain 12 hues arranged in 12
> columns; it also uses 9 rows to provide 9 different shades for each hue.
> (The topmost row contains 12 achromatic colours with different
>  brightness values, making 10 rows in total.)
>
> If this were a user-created palette, this might not matter. However,
> since the palettes provided as official presets have a
> two-dimensional structure, I think that preserving that structure
> requires at least the 12 columns × 10 rows that were available
> previously.

Change-Id: Iafee178ceab6ccbbf6d880fa45cd90e3fd81be9d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211601
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-30 14:59:28 +02:00
Michael Weghorn 6296615b8d tdf#173695 svx: Ensure minimum height for ColorWindow
The number of colors displayed in the ColorIconView
in ColorWindow depends on the selected palette.

When the popup is shown for the first time, its
size is calculated based on the size of the
widgets it contains, and the size of the weld::IconView
used for ColorIconView is in turn based on the number
of colors in the initial palette.

If the initial palette has few (or no) colors,
switching to a palette with many colors results
in the need for the weld::IconView to use more
space than previously to show the additional items,
but since the popup doesn't resize, it remains at
its initial size and the selection of colors is
inconvenient or even impossible.

Avoid the problem by ensuring the ColorIconView
has a minimum height of at least 200 pixels.

Before the switch to ColorIconView in

    commit a4d5983b4e
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri Jun 5 11:48:54 2026 +0200

        tdf#130857 Port ColorWindow from SvxColorValueSet to ColorIconView

, the SvxColorValueSet widget in use previously
was always set to a fixed size altogether.

Change-Id: I7b24dd823083891126cf7b4d0ebe1914c1e0cc87
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211565
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-29 17:32:27 +02:00
Noel Grandin f13d47614f reduce CPU cost of updating styles list
we have a background task with a call-stack that looks like

SwStyleSheetIterator::AppendStyleList
SwStyleSheetIterator::First
StyleItemController::DrawEntry
StylesPreviewWindow_Base::GetCachedPreview
StylesPreviewWindow_Base::UpdateStylesList
StylesListUpdateTask::Invoke

And we can avoid iterating repeatedly over the entire pool
by searching by name.
We could be even faster by caching pointers to stylesheets
but that is a more invasive change.

Change-Id: Iec25bb4757440825aec62110d974a5001b0690f7
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/4188
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 0572dc68861e7fd85da43a0b6635af7c5ea3889b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211560
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-29 16:38:54 +02:00
ApurvR20 df52af4eea tdf#90341 Use std::span to clean up excessive const_cast
Changed implementation in EnhancedCustomShapeGeometry from pointer to
std::span, leading to removal of const_cast.

Change-Id: Ic2d768202991eba674275aa4ffe78478f8f6dd27
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210515
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
2026-09-29 10:15:59 +02:00