8543 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
Neil Roberts 99f157a04f linkdlg: Use SvRef::get() instead of &*
Using &* can be problematic if the pointer is null. In this case it
probably doesn’t matter, but using SvRef::get() is probably easier to
understand anyway. This also paves the way for a later compiler plugin
to check for this.

Change-Id: I26aa62d78454d11c9912bdd3e9ab9db2d93293a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211847
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
2026-10-07 19:15:58 +02:00
Andreas Heinisch 7f1231cfec tdf#171416 - Put Link field before Text again in the Hyperlink dialog
Change-Id: I86cabe93386f0c0eafd1821fa4d2d988ccf8a0af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211954
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2026-10-07 17:58:10 +02:00
Michael Weghorn a0e94744f0 tdf#130857 Define widgets in "Callout" tab page in order
Switch the order in which the widgets in the .ui file
are defined so that the order better matches the visual appearance
and logical order, which makes sure that tab focus order with the
Qt-based VCL plugins is correct as well when using native Qt
widgets (SAL_VCL_QT_USE_WELDED_WIDGETS=1), where
focus order is (by default) based on widget creation order.

See

    commit 02692566ad
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Oct 24 17:43:35 2024 +0200

        tdf#130857 optnewdictionarydialog.ui: Define focusable widgets in order

for more background.

The tab page can be triggered like this:

* start Draw
* make sure the "Text" toolbar is enabled in
  "View" -> "Toolbars" -> "Text"
* in that "Text" toolbar, select the "Callouts" shape
  and insert it into the document
* right-click on the newly inserted shape to open the context menu
* activate the "Position and Size" menu entry
* switch to the "Callout" tab

The Python script mentioned in the commit message of

    commit 327679b2fb
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Jul 8 15:50:59 2026 +0200

        tdf#130857 Define widgets in Calc "General" options page in order

was used to reorder the GtkGrid children automatically.

Change-Id: Ice8f6b318f57411bea553311faf45b40cb098b44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211883
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:49:27 +02:00
Michael Weghorn 373ff268bb cui: Port Callout tab page from ValueSet to weld::IconView
Port the widget to select the connector type 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.

Increase the item padding in the .ui file to 18 to
use more space for the individual items, to be more
similar to the previous ValueSet implementation.

The tab page can be triggered like this:

* start Draw
* make sure the "Text" toolbar is enabled in
  "View" -> "Toolbars" -> "Text"
* in that "Text" toolbar, select the "Callouts" shape
  and insert it into the document
* right-click on the newly inserted shape to open the context menu
* activate the "Position and Size" menu entry
* switch to the "Callout" tab

Change-Id: I1c23a305322105608d0152bcd0b0fa195be14eff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211882
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:49:09 +02:00
Michael Weghorn e68422786a Drop unused ValueSet forward declarations
Drop ValueSet forward declarations from headers
not actually using the class.

Forward-declare the class in cui/source/inc/numpages.hxx
which actually uses it, but didn't forward-declare it
or include the header yet, but previously got the forward-declaration
from an included header.

Change-Id: I8876ad47eb362f581aa41ee4a61a85c4093a1dd0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211881
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:48:46 +02:00
Michael Weghorn 5bf5c6e453 cui: Insert actual images right away in SvxCaptionTabPage ctor
Instead of first inserting entries with a dummy image
and then setting the actual images using
ValueSet::SetItemImage, just insert the actual images
when inserting the entries right away.

Change-Id: I24b3e2a3a1e86a72eb99755c31602ac96845c9e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211880
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-10-07 17:48:32 +02:00
Michael Weghorn 3281774c95 cui: Resave calloutpage.ui with glade 3.40
This UI file is used for the "Callout" tab page
that can be triggered like this:

* start Draw
* make sure the "Text" toolbar is enabled in
  "View" -> "Toolbars" -> "Text"
* in that "Text" toolbar, select the "Callouts" shape
  and insert it into the document
* right-click on the newly inserted shape to open the context menu
* activate the "Position and Size" menu entry
* switch to the "Callout" tab

Change-Id: I93118b94d5e7f63322df88ff1e6057cdc9b10ecc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211877
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:47:45 +02:00
Michael Weghorn a6aede6c5f cui: Add missing weld::ComboBox include in labdlg.hxx
Without this, Qt Creator shows this error:

    labdlg.hxx:60:27: No member named 'ComboBox' in namespace 'weld' (fix available)

Change-Id: Ica26b748976c0f034c490c92a16b1d393191529e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211876
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:47:34 +02:00
Michael Weghorn 0b69ad0583 cui: Drop SvxCaptionTabPage::m_aBmpCapTypes only used in ctor
There's no need to store the images in an array. Just
create the images when inserting them into the ValueSet instead.

Change-Id: I44506a80e461c7e3abfa2b8e059bd71757f1a731
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211875
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:47:24 +02:00
Michael Weghorn 4893aa3f22 cui: Merge SvxCaptionTabPage::FillValueSet into ctor
Merge the logic into the only caller, the
SvxCaptionTabPage ctor, which already directly inserts
items into the ValueSet as well.

Change-Id: Iab3264c8f4679eea9e6d3538e64c81704fbcb026
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211874
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-10-07 17:47:04 +02:00
Neil Roberts dfbde789ee tdf#173819 Remove another checkbox indeterminate state when becoming active
The split compound words checkbox in the edit style dialog is initially
set to an indeterminate state when the alignment is something other than
justify, presumably because its value is irrelevant in that case.
However, if the the user then sets the alignment to justify then nothing
was removing the that state. With the GTK plugin it was then not
possible to change the value. With the gen plugin however you could
still click it to give it a value.

This patch just makes the button inactive whenever justify is selected.
Weld then also removes the indeterminate state in that case.

This patch is similar to the previous one that does the same thing for
the paragraph composer checkbox. It is split into a separate patch to
make it easier to backport the other patch to the 26.8 branch.

Change-Id: Ib55b7a9675ba2c8234e758585d5933cbd39bfdd7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211677
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: László Németh <nemeth@numbertext.org>
2026-10-05 10:33:22 +02:00
Neil Roberts 8008829465 tdf#173819 Remove checkbox indeterminate state when becoming active
The paragraph composer checkbox in the edit style dialog is initially
set to an indeterminate state when the alignment is something other than
justify, presumably because its value is irrelevant in that case.
However, if the the user then sets the alignment to justify then nothing
was removing the that state. With the GTK plugin it was then not
possible to change the value. With the gen plugin however you could
still click it to give it a value.

