314 Commits
Author SHA1 Message Date
Andrea Gelmini d9f09e6433 Fix typos
Change-Id: Ia95cc8146f669d7f1ac8834d871427bb57485ef3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209895
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
2026-08-25 11:59:56 +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 ab7a187b28 tdf#170399 Revert LoadEnv changes from "tdf#41777 Add window size ...
... and position for each document"

The changes to LoadEnv in

    commit 8ce2cf3973
    Date:   Mon May 12 01:29:55 2025 +0700

        tdf#41777 Add window size and position for each document

to create new frames when loading existing documents from
the start center and close the backing window cause
crashes for the tdf#170399 scenario of starting the template manager
from the start center and then editing a template by selecting
the "Edit" entry from its context menu.

Revert the changes to that class for now, to fix the crashes.

In a quick test with the gen VCL plugin, this causes documents
opened from the start center to no longer be restored in the
position that they were in previously, while opening documents
directly (i.e. not from start center) still results in them
getting restored at the previous location. (Tested with two
different documents that were saved and closed in different
locations on the screen and both were restored at their
original location.)

This partially reverts commit 8ce2cf3973.

Backtrace for the gen VCL plugin without this commit in place:

    warn:legacy.osl:835647:835647:vcl/source/window/window.cxx:307: Window ( 14VclDrawingArea()) with live SystemWindows destroyed:  18MenuFloatingWindow()
    Window ( 14VclDrawingArea()) with live SystemWindows destroyed:  18MenuFloatingWindow()

    Thread 1 "soffice.bin" received signal SIGABRT, Aborted.
    __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    ⚠ warning: 44  ./nptl/pthread_kill.c: No such file or directory
    (gdb) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    #1  0x00007ffff769749f in __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
    #2  0x00007ffff7640942 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
    #3  0x00007ffff76284ac in __GI_abort () at ./stdlib/abort.c:77
    #4  0x00007fffee2339db in SalAbort (rErrorText="Window ( 14VclDrawingArea()) with live SystemWindows destroyed:  18MenuFloatingWindow()", bDumpCore=true) at /home/michi/development/git/libreoffice/vcl/source/app/salplug.cxx:403
    #5  0x00007fffee2ff4b1 in Application::Abort (rErrorText="Window ( 14VclDrawingArea()) with live SystemWindows destroyed:  18MenuFloatingWindow()") at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:300
    #6  0x00007fffedc25c54 in vcl::Window::dispose (this=0x5555573055d0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:308
    #7  0x00007fffedc9e1c6 in Control::dispose (this=0x5555573055d0) at /home/michi/development/git/libreoffice/vcl/source/control/ctrl.cxx:62
    #8  0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x555557305890) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #9  0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffe72d0) at include/vcl/vclptr.hxx:208
    #10 0x00007ffff0069f57 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x555557168d30) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:250
    #11 0x00007fffedc24eca in vcl::Window::dispose (this=0x555557168d30) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #12 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x555557168d80) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #13 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffe8798) at include/vcl/vclptr.hxx:208
    #14 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555577d6d80) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #15 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x5555573c4dd0) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #16 0x00007fffedc24eca in vcl::Window::dispose (this=0x5555573c4dd0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #17 0x00007fffedafd800 in VclScrolledWindow::dispose (this=0x5555573c4dd0) at /home/michi/development/git/libreoffice/vcl/source/window/layout.cxx:1926
    #18 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x5555573c4e48) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #19 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffe9eb8) at include/vcl/vclptr.hxx:208
    #20 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x55555788b020) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #21 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x555557722300) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #22 0x00007fffedc24eca in vcl::Window::dispose (this=0x555557722300) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #23 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x555557722350) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #24 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffeb5b8) at include/vcl/vclptr.hxx:208
    #25 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555577a9df0) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #26 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x55555772fe50) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #27 0x00007fffedc24eca in vcl::Window::dispose (this=0x55555772fe50) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #28 0x00007fffedafb566 in VclFrame::dispose (this=0x55555772fe50) at /home/michi/development/git/libreoffice/vcl/source/window/layout.cxx:1493
    #29 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x55555772fea8) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #30 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffeccd8) at include/vcl/vclptr.hxx:208
    #31 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555577c1ac0) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #32 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x5555572db4d0) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #33 0x00007fffedc24eca in vcl::Window::dispose (this=0x5555572db4d0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #34 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x5555572db520) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #35 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffee3d8) at include/vcl/vclptr.hxx:208
    #36 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555577c5650) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #37 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x5555576ebfe0) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #38 0x00007fffedc24eca in vcl::Window::dispose (this=0x5555576ebfe0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #39 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x5555576ec030) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #40 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7ffffffefad8) at include/vcl/vclptr.hxx:208
    #41 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555577c8d10) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #42 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x555557806110) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #43 0x00007fffedc24eca in vcl::Window::dispose (this=0x555557806110) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #44 0x00007fffedbc4b04 in SystemWindow::dispose (this=0x555557806110) at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:119
    #45 0x00007fffeda8e38c in Dialog::dispose (this=0x555557806110) at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:632
    #46 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x5555578061f0) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #47 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7fffffff1338) at include/vcl/vclptr.hxx:208
    #48 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x555557897d70) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #49 0x00007ffff0069ec2 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x5555578924d0) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:244
    #50 0x00007fffedc24eca in vcl::Window::dispose (this=0x5555578924d0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #51 0x00007fffed9c1dc4 in ImplBorderWindow::dispose (this=0x5555578924d0) at /home/michi/development/git/libreoffice/vcl/source/window/brdwin.cxx:1615
    #52 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x555557892530) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #53 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7fffffff2b68) at include/vcl/vclptr.hxx:208
    #54 0x00007ffff006a6a7 in UnoWrapper::WindowDestroyed (this=0x5555568aaf90, pWindow=0x555556ef0dc0) at /home/michi/development/git/libreoffice/toolkit/source/helper/unowrapper.cxx:308
    #55 0x00007fffedc24eca in vcl::Window::dispose (this=0x555556ef0dc0) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:217
    #56 0x00007fffedbc4b04 in SystemWindow::dispose (this=0x555556ef0dc0) at /home/michi/development/git/libreoffice/vcl/source/window/syswin.cxx:119
    #57 0x00007fffedc596c1 in WorkWindow::dispose (this=0x555556ef0dc0) at /home/michi/development/git/libreoffice/vcl/source/window/wrkwin.cxx:127
    #58 0x00007fffedea0d53 in VclReferenceBase::disposeOnce (this=0x555556ef0e80) at /home/michi/development/git/libreoffice/vcl/source/outdev/vclreferencebase.cxx:38
    #59 0x00007fffefd29a75 in VclPtr<vcl::Window>::disposeAndClear (this=0x7fffffff40e8) at include/vcl/vclptr.hxx:208
    #60 0x00007fffefd1c382 in VCLXWindow::dispose (this=0x5555570cde30) at /home/michi/development/git/libreoffice/toolkit/source/awt/vclxwindow.cxx:905
    #61 0x00007ffff49f5fd9 in (anonymous namespace)::XFrameImpl::disposing (this=0x555556dd1610) at /home/michi/development/git/libreoffice/framework/source/services/frame.cxx:2184
    #62 0x00007ffff573a1f0 in cppu::WeakComponentImplHelperBase::dispose (this=0x555556dd1610) at /home/michi/development/git/libreoffice/cppuhelper/source/implbase.cxx:104
    #63 0x00007ffff4a02ba5 in cppu::PartialWeakComponentImplHelper<com::sun::star::lang::XServiceInfo, com::sun::star::frame::XFrame2, com::sun::star::awt::XWindowListener, com::sun::star::awt::XTopWindowListener, com::sun::star::awt::XFocusListener, com::sun::star::document::XActionLockable, com::sun::star::util::XCloseable, com::sun::star::frame::XComponentLoader, com::sun::star::frame::XTitle, com::sun::star::frame::XTitleChangeBroadcaster, com::sun::star::beans::XPropertySet, com::sun::star::beans::XPropertySetInfo>::dispose (this=0x555556dd1610) at include/cppuhelper/compbase.hxx:90
    #64 0x00007ffff49fb4d5 in (anonymous namespace)::XFrameImpl::close (this=0x555556dd1610, bDeliverOwnership=0 '\000') at /home/michi/development/git/libreoffice/framework/source/services/frame.cxx:1731
    #65 0x00007ffff4829850 in framework::pattern::frame::closeIt (xResource=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x555556dd1680) at framework/source/inc/pattern/frame.hxx:57
    #66 0x00007ffff49b92fd in framework::LoadEnv::impl_reactForLoadingState (this=0x7fffffff57b8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1655
    #67 0x00007ffff49b8cf6 in framework::LoadEnv::impl_setResult (this=0x7fffffff57b8, bResult=true) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:537
    #68 0x00007ffff49b8b31 in framework::LoadEnv::impl_loadContent (this=0x7fffffff57b8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:1184
    #69 0x00007ffff49b5c85 in framework::LoadEnv::start (this=0x7fffffff57b8) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:417
    #70 0x00007ffff49b3982 in framework::LoadEnv::startLoading
        (this=0x7fffffff57b8, sURL="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott", lMediaDescriptor=uno::Sequence of length 3 = {...}, xBaseFrame=uno::Reference to (framework::Desktop *) 0x5555568ac098, sTarget="_default", nSearchFlags=0, eFeature=LoadEnvFeatures::WorkWithUI) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:313
    #71 0x00007ffff49b2282 in framework::LoadEnv::loadComponentFromURL
        (xLoader=uno::Reference to (framework::Desktop *) 0x5555568ac0a8, xContext=uno::Reference to (cppu::(anonymous namespace)::ComponentContext *) 0x55555559d808, sURL="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott", sTarget="_default", nSearchFlags=0, lArgs=uno::Sequence of length 3 = {...}) at /home/michi/development/git/libreoffice/framework/source/loadenv/loadenv.cxx:169
    #72 0x00007ffff49e45d2 in framework::Desktop::loadComponentFromURL
        (this=0x5555568ac030, sURL="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott", sTargetFrameName="_default", nSearchFlags=0, lArguments=uno::Sequence of length 3 = {...}) at /home/michi/development/git/libreoffice/framework/source/services/desktop.cxx:594
    #73 0x00007ffff49e4734 in non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) ()
        at /home/michi/development/git/libreoffice/instdir/program/libfwklo.so
    #74 0x00007ffff3c6ef72 in SfxTemplateManagerDlg::EditTemplateHdl (this=0x7fffffffa218, rTemplatePath="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott")
        at /home/michi/development/git/libreoffice/sfx2/source/doc/templatedlg.cxx:715
    #75 0x00007ffff3c67eed in SfxTemplateManagerDlg::LinkStubEditTemplateHdl (instance=0x7fffffffa218, data="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott")
        at /home/michi/development/git/libreoffice/sfx2/source/doc/templatedlg.cxx:704
    #76 0x00007ffff36af081 in Link<rtl::OUString const&, void>::Call (this=0x7fffffffa520, data="file:///home/michi/development/git/libreoffice/instdir/share/template/common/officorr/Modern_business_letter_sans_serif.ott")
        at include/tools/link.hxx:105
    #77 0x00007ffff382c9ab in TemplateDlgLocalView::ContextMenuSelectHdl (this=0x7fffffffa320, rIdent=u"edit") at /home/michi/development/git/libreoffice/sfx2/source/control/templatedlglocalview.cxx:154
    #78 0x00007ffff382c66a in TemplateDlgLocalView::createContextMenu (this=0x7fffffffa320, bIsDefault=false, bIsBuiltIn=true, bIsSingleSel=true, rDefaultImg="res/odt_16_8.png")
        at /home/michi/development/git/libreoffice/sfx2/source/control/templatedlglocalview.cxx:140
    #79 0x00007ffff3c6e710 in SfxTemplateManagerDlg::CreateContextMenuHdl (this=0x7fffffffa218, pItem=0x55555788ca90) at /home/michi/development/git/libreoffice/sfx2/source/doc/templatedlg.cxx:680
    #80 0x00007ffff3c67e5d in SfxTemplateManagerDlg::LinkStubCreateContextMenuHdl (instance=0x7fffffffa218, data=0x55555788ca90) at /home/michi/development/git/libreoffice/sfx2/source/doc/templatedlg.cxx:649
    #81 0x00007ffff381bce1 in Link<TemplateViewItem*, void>::Call (this=0x7fffffffa4e0, data=0x55555788ca90) at include/tools/link.hxx:105
    #82 0x00007ffff3816e34 in TemplateLocalView::Command (this=0x7fffffffa320, rCEvt=...) at /home/michi/development/git/libreoffice/sfx2/source/control/templatelocalview.cxx:718
    #83 0x00007fffee228e11 in weld::CustomWeld::DoCommand (this=0x55555779d480, rPos=...) at /home/michi/development/git/libreoffice/vcl/source/app/customweld.cxx:102
    #84 0x00007fffee228b1d in weld::CustomWeld::LinkStubDoCommand (instance=0x55555779d480, data=...) at /home/michi/development/git/libreoffice/vcl/source/app/customweld.cxx:100
    #85 0x00007fffeda99ed6 in Link<CommandEvent const&, bool>::Call (this=0x555557703ef0, data=...) at include/tools/link.hxx:105
    #86 0x00007fffee2813f1 in weld::Widget::signal_command (this=0x555557703ee0, rCEvt=...) at include/vcl/weld/weld.hxx:109
    #87 0x00007fffee247e74 in SalInstanceWidget::CommandHdl (this=0x555557703eb0, rEvent=...) at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:819
    #88 0x00007fffee244ccd in SalInstanceWidget::LinkStubCommandHdl (instance=0x555557703eb0, data=...) at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:817
    #89 0x00007fffeda99ed6 in Link<CommandEvent const&, bool>::Call (this=0x5555577f1080, data=...) at include/tools/link.hxx:105
    #90 0x00007fffedc2f524 in vcl::Window::Command (this=0x5555573055d0, rCEvt=...) at /home/michi/development/git/libreoffice/vcl/source/window/window.cxx:1933
    #91 0x00007fffedc4df45 in ImplCallCommand (pChild=..., nEvt=CommandEventId::ContextMenu, pData=0x0, bMouse=true, pPos=0x7fffffff7950) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:258
    #92 0x00007fffedc4d68c in ImplHandleMouseEvent (xWindow=..., nSVEvent=NotifyEventType::MOUSEBUTTONDOWN, bMouseLeave=false, nX=125, nY=130, nMsgTime=71004093, nCode=4, nMode=MouseEventModifiers::NONE)
        at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:827
    #93 0x00007fffedc51581 in ImplHandleSalMouseButtonDown (pWindow=0x5555578924d0, pEvent=0x7fffffff8998) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2367
    #94 0x00007fffedc501f1 in ImplWindowFrameProc (_pWindow=0x5555578924d0, nEvent=SalEvent::MouseButtonDown, pEvent=0x7fffffff8998) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2705
    #95 0x00007fffe6215dcc in SalFrame::CallCallback (this=0x555557805e30, nEvent=SalEvent::MouseButtonDown, pEvent=0x7fffffff8998) at vcl/inc/salframe.hxx:310
    #96 0x00007fffe62be199 in X11SalFrame::HandleMouseEvent (this=0x555557805e30, pEvent=0x7fffffff8e68) at /home/michi/development/git/libreoffice/vcl/unx/generic/window/salframe.cxx:2575
    #97 0x00007fffe62c1e97 in X11SalFrame::Dispatch (this=0x555557805e30, pEvent=0x7fffffff8e68) at /home/michi/development/git/libreoffice/vcl/unx/generic/window/salframe.cxx:3642
    #98 0x00007fffe6231f7b in SalX11Display::Dispatch (this=0x555556884440, pEvent=0x7fffffff8e68) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldisp.cxx:1966
    #99 0x00007fffe6231802 in SalX11Display::Yield (this=0x555556884440) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldisp.cxx:1865
    #100 0x00007fffe62267df in DisplayYield (fd=5, data=0x555556884440) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldisp.cxx:317
    #101 0x00007fffe622235c in (anonymous namespace)::YieldEntry::HandleNextEvent (this=0x7fffe63191e8 <yieldTable+200>) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldata.cxx:559
    #102 0x00007fffe6222261 in SalXLib::Yield (this=0x5555555a3b00, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldata.cxx:751
    #103 0x00007fffe623f29d in X11SalInstance::DoYield (this=0x5555555a1ba0, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/salinst.cxx:189
    #104 0x00007fffee300306 in InnerYield (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:389
    #105 0x00007fffee2ffb8f in Application::Yield () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:502
    #106 0x00007fffeda927db in Dialog::Execute (this=0x555557806110) at /home/michi/development/git/libreoffice/vcl/source/window/dialog.cxx:1079
    #107 0x00007fffee2505ee in SalInstanceDialog::run (this=0x5555575f5100) at /home/michi/development/git/libreoffice/vcl/source/app/salvtables.cxx:1859
    #108 0x00007fffee6b4c6e in weld::DialogController::run (this=0x7fffffffa218) at /home/michi/development/git/libreoffice/vcl/source/weld/DialogController.cxx:16
    #109 0x00007ffff3c68a94 in SfxTemplateManagerDlg::run (this=0x7fffffffa218) at /home/michi/development/git/libreoffice/sfx2/source/doc/templatedlg.cxx:262
    #110 0x00007ffff36578af in SfxApplication::NewDocExec_Impl (this=0x555556dbccf0, rReq=...) at /home/michi/development/git/libreoffice/sfx2/source/appl/appopen.cxx:473
    #111 0x00007ffff3650dd5 in SfxStubSfxApplicationNewDocExec_Impl (pShell=0x555556dbccf0, rReq=...) at workdir/SdiTarget/sfx2/sdi/sfxslots.hxx:1310
    #112 0x00007ffff37aa26e in SfxDispatcher::Call_Impl (this=0x555556979a30, rShell=..., rSlot=..., rReq=..., bRecord=true) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:256
    #113 0x00007ffff37b0156 in SfxDispatcher::PostMsgHandler (this=0x555556979a30, pReq=std::unique_ptr<SfxRequest> = {...}) at /home/michi/development/git/libreoffice/sfx2/source/control/dispatch.cxx:997
    #114 0x00007ffff3ca5458 in SfxHintPoster::DoEvent_Impl (this=0x555556db3930, pPostedHint=0x5555576ed980) at /home/michi/development/git/libreoffice/sfx2/source/notify/hintpost.cxx:74
    #115 0x00007ffff3ca539d in SfxHintPoster::LinkStubDoEvent_Impl (instance=0x555556db3930, data=0x5555576ed980) at /home/michi/development/git/libreoffice/sfx2/source/notify/hintpost.cxx:54
    #116 0x00007fffedc583f1 in Link<void*, void>::Call (this=0x5555577cabb8, data=0x5555576ed980) at include/tools/link.hxx:105
    #117 0x00007fffedc53d11 in ImplHandleUserEvent (pSVEvent=0x5555577cabb0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2314
    #118 0x00007fffedc50c3f in ImplWindowFrameProc (_pWindow=0x555556db2f40, nEvent=SalEvent::UserEvent, pEvent=0x5555577cabb0) at /home/michi/development/git/libreoffice/vcl/source/window/winproc.cxx:2871
    #119 0x00007fffee830cbc in SalFrame::CallCallback (this=0x555556b048a0, nEvent=SalEvent::UserEvent, pEvent=0x5555577cabb0) at vcl/inc/salframe.hxx:310
    #120 0x00007fffee85721f in SalGenericDisplay::ProcessEvent (this=0x555556884440, aEvent=...) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:66
    #121 0x00007fffee234c9d in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=0x7fffffffb390) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:119
    #122 0x00007fffee234b6b in SalUserEventList::DispatchUserEvents (this=0x555556884440, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/salusereventlist.cxx:120
    #123 0x00007fffee857175 in SalGenericDisplay::DispatchInternalEvent (this=0x555556884440, bHandleAllCurrentEvent=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/gendisp.cxx:51
    #124 0x00007fffe6231784 in SalX11Display::Yield (this=0x555556884440) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldisp.cxx:1856
    #125 0x00007fffe62267df in DisplayYield (fd=5, data=0x555556884440) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldisp.cxx:317
    #126 0x00007fffe622235c in (anonymous namespace)::YieldEntry::HandleNextEvent (this=0x7fffe63191e8 <yieldTable+200>) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldata.cxx:559
    #127 0x00007fffe6221bc9 in SalXLib::Yield (this=0x5555555a3b00, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/saldata.cxx:655
    #128 0x00007fffe623f29d in X11SalInstance::DoYield (this=0x5555555a1ba0, bWait=true, bHandleAllCurrentEvents=false) at /home/michi/development/git/libreoffice/vcl/unx/generic/app/salinst.cxx:189
    #129 0x00007fffee300306 in InnerYield (i_bWait=true, i_bAllEvents=false) at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:389
    #130 0x00007fffee2ffb8f in Application::Yield () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:502
    #131 0x00007fffee2ff970 in Application::Execute () at /home/michi/development/git/libreoffice/vcl/source/app/svapp.cxx:364
    #132 0x00007ffff7b228b5 in desktop::Desktop::Main (this=0x7fffffffd550) at /home/michi/development/git/libreoffice/desktop/source/app/app.cxx:1681
    #133 0x00007fffee329376 in ImplSVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:230
    #134 0x00007fffee32ae99 in SVMain () at /home/michi/development/git/libreoffice/vcl/source/app/svmain.cxx:248
    #135 0x00007ffff7b9c86a in soffice_main () at /home/michi/development/git/libreoffice/desktop/source/app/sofficemain.cxx:122
    #136 0x0000555555555a2d in sal_main () at /home/michi/development/git/libreoffice/desktop/source/app/main.c:51
    #137 0x0000555555555a07 in main (argc=1, argv=0x7fffffffd758) at /home/michi/development/git/libreoffice/desktop/source/app/main.c:49

Change-Id: I06da3836405b46671785824fbcee8db863048685
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197637
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2026-01-21 10:25:11 +01:00
Mike Kaganski 7f198b27f4 Drop class utl::MediaDescriptor, and use comphelper::SequenceAsHashMap
utl::MediaDescriptor was just a SequenceAsHashMap with a few added
methods. It made it more difficult to assign a SequenceAsHashMap to
MediaDescriptor, without real upsides. In many places, the class was
used not as media descriptor, but just as helper to create sequences.

This change puts the string constants and the former methods into a
namespace utl::MediaDescriptor.

It would be also good to drop comphelper::NamedValueCollection, which
is basically a twin of comphelper::SequenceAsHashMap (TODO).

Change-Id: Ia9b69c5a2ad153ecc654944c419c1880252ed86e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195163
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2025-12-06 18:18:32 +01:00
Aung 8ce2cf3973 tdf#41777 Add window size and position for each document
-Extend ViewDataSupplier to work with window state for supported
 applications like sw, sc, sd
-Extend sm DocumentPropertySupplier to work with window state
-Add OldWindowState string member to SfxViewShell inherited
 classes for sw, sc and sd
-Add OldWindowState string member to SmDocShell class for sm

 Imported window state is stored in the model shells
 or the ViewShells if available. This data is accessed by services
 like ViewDataSupplier and DocumentPropertySupplier used by
 persistentwindowstate.cxx. It is needed to store the window state
 data since frame is not available to get to resize
 and reposition by the time importing document has finished.

-Add windowstatehelper header and source files in the framework
 module for getting/exporting the size and position of
 windows. Also add associated file and library to make files for
 exporting/using these helper methods across different modules.

-Modify impl_searchRecycleTarget method in loadenv.cxx

 New frames are created for saved documents when launched from
 the start center. This is to apply their own window state
 separately from the backing window.
 New docs and templates still recycle the backing window frame.

-Make the backing window close afterwards after the new frame has
 been created and the document gets loaded successfully
 (modified in loadenv.cxx)



Change-Id: Ia5ad606e744621f267dae6cd468b0c430b2ebf1d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185189
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2025-09-24 06:44:43 +02:00
Noel Grandin 09e2627a83 use more concrete UNO types in some local vars
found by a little plugin I created.

Plugin parked into store/ folder because it needs hand-holding
when run.

Change-Id: I2b4da7378f0becbc5f020ac9e78cd765aa0119b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181768
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
2025-02-26 16:56:56 +01:00
Caolán McNamara 8c6972a490 add AbortOnLoadFailure to optionally assert on failure to load
intended for use with crashtesting to detect when we export something we
can't import

Change-Id: I80c2f5198f8695c00a68cf09d4512d56c5a537a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176412
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-11-11 22:33:36 +01:00
Noel Grandin ed0b12f4ea no need to take a copy of the getProcessComponentContext return value
we can just take a "const &".

