By now, NotebookBar::m_pViewShell is always null and
NotebookBar::m_rDisposeLink is unset.
The method NotebookBar::SetDisposeCallback which would
have set both members was dropped in
commit 6f81bce807
Date: Wed Jun 3 12:34:28 2026 +0200
loplugin:unusedmethods
, so drop the now pointless members altogether.
Change-Id: Ib6392c22094601ebcc2349938e553a845fe0be06
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208273
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
NotebookBar::m_bIsWelded is always false and
NotebookBar::m_bIsWelded is always an empty reference
by now, see also previous commit
Change-Id: Ic637b1e7026509b0736d877c88cf7bd6ca50b54c
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon Jul 20 10:24:31 2026 +0200
vcl: Drop obsolete LibreOfficeKit path in NotebookBar ctor
. Therefore, drop them and related logic altogether.
Change-Id: I2a4c21728759207158f8f62049fe9edd85fac239
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208271
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This is no longer used and e.g. the GetMainContainer
method that the comment refers to was dropped in the
meantime, see
commit 8754a75d98
Date: Tue Jun 2 14:47:57 2026 +0200
vcl: drop WeldedTabbedNotebookbar
"WeldedToolbar" no longer exists after
commit fd65cea59c
Author: Xisco Fauli <xiscofauli@libreoffice.org>
Date: Mon Jun 1 17:14:35 2026 +0200
drop notebookbar_online.ui
and
commit 6f81bce807
Date: Wed Jun 3 12:34:28 2026 +0200
loplugin:unusedmethods
(`git show --ignore-space-change` can help to see the
"actual change" more easily.)
Change-Id: Ic637b1e7026509b0736d877c88cf7bd6ca50b54c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208270
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
After previous commit
Change-Id: Iea0a2d64a552ff27ff5f8595f6d4379b6b224f94
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Wed Jul 15 21:50:13 2026 +0200
vcl: Consolidate SystemWindow::GetWindowState callers
, only the variant directly returning the vcl::WindowData
is used outside of the class.
Cosolidate the two methods by merging them.
Change-Id: I0fb094a8ed583a9700ff64e34ebce86826320aa4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208172
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Switch/Simplify the 2 remaining callers of the variant with the
vcl::WindowData in/out param to use the one that takes the mask
and returns the vcl::WindowData.
Make the other variant private as it's by now only used
inside of the SystemWindow class itself.
Change-Id: Iea0a2d64a552ff27ff5f8595f6d4379b6b224f94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208171
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
So far, SalFrame::GetWindowState had a bool return value
and a vcl::WindowData* out param.
The comment said:
// if this returns false the structure is uninitialised
However, all implementations always return true.
All callers pass the pointer to a newly default-constructed
vcl::WindowData.
Instead, drop the (always true) bool return value and out param
and instead directly return the vcl::WindowData as the methods
return value.
For macOS, add a new vcl::WindowData member to the
RuninmainResult union, so this can be used as a return
value with OSX_SALDATA_RUNINMAIN_UNION in
AquaSalFrame::GetWindowState.
Change-Id: Icc55685cae9991a93fea43963273753d8aa2420f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208169
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
... instead of by pointer.
This makes clear it's non-null and allows to
drop some corresponding null checks.
Change-Id: I3e6c85c555ebcc0d949628e10fce891bc1c83fd0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208162
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Simplifies OutputDevice::ImplLogicToDevicePixel for B2DPolygons by
delegating coordinate transformation to the CoordinateMapper. By using
LogicToDevicePixelX and LogicToDevicePixelY, we eliminate redundant
if/else branching and ensure that window and pixel offsets are
consistently applied across both axes.
This refactoring also addresses systemic X/Y scaling mix-ups where the
horizontal scaler was being used for vertical coordinates, a bug
identified through failures in PDF export integration tests.
Changes:
* Simplified B2DPolygon transformation loop in map.cxx.
* Removed private visibility (SAL_DLLPRIVATE) from the B2DPolyPolygon
overload of LogicToPixel to allow for external unit testing.
* Added a new unit test fixture 'testB2DPolygonAsymmetricDPI' in
vclmaptest.cxx to verify scaling accuracy on asymmetric displays
(e.g., 100x200 DPI) and prevent future axis-specific regressions.
Change-Id: I718df9af8e5d8b2a446be74223047bdaa20ed148
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207555
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
The newly refactored CoordinateMapper::Logic[X|Y]ToDevicePixel()
methods act as the primary, state-aware public API for scalar
coordinate transformation.
Because these mapper methods already handle the IsMapModeEnabled()
state check internally, we can safely remove the manual branching
from the higher-level OutputDevice conversion methods. This
drastically simplifies the code, replacing massive blocks of inline
mathematical boilerplate with clean, 1-to-1 delegation calls.
- Simplified LogicToDevicePixel(const Point&) to delegate directly
to the mapper.
- Removed redundant MapMode branching that is now safely handled
by CoordinateMapper.
Change-Id: Ie7e3696f9cb2ec7098a3b8e6f5e500a366f8e72f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203653
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Negating both of them has no effect on the
result of the comparison, but makes the code
a bit less straightforward.
Change-Id: I500318ad0918c15a27e4de674ca3932d26f7e485
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208141
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
SalFrame is the common base class for various platform
and toolkit specific subclasses.
It's defined in vcl/inc/salframe.hxx. Move method
definitions to an own source file matching the name
of the header instead of spreading them across two
other existing source files that are otherwise not
directly related to SalFrame.
This makes it easier to keep an overview.
Drop the obsolete
// The only common SalFrame method
comment from above the SalFrame::GetGeometry
implementation.
Change-Id: Ifaa4a60f41d7d2e4620d492982ebd8341a433df6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208140
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
return the size instead of using 2 tools::Long& out
params for the width and height.
Change-Id: Ib5cefb504ee27b6aac977a2f9534c29bc53db72d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208067
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
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>
It is a misnomer now, so return to the original name.
Also drop the redundant private Font::GetAverageFontSize().
Change-Id: I67495fa675091b459a4e90ac09665489cc61fdd9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207991
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
The font width used to mean the average character width on Windows,
like GDI’s LOGFONT lfWidth. This complicates things cross-platform, and
also DirectWrite does not expose such info.
Drop the whole average character width nonsense and align Windows to
other platforms, keeping the already existing cross-platforms
workarounds for EMF/WMF that are now applied also to Windows.
Change-Id: I750d42ad090bb9d0f776e80609b7a67b8ac38aac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207990
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
Identify a font by its typographic family (name ID 16) and subfamily
(name ID 17), falling back to legacy names (name ID 1 and 2), so we can
interoperate with systems that use legacy names, while using typographic
names internally.
Change-Id: Ie51c8c14fe91e7e314d9a4b4808485ea4483b524
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207546
Tested-by: Khaled Hosny <khaled@libreoffice.org>
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
I implemented GetOpenTypeMathConstant using hb-ot-math for
wrapping "hb_ot_math_get_constant ()" to enable
using it through the StarMath module.
Change-Id: Ica4cf09d80c6fe036763ef1d9b52aaf789e756a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207652
Tested-by: Jenkins
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Use the existing macro instead of reimplementing
the logic to concatenate the file name by prepending
SAL_DLLPREFIX and appending "so" and SAL_DLLEXTENSION to the
library name.
Change-Id: I2db83a3d647c38f2fbfdd11a049c3a0f49a1a578
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207940
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
weld::Entry and weld::TextView are implementing the
same logic for calling a callback/handler when the
text changes.
Now that
Change-Id: I5572fc88caf577fae9a23a39f1ec4f2179935a99
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Jul 9 14:04:00 2026 +0200
weld: Pass weld::TextWidget& in text change callback/handler
has prepared for that step, deduplicate the logic by
moving it to the shared weld::TextWidget base class,
which will also make sure the logic stays in sync
for both classes.
Change-Id: I69d4b85923fea05383c78f9145fee72b2bd62684
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207937
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
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>
On at least the GTK and gen plugins, iter_n_children was returning 1
when the node has children on demand but then iter_children will return
false in order to ignore the dummy node. This was causing an infinite
recursion when iter_previous is called and the previous node has
on-demand children because that uses the result of iter_n_children to
determine if the node has children and then uses iter_children to move
to a child node without checking the return value. That meant the
iterator wouldn’t move and it would keep searching from the same place
forever.
This patch fixes it by making iter_n_children non-virtual and making it
bail out early with 0 if the node has children on demand. Otherwise it
will ask the backend via a virtual function which has been renamed to
do_iter_n_children so that it is similar to how do_iter_children works.
Change-Id: Ie9a3d5d51c9eae0789048fa5240441663642595d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207589
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Replaces the manual addition of mapping offsets (GetMapping[X|Y]Offset)
with the encapsulated LogicToOffsetLogic[X|Y] helpers introduced
recently in CoordinateMapper.
This continues the ongoing architectural cleanup by standardizing how
absolute logical coordinates are transitioned into view-relative
logical space before being scaled to device pixels.
- Updated LogicToDevicePixel overloads (Point, Rectangle, Polygon,
B2DPolygon).
- Updated LogicToPixel overloads (Point, Rectangle, Polygon).
- Updated LogicToDeviceSubPixel.
Change-Id: Ie0a6fc40ada9127860a244f3f93e02d9cc658f72
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203652
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Following the migration of the device origin state into
CoordinateMapper, this commit updates the complex coordinate
transformation methods in map.cxx to query the origin directly
from the mapper.
Bypassing the OutputDevice wrappers (GetDeviceOriginX/Y) makes it
explicitly clear that the mapper owns this physical window offset.
This reduces internal reliance on the OutputDevice god-class API
and sets the stage to potentially remove these wrappers entirely.
- Updated LogicToDevicePixel overloads (Point, Rectangle).
- Updated ImplLogicToDevicePixel overloads (Polygon, B2DPolygon,
PolyPolygon).
- Updated ImplDevicePixelToLogic (Rectangle) and
ImplPixelToDevicePixel (Region).
Change-Id: I1b5915f27bf6117a0fd303c7f30603a67ca181a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203651
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
This commit finalizes the migration of the core scalar coordinate
transformations by moving the logic out of OutputDevice and entirely
into CoordinateMapper.
To clearly separate the public API (which handles MapMode state
branching) from the internal math engine (which unconditionally
applies offsets and scaling), the mapping operations have been
explicitly split.
- Removed ImplLogicXToDevicePixel() and ImplLogicYToDevicePixel()
from OutputDevice.
- Added LogicToDevicePixelX() and LogicToDevicePixelY() to
CoordinateMapper to act as the primary state-checking API.
- Added ImplCalcDevicePixelX() and ImplCalcDevicePixelY() to
CoordinateMapper to isolate the raw transformation math.
- Updated all scalar call sites across vcl (bitmap, map, mask,
outdev, pixel, rect) to route their math through the mpMapper
instance.
Change-Id: Ibb23aec54dd6eab6e3a753c2a61f8e023aa03883
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203650
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
vcl/source/outdev/ImplMapRes.cxx:115:70: runtime error: signed integer overflow: -9223372036854775808 + -57089 cannot be represented in type 'long long'
#0 0x592c9880de2d in operator() vcl/source/outdev/ImplMapRes.cxx:115:70
#1 0x592c9880de2d in ImplMapRes::CalcMapResolution(MapMode const&, long, long) vcl/source/outdev/ImplMapRes.cxx:119:9
#2 0x592c9819827c in OutputDevice::SetMapMode(MapMode const&) vcl/source/outdev/map.cxx:519:18
#3 0x592c9830750e in GDIMetaFile::Play(OutputDevice&, unsigned long) vcl/source/gdi/gdimtf.cxx:365:26
#4 0x592c978beda6 in TestImportSVM vcl/source/filter/svm/SvmConverter.cxx:1281:22
This seems to have appeared since:
commit 64c6a8c44b7730d1f703f260e7359642e8af9288
Date: Sun Mar 22 15:09:35 2026 +0200
Fraction->double in MapMode
Clamp the divided value to sal_Int32 range to explicitly restore the
limits that BigInt path incidentally.
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I3c8061a72e447e4bdcad07ace3075076d09285be
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/1891
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
(cherry picked from commit b1dd07307b7a00e73996975616efa113940fdf37)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207723
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Completes the logical-to-device transformation pipeline by moving
the final physical offset calculations into CoordinateMapper.
OutputDevice no longer needs to manually assemble the view pixels,
device origins, and pixel offsets.
- Added LogicToDevicePixelX() and LogicToDevicePixelY() to
CoordinateMapper to handle the final transformation from view
space to physical device space.
- Simplified ImplLogicXToDevicePixel() and ImplLogicYToDevicePixel()
in map.cxx to directly delegate to these new mapper methods.
- Added comments in CoordinateMapper to clearly delineate the
Viewport (view space) and Physical window (device space) methods.
- Updated the unmapped branches in map.cxx to fetch the device
origin directly from mpMapper.
Change-Id: If7dbcf3fe9ed70fabc6c24d3b4a426cdde7d438c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203649
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
These functions are declared as file-local static helpers in map.cxx,
so they should follow the standard lcl_ naming convention rather
than the Impl prefix, which is generally reserved for private
class methods.
- Renamed ImplLogicToSubPixel() to lcl_logicToSubPixel().
- Renamed ImplSubPixelToLogic() to lcl_subPixelToLogic().
- Updated all call sites in SubPixelToLogic(), LogicWidthToDeviceSubPixel(),
LogicHeightToDeviceSubPixel(), and LogicToDeviceSubPixel().
Change-Id: I01e64f41b153526c13f15856e1182d3bea6802f0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203648
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
Continues the encapsulation of coordinate mapping logic by moving
the intermediate logical-to-pixel calculation into CoordinateMapper.
This removes the need for OutputDevice to query the mapper for
individual scaling and DPI components just to do the math itself.
- Added LogicToViewPixelX() and LogicToViewPixelY() to CoordinateMapper
to handle the multiplication of the offset logical coordinate, map
resolution scale, and DPI.
- Simplified OutputDevice::ImplLogic[X|Y]ToDevicePixel() to delegate
directly to these new helpers instead of relying on lcl_logicToPixel.
- Included minor formatting cleanup in LogicToLogic.
Change-Id: Iabf90dd129e3f51102c05e27fe11af1bb6d946a1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203647
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
Completes the deprecation of legacy coordinate subsystem naming by
renaming GetOutOffYPixel() and SetOutOffYPixel() to
GetDeviceOriginY() and SetDeviceOriginY() across OutputDevice,
Window, and CoordinateMapper.
This unifies axis naming conventions following previous X-axis
refactoring passes, clarifying that these fields represent the
physical origin offsets of the device rendering canvas.
This patch also moves view transformation logic inline from outdev/map
to CoordinateMapper, and wraps sprawling multi-line logic formulas
across mapping routines to clean up formatting boundaries.
Key changes:
* include/vcl/outdev.hxx / window.hxx: Updated public declarations
to replace GetOutOffYPixel with GetDeviceOriginY.
* vcl/inc/CoordinateMapper.hxx: Migrated view transformation cache State
members and mapping calculation methods into the mapper object.
* Global adjustments: Patched all related coordinate offset reads
and tracking writes throughout desktop, editeng, sc, svx, and vcl.
Change-Id: I28fec54a7f3312cc41ada2de38b26351c0a65527
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203646
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Rename GetOutOffXPixel() and SetOutOffXPixel() to GetDeviceOriginX()
and SetDeviceOriginX() across OutputDevice, Window, and CoordinateMapper.
The legacy "OutOff" naming convention obscured the difference between
system-level window positioning offsets and internal content scrolling
(SetPixelOffset). The new nomenclature explicitly communicates that
these metrics strictly govern the device coordinate space origin.
This patch focuses strictly on the X-axis coordinate reads and cleans
up duplicated formatting signatures inside the CoordinateMapper header.
Impacted modules:
* include/vcl: Update public declarations in outdev.hxx and window.hxx.
* vcl/inc: Clean up CoordinateMapper.hxx whitespace and scaling hooks.
* Global: Patch dependent pixel coordinate reads across desktop, editeng,
sc, sfx2, svx, and vcl.
Change-Id: I546e1d255887e3b280ff15caca2e27ef10de52d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/206509
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Tested-by: Jenkins
Rename weld::TreeView::connect_column_clicked
and weld::TreeView::signal_column_clicked to make
clear that they are not about a click anywhere in a
column, but about the column *header* being clicked.
The GTK 4 doc for the corresponding
GtkTreeViewColumn::clicked signal [1] by which the API
was apparently inspired is clear about this:
> Emitted when the column’s header has been clicked.
[1] https://docs.gtk.org/gtk4/signal.TreeViewColumn.clicked.html
Change-Id: I0b4b337b5ca938bb1526d9857ed2b0b244daf23c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207591
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
... for 32-bit-with-alpha sources"
The commit broke (e.g. toolbar and menu) icons for at least
the gtk3 and qt6 vcl plugins when scaling is enabled
(s. tdf#172651).
The commit message suggests that it is primarily relevant
for Collabora Online, which doesn't use this repo anymore,
so no negative consequences of reverting it again are known.
(When testing, broken icons were sometimes still shown
with the revert in place unless starting with a fresh
user profile, probably due to icons being cached in the
user profile.)
This reverts commit 7b5ddd9311.
Change-Id: Iad735af3f41229a2263a8ce3de1c2c168ce9cecb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207560
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
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>
The glyph layout cache builds the layout for a substring by cutting it out
of the cached whole-string layout and reusing those glyphs without reshaping.
That is only correct at a cluster boundary that HarfBuzz reports as safe to
concatenate.
The previously checked unsafe-to-break flag is a smaller set and does not
cover boundaries where the surrounding text changes the glyphs, for example
which fallback font a run resolves to, so a subset could be cut where a fresh
layout of the substring would differ.
Ask HarfBuzz to produce the unsafe-to-concat flag and guard the subset with
it instead.
seen loading sd-cre-hea-ar-7e49187f4be1eb63.docx
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I8ff201a4af6c1c9e283a87267b47749a8ce717e6
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/5516
Reviewed-by: Noel Grandin <noel.grandin@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit 573d06f6ce4b5123ac7b0d55ae3e846c0a07cbf1)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/207395
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins