Commit Graph
11535 Commits
Author SHA1 Message Date
Mike Kaganski 645df7d9b7 tdf#101630: Make local HTTP server cross-platform, using boost/beast
Allows proper Google Drive authentication e.g. on Linux.

Change-Id: I16efa58ba90b98e71b13a0081dcdcc9d660db0b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201714
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201820
2026-07-28 23:23:28 +02:00
Michael Weghorn c8c367b31a Use vcl::WindowData instead of string for window state in more places
vcl::WindowData is used to manage/store various state
information for windows. It can be (de)serialized to/from string.

So far, both the weld::Window API to get/set window state
as well as the SvtViewOptions API were based on the string
representation.

Switch those and various related places to using vcl::WindowData
instead to use a stronger/more specific type than just OUString
in various places across the code base.

Do the string (de)serialization where necessary, but otherwise
prefer to use vcl::WindowData directly.

Calling weld::Window::set_window_state with a WindowData
param that doesn't indicate that anything should be set
(i.e. whose mask is vcl::WindowDataMask::NONE) should
have no effect, so drop extra checks that were previously
checking whether the string representation was empty
and skipping the call to weld::Window::set_window_state in
that case.

No change in user-observable behavior intended or
seen in a quick test.

Change-Id: I5bc4caeb49d0ab2bbc4fa597a5ef19d86d3aac2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208125
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-07-15 14:45:49 +02:00
Michael Weghorn 312aac710b Move SvtViewOptions from unotools to svtools
The SvtViewOptions class is used to store the state
of windows/dialogs.

So far, SvtViewOptions::SetWindowState and
SvtViewOptions::GetWindowState are string-based
and the callers are responsible for (de)serializing
the vcl::WindowData to/from string.

This will be changed to become the responsibility
of SvtViewOptions in an upcoming commit.

Since unotools is below vcl in the module
dependency chain, it cannot make use of vcl,
i.e. vcl::WindowData couldn't be used there.

Therefore, move SvtViewOptions from unotools
to svtools, which is above vcl in the module
dependencies.
(svtools/README.md summarizes the purpose of the
module as "Tools on the Top of VCL", which seems
an appropriate place for helper code to manage
the state/options for dialogs, tab pages,...)

Change-Id: If849224c35c7ac895659ddb7c17e6d17061d61a4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208124
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-07-15 14:45:41 +02:00
Michael Weghorn f1f6a505a0 weld: Pass weld::TextWidget& in text change callback/handler
Switch the weld::Entry and weld::TextView handlers
that are called when the text changes due to user
interaction to pass a weld::TextWidget& param
instead of a weld::Entry& and weld::TextView&
one respectively.
Adjust related methods across the code base accordingly.

This unifies the behavior for both of these
weld::TextWidget subclasses and prepares for
deduplicating the logic and moving it to the
common base class in an upcoming commit.

That will also ensure they stay in sync.
(Change also motivated by the fact that their behavior was
differing before

    Change-Id: I03d2a13cd84d53d806eb9e363f49c4b6be28d938
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Jul 9 13:08:58 2026 +0200

        tdf#130857 weld: Don't signal about programmatic TextView text change
.)

Change-Id: I5572fc88caf577fae9a23a39f1ec4f2179935a99
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207936
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-07-10 18:17:27 +02:00
Heiko Tietze 08f5d410a4 Related tdf#121174 - Make module-specific colos non-configurable
Colors were introduced as ThemeColors since they are not entirely application
colors (but also not really UI-related) and because svtools:: is not accessiblke
in vcl. This patch makes the colors hard-coded therefore, still allowing to
disable it but only via expert setting NotebookbarColorTransparency.
It also enables the colors on macOS following the positive feedback.

Change-Id: Iece63d440349b0c42ea6dbc1dad36f0b1e7120a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207476
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2026-06-30 10:04:33 +02:00
Khaled Hosny d47d44191d tdf#152396: List extended subfamily names in the style box
FontStyleBox::Fill inserted an entry only when weight/italic/width
attributes differed from the previous one, but these are not the only
attributes that can change between style. For example Fontin Sans has
both Regular and Small Caps styles and they have the same
weight/italic/width, so we were showing Regular while using Small Caps.

Change-Id: I01f6530c1c54e083faf722eabfac7ab925b39c00
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207382
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-06-27 22:55:21 +02:00
Khaled Hosny 08c6344675 tdf#152396: Apply a chosen font subfamily as the style name
The Character dialog registered a change only when the family name
differed, so picking an extended style of the same family (say a width
such as "Condensed") updated weight/italic but never stored the chosen
subfamily.

Store the chosen style as the text's typographic subfamily, and detect
style-name-only changes too. R/I/B/BI styles stay weight/italic-only, so
common case is unaffected. Since the style box is localized, we map it
back to the font’s own style name to keep the stored subfamily
locale-independent, and show it again on reset.

Change-Id: I9cef7071af1c62829572253f7c9f6cee36ad8266
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207330
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
2026-06-26 09:33:30 +02:00
Khaled Hosny 6891d3bac0 tdf#152396: Sort normal font width first in the style list
Ordering did not take width into account, so width styles would appear
first based on alphabetical order.

Change-Id: Ifd34d2acc1c9f832eac66209d422bcf80e3f02f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207323
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
2026-06-26 09:33:17 +02:00
Andras Timar 186ad46f74 Fix SIGBUS in EmbeddedObjectRef::GetGraphicStream with dangling OLE reference
During background slide thumbnail rendering, the slide sorter cache
can hit a SIGBUS when rendering OLE embedded objects. The crash occurs
in EmbeddedObjectContainer::GetEmbeddedObjectName() where the
unordered_map<Reference<XEmbeddedObject>, OUString> find operation
calls operator== on References, which uses iquery/queryInterface to
normalize interface pointers. If any entry in the same hash bucket
holds a dangling pointer, the queryInterface dereferences freed memory
whose vtable pointer is 0x0, causing SIGBUS.

Use the already-available aPersistName to look up the graphic stream
directly from container storage, bypassing the dangerous map traversal
entirely.

Change-Id: I5f99ebfd05c2daf06045c6c7124f4b598cf5f9d6
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/758
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1441
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
(cherry picked from commit 48e594fa9562451a8f9e0781915581a8b4417253)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207064
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-06-21 20:44:33 +02:00
Noel Grandin eb3cee606e template static field appearing in two different CUs
I saw some warnings and got suspicious, so I converted
the OSL_ENSURE to assert, and then found that we
have two copies of the s_nRefCount static field, which
obviously causes trouble.

I tried to fix this by removing usage of this dubious
template class, but the templates classes are intertwined,
and that lead to a very large patch with weird failures.

So this is a hacky minimal fix, using explicit template
instantiation to force the code to only be emitted
in a single library.

Change-Id: I634afb8b40570f2e7e0f8da541b8a2b6325fdc29
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/904
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit af69817a343ccf1411f6f8980c94ed1f696769b4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207023
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-06-20 14:20:53 +02:00
Michael Weghorn a7a599ddad svtools a11y: Pass OAccessible to BrowseBox::getAccessibleHeaderCell
Use more concrete OAccessible instead of the
abstract XAccessible UNO interface.

Change-Id: I46a5bd0af8c731a1da39f1960664152ee9c7c16c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206731
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-19 18:11:56 +02:00
Michael Weghorn a5861f19f6 vcl a11y: Return OAccessible in 2 IAccessibleTableProvider methods
Return the more concrete OAccessible class instead of the
abstract XAccessible UNO interface.

Change-Id: Ifc50ac7f74bf1743e849f905af3b9b66b7a98eba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206730
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-19 18:11:49 +02:00
Michael Weghorn e0fce78cbf svtools a11y: Return OAccessible in BrowseBox::getAccessible*
Return the more concrete OAccessible class instead of the
abstract XAccessible UNO interface.

Change-Id: I6e8b74c9bc06a72ab316ba97d76172529e9ab85b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206729
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-19 18:11:41 +02:00
Michael Weghorn 8bb4816710 svtools a11y: Use OAccessible for BrowseBox::THeaderCellMap
Use the more concrete OAccessible class instead of the
abstract XAccessible UNO interface.

Change-Id: I475ff467c5e430825e265d27972629a3f2f111f8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206728
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-19 18:11:29 +02:00
Michael Weghorn a14a19a83c a11y: Drop unused AccessibleBrowseBox includes
Directly include the OAccessible header where the
code was previously depending on transitive includes.