(found by running clang-tidy with the
performance-unnecessary-copy-initialization warning)

Change-Id: I20fd208c65303da78170b1ac06c638fdf3aa094b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176267
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
2024-11-08 15:23:52 +01:00
Tibor Nagy d239ac793f tdf#76981 sd: Hide the document opening process when opening linked
presentation in slideshow mode, only the presentation should be visible.
The user should not see any intermediate loading processes or windows,
providing a seamless transition directly to the presentation content.
After closing the opened presentation, the running presentation should receive focus.

Change-Id: Idc24de3d38523f044d7969f1eacb05c6bae91b83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175706
Tested-by: Jenkins
Reviewed-by: Nagy Tibor <tibor.nagy.extern@allotropia.de>
2024-10-28 09:48:30 +01:00
Caolán McNamara ee4554b0ac cid#1555259 COPY_INSTEAD_OF_MOVE
and

cid#1555264 COPY_INSTEAD_OF_MOVE
cid#1555280 COPY_INSTEAD_OF_MOVE
cid#1555303 COPY_INSTEAD_OF_MOVE
cid#1555313 COPY_INSTEAD_OF_MOVE
cid#1555314 COPY_INSTEAD_OF_MOVE
cid#1555323 COPY_INSTEAD_OF_MOVE
cid#1555333 COPY_INSTEAD_OF_MOVE
cid#1555338 COPY_INSTEAD_OF_MOVE
cid#1555349 COPY_INSTEAD_OF_MOVE
cid#1555364 COPY_INSTEAD_OF_MOVE
cid#1555379 COPY_INSTEAD_OF_MOVE
cid#1555398 COPY_INSTEAD_OF_MOVE
cid#1555410 COPY_INSTEAD_OF_MOVE
cid#1555411 COPY_INSTEAD_OF_MOVE
cid#1555416 COPY_INSTEAD_OF_MOVE
cid#1555429 COPY_INSTEAD_OF_MOVE
cid#1555434 COPY_INSTEAD_OF_MOVE
cid#1555441 COPY_INSTEAD_OF_MOVE
cid#1555446 COPY_INSTEAD_OF_MOVE
cid#1555480 COPY_INSTEAD_OF_MOVE
cid#1555490 COPY_INSTEAD_OF_MOVE
cid#1555524 COPY_INSTEAD_OF_MOVE
cid#1555527 COPY_INSTEAD_OF_MOVE
cid#1555531 COPY_INSTEAD_OF_MOVE
cid#1555578 COPY_INSTEAD_OF_MOVE
cid#1555581 COPY_INSTEAD_OF_MOVE
cid#1555591 COPY_INSTEAD_OF_MOVE
cid#1555614 COPY_INSTEAD_OF_MOVE
cid#1555619 COPY_INSTEAD_OF_MOVE
cid#1555633 COPY_INSTEAD_OF_MOVE
cid#1555654 COPY_INSTEAD_OF_MOVE
cid#1555707 COPY_INSTEAD_OF_MOVE
cid#1555712 COPY_INSTEAD_OF_MOVE
cid#1555746 COPY_INSTEAD_OF_MOVE
cid#1555763 COPY_INSTEAD_OF_MOVE

