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>
Adds a compiler plugin to detect cases of dereferencing a smart
pointer (such as unique_ptr or UnoCursorPointer) and then immediately
taking the address of the reference. In that case it is better to just
call get() on the pointer. This is particularly important if the pointer
can be null because in that case the initial dereference results in
undefined behaviour.
Change-Id: Ib1cca00c9180572f446721b90f83aa7fddb88c7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211756
Reviewed-by: Neil Roberts <nroberts@libreoffice.org>
Tested-by: Jenkins
+ rename "Freeze" to "Panes"
+ split Options into "View" for and "Options" for the last four commands
+ Remove "Function List" and replace it by "Styles"
Change-Id: Id662c3f09454f4a15a2593bff86b523c8d235997
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211823
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Instead of using a custom ValueSet subclass to
draw images and text next to them for selection
in the line width popup, use a weld::TreeView with
two columns: one for the image, and one for the text.
This is similar to what
commit b185d34642
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Nov 28 14:12:04 2025 +0100
tdf#168120 sc: Switch to weld::TreeView in CellLineStyleControl
did elswhere.
Adjust indices used to account for the fact that
weld::TreeView indices are 0-based while the ValueSet ones
are 1-based.
The special "Last custom value" entry so far was
using two separate images, depending on whether
or not it was enabled/sensitive or not: If it is
disabled, a greyed out variant of the image was used.
With the switch to weld::TreeView, leave that up
to the TreeView by simply enabling/disabling the
corresponding row using weld::TreeView::set_sensitive
for the corresponding row.
Drop the now unused LineWidthValueSet.
This switch to weld::TreeView reduces custom widget
logic and custom drawing and makes this more consistent
with other widgets used elsewhere (e.g. like for the
one mentioned in the commit above, the usual font
is used now as well, and it also aligns the behavior
more with that one.)
The popup for configuring the line thickness that uses
this code can be triggered like this:
* start Writer
* insert a chart using "Insert" -> "Chart..."
* select the chart wall in the chart
* open the "Properties" sidebar deck
* in the "Line" section of that sidebar deck, click on the
"Thickness" button/combobox
Change-Id: I423e80bba9e81a98e80652f6486970d40286362e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211735
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
When building with `--with-java`, `jar --date=` gets an empty value on
the BSDs due to "date: illegal option -- d" and causes build failure.
All the BSDs use `date -r EPOCH` and the `date` in macOS is derived from
BSD's. `date -d @EPOCH` is GNU coreutils syntax.
Claude Code (Opus 5.5) was used to analyze the issue and to draft the
first fix.
Change-Id: I5c28c58985f0fdf2a44a608000b9d14ebd33a6ef
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211765
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
Tested-by: Jenkins
This in particular also gets rid of an extra level of indentation
in toolkit/source/controls/table/mousefunction.cxx.
Change-Id: I1e5f8db7b281fb1d68d7819c5d99efae13c0cea4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211081
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The list of sheets is already available via right clic on any activated button
in the navigation bar. However, it is somehow hidden for the user.
This change added (for LTR and RTL UI) a hamburger button which show the list
with a simple left click.
Change-Id: Ic21b1e4d345a10bf86f2e97d1f7749bbcacc7a6e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210677
Tested-by: Jenkins
Reviewed-by: Laurent Balland <laurent.balland@mailo.fr>
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
I had to replace "scheherazade" with "Noto Naskh Arabic", which
is a similar font, in vcl/source/font/PhysicalFontCollection.cxx
in order to avoid the following assert in gerrit_linux_clang_dbgutil
(not reproduced locally):
[_RUN_____] testBtlrCellChinese::TestBody
WPSDocument::isFileFormatSupported()
warn:sal.file:2772196:2772196:sal/osl/unx/file_misc.cxx:397: Invalid directory URL
warn:basic:2772196:2772196:basic/source/uno/namecont.cxx:949: Cannot access extensions!
warn:sal.file:2772196:2772196:sal/osl/unx/file_misc.cxx:397: Invalid directory URL
warn:basic:2772196:2772196:basic/source/uno/namecont.cxx:949: Cannot access extensions!
cppunittester: /home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/vcl/source/gdi/impglyphitem.cxx:318: void checkGlyphsEqual(const SalLayoutGlyphs &, const SalLayoutGlyphs &): Assertion `l1 == l2' failed.
Change-Id: I26cd80cee639cf0e17d7e71c3abdc49bf984de9c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/202933
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Once there's a NSServicesMenuRequestor in the responder chain and we use
NSMenu's popUpContextMenu then we get Continuity items in the right-click
menu. The resulting image comes in via private pasteboard which we then
have to route through the Aqua clipboard code. Since there's no good way
to just insert things into a document (partly because we have no idea what
document it is) we simulate a Paste command with a fake key event to let
each shell variant handle the Continuity image as clipboard content.
To get the Continuity items added to the right-click menu we need to
use [NSMenu popUpContextMenu]. Popping up the menu with the current
NSPopUpMenuButton doesn't trigger those additions. It's not clear
why the original code from 2008 (via 5c43975d73) used the button
mechanism, but popUpContextMenu appears to work fine instead.
The 9px offset from the original commit also is no longer required,
as using no offset much more closely matches where native OS X apps
position the menu relative to the mouse pointer.
Change-Id: I80266ecac7094bd82e90e43995afc7b47d3e04d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211014
Tested-by: Jenkins
Reviewed-by: Dan Williams <dcbw@libreoffice.org>
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
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>
A correlation circle plot reads the ends of its range differently from every
other chart type: the last two columns are the dimensions its points are placed
against and the columns before them are the features. One range holds the lot,
so nothing about the entry gives that away, and a reader who does not already
know it has no way to work it out.
Display a information label under the range input saying the last two
columns of it are component dimensions and the columns before that are
features.
Change-Id: Ib7d27aad189f12be188f61b1fc317dd1e718b803
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8105
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit 2cbf62e18df956ed23c77932cd5e38424e7baa1f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210470
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
A correlation circle plot shows how each feature of a table relates to the
first two dimensions of a decomposition of that table, which a user can now
work out in a spreadsheet with MSVD. One point per feature sits at the
correlation of that feature with the first dimension across and with the
second dimension up, inside a circle of radius one.
The data arrives as one series per feature. Each series holds its own feature
column under the new role values-feature, together with the two dimension
columns under values-x and values-y, which every series shares the way the
bubble chart shares its x column. Keeping the dimensions on the x and y roles
means the point count, the axis scaling and the label machinery need no
special case, and the series label comes from the feature column header, so
the legend and the point labels read as feature names.
The interpreter reads a flat list of columns as a feature table followed by
two dimension columns: the last two are the dimensions and every column before
them is a feature. One range holds the lot, which is what the wizard hands
over, and it is also the order the list comes in when a chart of another type
is turned into this one. A first column of instance names is kept out of the
features when the range says it has them, as it is for a bubble chart.
Both dimensions are numbers running from minus one to one, so the chart type
joins the scatter and the bubble chart in asking for a numeric axis across.
That answer is also what turns the axis of names back into a numeric one when
a chart of another type becomes this one, since the coordinate system the
other type left behind is kept and reused.
Change-Id: Id17d3a2a235c849c3dab9768159ddf1608da6d05
Signed-off-by: Dennis Francis <dennis.francis@collabora.com>
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/8102
Tested-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
Reviewed-by: Tomaž Vajngerl <tomaz.vajngerl@collabora.com>
(cherry picked from commit b30d992bba26428941f47f952baf338df3763065)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209379
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Tested-by: Jenkins
Add an "Add [n] Columns" spin button to the Convert Text to Table
dialog, letting users choose how many empty columns (0-20) to append
when converting text to a table.
Instead of inserting separator characters into the source text (which
left those characters behind in the document when the conversion was
reverted), pass the requested column count down to SwNodes::TextToTable
and raise nMaxBoxes accordingly. lcl_BalanceTable() then creates the
extra empty boxes via InsBoxen() without touching the text, and
registers them with the undo object, so reverting the conversion
restores exactly the originally selected text.
Change-Id: I0bd01c31854cb5b4de0e63f0e3f0fbe88baf5c44
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188311
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Use the standard bool instead of custom
TRUE/FALSE defines.
Also drop the <stdbool.h> include no longer
needed after the program was converted to C++ in
Change-Id: I6621e146999551b98cbc006509a72c86745fcd65
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon Aug 24 14:52:21 2026 +0200
solenv concat-deps: Convert from C to C++
Change-Id: I374b8545c80cb0b69bdbebd40a0ac24db880d360
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209831
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Convert concat-deps.c from C to C++:
* rename file suffix from ".c" to ".cxx"
* adjust Makefile to build as a C++ program
* adjust C-style casts to C++ casts and use nullptr
instead of NULL to address clang plugin warnings
otherwise showing up after the conversion
Otherwise, leave the source/logic unchanged. Further
simplification of the program using newly available C++
features would probably be possible now (e.g. looking into
replacing the custom hash logic by a preexisting C++ stdlib
class) be possible, but is outside the scope of this commit.
The original trigger for looking into this initial
conversion from C to C++ was to avoid loplugin:pointerbool and
loplugin:implicitboolconversion clang plugin warnings newly
showing up with the original C sources after upgarding
glibc packages on Debian testing from 2.42-17 to 2.43-3:
[C ] solenv/bin/concat-deps.c
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:175:22: error: possibly unwanted implicit conversion when calling bool param [loplugin:pointerbool]
175 | assert(pool->primary);
| ~~~~~~^~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/usr/include/assert.h:117:40: note: method here [loplugin:pointerbool]
117 | extern _Bool __assert_single_arg (_Bool);
| ~~~~~^
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:1113:12: error: possibly unwanted implicit conversion when calling bool param [loplugin:pointerbool]
1113 | assert(phony_content_buffer); // Don't handle OOM conditions
| ^~~~~~~~~~~~~~~~~~~~
/usr/include/assert.h:117:40: note: method here [loplugin:pointerbool]
117 | extern _Bool __assert_single_arg (_Bool);
| ~~~~~^
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:175:16: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
175 | assert(pool->primary);
| ^~~~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:209:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
209 | assert(primary > 0);
| ^~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:210:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
210 | assert(secondary >= 0);
| ^~~~~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:211:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
211 | assert(size_elem > 0);
| ^~~~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:437:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
437 | assert(size > 0);
| ^~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:615:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
615 | assert(name != NULL);
| ~~~~~~~^~~~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:851:12: error: implicit conversion (IntegralToBoolean) of call argument from 'int' to 'bool' [loplugin:implicitboolconversion]
851 | assert('\0' == *end);
| ^~~~~~~~~~~~
/usr/include/assert.h:157:42: note: expanded from macro 'assert'
157 | ((void) sizeof (__assert_single_arg (__VA_ARGS__)), __extension__ ({ \
| ^~~~~~~~~~~
/home/michi/development/git/libreoffice/solenv/bin/concat-deps.c:1113:12: error: implicit conversion (PointerToBoolean) of call argument from 'char *' to 'bool' [loplugin:implicitboolconversion]
1113 | assert(phony_content_buffer); // Don't handle OOM conditions
| ^~~~~~~~~~~~~~~~~~~~
10 errors generated.
make[1]: *** No rule to make target '/home/michi/development/git/libreoffice/workdir/CObject/solenv/bin/concat-deps.o', needed by '/home/michi/development/git/libreoffice/workdir/LinkTarget/Executable/concat-deps'. Stop.
make: *** [Makefile:137: solenv] Error 2
Change-Id: I6621e146999551b98cbc006509a72c86745fcd65
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209870
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Return a bool value in generate_phony_file indicating whether
the file could be opened for writing and let the caller in the
process function evaluate it to set the return value.
This addresses the following loplugin:implicitboolconversion
clang plugin error otherwise seen in an upcoming commit
converting concat-deps.c from a C to a C++ program:
/home/user/development/git/libreoffice/solenv/bin/concat-deps.cxx:912:12: error: implicit conversion (IntegralCast) from 'bool' to 'int' [loplugin:implicitboolconversion]
912 | return !depfile;
| ^~~~~~~~
Change-Id: Ie1f7ba5891e54926985fc9a570fee23859e23344
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209869
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
`internal_boost` is semantically a boolean. Use a
bool variable accordingly.
Addresses this loplugin:implicitboolconversion
error otherwise seen with an upcoming commit converting
concat-deps.c from a C to a C++ program:
/home/user/development/git/libreoffice/solenv/bin/concat-deps.cxx:1128:22: error: implicit conversion (IntegralCast) from 'bool' to 'int' [loplugin:implicitboolconversion]
1128 | internal_boost = !env_str || strcmp(env_str,"TRUE");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Change-Id: I037c89250fc87071b1d7ce29b348cd175293f554
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209868
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
The logic in all the `if` and `else if` branches
is the same. Merge the conditions into a single
one to avoid duplication.
Also move the
if (!rc)
{
puts(created_line);
}
into the new merged branch, as the condition
here can only be true if `rc` was reassigned,
which now only happens in that single branch.
Change-Id: Id789a8f527f3caed1769b306826c54a4c7f0ca91
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209841
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The `if(!rc)` check can only be true if `rc` got reassigned
a new value, so move that logic into the block where `rc`
can get reassigned.
Also reduce the scope of the local variable `created_line`.
Change-Id: I0df971ed739b59c30e8d3c08bda478954c044db1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209840
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Switch the `fn` param of the process function
and related param/variable from char* to const char*, as
there is no need for a non-const char* here.
Change-Id: I5b98074a0f69c4b704fc4ccbebde77bfaccbd6d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209839
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
`array` already has type `struct hash_elem**`, so there
is no need to cast to that.
Change-Id: I2245630e1efd0a4292819ac6d650d41da2155a7a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209836
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The line assigning to `data` already casts to char*, so use that
more specific type for `data` instead of casting again.
Change-Id: Id9c78f025435788ca3fc2aa561b4a5b9b8f7b1d5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209832
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Button .uno:RenameTable replaced by .uno:SheetRightToLeft and
menuentry .uno:PageFormatDialog replaced by .uno:RenameTable
since this command has its own button underneath the menu
Change-Id: Ia2c81fc2427a8c4e8d80b944a6ed4d542f863119
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209443
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
* Save as Template button removed (exists in the Save button menu)
* Template made a big button
* Redudant "File" label renamed to "Document"
Change-Id: Ibab7e4758fd8d12e85003fbcdbc916c287f9ed5f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209450
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
This was only used in the simplecanvas library
that was dropped in
Change-Id: I301b3a42dfb6eacf6a9ef3a4851ed1d38f16ec66
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu Jul 30 15:31:11 2026 +0200
canvas: Drop unused simplecanvas library/component
Change-Id: I576c8e954d5ada273f49e9eba45dd71e65d49310
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/208854
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>