Change-Id: I83750f8db6f843e9afc0a2b95bd7969667550992
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206727
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-19 18:11:22 +02:00
Xisco Fauli 6ac93e562a normalize some namespace declarations
Change-Id: I4cc17f852dd58d95e97cdc673d1f1ca0c6de6c03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206636
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
2026-06-15 22:35:56 +02:00
Michael Weghorn 437c7136b6 svtools: Add missing include for rtl::Reference
Adresses this error shown in Qt Creator when opening
svtools/source/control/valueimp.hxx:

    valueimp.hxx:47:10: No template named 'Reference' in namespace 'rtl' (fix available)

It probably doesn't show up during the build because
of relevant other headers being included before this
one, but that shouldn't be necessary.

Change-Id: I2178b2eb918ba3e5a33a58ecbfff73049dbd163f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206257
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-10 09:46:50 +02:00
Michael Weghorn 24dd9846c1 svtools: Drop ValueSet logic using VALUESET_ITEM_NONEITEM
This should now be irrelevant after

    Change-Id: Iddf8cb3f8b8b0c81d469c0cd4b5d473634f7bac9
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Jun 9 15:07:39 2026 +0200

        svtools: Drop ValueSet's WB_NONEFIELD flag

and

    Change-Id: I2e12d4664418d40df85a1f791893109695c31398
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Jun 9 15:30:02 2026 +0200

        svtools: Drop always null ValueSet::mpNoneItem

, so drop VALUESET_ITEM_NONEITEM and logic depending on it
altogether.

Change-Id: I9ace1a6c6d26ebd14c87ed8f0e52c053c6c10615
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206256
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-10 09:46:43 +02:00
Michael Weghorn e34761e413 svtools: Drop always null ValueSet::mpNoneItem
After

    Change-Id: Iddf8cb3f8b8b0c81d469c0cd4b5d473634f7bac9
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Jun 9 15:07:39 2026 +0200

        svtools: Drop ValueSet's WB_NONEFIELD flag

, ValueSet::mpNoneItem isn't assigned anywhere, so
is always null. Drop it and corresponding logic altogether
and also the then unused ValueSet::maNoneItemRect.

Change-Id: I2e12d4664418d40df85a1f791893109695c31398
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206255
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-10 09:46:25 +02:00
Michael Weghorn 7d56eb1238 svtools: Pass ValueSet::ImplFormatItem item param by ref
It's known to always be non-null. (The only caller already
unconditinally dereferences the ValueSetItem* it passes
in the line above.)

Switch the param to reference to make more obvious it's always
non-null.

Change-Id: I60c66d6b5950fac6d9cd067106c7cdc05fce60f6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206254
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-10 09:46:18 +02:00
Michael Weghorn 9cb30d643f svtools: Drop local ValueSet::Format vars that are always 0
These are now always 0 after previous commit

    Change-Id: Iddf8cb3f8b8b0c81d469c0cd4b5d473634f7bac9
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Jun 9 15:07:39 2026 +0200

        svtools: Drop ValueSet's WB_NONEFIELD flag

, so drop them altogether.

Change-Id: I29d44fc76886723283fdff8be961b9633a4b115d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206253
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-10 09:46:10 +02:00
Michael Weghorn 57035c165c svtools: Drop ValueSet's WB_NONEFIELD logic
The last user of that flag/feature was dropped in
previous commit

    Change-Id: I32fb82cf0d2a631e20265847b8387075738ad813
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue Jun 9 14:51:15 2026 +0200

        sc: Use separate button for "Default" in tab bg color dialog

Therefore, drop the feature/implementation that would
only be relevant if there was still any user left.

In a first step (this commit), drop code checking for that
flag more or less directly. Further cleanup will follow
in separate commits.

the `nOff` local variable in ValueSet::Format can also be
dropped: It is assigned a value in any case, but the value
would only have been read of the WB_NONEFIELD case
further down.

Change-Id: Iddf8cb3f8b8b0c81d469c0cd4b5d473634f7bac9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206252
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-10 09:46:01 +02:00
Michael Weghorn f26084217a weld: Move weld::Button to own header/Rename weld.hxx
In the past, weld.hxx used to contain the class
definitions for weld::Widget and all subclasses.

By now, weld::Widget and almost all subclasses have
been moved to separate headers, to make it easier
to keep the overview and to avoid having to
recompile ~all UI code when one class changes.

By now, only weld::Button is left in weld.hxx.
Rename the header to Button.hxx.
Drop weld.hxx includes and instead add Button.hxx
includes (or weld::Button forward declarations) where
weld::Button is used.
(Don't simply replace all weld.hxx includes with
Button.hxx ones, since many of them were for the
use of other widgets that have since been moved
to their own headers.)