Change-Id: Ibcc1a3649c5663328e60474c06e51902aa74db52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175407
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-10-22 17:53:07 +02:00
Caolán McNamara 23d7910c1e cid#1554844 COPY_INSTEAD_OF_MOVE
and

cid#1554878 COPY_INSTEAD_OF_MOVE
cid#1554907 COPY_INSTEAD_OF_MOVE
cid#1555082 COPY_INSTEAD_OF_MOVE
cid#1555224 COPY_INSTEAD_OF_MOVE
cid#1555301 COPY_INSTEAD_OF_MOVE
cid#1555378 COPY_INSTEAD_OF_MOVE
cid#1555395 COPY_INSTEAD_OF_MOVE
cid#1555452 COPY_INSTEAD_OF_MOVE
cid#1555466 COPY_INSTEAD_OF_MOVE
cid#1555514 COPY_INSTEAD_OF_MOVE
cid#1555566 COPY_INSTEAD_OF_MOVE
cid#1555753 COPY_INSTEAD_OF_MOVE
cid#1555782 COPY_INSTEAD_OF_MOVE
cid#1555825 COPY_INSTEAD_OF_MOVE
cid#1555842 COPY_INSTEAD_OF_MOVE
cid#1555891 COPY_INSTEAD_OF_MOVE
cid#1555917 COPY_INSTEAD_OF_MOVE
cid#1555961 COPY_INSTEAD_OF_MOVE
cid#1556021 COPY_INSTEAD_OF_MOVE
cid#1556055 COPY_INSTEAD_OF_MOVE
cid#1556307 COPY_INSTEAD_OF_MOVE
cid#1556349 COPY_INSTEAD_OF_MOVE
cid#1556436 COPY_INSTEAD_OF_MOVE
cid#1556665 COPY_INSTEAD_OF_MOVE
cid#1556696 COPY_INSTEAD_OF_MOVE
cid#1556718 COPY_INSTEAD_OF_MOVE
cid#1556775 COPY_INSTEAD_OF_MOVE
cid#1556835 COPY_INSTEAD_OF_MOVE
cid#1556877 COPY_INSTEAD_OF_MOVE
cid#1556994 COPY_INSTEAD_OF_MOVE
cid#1557010 COPY_INSTEAD_OF_MOVE
cid#1557074 COPY_INSTEAD_OF_MOVE
cid#1557111 COPY_INSTEAD_OF_MOVE
cid#1557142 COPY_INSTEAD_OF_MOVE
cid#1557163 COPY_INSTEAD_OF_MOVE
cid#1557164 COPY_INSTEAD_OF_MOVE
cid#1557214 COPY_INSTEAD_OF_MOVE
cid#1557254 COPY_INSTEAD_OF_MOVE
cid#1557322 COPY_INSTEAD_OF_MOVE
cid#1557327 COPY_INSTEAD_OF_MOVE
cid#1557492 COPY_INSTEAD_OF_MOVE
cid#1557565 COPY_INSTEAD_OF_MOVE
cid#1557663 COPY_INSTEAD_OF_MOVE
cid#1557798 COPY_INSTEAD_OF_MOVE

