This is a prerequisite for making conversion from OUStringLiteral to OUString
more efficient at least for C++20 (by replacing its internals with a constexpr-
generated sal_uString-compatible layout with a SAL_STRING_STATIC_FLAG refCount,
conditionally for C++20 for now).
For a configure-wise bare-bones build on Linux, size reported by `du -bs
instdir` grew by 118792 bytes from 1155636636 to 1155755428.
In most places just a u"..." string literal prefix had to be added. In some
places
char const a[] = "...";
variables have been changed to char16_t, and a few places required even further
changes to code (which prompted the addition of include/o3tl/string_view.hxx
helper function o3tl::equalsIgnoreAsciiCase and the additional
OUString::createFromAscii overload).
For all uses of macros expanding to string literals, the relevant uses have been
rewritten as
u"" MACRO
instead of changing the macro definitions. It should be possible to change at
least some of those macro definitions (and drop the u"" from their call sites)
in follow-up commits.
Change-Id: Iec4ef1a057d412d22443312d40c6a8a290dc6144
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101483
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Chart is currently not able to interpret property linecap. But in
case of linecap 'round' or 'square', line dashes lengths are adapted
so that they look same as in MS Office (tdf#134053). This does not
work, if the corresponding linecap property is not interpreted.
Dashed border of data labels is not fixed because of bug
tdf#135366.
In addition I have fixed errors in prstDash detection, which I
have noticed while creating unit tests.
The unit tests cover file text, not visual appearence.
Change-Id: I8cf2d2b2fc0923c2882f8148b4550bc363270480
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99562
Tested-by: Jenkins
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
Recheck after 7-0 branchoff
Also drop the now unused file include/vcl/field.hxx
Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.
Change-Id: I9e54c82f50d1e02a0f99858939cac999fc66f7de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99261
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
by using the newly split out Formatter to do the number formatting
but input/output to/from a weld::Entry
Change-Id: Ic9e619dc5d1ed2fae87e2d89a40dc51f3881468f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97660
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
...where the get member function is defined on a std::__shared_ptr base class,
so loplugin:simplifypointertobool used to miss those until now. (While e.g.
using libc++ on macOS found those cases.)
366d08f2f6d4de922f6099c62bb81b49d89e0a68 "new loplugin:simplifypointertobool"
was mistaken in breaking isSmartPointerType(const clang::Type* t) out of
isSmartPointerType(const Expr* e); c874294ad9fb178df47c66875bfbdec466e39763 "Fix
detection of std::unique_ptr/shared_ptr in loplugin:redundantpointerops" had
introduced that indivisible two-step algorithm on purpose.
The amount of additional hits (on Linux) apparently asked for turning
loplugin:simplifypointertobool into a rewriting plugin. Which in turn showed
that the naive adivce to just "drop the get()" is not sufficient in places that
are not contextually converted to bool, as those places need to be wrapped in a
bool(...) functional cast now. If the expression was already wrapped in
parentheses, those could be reused as part of the functional cast, but
implementing that showed that such cases are not yet found at all by the
existing loplugin:simplifypointertobool. Lets leave that TODO for another
commit.
Besides the changes to compilerplugins/ itself, this change has been generated
fully automatically with the rewriting plugin on Linux.
Change-Id: I83107d6f634fc9ac232986f49044d7017df83e2a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94888
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins
Insert a chart, then insert a rhombus shape into the chart:
svl/source/items/itemset.cxx:150: SfxItemSet::SfxItemSet(SfxItemPool&, std::initializer_list<SfxItemSet::Pair>): Assertion `svl::detail::validRange(p.wid1, p.wid2)' failed.
Presumably this item doesn't actually do anything since it was added in
2009 in commit 4d3c143900d87f23cb4e66f1ebf9e0dae0541e0f
Alternatively it could be EE_PARA_JUST perhaps? but not sure if that can
always be used.
Change-Id: Ia1addb1095714acafe7db596ece4b9a706354d34
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94537
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
* FuInsertChart as a memeber in ScTabViewShell
stores instance is needed to react on the dialog's result
* CreationWizardUnoDlg converted to XAsynchronousExecutableDialog
added dialog close handler which notifies listeners
In the Online dialog become dead after closing, additional
PostUserEvent was needed to kill the dialog after real close
(without it user needed to select any cell to close dialog)
* Reuse in Writer
Change-Id: Ib09b5d83af9e1aa67218e093aa161419e8ddb922
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90380
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
This patch allows the lok core to know about the device form facor of
the client requesting the creation of new view, immediately instead of
a later time.
When a new view is needed a "DeviceFormFactor" parameter is forwarded
to lo_documentLoadWithOptions and doc_createViewWithOptions from the
client.
This parameter can have one of the following values: 'desktop',
'tablet','mobile' and it is used to set a global variable accessible
by SfxLokHelper::setDeviceFormFactor and
SfxLokHelper::getDeviceFormFactor.
This global variable is retrived in the SfxViewShell constructor for
setting SfxViewShell::maLOKDeviceFormFactor attribute.
In SfxViewShell we have the following 3 methods:
- bool isLOKDesktop()
- bool isLOKTablet()
- bool isLOKMobilePhone()
which replace the following boolean functions:
- comphelper::LibreOfficeKit::isTablet
- comphelper::LibreOfficeKit::::isMobilePhone
Change-Id: I9b36f354278df8c216fcb90f6a9da8256ec9c1e3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93340
Tested-by: Jenkins
Reviewed-by: Andras Timar <andras.timar@collabora.com>
The main reason for the "home-grown" UpCast introduced with
904b3d1fceee5827076758ed2a81f80cb73493ca "Up-cast conversion constructor for
css::uno::Reference" in 2013 was probably that we could not yet rely on C++11
std::is_base_of back then. A (welcome) side effect was that the derived class
could be incomplete.
However, specializations of UpCast relying on whether or not T2 is incomplete
are obviously an ODR violation if the type is incomplete in some TUs and
complete (and derived from T1) in others. And even if UpCast had internal
linkage, it would still be brittle that its behavior depends on the completeness
of T2 at the point of the template's instantiation, and not necessarily at the
point of use.
That means we should better base that ctor on std::is_base_of (which we can do
now since 39a1edd6fec902ef378acce8af42c4d7fba280d0 "Make css::uno::Reference
upcast ctor LIBO_INTERNAL_ONLY"), which causes a compilation error at least on
Clang and GCC if the completeness requirements are not met. This change fixes
all the cases where types need to be complete now, plus any resulting
loplugin:referencecasting warnings ("the source reference is already a subtype
of the destination reference").
Change-Id: Ieb9e3552e90adbf2c5a5af933dcb872e20661a2f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92950
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Turns out we can save about 500Mb of preprocessor input if we use
rtl_math_approxEqual from rtl/math.h instead of its C++ wrapper
rtl::math::approxEqual from rtl/math.hxx
and manage the fallout accordingly.
Before:
bin/includebloat.awk | head
sum total bytes included (excluding system headers): 19017296671
After:
$ bin/includebloat.awk | head
sum total bytes included (excluding system headers): 18535432672
Change-Id: I1691171f3a309405a7099882ad9989d147f59118
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92508
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
setting also into data point styles, fixing lost numbering
style of custom data points. (Only export into the data
series style was supported previously.)
Also fix tdf#131115 - FILEOPEN: Incorrect format of single data label
Regression from commit: e57d90cd4e51a1353eafc87bb29cfe6076704a7c
(tdf#129173 tdf#129175 Fix number format of data labels)
Data point styles in older ODF files do not contain the
'link-data-style-to-source' property, so they used the
data series style property during the import previously.
Now we set the default false value, if the data point
style contains a 'data-style-name' (number format).
Change-Id: I4786e62ca75770ed632463bcf1275ece7ea793f4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91967
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
based on the specification in OFFICE-3936 for ODF 1.4:
https://issues.oasis-open.org/browse/OFFICE-3936
Note: import of the embedded chart of the DOCX unit test
document uses also ODF format in the background, testing
also the extension of the native file format.
Follow-up of commit 830e539547c463b932ce643517f880789185032d
(tdf#127393 OOXML chart import: fix X axis position setting
"CrossBetween"). See also commits with "ShiftedCategoryPosition"
in their descriptions.
Change-Id: I9cd278ac0172c0fab7c51d585a65c34a0ad60b82
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90081
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
settings after file opening, if its value is true in the opened
ODF or OOXML document, instead of always showing disabled state.
Testing notes: double click on a data label during chart editing
of unit test document testAreaChartNumberFormat.docx of
commit e57d90cd4e51a1353eafc87bb29cfe6076704a7c
(tdf#129173 tdf#129175 Fix number format of data labels)
to see the Data Labels for Data Series... window. On the page
"Data Labels...", click on the Number format... button to see
the enabled checkbox "Source format" (that was disabled
previously).
Change-Id: I2845e6f462db273f21c47bb286bed56046f8cf21
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91038
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
The sidebar usually executes UNO commands to the core framework,
however the controls already have formatted the text that is useful
in Online client side. For example the units conversion.
The QueryControlState method will retrieve the current formatted text
of the sidebar control to be used in Client Side.
Change-Id: I0b3e3a1462d4391ac911352f35808a5e5d9f9ffb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91237
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Henry Castro <hcastro@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91577
Tested-by: Jenkins
...and not just add it to the new controller. It caused
> $ SAL_USE_VCLPLUGIN=gen make UITest_chart UITEST_TEST_NAME=chartLegend.chartLegend.test_chart_display_legend_dialog
to fail with
> ==346284==ERROR: AddressSanitizer: heap-use-after-free on address 0x61a00049cca8 at pc 0x7f8496747751 bp 0x7fff7c483f10 sp 0x7fff7c483f08
> READ of size 8 at 0x61a00049cca8 thread T0
> #0 in chart::sidebar::ChartSidebarSelectionListener::selectionChanged(com::sun:⭐:lang::EventObject const&) at chart2/source/controller/sidebar/ChartSidebarSelectionListener.cxx:66:15
> #1 in chart::ChartController::impl_notifySelectionChangeListeners() at chart2/source/controller/main/ChartController_Window.cxx:1740:28
> #2 in chart::ChartController::impl_selectObjectAndNotiy() at chart2/source/controller/main/ChartController_Window.cxx:1756:5
> #3 in chart::ChartController::modeChanged(com::sun:⭐:util::ModeChangeEvent const&) at chart2/source/controller/main/ChartController.cxx:538:31
> #4 in chart::ChartView::impl_notifyModeChangeListener(rtl::OUString const&) at chart2/source/view/main/ChartView.cxx:2653:32
> #5 in chart::ChartView::impl_updateView(bool) at chart2/source/view/main/ChartView.cxx:2561:9
> #6 in chart::ChartView::update() at chart2/source/view/main/ChartView.cxx:2687:5
> #7 in chart::ChartController::execute_Paint(OutputDevice&, tools::Rectangle const&) at chart2/source/controller/main/ChartController_Window.cxx:485:25
> #8 in chart::ChartWindow::Paint(OutputDevice&, tools::Rectangle const&) at chart2/source/controller/main/ChartWindow.cxx:99:30
> #9 in PaintHelper::DoPaint(vcl::Region const*) at vcl/source/window/paint.cxx:309:24
> #10 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:613:17
> #11 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #12 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #13 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #14 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #15 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #16 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #17 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #18 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #19 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #20 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #21 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #22 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #23 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #24 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #25 in PaintHelper::~PaintHelper() at vcl/source/window/paint.cxx:549:30
> #26 in vcl::Window::ImplCallPaint(vcl::Region const*, ImplPaintFlags) at vcl/source/window/paint.cxx:619:1
> #27 in vcl::Window::ImplCallOverlapPaint() at vcl/source/window/paint.cxx:637:9
> #28 in vcl::Window::ImplHandlePaintHdl(Timer*) at vcl/source/window/paint.cxx:660:9
> #29 in vcl::Window::LinkStubImplHandlePaintHdl(void*, Timer*) at vcl/source/window/paint.cxx:641:1
> #30 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:111:45
> #31 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21
> #32 in Scheduler::ProcessTaskScheduling() at vcl/source/app/scheduler.cxx:478:20
> #33 in Scheduler::CallbackTaskScheduling() at vcl/source/app/scheduler.cxx:287:5
> #34 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13
> #35 in X11SalData::Timeout() at vcl/unx/generic/app/saldata.cxx:551:41
> #36 in SalXLib::CheckTimeout(bool) at vcl/unx/generic/app/saldata.cxx:635:17
> #37 in SalXLib::Yield(bool, bool) at vcl/unx/generic/app/saldata.cxx:716:25
> #38 in X11SalInstance::DoYield(bool, bool) at vcl/unx/generic/app/salinst.cxx:182:20
> #39 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:454:48
> #40 in Application::Yield() at vcl/source/app/svapp.cxx:518:5
> #41 in Application::Execute() at vcl/source/app/svapp.cxx:433:9
> #42 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1602:17
> #43 in ImplSVMain() at vcl/source/app/svmain.cxx:196:35
> #44 in SVMain() at vcl/source/app/svmain.cxx:228:12
> #45 in soffice_main at desktop/source/app/sofficemain.cxx:107:12
> #46 in sal_main at desktop/source/app/main.c:48:15
> #47 in main at desktop/source/app/main.c:47:1
> 0x61a00049cca8 is located 1064 bytes inside of 1160-byte region [0x61a00049c880,0x61a00049cd08)
> freed by thread T0 here:
> #0 in operator delete(void*, unsigned long) at compiler-rt/lib/asan/asan_new_delete.cpp:172:3
> #1 in chart::sidebar::ChartLinePanel::~ChartLinePanel() at chart2/source/controller/sidebar/ChartLinePanel.cxx:143:1
> #2 in VclReferenceBase::release() const at include/vcl/vclreferencebase.hxx:40:13
> #3 in rtl::Reference<vcl::Window>::~Reference() at include/rtl/ref.hxx:92:22
> #4 in VclPtr<vcl::Window>::disposeAndClear() at include/vcl/vclptr.hxx:208:5
> #5 in sfx2::sidebar::SidebarPanelBase::disposing() at sfx2/source/sidebar/SidebarPanelBase.cxx:81:15
> #6 in cppu::WeakComponentImplHelperBase::dispose() at cppuhelper/source/implbase.cxx:102:17
> #7 in cppu::PartialWeakComponentImplHelper<com::sun:⭐:ui::XContextChangeEventListener, com::sun:⭐:ui::XUIElement, com::sun:⭐:ui::XToolPanel, com::sun:⭐:ui::XSidebarPanel, com::sun:⭐:ui::XUpdateModel>::dispose() at include/cppuhelper/compbase.hxx:90:36
> #8 in sfx2::sidebar::Panel::dispose() at sfx2/source/sidebar/Panel.cxx:106:25
> #9 in VclReferenceBase::disposeOnce() at vcl/source/outdev/vclreferencebase.cxx:38:5
> #10 in VclPtr<sfx2::sidebar::Panel>::disposeAndClear() at include/vcl/vclptr.hxx:206:19
> #11 in sfx2::sidebar::Deck::dispose() at sfx2/source/sidebar/Deck.cxx:92:17
> #12 in VclReferenceBase::disposeOnce() at vcl/source/outdev/vclreferencebase.cxx:38:5
> #13 in VclPtr<sfx2::sidebar::Deck>::disposeAndClear() at include/vcl/vclptr.hxx:206:19
> #14 in sfx2::sidebar::SidebarController::CreateDeck(rtl::OUString const&, sfx2::sidebar::Context const&, bool) at sfx2/source/sidebar/SidebarController.cxx:664:19
> #15 in sfx2::sidebar::SidebarController::SwitchToDeck(sfx2::sidebar::DeckDescriptor const&, sfx2::sidebar::Context const&) at sfx2/source/sidebar/SidebarController.cxx:822:5
> #16 in sfx2::sidebar::SidebarController::UpdateConfigurations() at sfx2/source/sidebar/SidebarController.cxx:569:9
> #17 in sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3::operator()() const at sfx2/source/sidebar/SidebarController.cxx:140:52
> #18 in void std::__invoke_impl<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3&>(std::__invoke_other, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3&) at include/c++/10.0.1/bits/invoke.h:60:14
> #19 in std::enable_if<is_invocable_r_v<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3&>, void>::type std::__invoke_r<void, sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3&>(sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3&) at include/c++/10.0.1/bits/invoke.h:110:2
> #20 in std::_Function_handler<void (), sfx2::sidebar::SidebarController::SidebarController(sfx2::sidebar::SidebarDockingWindow*, SfxViewFrame const*)::$_3>::_M_invoke(std::_Any_data const&) at include/c++/10.0.1/bits/std_function.h:291:9
> #21 in std::function<void ()>::operator()() const at include/c++/10.0.1/bits/std_function.h:622:14
> #22 in sfx2::sidebar::AsynchronousCall::HandleUserCall(void*) at sfx2/source/sidebar/AsynchronousCall.cxx:66:9
> #23 in sfx2::sidebar::AsynchronousCall::LinkStubHandleUserCall(void*, void*) at sfx2/source/sidebar/AsynchronousCall.cxx:62:1
> #24 in Link<void*, void>::Call(void*) const at include/tools/link.hxx:111:45
> #25 in ImplHandleUserEvent(ImplSVEvent*) at vcl/source/window/winproc.cxx:2009:30
> #26 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) at vcl/source/window/winproc.cxx:2562:13
> #27 in SalFrame::CallCallback(SalEvent, void const*) const at vcl/inc/salframe.hxx:306:29
> #28 in SalGenericDisplay::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/unx/generic/app/gendisp.cxx:66:22
> #29 in SalUserEventList::DispatchUserEvents(bool) at vcl/source/app/salusereventlist.cxx:108:17
> #30 in SalGenericDisplay::DispatchInternalEvent(bool) at vcl/unx/generic/app/gendisp.cxx:51:12
> #31 in SalX11Display::Yield() at vcl/unx/generic/app/saldisp.cxx:1918:9
> #32 in DisplayYield(int, void*) at vcl/unx/generic/app/saldisp.cxx:414:13
> #33 in (anonymous namespace)::YieldEntry::HandleNextEvent() const at vcl/unx/generic/app/saldata.cxx:566:38
> #34 in SalXLib::Yield(bool, bool) at vcl/unx/generic/app/saldata.cxx:662:25
> #35 in X11SalInstance::DoYield(bool, bool) at vcl/unx/generic/app/salinst.cxx:182:20
> #36 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:454:48
> #37 in Application::Yield() at vcl/source/app/svapp.cxx:518:5
> #38 in Dialog::Execute() at vcl/source/window/dialog.cxx:1032:9
> #39 in SalInstanceDialog::run() at vcl/source/app/salvtables.cxx:1480:23
> #40 in weld::DialogController::run() at include/vcl/weld.hxx:2196:47
> #41 in chart::ChartController::executeDispatch_OpenLegendDialog() at chart2/source/controller/main/ChartController_Insert.cxx:227:18
> #42 in chart::ChartController::dispatch(com::sun:⭐:util::URL const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at chart2/source/controller/main/ChartController.cxx:1130:15
> #43 in ChartUIObject::PostCommand(void*) at chart2/source/controller/uitest/uiobject.cxx:76:41
> #44 in ChartUIObject::LinkStubPostCommand(void*, void*) at chart2/source/controller/uitest/uiobject.cxx:72:1
> #45 in Link<void*, void>::Call(void*) const at include/tools/link.hxx:111:45
> #46 in ImplHandleUserEvent(ImplSVEvent*) at vcl/source/window/winproc.cxx:2009:30
> #47 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) at vcl/source/window/winproc.cxx:2562:13
> #48 in SalFrame::CallCallback(SalEvent, void const*) const at vcl/inc/salframe.hxx:306:29
> #49 in SalGenericDisplay::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/unx/generic/app/gendisp.cxx:66:22
> #50 in SalUserEventList::DispatchUserEvents(bool) at vcl/source/app/salusereventlist.cxx:108:17
> #51 in SalGenericDisplay::DispatchInternalEvent(bool) at vcl/unx/generic/app/gendisp.cxx:51:12
> #52 in SalX11Display::Yield() at vcl/unx/generic/app/saldisp.cxx:1918:9
> #53 in DisplayYield(int, void*) at vcl/unx/generic/app/saldisp.cxx:414:13
> #54 in (anonymous namespace)::YieldEntry::HandleNextEvent() const at vcl/unx/generic/app/saldata.cxx:566:38
> #55 in SalXLib::Yield(bool, bool) at vcl/unx/generic/app/saldata.cxx:662:25
> #56 in X11SalInstance::DoYield(bool, bool) at vcl/unx/generic/app/salinst.cxx:182:20
> #57 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:454:48
> #58 in Application::Reschedule(bool) at vcl/source/app/svapp.cxx:467:12
> #59 in (anonymous namespace)::ExecuteWrapper::ExecuteActionHdl(Timer*) at vcl/source/uitest/uno/uiobject_uno.cxx:91:13
> #60 in (anonymous namespace)::ExecuteWrapper::LinkStubExecuteActionHdl(void*, Timer*) at vcl/source/uitest/uno/uiobject_uno.cxx:78:1
> #61 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:111:45
> #62 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21
> #63 in Scheduler::ProcessTaskScheduling() at vcl/source/app/scheduler.cxx:478:20
> #64 in Scheduler::CallbackTaskScheduling() at vcl/source/app/scheduler.cxx:287:5
> #65 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13
> #66 in X11SalData::Timeout() at vcl/unx/generic/app/saldata.cxx:551:41
> #67 in SalXLib::CheckTimeout(bool) at vcl/unx/generic/app/saldata.cxx:635:17
> #68 in SalXLib::Yield(bool, bool) at vcl/unx/generic/app/saldata.cxx:716:25
> #69 in X11SalInstance::DoYield(bool, bool) at vcl/unx/generic/app/salinst.cxx:182:20
> #70 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:454:48
> #71 in Application::Yield() at vcl/source/app/svapp.cxx:518:5
> #72 in Application::Execute() at vcl/source/app/svapp.cxx:433:9
> #73 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1602:17
> #74 in ImplSVMain() at vcl/source/app/svmain.cxx:196:35
> #75 in SVMain() at vcl/source/app/svmain.cxx:228:12
> #76 in soffice_main at desktop/source/app/sofficemain.cxx:107:12
> #77 in sal_main at desktop/source/app/main.c:48:15
> #78 in main at desktop/source/app/main.c:47:1
> previously allocated by thread T0 here:
> #0 in operator new(unsigned long) at compiler-rt/lib/asan/asan_new_delete.cpp:99:3
> #1 in VclPtr<chart::sidebar::ChartLinePanel> VclPtr<chart::sidebar::ChartLinePanel>::Create<vcl::Window*&, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&, chart::ChartController*&>(vcl::Window*&, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&, chart::ChartController*&) at include/vcl/vclptr.hxx:129:42
> #2 in chart::sidebar::ChartLinePanel::Create(vcl::Window*, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&, chart::ChartController*) at chart2/source/controller/sidebar/ChartLinePanel.cxx:117:12
> #3 in chart::sidebar::ChartPanelFactory::createUIElement(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at chart2/source/controller/sidebar/Chart2PanelFactory.cxx:107:22
> #4 in non-virtual thunk to chart::sidebar::ChartPanelFactory::createUIElement(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at chart2/source/controller/sidebar/Chart2PanelFactory.cxx
> #5 in (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at framework/source/uifactory/uielementfactorymanager.cxx:437:39
> #6 in non-virtual thunk to (anonymous namespace)::UIElementFactoryManager::createUIElement(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at framework/source/uifactory/uielementfactorymanager.cxx
> #7 in sfx2::sidebar::SidebarController::CreateUIElement(com::sun:⭐:uno::Reference<com::sun:⭐:awt::XWindowPeer> const&, rtl::OUString const&, bool, sfx2::sidebar::Context const&) at sfx2/source/sidebar/SidebarController.cxx:967:32
> #8 in sfx2::sidebar::SidebarController::CreatePanel(rtl::OUString const&, vcl::Window*, bool, sfx2::sidebar::Context const&, VclPtr<sfx2::sidebar::Deck> const&) at sfx2/source/sidebar/SidebarController.cxx:908:43
> #9 in sfx2::sidebar::SidebarController::CreatePanels(rtl::OUString const&, sfx2::sidebar::Context const&) at sfx2/source/sidebar/SidebarController.cxx:720:41
> #10 in sfx2::sidebar::SidebarController::CreateDeck(rtl::OUString const&, sfx2::sidebar::Context const&, bool) at sfx2/source/sidebar/SidebarController.cxx:672:5
> #11 in sfx2::sidebar::SidebarController::SwitchToDeck(sfx2::sidebar::DeckDescriptor const&, sfx2::sidebar::Context const&) at sfx2/source/sidebar/SidebarController.cxx:822:5
> #12 in sfx2::sidebar::SidebarController::UpdateConfigurations() at sfx2/source/sidebar/SidebarController.cxx:569:9
> #13 in sfx2::sidebar::SidebarController::notifyContextChangeEvent(com::sun:⭐:ui::ContextChangeEventObject const&) at sfx2/source/sidebar/SidebarController.cxx:323:9
> #14 in (anonymous namespace)::ContextChangeEventMultiplexer::addContextChangeEventListener(com::sun:⭐:uno::Reference<com::sun:⭐:ui::XContextChangeEventListener> const&, com::sun:⭐:uno::Reference<com::sun:⭐:uno::XInterface> const&) at framework/source/services/ContextChangeEventMultiplexer.cxx:176:29
> #15 in sfx2::sidebar::SidebarController::registerSidebarForFrame(sfx2::sidebar::SidebarController*, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XController> const&) at sfx2/source/sidebar/SidebarController.cxx:213:19
> #16 in chart::ChartController::attachFrame(com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&) at chart2/source/controller/main/ChartController.cxx:400:9
> #17 in chart::ChartFrameLoader::load(com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&) at chart2/source/controller/main/ChartFrameloader.cxx:133:22
> #18 in framework::LoadEnv::impl_loadContent() at framework/source/loadenv/loadenv.cxx:1157:37
> #19 in framework::LoadEnv::start() at framework/source/loadenv/loadenv.cxx:395:20
> #20 in framework::LoadEnv::startLoading(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures) at framework/source/loadenv/loadenv.cxx:300:5
> #21 in framework::LoadEnv::loadComponentFromURL(com::sun:⭐:uno::Reference<com::sun:⭐:frame::XComponentLoader> const&, com::sun:⭐:uno::Reference<com::sun:⭐:uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at framework/source/loadenv/loadenv.cxx:169:14
> #22 in (anonymous namespace)::XFrameImpl::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at framework/source/services/frame.cxx:590:16
> #23 in non-virtual thunk to (anonymous namespace)::XFrameImpl::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&) at framework/source/services/frame.cxx
> #24 in DocumentHolder::LoadDocToFrame(bool) at embeddedobj/source/general/docholder.cxx:984:31
> #25 in DocumentHolder::ShowInplace(com::sun:⭐:uno::Reference<com::sun:⭐:awt::XWindowPeer> const&, com::sun:⭐:awt::Rectangle const&, com::sun:⭐:uno::Reference<com::sun:⭐:frame::XDispatchProvider> const&) at embeddedobj/source/general/docholder.cxx:477:15
> #26 in OCommonEmbeddedObject::SwitchStateTo_Impl(int) at embeddedobj/source/commonembedding/embedobj.cxx:252:42
> #27 in OCommonEmbeddedObject::changeState(int) at embeddedobj/source/commonembedding/embedobj.cxx:451:17
> #28 in OCommonEmbeddedObject::doVerb(int) at embeddedobj/source/commonembedding/embedobj.cxx:537:9
> #29 in SfxInPlaceClient::DoVerb(long) at sfx2/source/view/ipclient.cxx:950:40
> #30 in ScTabViewShell::ActivateObject(SdrOle2Obj*, long) at sc/source/ui/view/tabvwshb.cxx:205:29
> #31 in ScGridWinUIObject::execute(rtl::OUString const&, std::__debug::map<rtl::OUString const, rtl::OUString, std::less<rtl::OUString const>, std::allocator<std::pair<rtl::OUString const, rtl::OUString> > > const&) at sc/source/ui/uitest/uiobject.cxx:175:29
> #32 in UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0::operator()() const at vcl/source/uitest/uno/uiobject_uno.cxx:124:16
> #33 in void std::__invoke_impl<void, UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0&>(std::__invoke_other, UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0&) at include/c++/10.0.1/bits/invoke.h:60:14
> #34 in std::enable_if<is_invocable_r_v<void, UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0&>, void>::type std::__invoke_r<void, UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0&>(UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0&) at include/c++/10.0.1/bits/invoke.h:110:2
> #35 in std::_Function_handler<void (), UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun:⭐:uno::Sequence<com::sun:⭐🫘:PropertyValue> const&)::$_0>::_M_invoke(std::_Any_data const&) at include/c++/10.0.1/bits/std_function.h:291:9
> #36 in std::function<void ()>::operator()() const at include/c++/10.0.1/bits/std_function.h:622:14
> #37 in (anonymous namespace)::ExecuteWrapper::ExecuteActionHdl(Timer*) at vcl/source/uitest/uno/uiobject_uno.cxx:83:13
> #38 in (anonymous namespace)::ExecuteWrapper::LinkStubExecuteActionHdl(void*, Timer*) at vcl/source/uitest/uno/uiobject_uno.cxx:78:1
> #39 in Link<Timer*, void>::Call(Timer*) const at include/tools/link.hxx:111:45
> #40 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21
> #41 in Scheduler::ProcessTaskScheduling() at vcl/source/app/scheduler.cxx:478:20
> #42 in Scheduler::CallbackTaskScheduling() at vcl/source/app/scheduler.cxx:287:5
> #43 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13
> #44 in X11SalData::Timeout() at vcl/unx/generic/app/saldata.cxx:551:41
> #45 in SalXLib::CheckTimeout(bool) at vcl/unx/generic/app/saldata.cxx:635:17
> #46 in SalXLib::Yield(bool, bool) at vcl/unx/generic/app/saldata.cxx:716:25
> #47 in X11SalInstance::DoYield(bool, bool) at vcl/unx/generic/app/salinst.cxx:182:20
> #48 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:454:48
> #49 in Application::Yield() at vcl/source/app/svapp.cxx:518:5
> #50 in Application::Execute() at vcl/source/app/svapp.cxx:433:9
> #51 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1602:17
> #52 in ImplSVMain() at vcl/source/app/svmain.cxx:196:35
> #53 in SVMain() at vcl/source/app/svmain.cxx:228:12
> #54 in soffice_main at desktop/source/app/sofficemain.cxx:107:12
> #55 in sal_main at desktop/source/app/main.c:48:15
> #56 in main at desktop/source/app/main.c:47:1
The changes that were necessary to fix that scenario are those in
ChartAreaPanel.cxx and ChartLinePanel.cxx, but the other updateModel
implementations look equally broken.
Change-Id: I064fb701dc10e7cb7ef7ea5839f7dd1ae8d0ebba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91467
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
immediately at least in the case when LOKit is active.
This is to allow prompt emission of .uno:ModifiedStatus=true statechange
message from lokit to the client. Without this, in online the chart
insert/modify related changes may not get saved on client exit.
Change-Id: I8c38a37cc455f74a70d43b6aaa3e5035b283d47f
(cherry picked from commit 75adb624dfff4659e6f3099a1720fbd697560f9c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91036
Tested-by: Jenkins
Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
settings after file opening, if its value is true in the opened
ODF or OOXML document, instead of always showing disabled state.
Testing notes: double click on a data label during chart editing
to see the Data Labels for Data Series... window. On the page
"Data Labels...", click on the Number format... button to see
the checkbox "Source format".
Change-Id: Idb837d9492ad7e83b9020167c47ed52499c070a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90079
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>