Add further includes where needed now that the
(direct or transitive) includes of weld.hxx were removed.

Change-Id: I8ea6201446a418d5e38b46337059dcd517ee29d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205937
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-05 07:58:07 +02:00
Michael Weghorn 7c6d496a71 weld: Move weld::TransportAsXWindow to own header/source
This makes it easier to keep an overview and reduces
what needs to be recompiled if the class changes in
the future.

Change-Id: Ie8d0aad9bca3e990f78d4ffc006a04b0a8086fd9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205935
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-04 14:36:59 +02:00
Michael Weghorn 7953fa722b weld: Move weld::DoubleNumericFormatter to own header/source
This makes it easier to keep an overview and reduces
what needs to be recompiled if the class changes in
the future.

Change-Id: I9ecaca23d488389a116f9a27b0e492a0e8eb3aee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205933
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-04 14:36:38 +02:00
Michael Weghorn be71836e54 weld: Move weld::LongCurrencyFormatter to own header/source
This makes it easier to keep an overview and reduces
what needs to be recompiled if the class changes in
the future.

Change-Id: I19a799aad75d881f694fa3194ffd790077edab74
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205932
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-04 08:39:55 +02:00
Michael Weghorn 0c4f814e72 weld: Move weld::TimeFormatter to own header/source
This makes it easier to keep an overview and reduces
what needs to be recompiled if the class changes in
the future.

Change-Id: I16f988657fb183c9701cd14fd953fae6026e5bd1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205931
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-04 08:39:47 +02:00
Michael Weghorn 110bc1e983 weld: Move weld::DateFormatter to own header/source
This makes it easier to keep an overview and reduces
what needs to be recompiled if the class changes in
the future.

Change-Id: I76ff76609646a22f81086e2d28dc53ef322dc64f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205929
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-04 08:39:32 +02:00
Michael Weghorn 8f7cf9c32c weld: Move weld::CheckButton to own header
Move the class out of weld.hxx into its own header, in
order to make it easier to keep an overview and to avoid
having to recompile ~all UI code when the class is
modified.

Add missing includes/forward declarations in places
previously depending on transitive includes that
are now dropped.

Change-Id: I3215b358e0fa45ffce08756218c386e1a4d7ebc6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205928
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-04 08:39:19 +02:00
Michael Weghorn ba7331747f weld: Drop not directly used includes/fwd-decls from weld.hxx
These are not needed inside weld.hxx itself. Instead
add the required includes/forward-declarations to those
files actually needing them, instead of relying on the
now dropped ones.

Change-Id: I5e4cea030867d14057b2bdcc2a2a4cd98843651d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205906
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-04 05:57:14 +02:00
Michael Weghorn da1c7a5459 weld: Move weld::RadioButton to own header
Move the class out of weld.hxx into its own header, in
order to make it easier to keep an overview and to avoid
having to recompile ~all UI code when the class is
modified.

Change-Id: I34876c5bef75e30e758029b0fe5afeecc92d509d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205903
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-03 23:19:54 +02:00
Michael Weghorn 911a89ddeb weld: Move weld::WaitObject to own header/source
Move the class out of weld.hxx into its own header and
source file, in order to make it easier to keep an overview
and to avoid having to recompile ~all UI code when the class
is modified.

Change-Id: I91bae842e5b18a83db45de12150c21f75e537fb9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205900
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-03 23:19:30 +02:00
Michael Weghorn 6a299f8297 svtools: Port SvtLineListBox from ValueSet to weld::TreeView
Use a weld::TreeView inset of the custom ValueSet widget
for the SvtLineListBox that can be used to select a line
style.

Show the name of the line style in a column next to the
icon, which makes this more consistent with the popup used
to set a line style for Calc cells in the "Properties"
sidebar deck, section "Cell Appearance".

Using weld::TreeView also helps to be more consistent with
other platform/toolkit widgets and reduces use of custom
widget logic (implemented in the ValueSet class).

Some notes:

* ValueSet uses a 1-based ID for its items. weld::TreeView
  uses a 0-based index, so adjust places using those
  accordingly.

* Use the weld::TreeView handler for item activation
  (set with weld::TreeView::connect_item_activated) instead
  of the ValueSet selection handler (set with
  ValueSet::SetSelectHdl) and activate single-click activation
  (using the GtkTreeView::activate-on-single-click property
  in the UI file) so that a single click on an item still activates
  it but keyboard navigation using the arrow keys doesn't.

SvtLineListBox gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Adjust a UI test accordingly (use TreeView widget, use
new 0-based indices and press the Return key after selection,
to activate selected entry).

Change-Id: I54fb1d2a49774c6c64eda0ad5de7af36c3603cee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205821
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-06-01 08:53:16 +02:00
Michael Weghorn 6578c698b4 svtools: Avoid SvxBorderLineStyle <-> ValuSet item ID casting
No longer use the underlying integer value for the
SvxBorderLineStyle enum values for the ID of the
ValueSet items in SvtLineListBox.
Instead, use the usual approach of using a 1-based
index and use/determine that index as needed to
find the corresponding enum value/item ID.

This avoids casting and prepares for an upcoming
commit that will port away from using ValueSet
to use weld::TreeView instead.

SvtLineListBox gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Adjust a UI test accordingly to use the new item IDs.

Change-Id: I754e2b399643003c9f06ab6b3b34c3ad021f2b95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205820
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-06-01 08:53:03 +02:00
Michael Weghorn 336f70f966 weld: Move weld::Label to own header
Move the class out of weld.hxx into its own header, in
order to make it easier to keep an overview and to avoid
having to recompile ~all UI code when the class is
modified.

Change-Id: Ide86f35543468a88288a068cc9f89eaf381ac52f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205763
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-05-27 22:24:37 +02:00
Mike Kaganski bce4bc55f9 Move ToolboxController to use OPropertyContainerImplHelper
Quite a large inheritance chain, which all needed replace dispose
with disposing, and make sure the locking is correct.

Introduce comphelper::unique_unlock, RAII class for scoped release
of std::unique_lock, to help ensure the invariant established in
commit 4fc1ab0ca8d9bb0f0b8344d0537882aab1d6d2c0 (add assert to keep
WeakComponentImplHelperBase::disposing callees honest, 2026-04-04).

Change-Id: I72c98c25c01b8042428ef2376c6aba3c6b15ec87
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/248
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 8ed30e4a243a3efdfe380852d20910bc4a02e181)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205688
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-26 00:41:07 +02:00
Michael Weghorn ee7e1d968b weld: Move weld::Scale to own header
Move the class out of weld.hxx into its own header, in
order to make it easier to keep an overview and to avoid
having to recompile ~all UI code when the class is
modified.

Change-Id: I2e42a2992c08311922451bb01062683bd81954fa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205486
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-05-22 21:56:27 +02:00
Heiko Tietze 7877351d36 Resolves tdf#121174 - Module-specific theme colors
Shades the background of Notebookbars with module-specific
colors if theming is enabled. The patch adds four *NOTEBOOKBARCOLOR
colors in the UI theming section.

To deal with light/dark system themes, the color is merged with the
background at a transparency of 150 by default, which can be changed
via the expert setting common::Misc::NotebookbarColorTransparency.

MacOS is excluded since it draws the whole Notebookbar and has
no extra colors for the background.

Change-Id: Ia016499a9657793ebcbe07f7a50281195ab08c43
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205153
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Tested-by: Jenkins
2026-05-22 07:15:21 +02:00
Michael Weghorn 7b68bd0779 vcl: Pass Window::Draw outdev param by ref
This makes clear that it is always non-null.

Change-Id: Id29efa073dae8ce01657ec28493d5f63a564d0ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205350
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-20 00:38:47 +02:00
Caolán McNamara 23b768f9e6 return const OUString& from GetLanguageString
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/891
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit 415340106a717b9d8fc8c82dbbe748addf5e574b)
Change-Id: I6351a92bff9f1c6035d603cd5b99a570f03c3b8d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205265
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-05-17 19:42:37 +02:00
Caolán McNamara 6158635fcd reduce string copying in SvtLanguageTableImpl::GetString
Change-Id: If97c041bd860bc0082f8bc1ed2a8ef2d59e7bd1e
Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/853
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 873426fb3922eeb26daf1a28bcf47087f1d115d9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205262
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2026-05-17 18:21:20 +02:00
Andras Timar d84c0d493b svtools: rebuild language table on UI language change in LOKit
The SvtLanguageTableImpl singleton caches translated language display
names at first access. In the LOKit pre-initialization (preloadData),
the singleton is force-loaded before any UI language is set, so all
~450 language names are cached as their untranslated English strings.
When a document is later loaded with an actual UI language, the cached
English names persist, causing language dropdowns (e.g. in Format >
Characters) to always show English names regardless of the view's UI
language.