Change-Id: I2ae9c184dcc18d44a65437e18c49e16b27f4d81d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174893
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-10-14 15:28:24 +02:00
Vasily Melenchuk e0b930e1dd VCL: Windows: more usecases for FlashWindow() API to inform on changes
FlashWindow() can be used to bring user attention to application
in background. Right now in LO it has implementation only for
Windows. Here some new cases were added when flashing is used:
 * dialog window did open
 * document loaded
 * LO started

Some redesign of previous solution is also performed: no manual
search for top window, let's reuse existing code.

Changed behavior for bringing LO window to foreground: it is made always and not depending on current value of NewDocumentHandling:ForceFocusAndToFront. It has no sense to tweak this behavior: if user clicks on document in file explorer, LO should came to foreground, no exceptions.

Change-Id: I22b5b4e2b170cd25632083a55b3e9f0358bcae03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166615
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2024-05-16 12:50:31 +02:00
Noel Grandin 4f5f24a4a3 loplugin:ostr in framework
Change-Id: I2fdc32aa5de6a1315fe69997f9b531259aa78605
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167339
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-08 17:18:51 +02:00
Noel Grandin 8ef4dc07cd improve loplugin:staticmethods
Some of the exclusions were too aggressive. Restrict them to only the
important classes, which exposes some more places this plugin applies.

Change-Id: I1b2d1fb24391adc71ed0984f94168f61a149479f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165154
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-22 11:47:36 +01:00
Stephan Bergmann 64c47c92d0 Extended loplugin:ostr: Automatic rewrite O[U]StringLiteral: framework
Change-Id: I0f17c569eddcdc30bfca4cdcd25cb05cf783ec23
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158200
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-20 07:06:17 +02:00
Caolán McNamara 7f9b3a0214 Resolves: tdf#154308 if start center frame exists, use it as dialog parent
At least for the case the document is launched from the StartCenter, put
that StartCenter as the parent for any dialogs that may appear during
typedetection, this avoids such dialogs not getting associated with
the start center and going behind the dialog if the start center is
clicked while the dialog was appearing.

The start center is always recycled to become the next document if
it exists, so its window is the window the final document would
appear in if successful.

Change-Id: I75a92ff424aa0b9d5d6b808e2f7f1766a80fa50c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150058
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2023-04-05 22:24:12 +02:00
Mike Kaganski 116b9d6ddf Avoid conversions between OUString and OString in VCL
Standardize on OUString, which is the main internal string class.
Convert from/to OUString only when communicating with respective
external APIs.

Removes about 200 conversions from the code.

Change-Id: I96ecee7c6fd271bb76639220e96d69d2964bed26
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149930
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-04-02 18:46:47 +02:00
Noel Grandin 89fa0a42ec osl::Mutex->std::mutex in LoadEnvListener
Change-Id: If76feb51f0d2f187603fb1af7c27bbe3391b645b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146944
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-02-14 06:59:40 +00:00
Henry Castro f43a5ec28d lok: fix convert-to batch mode, quiet interaction
If it is a batch mode to convert *.csv to *.ods,
use the quiet interaction to avoid unwanted filter dialogs.

Signed-off-by: Henry Castro <hcastro@collabora.com>
Change-Id: I4ef82c1079888ae099084072c146b5db4cc0f2a0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141950
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian <ash@collabora.com>
2022-10-31 13:29:39 +01:00
Noel Grandin fd3888c69a move ErrCode to comphelper and improve debug output string
need to move it, because modules "below" vcl want
to use the debug output method

Change-Id: Ibcaf4089a1e0b3fcc0b5189c7ebf1aae90f50b48
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139791
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-09-14 08:34:38 +02:00
Mike Kaganski 42d197ef30 tdf#150773: Avoid bringing loading files to front several times
The change attempts to establish this logic:
1. Honor the ForceFocusAndToFront setting uniformly: previously, it
   was ignored when reusing existing windows (opening in Start Center,
   in place of an empty document, or trying to open an already opened
   document);
2. When ForceFocusAndToFront is set, try to activate the window as
   early as possible (before loading begind), as a feedback to user,
   and also to avoid situations when activation would be impossible
   later (e.g., there is a timespan on Windows, during which entitled
   applications can bring themselves to foreground; a lengthy loading
   process can exceed that time);
3. If activated once, do not activate second time after loading ends,
   to avoid nagging users who deliberately switched to other tasks.

Explicit calls to impl_makeFrameWindowVisible were removed from
impl_searchAlreadyLoaded and impl_isFrameAlreadyUsedForLoading,
because those functions are called from impl_loadContent, which makes
sure that they are followed by a call to impl_makeFrameWindowVisible
(either in impl_setResult -> impl_reactForLoadingState, or directly).

A fix to tdf#83773 was adjusted; I checked that the bug doesn't
reappear after that.

Change-Id: I4bdcf978d43016d1e8979adf2fdf108a37f6ba2d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139362
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-04 19:44:49 +02:00
Mike Kaganski f0fbf30a9c Some refactor
Change-Id: I5b87f9298bfeec70848654eacf5086803c19080a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139354
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-09-04 10:41:33 +02:00
Noel Grandin c60ad041e8 clang-tidy modernize-pass-by-value in framework
Change-Id: I024653154c51389bb27f3e94b422ff7fc1c9b46b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135296
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-02 12:12:15 +02:00
Noel Grandin d03e7a8fba speed up simple use of NamedValueCollection
where instantiating and allocating a whole map just to extract a single
key is way inefficient

Change-Id: I55248bc71a9e8826cab9b76fa6916bfa888efa0b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134226
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-12 18:03:46 +02:00
Noel Grandin 9e57e16484 loplugin:unusedvariableplus
Change-Id: Id93086be1224b6f6bf0bdaa1d50b4f289099027e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133876
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-05-05 17:35:08 +02:00
Stephan Bergmann 6b6df07d2f Just use Any ctor instead of makeAny in framework
Change-Id: I9f4990cf58cc794408dd70cd7fbfb2a8effa138c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133806
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-05-04 11:58:23 +02:00
Noel Grandin cbaf1fbaa6 loplugin:stringview more o3tl conversion
look for call sequences that can use string_view and the new o3tl
functions in o3tl/string_view.hxx

Also add a few more wrappers to said #include file

Change-Id: I05d8752cc67a7b55b0b57e8eed803bd06bfcd9ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132840
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-12 12:42:15 +02:00
Noel Grandin 1927b51993 loplugin:stringviewparam convert methods using indexOf
.. and lastIndexOf, which convert to find and rfind