This patch just makes the button inactive whenever justify is selected.
Weld then also removes the indeterminate state in that case.

Change-Id: I9c7bebb168f526497d406b1b93b9d5161e251cfa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211676
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: Jenkins
Tested-by: László Németh <nemeth@numbertext.org>
2026-10-05 10:33:12 +02:00
Neil Roberts 73415deaf4 Related tdf#173389 Improve wording in tooltip
“If you want to prefer” makes it sound like the user would be doing the
preferring, but for some reason they don’t quite dare actually do it and
instead they only “want” to do it. I think the intention is probably
that the justification algorithm should be doing the preferring. This
patch puts the preferring in the passive voice so that the subject
of the verb doesn’t have to be mentioned.

Change-Id: If6de27be688ccb03d80fa559c6027af08aea7c6c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211669
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: Jenkins
2026-10-05 10:15:46 +02:00
Neil Roberts a18375bf84 tdf#173818 Update sensitivity of letter spacing label when change alignment
The justification section of the dialog is all disabled whenever the
chosen alignment is something other than “justify”. When the value is
changed the sensitivity of all of the controls is updated, except that
the update for the label for letter spacing was missing. This looked
weird on the dialog.

Change-Id: Ibc774402ce72f820f14ea8265b20cb0113f84be9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211675
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-10-02 08:24:44 +02:00
elioperdreau b2c7e472fd Merge remote-tracking branch 'upstream/master' into experiment/upstream-sync
Change-Id: I77c2bb8abdef222cf0fc2f7016e34da1554653cb
2026-09-28 18:32:53 +02:00
Michael Weghorn 825d4da651 tdf#130857 cui: Create graphics bullet submenu when menu button is shown
Trying to create and populate the submenu for the "Gallery"
menu entry in the bullets and numbering dialog only when
its menu button is clicked is too late, as the toggle
handler isn't guaranteed to be called before the menu
gets shown. Therefore, instead do this as soon as the
menu button gets shown.

This is similar to what

  commit 9456449751
  Author: Michael Weghorn <m.weghorn@posteo.de>
  Date:   Fri Jun 20 18:20:42 2025 +0200

      tdf#167034 sd: Populate graphics bullet menu when creating dlg

did for the Impress-specific bullets and numbering dialog,
but now for the dialog used in other modules.

Steps to reproduce:

* start Writer
* "Format" -> "Bullets and Numbering..."
* go to "Customize" tab
* select "Graphics" in the "Type" combobox
* Press the "Select..." menu button
* hover over the "Gallery" menu item to open its submenu

Without this commit in place, the menu would not be shown
unless using the gtk3 vcl plugin.

For the vcl implementation (SalInstanceMenuButton), the
submenu would be present after the menu button got clicked
for the second time.
For the implementation using native Qt widgets
(QtInstanceMenuButton, enabled via SAL_VCL_QT_USE_WELDED_WIDGETS=1)
the submen would even not be shown then.

With this commit in place, the menu is now shown as
expected already the first time for all 3 weld::MenuButton
implementations.

Change-Id: I9076efe1375360554701d76c5330494eceba1391
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211423
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-24 15:01:29 +02:00
Michael Weghorn 6761f30360 cui: Prefix SvxNumOptionsTabPage members with "m_"
Add the usual "m_" prefix to those SvxNumOptionsTabPage
members that don't have it yet, to make it easier to
distinguish them from local variables by their name.

Change-Id: I08eb0870efe37bf81a4b8da32ee37d75f73ce639
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211422
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-24 15:01:21 +02:00
László Németh e668dc84eb tdf#173389 cui offapi sw xmloff: add custom compound-based hyphenation
Add new paragraph justification option "Split compound words" for
custom compound-based "smart" hyphenation. Add compound-based "smart"
hyphenation support for Danish, Dutch, Esperanto, Estonian, German,
Norwegian, Swedish (and potentially, Icelandic, Finnish and
Latvian) languages by fixing Hunspell morphological analysis and the
associated lingucomponent code. (Previously compound-based "smart"
hyphenation was enabled only for Hungarian.)

With the new option it's possible to keep MSO/MS-DOCX interoperability,
also introducing a better hyphenation algorithm for several languages.

Details:

    * Add check box to Alignment in paragraph formatting dialog window;

    * Store properties in paragraph model:

      css::style::ParagraphProperties::ParaIsCompoundBased

    * Implement it by checking the new option in the previously
      added commit f9f694f5d9f39c5801bc5fec45867252c293bbcb;

    * Add ODF import/export (loext:compound-based);

    * Add ODF unit tests by the new tdf173389_smart_hyphenation_nl.odt
      and tdf173389_smart_hyphenation_hu.odt. Now use the previous
      tdf119908_smart_hyphenation_hu for disabled compound-based "smart"
      hyphenation, also the new tdf119908_smart_hyphenation_nl.odt.
      Note: the Dutch test document results better compound-based
      hyphenation in two positions.

    * Add Hunspell patch to fix Danish, Dutch, Esperanto, Estonian,
      German, Norwegian, Swedish (and future Icelandic, Latvian,
      Finnish) morphological analysis for compound word constituents;

    * hyphenimp.cxx hyphenate(): fix tokenization for consecutive
      pa: elements, like resulted in the fixed Hunspell dictionaries.

Follow-up to commit f9f694f5d9
"tdf#173389 sw: add compound-based “smart” hyphenation for readability".

Change-Id: I4414bd588646ecf6dc86b77642833ac9c7820a98
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211341
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
2026-09-23 14:38:07 +02:00
Michael Weghorn 653c741ebc tdf#173578 Reduce spacing between ColorIconView items
With the switch from the custom SvxColorValueSet
to the weld::IconView based ColorIconView in

    commit 701cea2393
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri Apr 17 09:45:29 2026 +0200

        tdf#130857 Introduce ColorIconView, port "Area" page's "Color" section to it

and

    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

and

    commit 9ed6b0a88f
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Mon Jun 8 14:00:33 2026 +0200

        Use ColorIconView for SvxDefaultColorOptPage

and

    commit dc3b6ec185
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Wed Jun 10 10:25:27 2026 +0200

        tdf#130857 sc: Port tab color dialog to ColorIconView

, spacing between the color items was implicitly
switched to the default values for the IconView
implementations, which is quite a bit more than
it was before at least for the GTK and vcl
implementations.

As requested in tdf#173578, reduce the spacing
again.