Track the UI language used to build the table and, in LOKit mode, check
on each access whether it has changed. If so, rebuild the table with the
correct translations.

Change-Id: I88a9611a88281f9294d6f30dbcd8e1149203e70a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200383
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 5f163d605b0522e8afde8a5ef84c74281c6b955a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205260
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2026-05-17 16:32:43 +02:00
Michael Weghorn 27dc598398 svtools: Use range-based for in SvtLineListBox::GetLineStyleName
Change-Id: I877bcf79d74637964c9dbbb2d9593a1d7ed9062e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205159
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-14 07:51:02 +02:00
Michael Weghorn 68622facfd svtools: Don't manually set item height in SvtLineListBox
No longer call ValueSet::SetItemHeight to manually set
the height of the items, but derive the height to use
from the size of the images used for the different line
styles.

For that to work, insert images that already contain the
padding by calling the new SvtLineListBox::GetLineImage
variant introduced in previous commit

    Change-Id: Idb26e6aba75dcb1642897be8886bd896a5de249e
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Tue May 12 15:58:17 2026 +0200

        svtools: Extract SvtLineListBox helper to get VirtualDev image

This prepares the transition/porting away from using
ValueSet to a weld::ItemView subclass, by no longer relying
on previous logic specific to ValueSet.

This gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Change-Id: Ic71ba6f58334f77f3d29c0fc2299e08b3f3aec0e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205125
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-05-13 07:22:01 +02:00
Michael Weghorn 37b561f12c svtools: Extract SvtLineListBox helper to get VirtualDev image
Extract logic from SvtLineListBox::UpdatePreview that allows
to get a VirtualDevice holding the image to use for the
line previews. It uses the existing SvtLineListBox::GetLineImage
that returns an Image and then draws that into the VirtualDevice,
with some padding around it.

Use a separate VirtualDevice and not SvtLineListBox::aVirDev.

This will also simplify porting away from using ValueSet in
SvtLineListBox in an upcoming commit.

This gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Change-Id: Idb26e6aba75dcb1642897be8886bd896a5de249e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205124
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-13 07:21:54 +02:00
Michael Weghorn 7443e24249 svtools: Use range-based for in SvtLineListBox::UpdatePreview
Change-Id: I917a36dfb023c92c41f899fc30c04693dfc373b8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205123
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-13 07:21:46 +02:00
Michael Weghorn a2351572f9 svtools: Extract helper method to handle SvtLineListBox selection
Move the SvtLineListBox::ValueSelectHdl logic to a new
helper method that doesn't require passing a
ValueSet* param that is ignored anyway.

This also prepares for porting away from ValueSet in an upcoming
commit.

Change-Id: I769cafb0a63542a720d8a62da2c8e50ceacbcef4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205107
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-05-13 07:21:39 +02:00
Michael Weghorn 89a33ad194 svtools: Use range-based for in SvtLineListBox::UpdateEntries
Change-Id: Ide2047e8e0af644229ac71f7f66e14babf775eea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205106
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-13 07:21:22 +02:00
Michael Weghorn e995df3f34 svtools: Stop using ValueSet::GetItemImage in SvtLineListBox
Stop relying on that ValueSet method, in preparation of
switching from ValueSet to weld::IconView in an upcoming
commit.

Instead, use SvtLineListBox::GetLineImage to get an image
for the currently selected entry.

This gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Change-Id: I0ca73867dc0e6af5d32684229909015b4e416af0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204973
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-05-10 00:27:24 +02:00
Michael Weghorn 7070122ec1 svtools: Move more logic into SvtLineListBox helper to create bitmap
Rename SvtLineListBox::ImpGetLine to SvtLineListBox::GetLineImage
and move more logic from the only caller, SvtLineListBox::UpdateEntries
into the helper method:
Pass only a single ImpLineListData& param and get everything
needed from it right in the method itself.

This will also make an upcoming switch from using
ValueSet to using weld::IconView easier.

This gets used e.g. in the control to pick the line style
in Writer's "Format" -> "Page Style" dialog, tab "Borders".

Change-Id: Ice18481d2b90cf126692d1edbdce482638211002
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204972
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2026-05-10 00:27:19 +02:00