Change-Id: I6c4156cf904774c0d867f85a4c2785dba7593f62
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132445
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-02 13:31:19 +02:00
Luboš Luňák 4256c764ae do not pass XComponentContext to officecfg::...::get() calls
It's used only for the ConfigurationWrapper singleton, so it's used
only the first time and then ignored. It also causes calls to
comphelper::getProcessComponentContext() for every single invocation
despite the value not being needed, and the calls may not be cheap
(it's ~5% CPU during ODS save because relatively frequent calls
to officecfg::Office::Common::Save::ODF::DefaultVersion::get()).

Change-Id: I02c17a1a9cb498aeef220ddd5a0bde5523cb0ffb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131056
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2022-03-07 15:37:22 +01:00
Andrea Gelmini 0040076af3 Fix typos
Change-Id: I8e6db5dfb5285e45f862fadf09ecb4142be6e075
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126659
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
2021-12-11 16:05:03 +01:00
Noel Grandin 2ab40e9ecc use more OUStringLiteral in MediaDescriptor
Change-Id: I0567d103db8db401c737fed98483912a39352929
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124835
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-11-08 11:31:36 +01:00
Mike Kaganski f662ba9536 Prepare for removal of non-const operator[] from Sequence in framework
Change-Id: Ied2683a0b8a1bab1a7594da1e9bdbd3cb753552c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124370
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-10-30 10:31:26 +02:00
Julien Nabet bb73961ed0 Simplify Sequences init + remove dup block + typos in framework
Change-Id: Ife80915c402ff25aa4752a5e1b68337eca3dd85f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123721
Tested-by: Julien Nabet <serval2412@yahoo.fr>
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2021-10-18 16:41:46 +02:00
Mike Kaganski e662e835c2 Guard Orcus detection shortcut
So that its policy matches the other places in this function

Change-Id: I309441f63cf82bbae2b19c7de588d4228b988bad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121764
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-09-07 23:16:15 +02:00
Mike Kaganski a3843f1cb0 tdf#141164: Add an expert config for WebDAV redirection detection
Since commit 20b1e6440a, we detect
redirected WebDAV paths, and substitute them with original WebDAV
URLs to allow retrieving additional information like lock owner.

The new officecfg::Office::Common::Load::DetectWebDAVRedirection
allows to disable the detection, and opt to older way of use of
Windows Redirector, taking advantage of its cookie handling until
we implement own proper cookie handling.

Change-Id: I1510a016f40dbe81dcba9aa4fd50eda73a6d9f22
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114686
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-04-27 09:12:01 +02:00
Noel Grandin c880d3e304 check for quit when calling Yield in loop
so we don't get stuck threads when the main application
quits

Change-Id: Id36e99267ceb4154873b6ef8ef494622fff6c19a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112409
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2021-03-14 08:20:53 +01:00
Noel 897970cd0b loplugin:refcounting in framework
Change-Id: I2d7d14fe0335689e4a338c70587bf33137ed1ddd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111279
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-02-21 16:11:48 +01:00
Caolán McNamara ac396f2f6b fix coverity parse errors
Change-Id: I3a1179947704452e3ffec02be59d0f7bf0b75ab0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109017
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-01-09 13:01:49 +01:00
Stephan Bergmann a3d0091d18 New loplugin:stringliteralvar
See the comment at the top of compilerplugins/clang/stringliteralvar.cxx for
details.

(Turned some affected variables in included files into inline variables, to
avoid GCC warnings about unused variables.)

Change-Id: Ie77219e6adfdaaceaa8b4e590b08971f2f04c83a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108239
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-12-26 14:51:15 +01:00
Noel 8332d6d820 loplugin:stringviewparam include comparisons with string literals
Change-Id: I8ba1214500dddaf413c506a4b82f43d63cda804b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106559
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-11-30 12:32:14 +01:00
Gabor Kelemen a5389cb5dd tdf#42949 Fix new IWYU warnings in directories [e-f]*
Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.

Change-Id: I963aa5fb892a0be36212fd0587b69f217f017947
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105469
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
2020-11-12 10:53:07 +01:00
Miklos Vajna 85467e7cb9 tdf#137356 framework: fix opening the same document twice for long loads
If the document loading is long enough that the statusbar is updated,
then we can have this situation that we start loading the document, then
spin the main loop during load and do a second load of the same document
as part of the main loop spinning:

	#0  SwDoc::SwDoc() (this=0x1c6a180) at sw/source/core/doc/docnew.cxx:194
	...
	#6  0x00007ffff359a6dd in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x1c5c260, seqArguments=uno::Sequence of length 15 = {...})
	...
	#33 0x00007fffeeb81ecd in Application::Reschedule(bool) (i_bAllEvents=true) at vcl/source/app/svapp.cxx:460
	...
	#36 0x00007ffff4265251 in framework::StatusIndicator::start(rtl::OUString const&, int) (this=0x1aace80, sText="Loading document...", nRange=1000000) at framework/source/helper/statusindicator.cxx:51
	#37 0x00007fffd026dfd3 in XMLReader::Read(SwDoc&, rtl::OUString const&, SwPaM&, rtl::OUString const&) (this=0x1bb7d20, rDoc=..., rBaseURL="file:///.../test.odt", rPaM=SwPaM = {...}, rName="") at sw/source/filter/xml/swxml.cxx:630
	...
	#42 0x00007ffff359a6dd in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x1bce4d0, seqArguments=uno::Sequence of length 15 = {...}) at sfx2/source/doc/sfxbasemodel.cxx:1883

The reason for this is is that by the time
LoadEnv::impl_searchAlreadyLoaded() searches for frames which already
have this doc open, the first load is still in progress, and we
assiciate the frame with its controller (which has the URL) only once
the load finishes.

Fix the problem by setting the URL on the frame directly for the
duration of the load: this way an in-progress load also counts as a
duplicate and we'll have just one document open at the end.

Regression from commit 74ac65c49c
(#i114963# Enable IPC before OpenClients to allow client connections
when printing., 2016-09-06), we just didn't process incoming requests on
the socket before, so the problem was less visible.