Now that weld::IconView is used, use the corresponding
GtkIconView spacing properties that can be set in
the .ui file.

For the GTK implementation (GtkInstanceIconView),
these are applied "automatically" because
GTK handles them internally.

For the vcl and Qt implementations (SalInstanceIconView
and QtInstanceIconView), they are not yet applied because
these properties are not evaluated yet.

For the vcl implementation, evaluating
GtkIconView::item-padding [1] will be added in
an upcoming commit.

For the Qt implementation, the spacing looks quite OK
to me (at least with the Fusion style on Linux).
Evaluating that property could still be added later as
needed. QListView::spacing [2] looks related.

[1] https://docs.gtk.org/gtk3/property.IconView.item-padding.html
[2] https://doc.qt.io/qt-6/qlistview.html#spacing-prop

Change-Id: I703504b7e2ce0c4b5351a95616112950a33332dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211358
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-09-23 14:18:36 +02:00
Zesen Liu 722410514b tdf#173623 svx: Pass index of activated item in ColorIconView handler
ColorIconView only passed the Color to its activation handler, so its
users took everything else (color name, position for the theme palette
lookup) from the selected item. For mouse and keyboard the activated
item is always the selected one, but the AT-SPI "activate" action of an
item activates it without selecting it first, so the color of the
selected item was applied instead of the activated one.

Pass the index of the activated item to the handler and let the users
take color, name and theme index from it.

Change-Id: I900278bf68e5038e5588ce71b03cd4b5ae9f8918
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211237
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-23 09:47:55 +02:00
Andrea Gelmini 92a57a7e0a Fix typos in code
Change-Id: I536767b94288f441d34dd3e51f6dd56931422d8d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211296
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-21 19:00:26 +02:00
Samuel Mehrbrodt dc27a4d1f1 Better labels for bullet/numbering list boxes.
The listbox contains entries for both Numbering AND Bullets,
so labeling it with "Number"/"Numbering" is wrong in the Bullets case.
Call them "List Format" and "Type" instead.

The group sets the format of a list level, which can be a bullet or an
image and not only a number, so Numbering and Number were too narrow.
Call them List Format and Type.

Change-Id: Id15cd1e28417eb91a0b11882f9f338bf4b35588a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210948
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@collabora.com>
Tested-by: Jenkins
2026-09-17 09:41:27 +02:00
elioperdreau 4d0ef4a077 odfstudio: synchronize with LibreOffice upstream 2026-09-16 22:00:48 +02:00
Michael Weghorn 6a023bacb9 Return std::unique_ptr in Application::CreateMessageDialog
The caller of Application::CreateMessageDialog owns the
returned message dialog.

So far, it was returned by a plain weld::MessageDialog*.

Return a unique_ptr instead, to make clear the ownership
semantics. (Also adjust SalInstance::CreateMessageDialog
accordingly, which is called by Application::CreateMessageDialog
and implements the actual logic to create a message dialog.)

Adjust callers where needed.
Most callers were already using a smart pointer for the
returned message dialog anyway.

Change-Id: I7c06bb24b611bd67f5af89800adb13bf22dcc6fa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211013
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-09-16 10:35:19 +02:00
Andrea Gelmini be7ff6a857 Fix typos in code and comments + some reformatting
Change-Id: Ic6fe197734655a2591a6730d07f23d4222a278f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210564
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-09-10 22:06:44 +02:00
Dan Williams e4e60f2769 vcl: standardize Reset dialog button response code
Qt plugin automatically orders buttons for each platform based on
the button's role, which we derive from the Gtk .ui file's
action-widget response code. But to do that conversion from response
code to Qt button role, we need a standard response.

Without a standard response, the button has no role, and gets ordered
to the right of OK/Cancel buttons on Mac. With the correct role, it
is correctly placed far-left along with the Help button.

Change-Id: I16d3126d4999649e7aa6e72ec5e7b1a25f48c2a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210223
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
2026-09-08 13:42:17 +02:00
Noel Grandin 1b276f9265 merge the outliner ParagraphData information into the regular EditTextObject
as part of the process of merging the Outliner code into the normal EditEngine paths.

So instead of keeping a bunch of information "on the side" and then having to merge information
from multiple sources, it all lives where it logically belongs.

Also take the chance to rename the depth/getdepth/setdepth
fields and methods to NumberingDepth, which makes the purpose
more obvious.

Change-Id: I314673ee1b9efa14f178ac34a122995a554cd788
Signed-off-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/10551
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 284bbe0af12b96844976f30bb35ade3a327ea76d)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210503
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-09-05 00:09:20 +02:00
Jim Raykowski c51dff06a9 Impress slide properties dialog: use "slide" instead of "page"
* Makes the title show as "Slide Properties" instead of "Page
Properties".

* Makes the label for the resize all slides checkbox show as "Resize all
slides" instead of "Resize all pages"

Change-Id: Idda0bdf6ef6215696ae4189549f62c05ef0076c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209996
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
2026-08-31 17:04:56 +02:00
Michael Weghorn ef7971f80c Use QueryDialog directly instead of via cui abstraction
Now that previous commit

    Change-Id: I57bdade32c21c7ab40c5a4c90bd86e8dea5d2fad
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Aug 27 19:00:42 2026 +0200

        Move QueryDialog to svtools

moved QueryDialog to svtools, use it directly instead
of via the extra AbstractQueryDialog abstraction.

This simplifies the code and rules out one potential cause
for the crash seen in crash reports like [1] (see backtrace below).

From looking at the backtrace and code, I don't currently see anything
that looks problematic to me and could result in a null dialog or button
in a proper installation. Simplifying this seems a good idea anyway, and
rules out a null dialog.
Related discussion: [2]

The dialog can e.g. be triggered like this:

* start Writer
* Ctrl+Shift+S for "Save As"
* select "Text (.txt)" for the file type
* press OK

(Resetting the profile ensures the dialog gets shown
in case the "Don't show again" checkbox has been ticked
previously.)