Change-Id: Ib138c4c264e2508c20104ab268501bcca31e2790
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104310
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
2020-10-14 18:41:26 +02:00
Noel Grandin ff25a4a6f4 loplugin:flatten in framework
Change-Id: I2a74a7543b5edd853396efa31a3e2568e6607778
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91848
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-04-08 11:01:31 +02:00
Stephan Bergmann 9ad252b2e7 Drop o3tl::optional wrapper
...now that macOS builds are guaranteed to have std::optional since
358146bbbd "Bump macOS build baseline to
Xcode 11.3 and macOS 10.14.4".

The change is done mostly mechanically with

> for i in $(git grep -Fl optional); do
>  sed -i -e 's:<o3tl/optional\.hxx>\|\"o3tl/optional\.hxx\":<optional>:' \
>   -e 's/\<o3tl::optional\>/std::optional/g' \
>   -e 's/\<o3tl::make_optional\>/std::make_optional/g' "$i"
> done
> for i in $(git grep -Flw o3tl::nullopt); do
>  sed -i -e 's/\<o3tl::nullopt\>/std::nullopt/g' "$i"
> done

(though that causes some of the resulting

  #include <optional>

to appear at different places relative to other includes than if they had been
added manually), plus a few manual modifications:

* adapt bin/find-unneeded-includes
* adapt desktop/IwyuFilter_desktop.yaml
* remove include/o3tl/optional.hxx
* quote resulting "<"/">" as "&lt;"/"&gt;" in officecfg/registry/cppheader.xsl
* and then solenv/clang-format/reformat-formatted-files

Change-Id: I68833d9f7945e57aa2bc703349cbc5a56b342273
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89165
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-21 14:50:28 +01:00
Jan-Marek Glogowski 61e1e04132 tdf#126700 allow replacing the default documents
Per default, a document opened by a user action will always open
in a new frame. For tdf#83722, this behaviour was extended to
documents created from templates.

But this currently also affects the default factory templates, if
these are replaced by a config setting with a real template, which
was not intentional.

So this patch introduces a new MediaDescriptor property, which
allows to mark a document as replaceable and automatically sets
it for factory default documents. If this property is set to true,
a document just acts as a placeholder while it's unmodified. I.e.
the next opened document from its frame will close and replace it.

Change-Id: I45ffa8709f7cdda949fac78f3b363f120f0c4a03
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88257
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2020-02-12 00:27:51 +01:00
Andrea Gelmini c64c4ad036 Fix typo
Change-Id: I0c62fbf27986f20388d6fb7f44f4e998657d791f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86301
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2020-01-07 15:30:14 +01:00
Julien Nabet f3e0595fcb tdf#46037: use officecfg/Setup
+ replace define OFFICEFACTORY_PROPNAME_ASCII_WINDOWATTRIBUTES used once

Change-Id: I0930dc8a2d8df76b93e634a594cbfdf4a4cd634b
Reviewed-on: https://gerrit.libreoffice.org/85706
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-23 07:41:49 +01:00
Stephan Bergmann f853ec317f Extend loplugin:external to warn about classes
...following up on 314f15bff0 "Extend
loplugin:external to warn about enums".

Cases where free functions were moved into an unnamed namespace along with a
class, to not break ADL, are in:

  filter/source/svg/svgexport.cxx
  sc/source/filter/excel/xelink.cxx
  sc/source/filter/excel/xilink.cxx
  svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx

All other free functions mentioning moved classes appear to be harmless and not
give rise to (silent, even) ADL breakage.  (One remaining TODO in
compilerplugins/clang/external.cxx is that derived classes are not covered by
computeAffectedTypes, even though they could also be affected by ADL-breakage---
but don't seem to be in any acutal case across the code base.)

For friend declarations using elaborate type specifiers, like

  class C1 {};
  class C2 { friend class C1; };

* If C2 (but not C1) is moved into an unnamed namespace, the friend declaration
must be changed to not use an elaborate type specifier (i.e., "friend C1;"; see
C++17 [namespace.memdef]/3: "If the name in a friend declaration is neither
qualified nor a template-id and the declaration is a function or an
elaborated-type-specifier, the lookup to determine whether the entity has been
previously declared shall not consider any scopes outside the innermost
enclosing namespace.")

* If C1 (but not C2) is moved into an unnamed namespace, the friend declaration
must be changed too, see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71882>
"elaborated-type-specifier friend not looked up in unnamed namespace".

Apart from that, to keep changes simple and mostly mechanical (which should help
avoid regressions), out-of-line definitions of class members have been left in
the enclosing (named) namespace.  But explicit specializations of class
templates had to be moved into the unnamed namespace to appease
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92598> "explicit specialization of
template from unnamed namespace using unqualified-id in enclosing namespace".

Also, accompanying declarations (of e.g. typedefs or static variables) that
could arguably be moved into the unnamed namespace too have been left alone.

And in some cases, mention of affected types in blacklists in other loplugins
needed to be adapted.

And sc/qa/unit/mark_test.cxx uses a hack of including other .cxx, one of which
is sc/source/core/data/segmenttree.cxx where e.g. ScFlatUInt16SegmentsImpl is
not moved into an unnamed namespace (because it is declared in
sc/inc/segmenttree.hxx), but its base ScFlatSegmentsImpl is.  GCC warns about
such combinations with enabled-by-default -Wsubobject-linkage, but "The compiler
doesn’t give this warning for types defined in the main .C file, as those are
unlikely to have multiple definitions."
(<https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Warning-Options.html>)  The
warned-about classes also don't have multiple definitions in the given test, so
disable the warning when including the .cxx.

Change-Id: Ib694094c0d8168be68f8fe90dfd0acbb66a3f1e4
Reviewed-on: https://gerrit.libreoffice.org/83239
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-22 12:57:32 +01:00
Gabor Kelemen 0f25e181c1 tdf#42949 Fix IWYU warnings in framework/*/*cxx
Also drop the now unused framework/inc/general.h

Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.

Change-Id: I8e19036a507dbdcd178835b6ac4182719d27a654
Reviewed-on: https://gerrit.libreoffice.org/82744
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-11-20 10:47:20 +01:00
Gabor Kelemen e4bf92ae34 tdf#42949 Fix IWYU warnings in framework/*/*hxx
Also drop unused framework/inc/fwkdllapi.h

Found with bin/find-unneeded-includes
Only removal proposals are dealt with here.

Change-Id: I9e79266f273b778f4a8bd3330b1b0353a2e01a61
Reviewed-on: https://gerrit.libreoffice.org/81927
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2019-11-11 09:48:23 +01:00