Backtrace from [1]:

    0 	mergedlo.dll 	static void `anonymous namespace'::AbstractQueryDialog_Impl::SetYesLabel(const class rtl::OUString & const) 	cui/source/factory/dlgfact.cxx:1562
    1 	mergedlo.dll 	static void `anonymous namespace'::AbstractQueryDialog_Impl::SetYesLabel(const class rtl::OUString & const) 	cui/source/factory/dlgfact.cxx:1562
    2 	mergedlo.dll 	ConfirmationDlg::Query<officecfg::Office::Common::Save::Document::WarnAlienFormat>(weld::Window *,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &) 	include/svtools/confirmationdlg.hxx:32
    3 	mergedlo.dll 	ConfirmationDlg::Query<officecfg::Office::Common::Save::Document::WarnAlienFormat>(weld::Window *,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &,rtl::OUString const &) 	include/svtools/confirmationdlg.hxx:24
    4 	mergedlo.dll 	SfxStoringHelper::WarnUnacceptableFormat(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const &,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,rtl::OUString const &,bool) 	sfx2/source/doc/guisaveas.cxx:2114
    5 	mergedlo.dll 	ModelData_Impl::CheckFilter(rtl::OUString const &) 	sfx2/source/doc/guisaveas.cxx:861
    6 	mergedlo.dll 	com::sun::star::uno::cppu_detail_getUnoType(com::sun::star::uno::RuntimeException const *) 	E:/build/workdir/UnoApiHeadersTarget/udkapi/normal/com/sun/star/uno/RuntimeException.hpp:89
    7 	ntdll.dll 	0x3c3a0
    8 	mergedlo.dll 	ModelData_Impl::CheckFilter(rtl::OUString const &) 	sfx2/source/doc/guisaveas.cxx:781
    9 	mergedlo.dll 	SfxStoringHelper::FinishGUIStoreModel(std::_List_const_iterator<std::_List_val<std::_List_simple_types<std::pair<comphelper::OUStringAndHashCode const ,com::sun::star::uno::Any> > > > &,ModelData_Impl &,bool,short,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,bool,bool,bool,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,rtl::OUString,SignatureState) 	sfx2/source/doc/guisaveas.cxx:1680
    10 	cppu3.dll 	typelib_typedescriptionreference_release 	cppu/source/typelib/typelib.cxx:2145
    11 	cppu3.dll 	cppu::_destructData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *)) 	cppu/source/uno/destr.hxx:312
    12 	cppu3.dll 	cppu::_destructData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *)) 	cppu/source/uno/destr.hxx:308
    13 	ucrtbase.dll 	0x1364b
    14 	sal3.dll 	rtl_uString_assign 	sal/rtl/ustring.cxx:1169
    15 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    16 	mergedlo.dll 	SfxStoringHelper::FinishGUIStoreModel(std::_List_const_iterator<std::_List_val<std::_List_simple_types<std::pair<comphelper::OUStringAndHashCode const ,com::sun::star::uno::Any> > > > &,ModelData_Impl &,bool,short,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &,bool,bool,bool,std::basic_string_view<char16_t,std::char_traits<char16_t> >,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,rtl::OUString,SignatureState) 	sfx2/source/doc/guisaveas.cxx:1620
    17 	mergedlo.dll 	SfxStoringHelper::GUIStoreModel(com::sun::star::uno::Reference<com::sun::star::frame::XModel2> const &,std::basic_string_view<char16_t,std::char_traits<char16_t> >,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &,bool,SignatureState,SignatureState,bool) 	sfx2/source/doc/guisaveas.cxx:1605
    18 	mergedlo.dll 	SvtSecurityOptions::SetTrustedAuthors(std::vector<SvtSecurityOptions::Certificate,std::allocator<SvtSecurityOptions::Certificate> > const &) 	unotools/source/config/securityoptions.cxx:283
    19 	ntdll.dll 	0x3ccea
    20 	ucrtbase.dll 	0x1f038
    21 	ntdll.dll 	0x3b041
    22 	cppu3.dll 	uno_type_sequence_construct 	cppu/source/uno/sequence.cxx:668
    23 	mergedlo.dll 	SfxObjectShell::ExecFile_Impl(SfxRequest &) 	sfx2/source/doc/objserv.cxx:1150
    24 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    25 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    26 	cppu3.dll 	cppu::icopyConstructSequence(_sal_Sequence *,_typelib_TypeDescriptionReference *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:398
    27 	cppu3.dll 	cppu::_copyConstructAnyFromData(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:231
    28 	cppu3.dll 	cppu::_copyConstructAny(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:284
    29 	cppu3.dll 	uno_type_any_assign 	cppu/source/uno/any.cxx:38
    30 	salhelper3MSC.dll 	salhelper::SimpleReferenceObject::release() 	include/salhelper/simplereferenceobject.hxx:80
    31 	mergedlo.dll 	configmgr::Access::getByNameFast(rtl::OUString const &,com::sun::star::uno::Any &) 	configmgr/source/access.cxx:393
    32 	ntdll.dll 	0x3b041
    33 	ucrtbase.dll 	0x1364b
    34 	cppu3.dll 	cppu::_type_equals(_typelib_TypeDescriptionReference const *,_typelib_TypeDescriptionReference const *) 	cppu/source/uno/prim.hxx:144
    35 	cppu3.dll 	cppu::_assignData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void * (*)(void *,_typelib_TypeDescriptionReference *),void (*)(void *),void (*)(void *)) 	cppu/source/uno/assign.hxx:387
    36 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    37 	cppu3.dll 	typelib_typedescription_release 	cppu/source/typelib/typelib.cxx:1313
    38 	cppu3.dll 	typelib_typedescriptionreference_release 	cppu/source/typelib/typelib.cxx:2145
    39 	ntdll.dll 	0x3d6da
    40 	ntdll.dll 	0x3ccea
    41 	mergedlo.dll 	FontMetricData::ShouldNotUseUnderlineMetrics() 	vcl/source/font/fontmetric.cxx:186
    42 	mergedlo.dll 	OutputDevice::InitFont() 	vcl/source/outdev/font.cxx:668
    43 	ntdll.dll 	0x3c3a0
    44 	i18nlangtag.dll 	LanguageTag::LanguageTag(LanguageTag const &) 	include/i18nlangtag/languagetag.hxx:142
    45 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::make_unique() 	include/o3tl/cow_wrapper.hxx:298
    46 	ucrtbase.dll 	0x276aa
    47 	mergedlo.dll 	vcl::Font::SetFontSize(Size const &) 	vcl/source/font/font.cxx:156
    48 	ucrtbase.dll 	0x1364b
    49 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    50 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:201
    51 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:198
    52 	mergedlo.dll 	ImpEditEngine::RecalcFormatterFontMetrics(FormatterFontMetric &,SvxFont &) 	editeng/source/editeng/impedit3.cxx:3182
    53 	ucrtbase.dll 	0x272e4
    54 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    55 	ucrtbase.dll 	0x27691
    56 	mergedlo.dll 	ImpEditEngine::GetJustification(long) 	editeng/source/editeng/impedit2.cxx:2077
    57 	mergedlo.dll 	o3tl::cow_wrapper<ImplFont,o3tl::RefCountingPolicy_t<unsigned __int64> >::release() 	include/o3tl/cow_wrapper.hxx:198
    58 	mergedlo.dll 	ImpEditEngine::CreateAndInsertEmptyLine(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:1994
    59 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    60 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    61 	mergedlo.dll 	ParaPortionList::GetPos(ParaPortion const *) 	editeng/source/editeng/editdoc.cxx:496
    62 	mergedlo.dll 	ImpEditEngine::CalcHeight(ParaPortion &) 	editeng/source/editeng/impedit2.cxx:4791
    63 	mergedlo.dll 	ImpEditEngine::FinishCreateLines(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:2003
    64 	mergedlo.dll 	ImpEditEngine::FinishCreateLines(ParaPortion &) 	editeng/source/editeng/impedit3.cxx:1999
    65 	mergedlo.dll 	ImpEditEngine::CreateLines(long,unsigned long) 	editeng/source/editeng/impedit3.cxx:670
    66 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    67 	mergedlo.dll 	static lo_destroy$dtor$0()
    68 	mergedlo.dll 	boost::locale::gnu_gettext::mo_file::value(unsigned int) 	E:/build/workdir/UnpackedTarball/boost/libs/locale/src/shared/message.cpp:196
    69 	mergedlo.dll 	boost::locale::gnu_gettext::mo_file::find(char const *,char const *) 	E:/build/workdir/UnpackedTarball/boost/libs/locale/src/shared/message.cpp:145
    70 	ucrtbase.dll 	0x11966
    71 	sal3.dll 	rtl_uString_ImplAlloc(long) 	sal/rtl/ustring.cxx:1109
    72 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    73 	ntdll.dll 	0x3d6da
    74 	ntdll.dll 	0x3d6da
    75 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    76 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    77 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:935
    78 	mergedlo.dll 	ImpEditEngine::CalcVertLineSpacing(Point &) 	editeng/source/editeng/impedit3.cxx:4436
    79 	mergedlo.dll 	SfxItemPool::GetUserOrPoolDefaultItem(unsigned short) 	svl/source/items/itempool.cxx:723
    80 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    81 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:935
    82 	mergedlo.dll 	ImpEditEngine::IterateLineAreas(std::function<ImpEditEngine::CallbackResult > const &,ImpEditEngine::IterFlag) 	editeng/source/editeng/impedit2.cxx:3417
    83 	mergedlo.dll 	_std_minmax_8i 	D:/a/_work/1/s/src/vctools/crt/github/stl/src/vector_algorithms.cpp:2451
    84 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    85 	mergedlo.dll 	RectangleTemplateBase::Union(RectangleTemplateBase const &) 	tools/source/generic/gen.cxx:88
    86 	mergedlo.dll 	ImpEditEngine::CalcVertLineSpacing(Point &) 	editeng/source/editeng/impedit3.cxx:4436
    87 	mergedlo.dll 	SfxItemSet::Get(unsigned short,bool) 	svl/source/items/itemset.cxx:965
    88 	ntdll.dll 	0x3c3a0
    89 	mergedlo.dll 	ImpEditEngine::IterateLineAreas(std::function<ImpEditEngine::CallbackResult > const &,ImpEditEngine::IterFlag) 	editeng/source/editeng/impedit2.cxx:3417
    90 	ntdll.dll 	0x3b041
    91 	ucrtbase.dll 	0x1364b
    92 	mergedlo.dll 	std::allocator<long>::deallocate(long * const,unsigned __int64) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xmemory:985
    93 	mergedlo.dll 	std::allocator<long>::deallocate(long * const,unsigned __int64) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xmemory:982
    94 	mergedlo.dll 	ImpEditEngine::FormatDoc() 	editeng/source/editeng/impedit3.cxx:412
    95 	mergedlo.dll 	ImpEditEngine::CallStatusHdl() 	editeng/source/editeng/impedit3.cxx:4368
    96 	mergedlo.dll 	ImpEditEngine::UpdateViews(EditView *) 	editeng/source/editeng/impedit3.cxx:188
    97 	mergedlo.dll 	ImpEditEngine::UpdateViews(EditView *) 	editeng/source/editeng/impedit3.cxx:155
    98 	mergedlo.dll 	ImpEditEngine::SetUpdateLayout(bool,EditView *,bool) 	editeng/source/editeng/impedit3.cxx:4247
    99 	mergedlo.dll 	EditEngine::SetUpdateLayout(bool,bool) 	editeng/source/editeng/editeng.cxx:800
    100 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    101 	sclo.dll 	ScInputHandler::EnterHandler2(ScEnterMode,bool,rtl::OUString,rtl::OUString const &) 	sc/source/ui/app/inputhdl.cxx:3646
    102 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    103 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    104 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    105 	ucrtbase.dll 	0x11966
    106 	ntdll.dll 	0x633f2
    107 	ntdll.dll 	0x3c3a0
    108 	ucrtbase.dll 	0x1364b
    109 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    110 	mergedlo.dll 	ContentNode::GetExpandedText(long,long) 	editeng/source/editeng/ContentNode.cxx:472
    111 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    112 	mergedlo.dll 	EditEngine::GetText(long) 	editeng/source/editeng/editeng.cxx:946
    113 	ntdll.dll 	0x3b041
    114 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    115 	ucrtbase.dll 	0x1364b
    116 	sclo.dll 	ScInputHandler::EnterHandler2(ScEnterMode,bool,rtl::OUString,rtl::OUString const &) 	sc/source/ui/app/inputhdl.cxx:3333
    117 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1119
    118 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    119 	sclo.dll 	ScInputHandler::EnterHandler(ScEnterMode,bool) 	sc/source/ui/app/inputhdl.cxx:3329
    120 	mergedlo.dll 	static void xmloff::token::`dynamic initializer for 'aTokenList''() 	xmloff/source/core/xmltoken.cxx:3474
    121 	ntdll.dll 	0x53850
    122 	KERNELBASE.dll 	0x2931b
    123 	VCRUNTIME140.dll 	0x48a9
    124 	ntdll.dll 	0x53850
    125 	ucrtbase.dll 	0x1f038
    126 	mergedlo.dll 	SfxInterface::GetSlot(unsigned short) 	sfx2/source/control/objface.cxx:163
    127 	mergedlo.dll 	SfxInterface::GetSlot(unsigned short) 	sfx2/source/control/objface.cxx:157
    128 	mergedlo.dll 	SfxObjectShell::ExecFile_Impl(SfxRequest &) 	sfx2/source/doc/objserv.cxx:557
    129 	mergedlo.dll 	SfxShell::ExecuteSlot(SfxRequest &,SfxInterface const *) 	sfx2/source/control/shell.cxx:475
    130 	sclo.dll 	SfxStubScTabViewShellExecuteSave(SfxShell *,SfxRequest &) 	E:/build/workdir/SdiTarget/sc/sdi/scslots.hxx:1584
    131 	sclo.dll 	SfxStubScTabViewShellExecuteSave(SfxShell *,SfxRequest &) 	E:/build/workdir/SdiTarget/sc/sdi/scslots.hxx:1584
    132 	mergedlo.dll 	SfxDispatcher::Call_Impl(SfxShell &,SfxSlot const &,SfxRequest &,bool) 	sfx2/source/control/dispatch.cxx:258
    133 	mergedlo.dll 	SfxDispatcher::Call_Impl(SfxShell &,SfxSlot const &,SfxRequest &,bool) 	sfx2/source/control/dispatch.cxx:219
    134 	mergedlo.dll 	SfxBindings::Execute_Impl(SfxRequest &,SfxSlot const *,SfxShell &) 	sfx2/source/control/bindings.cxx:1051
    135 	mergedlo.dll 	operator new(unsigned __int64) 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/heap/new_scalar.cpp:36
    136 	mergedlo.dll 	cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo,com::sun::star::frame::XFrame2,com::sun::star::awt::XWindowListener,com::sun::star::awt::XTopWindowListener,com::sun::star::awt::XFocusListener,com::sun::star::document::XActionLockable,com::sun::star::util::XCloseable,com::sun::star::frame::XComponentLoader,com::sun::star::frame::XTitle,com::sun::star::frame::XTitleChangeBroadcaster,com::sun::star::beans::XPropertySet,com::sun::star::beans::XPropertySetInfo>::acquire() 	include/cppuhelper/compbase.hxx:83
    137 	mergedlo.dll 	SfxUnoFrameItem::SfxUnoFrameItem(SfxUnoFrameItem const &)
    138 	mergedlo.dll 	struct std::pair<std::_List_node<std::pair<unsigned short const ,SfxPoolItem const *>,void *> *,bool> std::_Hash<std::_Umap_traits<unsigned short,SfxPoolItem const *,std::_Uhash_compare<unsigned short,std::hash<unsigned short>,std::equal_to<unsigned short> >,std::allocator<std::pair<unsigned short const ,SfxPoolItem const *> >,0> >::_Try_emplace<unsigned short const &>(const unsigned short & const) 	C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/include/xhash:707
    139 	mergedlo.dll 	SfxUnoFrameItem::SfxUnoFrameItem(SfxUnoFrameItem const &)
    140 	mergedlo.dll 	SfxItemSet::SfxItemSet(SfxItemSet const &) 	svl/source/items/itemset.cxx:270
    141 	mergedlo.dll 	SfxBindings::Execute_Impl(SfxRequest &,SfxSlot const *,SfxShell &) 	sfx2/source/control/bindings.cxx:965
    142 	mergedlo.dll 	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:737
    143 	cppu3.dll 	cppu::_copyConstructAnyFromData(_uno_Any *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void (*)(void *),_uno_Mapping *) 	cppu/source/uno/copy.hxx:250
    144 	cppu3.dll 	cppu::_assignData(void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void *,_typelib_TypeDescriptionReference *,_typelib_TypeDescription *,void * (*)(void *,_typelib_TypeDescriptionReference *),void (*)(void *),void (*)(void *)) 	cppu/source/uno/assign.hxx:417
    145 	cppu3.dll 	static void typelib_typedescription_destructExtendedMembers(struct _typelib_TypeDescription *) 	cppu/source/typelib/typelib.cxx:1308
    146 	mergedlo.dll 	static class std::unique_ptr<com::sun::star::uno::ContextLayer,std::default_delete<com::sun::star::uno::ContextLayer> > `anonymous namespace'::EnsureJavaContext() 	sfx2/source/control/unoctitm.cxx:229
    147 	mergedlo.dll 	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:572
    148 	mergedlo.dll 	static class std::unique_ptr<com::sun::star::uno::ContextLayer,std::default_delete<com::sun::star::uno::ContextLayer> > `anonymous namespace'::EnsureJavaContext() 	sfx2/source/control/unoctitm.cxx:229
    149 	mergedlo.dll 	SfxOfficeDispatch::dispatch(com::sun::star::util::URL const &,com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const &) 	sfx2/source/control/unoctitm.cxx:256
    150 	mergedlo.dll 	static void framework::`anonymous namespace'::AsyncMenuExecute(void *, void *) 	framework/source/uielement/menubarmanager.cxx:793
    151 	mergedlo.dll 	static void framework::`anonymous namespace'::AsyncMenuExecute(void *, void *) 	framework/source/uielement/menubarmanager.cxx:789
    152 	mergedlo.dll 	ImplWindowFrameProc(vcl::Window *,SalEvent,void const *) 	vcl/source/window/winproc.cxx:2871
    153 	vclplug_winlo.dll 	static bool ImplHandleMouseMsg(struct HWND__ *, unsigned int, unsigned __int64, __int64) 	vcl/win/window/salframe.cxx:3311
    154 	ntdll.dll 	0x3365b
    155 	ntdll.dll 	0x3d809
    156 	user32.dll 	0x1b5e9
    157 	mergedlo.dll 	SalFrame::CallCallback(SalEvent,void const *) 	vcl/inc/salframe.hxx:311
    158 	mergedlo.dll 	SalFrame::CallCallback(SalEvent,void const *) 	vcl/inc/salframe.hxx:311
    159 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6136
    160 	user32.dll 	0x13b04
    161 	skialo.dll 	static void `anonymous namespace'::RasterWindowContext_win::onSwapBuffers(const struct SkIRect *) 	E:/build/workdir/UnpackedTarball/skia/tools/window/win/RasterWindowContext_win.cpp:89
    162 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    163 	ntdll.dll 	0x2e71a
    164 	ntdll.dll 	0x28b33
    165 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:5738
    166 	vclplug_winlo.dll 	SalFrameWndProcW(HWND__ *,unsigned int,unsigned __int64,__int64) 	vcl/win/window/salframe.cxx:6145
    167 	vclplug_winlo.dll 	SalFrameWndProcW(HWND__ *,unsigned int,unsigned __int64,__int64) 	vcl/win/window/salframe.cxx:6140
    168 	user32.dll 	0x18eb8
    169 	vclplug_winlo.dll 	WinSalYieldMutex::doRelease(bool) 	vcl/win/app/salinst.cxx:150
    170 	msvcp140.dll 	0x1285b
    171 	user32.dll 	0x18bec
    172 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6137
    173 	user32.dll 	0x18771
    174 	vclplug_winlo.dll 	static __int64 SalFrameWndProc(struct HWND__ *, unsigned int, unsigned __int64, __int64, bool & const) 	vcl/win/window/salframe.cxx:6137
    175 	mergedlo.dll 	OpenGLContext::prepareForYield() 	vcl/source/opengl/OpenGLContext.cxx:377
    176 	vclplug_winlo.dll 	ImplSalYield(bool,bool) 	vcl/win/app/salinst.cxx:409
    177 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    178 	sal3.dll 	osl_setCondition 	sal/osl/w32/conditn.cxx:55
    179 	vclplug_winlo.dll 	WinSalInstance::DoYield(bool,bool) 	vcl/win/app/salinst.cxx:484
    180 	vclplug_winlo.dll 	WinSalInstance::DoYield(bool,bool) 	vcl/win/app/salinst.cxx:468
    181 	mergedlo.dll 	static bool InnerYield(bool, bool) 	vcl/source/app/svapp.cxx:389
    182 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    183 	mergedlo.dll 	static bool InnerYield(bool, bool) 	vcl/source/app/svapp.cxx:376
    184 	mergedlo.dll 	Application::Execute() 	vcl/source/app/svapp.cxx:364
    185 	mergedlo.dll 	desktop::Desktop::Main() 	desktop/source/app/app.cxx:1679
    186 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    187 	MSVCP140_1.dll 	0x11ef
    188 	ucrtbase.dll 	0x20475
    189 	mergedlo.dll 	operator<<<char,std::char_traits<char> >(std::basic_ostream<char,std::char_traits<char> > &,FontMetric const &) 	include/vcl/metric.hxx:107
    190 	mergedlo.dll 	static lo_initialize$catch$194() 	desktop/source/lib/init.cxx:8401
    191 	sal3.dll 	rtl_uString_release 	sal/rtl/ustring.cxx:1118
    192 	mergedlo.dll 	InitVCL() 	vcl/source/app/svmain.cxx:371
    193 	mergedlo.dll 	desktop::Desktop::Main() 	desktop/source/app/app.cxx:1304
    194 	mergedlo.dll 	ImplSVMainRun() 	vcl/source/app/svmain.cxx:234
    195 	mergedlo.dll 	soffice_main 	desktop/source/app/sofficemain.cxx:122
    196 	ntdll.dll 	0x53850
    197 	ucrtbase.dll 	0x20400
    198 	mergedlo.dll 	static `desktop::CallbackFlushHandler::CallbackData::CallbackData'::`1'::dtor$0()
    199 	mergedlo.dll 	soffice_main 	desktop/source/app/sofficemain.cxx:59
    200 	soffice.bin 	main 	desktop/source/app/main.c:49
    201 	soffice.bin 	static int __scrt_common_main_seh() 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_common.inl:288
    202 	soffice.bin 	mainCRTStartup 	D:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_main.cpp:16
    203 	kernel32.dll 	0x1259d
    204 	ntdll.dll 	0x5af78

[1] https://crashreport.libreoffice.org/stats/crash_details/6812315d-e79b-46ce-893d-688d6908c41c
[2] https://gerrit.libreoffice.org/c/core/+/203572/comment/95fcd0be_db5a3d02/

Change-Id: Ia30eecd2667d15220b9f7824faea5adc04c94e93
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210137
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-08-27 23:36:19 +02:00
Michael Weghorn 8bf40d62b6 Move QueryDialog to svtools
Move QueryDialog from cui to a public svtools header.
This is in preparation of using the class directly
and dropping the AbstractQueryDialog abstraction
altogether.

The dialog can e.g. be triggered like this:

* start Writer
* Ctrl+Shift+S for "Save As"
* select "Text (.txt)" for the file type
* press OK

(Resetting the profile ensures the dialog gets shown
in case the "Don't show again" checkbox has been ticked
previously.)

Change-Id: I57bdade32c21c7ab40c5a4c90bd86e8dea5d2fad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210136
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-08-27 23:36:10 +02:00
elioperdreau bfdd574ef7 ODFStudio: expose Studio build feature to C++
Change-Id: Iba7bcfe420553cd45278b391d02f08bbe329648c
2026-08-26 23:10:46 +02:00
Andrea Gelmini 8acc72d8c2 Fix typos
Change-Id: I1a3aa6e77a31e1d60bfaf98006799657f91bcb1d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209890
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-25 14:30:23 +02:00
Caolán McNamara ecd9ee7aa1 pass a referer through setSvxBrushItemAsFillAttributesToTargetSet
SvxBrushItem::GetGraphic wants the name of the document the brush came
from, so take it as an argument and hand in SwDoc::GetLinkReferer
wherever a document is at hand, the Writer style, frame and background
shell paths included.

The dialog and example-window callers pass the name of the active
document shell through a new svx helper getActiveDocumentLinkReferer.

The hand-rolled copies of the GetPersist, HasName, GetMedium GetName
sequence elsewhere in sw now call SwDoc::GetLinkReferer too.

Change-Id: I8693d27869baed79962b2d5bdcb7b7e2c63227bb
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8200
Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 18f91ac71710027479dfe9f206ae2207bad8f2b7)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209827
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-25 11:16:39 +02:00
Olivier Hallot 4f09a06484 Improve wording for "Resize all pages" in Impress page dialog
Change-Id: I774fa8133c62d12a59cf840bd4df1e5aecbf71e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209424
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Tested-by: Jenkins
2026-08-21 19:45:59 +02:00
Xisco Fauli 0c91381485 loplugin:unusedmethods
Change-Id: I17586b49f970be17c5f6d2823d4a973521b2ed62
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209407
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-08-21 09:31:35 +02:00
Neil Roberts 66dfcf9803 tdf#173170 Don’t show the “resize all pages” checkbox if not requested
If the caller of the dialog doesn’t request the
SID_ATTR_RESIZE_ALL_PAGES attribute then the checkbox to configure
whether to resize all pages will now be hidden. This fixes the problem
that the checkbox was shown in Writer and Calc but it actually only has
any effect in Draw and Impress.

Change-Id: I47a0d5320071c00830f5e95ad3d6753c56ecc0f1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209413
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
Tested-by: Jenkins
2026-08-21 08:07:02 +02:00
Michael Weghorn 8da9b9d8e5 Enforce UI rules (Run ui-rules-enforcer)
Commit the result of running ui-rules-enforcer:

    for a in `git ls-files "*.ui"`; do bin/ui-rules-enforcer.py $a; done

Change-Id: I12ea4ed35e3b05cc6f9855df2159d3d677c85fe7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209387
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-08-20 22:29:37 +02:00
Olivier Hallot 29a5796177 Add extended tips to page style dialog
Change-Id: Ie2575363c812fb0cc346778795a003a86a773f2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209221
Tested-by: Jenkins
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
2026-08-20 13:35:01 +02:00
Julien Nabet 33bb828ae5 tdf#173186: "Pick" button inactive in "Area" dialog box
After 2016 Gsoc rework of color tab, UpdateModified is:
- useless since the color pick isn't relied with m_pColorList
- wrong since there's no case where color pick button should be disabled.
So when starting a brand new odp and right click on Area, color pick button should be enabled.

Change-Id: I5b1b0f0c3eb7e100a69379ca014eeb1b14263611
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209317
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-19 16:22:34 +02:00
Heiko Tietze c831687ef2 Related tdf#91816 - Fix comment for text alignment
Follow-up on d36bc2232e

Change-Id: I6b49a21d54f9afae8fc6665914c38c4913be5bea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209142
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-16 11:57:24 +02:00
Heiko Tietze d36bc2232e Resolves tdf#91816 - Allow indentation of right-aligned text in Calc
Change-Id: I3b2af718a8e3bdc97c84da64b011b54697ff2023
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209118
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-14 13:00:23 +02:00
Heiko Tietze c99cf5b32b Resolves tdf#140561 - Change gutter label in case of mirrored style
In case of mirrored pages the gutter cannot be left or right but
inner or outer. To make the dialog easier to understand the modifier
checkbox for Left turning this into Right was changed to radio buttons.

Change-Id: I71b32d89f9a9054f5351e3c0d51ba348b66c1f0c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209072
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-08-13 15:57:25 +02:00
László Németh f3d5dbfb18 tdf#172674 sw: fix terminology + UX of new hyphenation settings
Replace label "Less Hyphen" of the new hyphenation slider
with "Fewer Hyphens", also "Hyphenation leveled x%" with
"Hyphenation level x%".

On the General pane of the paragraph style settings, add missing
commas and spaces inside the summary of the enabled new hyphenation
settings. Show only the non-default values here. Remove redundant
"No hyphenation across" title, where its value is a full-text
explanation.

Change-Id: Icc9d8bb4023d03be497d76289967b5d6061316ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209067
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
2026-08-10 19:21:01 +02:00
Neil Roberts 9dd7345159 tdf#173043 Add translator comments to strings containing “outline”
The word “outline” in LibreOffice can refer to either the lines of the
shape of something or an overview of something. When the string is quite
short it’s difficult for translators to know which meaning is intended.
There seems to be quite a lot of cases where the translators have got
this wrong. In order to help them this patch adds translator comments to
a bunch of the strings to explain which meaning should be used.

Change-Id: I4b75cc829128633bc9382817fc574d55a09af8a4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209037
Tested-by: Jenkins
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
2026-08-09 12:12:44 +02:00
Neil Roberts 0066e963bc cui: Add a translator comment for the “No Bold/Italic” strings
The string in Weblate is presented just as “No %1”. The %1 is replaced
with the name of a font style. Without the context it’s easy to
misunderstand this as being an abbreviation for “number”. At least the
Dutch and Esperanto translations seem to have done this.

Change-Id: I220db88346a84e67b0e34affb1b8e7023cfbb90d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209053
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
2026-08-09 11:28:20 +02:00
Neil Roberts 6685fe38e0 Use “allows X-ing” instead of “allows to X” in UI
“Allows to X” sounds wrong if it doesn’t also have the person it is
allowing as the object of the sentence. See this:

https://english.stackexchange.com/questions/60271/grammatical-complements-for-allow

For the text in the tooltip it is describing what the widget does rather
than giving a command so it should have an “s”, like “[this widget]
allows selecting…”.

Change-Id: I39883bfcd7b8f8e3392b3bf564130720fa6daaf2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208986
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
2026-08-06 16:24:00 +02:00
AsmatZahra-code b28b657416 tdf#172210 Advise restart when changing High Contrast setting
Tools > Options > LibreOffice > Accessibility > High Contrast
has three possible values. Changing this setting requires a
restart to take effect, but no restart dialog was shown.

Add a new RESTART_REASON_HIGH_CONTRAST reason and wire it up
in SvxAccessibilityOptionsTabPage::FillItemSet() following the
same pattern used for Skia and Threaded Calculation settings.

Also call save_value() in Reset() so that
get_value_changed_from_saved() correctly detects whether the
user actually changed the combo-box value before showing the
dialog.

Change-Id: I1d628ce04bc8f7cf6f1b4e4a8bb7a44a0a653c0c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208996
Reviewed-by: Hossein <hossein@libreoffice.org>
Tested-by: Jenkins
Tested-by: Hossein <hossein@libreoffice.org>
2026-08-05 12:08:39 +02:00
Neil Roberts dce6dcd302 tdf#172952 uitabpage: Use separate strings for the Apply to X button
The dialog for choosing a UI has a button at the bottom to apply the
setting only to the current module and it has the text “Apply to
%MODULE” where %MODULE gets replaced with a non-translatable name for
the module.

For better or worse, some translations (such as Esperanto) have
different names for the modules. For example Writer is Verkilo. For the
sake of consistency, it would be nice to be able to translate these
strings.

It is also difficult translate this string in languages that have a lot
of grammatical cases. For example, in Slovakian the translator might
ideally want to translate the string as “Použiť vo Writeri” and “Použiť
v Calcu” etc, but they currently can’t do this because they would need
to be able to add a different suffix depending on which module is being
used.

In order to fix both problems there is now a specific string with the
whole text for each module.

Change-Id: I7c478790d89bf33f26b53642a076f9e308d1e64a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208800
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-07-31 12:39:05 +02:00