summaryrefslogtreecommitdiff
path: root/desktop
AgeCommit message (Collapse)AuthorFilesLines
2024-10-22tdf#163486: PVS: Identical branchesBogdan Buzea1-7/+2
V1037 Two or more case-branches perform the same actions. Check lines: 717, 733 Change-Id: I57fc125abb8c9a4c9dea197945f45b95b90e41b7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175320 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
2024-10-22cid#1545605 COPY_INSTEAD_OF_MOVECaolán McNamara1-1/+1
and cid#1545841 COPY_INSTEAD_OF_MOVE cid#1554682 COPY_INSTEAD_OF_MOVE cid#1554686 COPY_INSTEAD_OF_MOVE cid#1554715 COPY_INSTEAD_OF_MOVE cid#1554750 COPY_INSTEAD_OF_MOVE cid#1554759 COPY_INSTEAD_OF_MOVE cid#1554770 COPY_INSTEAD_OF_MOVE cid#1554779 COPY_INSTEAD_OF_MOVE cid#1554794 COPY_INSTEAD_OF_MOVE cid#1554800 COPY_INSTEAD_OF_MOVE cid#1554826 COPY_INSTEAD_OF_MOVE cid#1554836 COPY_INSTEAD_OF_MOVE cid#1554862 COPY_INSTEAD_OF_MOVE cid#1554865 COPY_INSTEAD_OF_MOVE cid#1554872 COPY_INSTEAD_OF_MOVE cid#1554883 COPY_INSTEAD_OF_MOVE cid#1554906 COPY_INSTEAD_OF_MOVE cid#1554921 COPY_INSTEAD_OF_MOVE cid#1554926 COPY_INSTEAD_OF_MOVE cid#1554946 COPY_INSTEAD_OF_MOVE cid#1554956 COPY_INSTEAD_OF_MOVE cid#1554970 COPY_INSTEAD_OF_MOVE cid#1554986 COPY_INSTEAD_OF_MOVE cid#1554991 COPY_INSTEAD_OF_MOVE cid#1555013 COPY_INSTEAD_OF_MOVE cid#1555037 COPY_INSTEAD_OF_MOVE cid#1555050 COPY_INSTEAD_OF_MOVE cid#1555057 COPY_INSTEAD_OF_MOVE cid#1555066 COPY_INSTEAD_OF_MOVE cid#1555067 COPY_INSTEAD_OF_MOVE cid#1555083 COPY_INSTEAD_OF_MOVE cid#1555097 COPY_INSTEAD_OF_MOVE cid#1555135 COPY_INSTEAD_OF_MOVE cid#1555140 COPY_INSTEAD_OF_MOVE cid#1555146 COPY_INSTEAD_OF_MOVE cid#1555148 COPY_INSTEAD_OF_MOVE cid#1555149 COPY_INSTEAD_OF_MOVE cid#1555155 COPY_INSTEAD_OF_MOVE cid#1555157 COPY_INSTEAD_OF_MOVE cid#1555168 COPY_INSTEAD_OF_MOVE cid#1555195 COPY_INSTEAD_OF_MOVE cid#1555196 COPY_INSTEAD_OF_MOVE cid#1555237 COPY_INSTEAD_OF_MOVE Change-Id: I90531c19c28dca77fe99c72efdfc0972c311da98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175377 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-10-22move vcl::DeleteOnDeinit to toolsNoel Grandin1-2/+2
so we can fix a shutdown use-after-free in sot. Change-Id: I32f83bd94627d72d7bee7ea2ebd6ab77a7f78435 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175335 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-22tdf#161625 Use SolarMutex instead of std::mutex in ExtMgrDialogMichael Weghorn2-6/+5
Instead of using a custom (non-recursive) std::mutex in the extension manager dialog, hold the (recursive) SolarMutex instead. As the backtrace in attachment 197155 in tdf#161625 (s.a. below) shows, a recursive mutex is needed: dp_gui::ExtMgrDialog::TimeOutHdl (frame 17) locks the mutex, then dp_gui::ExtMgrDialog::startProgress (frame 6) wants to lock it again, causing a deadlock. (Switching ExtMgrDialog::m_aMutex to be a std::recursive_mutex could be an alternative, but follow the common pattern of holding the SolarMutex while doing UI stuff instead.) Somewhat similar commit: commit 406a7e9d452201f3fd53abc770da6eb9589fff92 Date: Wed Jul 10 12:46:50 2024 +0200 fix locking in UpdateRequiredDialog Backtrace of deadlock: #0 0x00007f883f6adc70 in ?? () from /usr/lib/libc.so.6 #1 0x00007f883f6b4b01 in pthread_mutex_lock () from /usr/lib/libc.so.6 #2 0x00007f87f3ea068e in __gthread_mutex_lock (__mutex=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/x86_64-pc-linux-gnu/bits/gthr-default.h:762 #3 std::mutex::lock (this=0x5782aab26e48) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/std_mutex.h:113 #4 std::unique_lock<std::mutex>::lock (this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:147 #5 std::unique_lock<std::mutex>::unique_lock (__m=..., this=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/unique_lock.h:73 #6 dp_gui::ExtMgrDialog::startProgress (this=0x5782aab26de0, _bLockInterface=0x80) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:779 #7 0x00007f883b4080a1 in Link<void*, void>::Call (this=0x7f86b0000c08, data=0x80) at include/tools/link.hxx:111 #8 ImplHandleUserEvent (pSVEvent=pSVEvent@entry=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2285 #9 0x00007f883b40616a in ImplWindowFrameProc (_pWindow=0x5782a76df9f0, nEvent=SalEvent::UserEvent, pEvent=0x7f86b0000c00) at /home/user/libreofficetwo/vcl/source/window/winproc.cxx:2849 #10 0x00007f883b6c711e in SalUserEventList::DispatchUserEvents(bool)::$_0::operator()() const (this=<optimized out>) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:119 #11 SalUserEventList::DispatchUserEvents (this=0x5782a62edb08, bHandleAllCurrentEvents=false) at /home/user/libreofficetwo/vcl/source/app/salusereventlist.cxx:120 #12 0x00007f8833fb7827 in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:447 #13 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469 #14 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385 #15 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473 #16 0x00007f883b486415 in ProgressBar::SetValue (this=<optimized out>, nNewPercent=<optimized out>) at /home/user/libreofficetwo/vcl/source/control/prgsbar.cxx:199 #17 0x00007f87f3ea14ca in dp_gui::ExtMgrDialog::TimeOutHdl (this=0x5782aab26de0) at /home/user/libreofficetwo/desktop/source/deployment/gui/dp_gui_dialog2.cxx:976 #18 0x00007f883b6ff8c7 in Scheduler::CallbackTaskScheduling () at /home/user/libreofficetwo/vcl/source/app/scheduler.cxx:509 #19 0x00007f8833fd4013 in SalTimer::CallCallback (this=0x5782a77b83d0) at vcl/inc/saltimer.hxx:53 #20 QtTimer::timeoutActivated (this=0x5782a77b83c0) at vcl/qt6/../qt5/QtTimer.cxx:51 #21 0x00007f88341a3397 in ?? () from /usr/lib/libQt6Core.so.6 #22 0x00007f88341ab5e5 in QTimer::timerEvent(QTimerEvent*) () from /usr/lib/libQt6Core.so.6 #23 0x00007f883418d859 in QObject::event(QEvent*) () from /usr/lib/libQt6Core.so.6 #24 0x00007f8832efc8cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #25 0x00007f8834145aa8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #26 0x00007f88342c7658 in QTimerInfoList::activateTimers() () from /usr/lib/libQt6Core.so.6 #27 0x00007f88343a9f99 in ?? () from /usr/lib/libQt6Core.so.6 #28 0x00007f8837877299 in ?? () from /usr/lib/libglib-2.0.so.0 #29 0x00007f88378d9ec7 in ?? () from /usr/lib/libglib-2.0.so.0 #30 0x00007f8837876795 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #31 0x00007f88343a82bd in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #32 0x00007f8833fb789d in QtInstance::ImplYield (this=this@entry=0x5782a62edad0, bWait=<optimized out>, bHandleAllCurrentEvents=<optimized out>) at vcl/qt6/../qt5/QtInstance.cxx:458 #33 0x00007f8833fb9e11 in QtInstance::DoYield (this=0x5782a62edad0, bWait=true, bHandleAllCurrentEvents=false) at vcl/qt6/../qt5/QtInstance.cxx:469 #34 0x00007f883b70fc72 in ImplYield (i_bWait=true, i_bAllEvents=false) at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:385 #35 Application::Yield () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:473 #36 0x00007f883b70fb90 in Application::Execute () at /home/user/libreofficetwo/vcl/source/app/svapp.cxx:360 #37 0x00007f883f8e1770 in desktop::Desktop::Main (this=0x7ffc2a5b0d28) at /home/user/libreofficetwo/desktop/source/app/app.cxx:1691 #38 0x00007f883b717e1e in ImplSVMain () at /home/user/libreofficetwo/vcl/source/app/svmain.cxx:228 #39 0x00007f883f90ef8a in soffice_main () at /home/user/libreofficetwo/desktop/source/app/sofficemain.cxx:121 #40 0x000057829d6f683b in sal_main () at /home/user/libreofficetwo/desktop/source/app/main.c:51 #41 main (argc=<optimized out>, argv=<optimized out>) at /home/user/libreofficetwo/desktop/source/app/main.c:49 Change-Id: I96d746eb1493aaf5b56d50664c9d1817699f21bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175298 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Rafael Lima <rafael.palma.lima@gmail.com> Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-10-14cid#1554844 COPY_INSTEAD_OF_MOVECaolán McNamara1-1/+1
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-10Make --disable-emscripten-proxy-to-pthread configurableStephan Bergmann2-2/+13
...as is convenient for some experiments Change-Id: I74aedb38ecc0f7b5a0d913799f649dce77dc7bba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174753 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-10-07cid#1606611 Data race conditionNoel Grandin1-1/+2
and cid#1607663 Data race condition cid#1606843 Data race condition cid#1608340 Check of thread-shared field evades lock acquisition Change-Id: I97b82d4302ead6b96ae19c15502c427952df2ede Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174566 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-02Hack reordering includes to avoid Windows Yield macro falloutStephan Bergmann1-2/+4
No idea why my local Windows build started to only now fail with > [build CXX] desktop/source/app/updater.cxx > C:\lo\core\include\vcl/svapp.hxx(491): error C2208: 'void': no members defined using this type > C:\lo\core\include\vcl/svapp.hxx(491): warning C4091: 'static ': ignored on left of 'void' when no variable is declared or how to potentially address that properly with prewin.h/postwin.h... Change-Id: I8afbc0c485505ee8ab2cb956c58835bb6a73cab8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174390 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-10-02Get SolarMutex before calling ImplClearAllFontDataCaolán McNamara1-0/+1
to avoid: vcl/source/app/dbggui.cxx:35: void ImplDbgTestSolarMutex(): Assertion `ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && "SolarMutex not owned!"' failed. Change-Id: I6d56bb05e8a89190838c5437043bc61034607d8e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174328 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-10-02desktop lok: fix crash in getStyles()Miklos Vajna1-0/+4
Crashreport backtrace: > program/libmergedlo.so > getStyles > desktop/source/lib/init.cxx:6411 > program/libmergedlo.so > doc_getCommandValues > desktop/source/lib/init.cxx:6666 Which is probably a call on an already disposed document. Fix it similar to how getFonts() does it. Change-Id: I1744bd04b7ebdea1b69ca121b8cfa47314d67528 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174372 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2024-10-01simplifyNoel Grandin1-2/+1
Change-Id: I8ff1c3c333b2a44871150da3929501dec00613e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174313 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-30Revert "Fall back to old bootstrap.ini [Win32] section, for backwards ↵Stephan Bergmann1-24/+0
compatibility" This reverts commit ebd3f0971b843527ed493a35b2303c8c15b94109. Conflicts: desktop/win32/source/loader.cxx vcl/win/window/salframe.cxx Reason for revert: This fallback functionality was documented as deprecated at <https://wiki.documentfoundation.org/index.php?title=ReleaseNotes/24.8&oldid=738731> "fundamental.override.ini", to "be removed in a later version", which is happening now for LO 25.2. Change-Id: I40a1800f6a05fc7fd7188917083b269ce6a9f1d2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163394 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-09-25sw: add new command to make a response comment rootJaume Pujantell1-0/+1
Adds the option to convert a reply comment into a new top comment while preserving the parent-child realtions of the other comments in the thread. Change-Id: I3cd5e5466fadc2226651d7c244b5139ec2d1f949 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173051 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173870 Reviewed-by: Jaume Pujantell <jaume.pujantell@collabora.com> Tested-by: Jenkins
2024-09-24cool#9992 lok doc sign: store signing cert in the viewMiklos Vajna1-2/+2
In case signing certificate would be stored in the model (like it happens on the desktop), then the certificate viewer would show all signing certs of the currently editing users, which is far from expected. At the same time, there is just one NSS database per process, so it's hard to not have them in the same database. Fix the problem by storing a reference to the signing key in the view shell, then we can show only that in xmlsecurity/ in LOK mode, and thing else. This is just the sfx2/ side of things, the xmlsecurity/ part still needs implementing. Change-Id: Id7a56f28598ec60217c6bac095c2ff350f39bc3b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173837 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-09-23cool#9992 lok doc sign: handle .uno:SignatureCert/Key/Ca view optionsMiklos Vajna1-3/+32
The desktop way to sign documents is to manually import a .p12 file into your Firefox user profile, and then the signing key is available in all views. The LOK case wants per-view signing certificates, set in a way similar to the name of the user. Start implementing this by: 1) Extending initializeForRendering() to have JSON entries for the signing cert/key/ca chain. 2) Importing the CA chain as trusted certificates, using a new SfxLokHelper::extractCertificates() + test for this. 3) Marking a certificate as trusted is tricky, extract SfxLokHelper::addCertificate() from the existing doc_addCertificate() to do this. 4) Parsing the signing certificate, but just warn if that fails, still need to connect that to the SfxViewShell later. Change-Id: I00e40b3cdd68dbe8994f28861dc7b0f578189643 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173806 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2024-09-20lok: sd: slideshow render: some bug fixesMarco Cecchetti1-2/+2
The suggested canvas size need to be passed to createSlideRenderer. masterPageObjectsVisible -> masterPageObjectsVisibility as on client. Last json message should be reset on each call to renderNextLayer. In order to avoid to send empty layer check if the json message has been set. After rendering the background layer we need to return or the layer is never received. Change-Id: I9a83895d4f3895f3363c1b6a86fac9bd22c9fe87 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173728 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2024-09-20cool#9992 lok doc sign: extract duplicated code to SfxLokHelperMiklos Vajna1-122/+3
I want to improve extractCertificate() so it can work on a certificate chain, but that's easier when this code is not directly in desktop/, but at some lower level. This allows covering the code with tests from CppunitTest_sfx2_view in a follow-up change. If this code will be needed by some non-LOK area as well, then it can be moved down further, but let's wait for a second area first. Change-Id: I6291da0c3e56aed7dca1a8dc1446209044cace92 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173691 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-09-17This should iterate over the thesaurus languages, not the spelling onesCaolán McNamara1-1/+1
Change-Id: I94410274f7afbc0a6bc33fe43beb9810a905dfe4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173467 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173556 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-09-17these can be constCaolán McNamara1-2/+2
Change-Id: Id560175cc69162b362e8f96b2dc0255118387f8f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173539 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-17Output what languages are handled by LanguageToolCaolán McNamara1-10/+23
to explain the absence of languages that are listed by 'Preloading' because the languages handled by a remote LanguageTool are removed from the languages handled with local data. Change-Id: I203657f68a7b9399e39ebf9ab9447c7ae56efe68 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173448 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> (cherry picked from commit c5fc86e770901eb90356cb31d4ac71ac7dad9ce6) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173538 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-17move setLanguageToolConfig out of extern "C" zoneCaolán McNamara1-81/+79
no logic change here Change-Id: I29153a11e1b841fa078d29a6431cd5af1179672e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173450 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> (cherry picked from commit 26e433e0e3c6dfbf2569c3b6f0a14249dc4d0c1f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173537 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-06drop unused eventtesting cmd line optionCaolán McNamara1-1/+0
Change-Id: I90edb80f3b414cbe0a81ecccbf1080106708a131 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172933 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-03Emscripten: workerID is only defined under -sASSERTIONSStephan Bergmann1-12/+5
...and explicitly passing in pthread_self() on the calling side is better than trying to identify the calling thread on the callee side, anyway Change-Id: Ib26a7cbdede246280b6985b6eb1582baf172bf59 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172786 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-09-02cid#1608081 silence Overflowed array index writeCaolán McNamara1-4/+4
Change-Id: I3d44664c4a54797911a1be6bb0b0feb5ccd15b71 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172773 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-08-28Emscripten: Support --disable-guiStephan Bergmann1-1/+2
Change-Id: Iab28ee0bb533b0cdabb374c982fbb898bf04aac5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172537 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-28lok: elide various unhelpful events during background save.Michael Meeks1-0/+23
In particular TEXT_SELECTION and TABLE_SELECTED seem to be favorites, but nothing good would come of getting these others either. Change-Id: I1f014824452bffaeddb1dfaf6565542c3c7c9e91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166158 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 95f1f2143ae53469417fcebc9b2020c34b53ff30) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172522 Tested-by: Jenkins
2024-08-28lok: add method to allow explicit cleanup of temporary files.oMichael Meeks1-0/+13
Special case fast destruction of background saving children. Change-Id: I8fba4d0818d23a8b0e1bb4d074e1afae7dacde33 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165448 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 7d784910689172014b8cf6144e654402696d8801) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172520
2024-08-27lok: ensure our 'main thread' concept is updated post-fork.Michael Meeks1-0/+2
Otherwise we fall foul of assertions and behavioral differences around the main thread as the new forked main-thread has a different thread-id. Change-Id: I0bd97e5173767ac6c697326aaf0d0822037e480f Signed-off-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166319 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit ddeec9754cb2871a709d22efb460e141ab4c6f33) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172453 Tested-by: Jenkins
2024-08-23Emscripten: Only resolve Module.uno_init after Module.uno_mainPort is setStephan Bergmann1-1/+1
Otherwise, client code (which is run as soon as Module.uno_init is resolved) could try to use Module.uno_mainPort before it has been set. Change-Id: Ibac992d965f43e9f6766d06e3bd80f1964258b19 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172326 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-23Emscripten: Module.uno_scripts are relative to document.baseURIStephan Bergmann1-5/+7
...so explicitly make them absolute, in case the WorkerGlboalScope used in runUnoScriptUrl would make them absolute relative to a different base URL. (See <https://github.com/mdn/content/issues/35568> "WorkerGlobalScope.importScripts URLs relative to what base URL?" for my confusion of what base URL should actually be used there. But at least with an emsdk that uses recent Emscripten trunk towards 3.1.65, and where meanwhile worker threads no longer load an soffice.worker.js but instead use some blob: URL, a > Module.uno_scripts = ['example.js']; now failed with > Error: Failed to execute 'importScripts' on 'WorkerGlobalScope': The URL 'example.js' is invalid. on Chrome 127.) Change-Id: I9f9b43d501a7b5d933c8506debdebe67ff1b5795 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172325 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-08-23make joinThreadsIfIdle return false if it cannot joinCaolán McNamara1-1/+2
Change-Id: I52e22bf5e68809d6787d2d135b6a35384cf79391 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168785 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> (cherry picked from commit c7ff8768db58aaee5ce0acbabe97faeaf450f017) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172329 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-08-23allow an exemption to be made for a specific hostCaolán McNamara1-0/+3
Change-Id: Ie423df7839e793a9c07561efb56d5649876947ee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168826 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172328 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-23LOKit: Enable the Execute Interaction command for ImpressHubert Figuière1-0/+1
Signed-off-by: Hubert Figuière <hub@collabora.com> Change-Id: I5b3b3cc8e1e8c0ad3ec933ea9047da3367583767 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172088 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> (cherry picked from commit ad124b2de2bcbb6a093b551633fc7e50f4cecfaf) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172190 Tested-by: Jenkins
2024-08-23Emscritpen: Use WorkerGlobalScope.importScriptsStephan Bergmann1-7/+1
Change-Id: I19be38564aca4fdd3d827657055b41a867582ba0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172315 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-08-22Emscripten: Experimental -sPROXY_POSIX_SOCKETS supportStephan Bergmann1-0/+39
...see <https://emscripten.org/docs/porting/networking.html#full-posix-sockets-over-websocket-proxy-server>. This requires <https://github.com/stbergmann/emscripten/commit/4aff1f28b88480791236adcc6d5cb2d919ad4bf3> "-sPROXY_POSIX_SOCKETS: Add websocket_proxy_poll". When configured with --disable-socketpair (which appears to have no negative consequences), external/curl appears to only call poll(2) with socket-related file descriptors, so we can use websocket_proxy_poll instead. The URL on which the websocket_to_posix_proxy process listens must be specified as Module.uno_websocket_to_posix_socket_url. Change-Id: I4ad23098b5bbc0646fa50859c0aeb9870d1cc92a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172243 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-08-20More useful to have an EMSCRIPTEN_EXTRA_SOFFICE_PRE_JSStephan Bergmann1-2/+2
...than an EMSCRIPTEN_EXTRA_SOFFICE_POST_JS. That way, we can e.g. set up Module.arguments there. Change-Id: I4990ab6daac2f74326ab2ee9508828f1b79bceb7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172154 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-18LOKit: Enable the "Interaction..." command for Impress.Hubert Figuière1-0/+1
Also enable the dialog for JSDialogs Fix the layout of the dialog. Signed-off-by: Hubert Figuière <hub@collabora.com> Change-Id: I4581da34921eb355ce8f59d7bfdf2f7d5d7493f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171961 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-15desktop: Fix '--enable-gui --without-x' buildMichael Weghorn1-2/+2
The code in this block is X11-specific, so make it conditional on `USING_X11`, not `HAVE_FEATURE_UI`. This fixes an `--enable-gui --without-x` build that previously failed like this ld.lld: error: undefined symbol: XineramaQueryScreens >>> referenced by splashx.c:441 (desktop/unx/source/splashx.c:441) >>> .../libreoffice/workdir/CObject/desktop/unx/source/splashx.o:(splash_init_display) [AIN] draw_brand clang: error: linker command failed with exit code 1 (use -v to see invocation) make[1]: *** [.../libreoffice/desktop/Executable_oosplash.mk:10: .../libreoffice/instdir/program/oosplash] Error 1 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:296: build] Error 2 Change-Id: If02395d2461de4b6aac340898ce99583653d45c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171894 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-08-15Emscripten: Establish a channel between browser and LO main threadsStephan Bergmann1-1/+31
...to be used by external code, to mitigate the issue mentioned in the commit message of cccc983eb3f0532dbf7e3edf4477ce63ec3d2795 "Emscripten: Run external code on LO's main thread": "Alternatively, running external code on the browser's main thread rather than on LO's main thread could be more ideal in the sense that the external code would then have access to the browser's document object." On the browser main thread, external JS code can now await a Module.uno_main Promise that provides one port of a MessageChannel. And on the LO main thread, external JS code has access to the other port of that MessageChannel as Module.uno_mainPort. (And the external code is completely free in what onmessage handlers to set up and what form of postMessage calls to use on those two MessagePorts.) Change-Id: Iab6bc7676c744eacb70ddd9f3f80f64e9efd1cf1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171907 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-08-15vcl: add "fillWithData" function to BitmapTools - used in lokTomaž Vajngerl1-25/+2
Change-Id: Ia143a39d2285bbdebf7fcfe709b0c6418d35585c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171589 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Jenkins
2024-08-14Emscripten: Run external code on LO's main threadStephan Bergmann1-2/+49
...and not the browser's main thread. Those are different threads now since 6e6451ce96f47e0ef5e8ecf1750f394ff3fb48e4 "Emscripten: Move the Qt event loop off the JS main thread". Running `Module.uno_init.then` on the browser's main thread would never trigger, as that promise is only resolved on LO's main thread. When external code was included in soffice.js via EMSCRIPTEN_EXTRA_SOFFICE_POST_JS, that didn't make a difference: Emscripten effectively replicates that code to all the worker threads, so whatever worker thread resolved the Module.uno_init promise (i.e., the LO main thread) had the external code available and ran it. But when external code was included directly in some HTML file (which "manually" provides a canvas and loads soffice.js, not relying on the qt_soffice.html convenience functionality), it was available in the browser's main thread but not in LO's main thread. For that use case, introduce a new Module.uno_scripts array that can be set up in the HTML file to contain an array of URLs (represented as strings) of scripts to load into LO's main thread. (Alternatively, running external code on the browser's main thread rather than on LO's main thread could be more ideal in the sense that the external code would then have access to the browser's document object. But, for one, it would be less ideal in the sense that we would then potentially again execute LO code (which we call into from the external code via UNO) on the browser's main thread, which would bring back the issues that 6e6451ce96f47e0ef5e8ecf1750f394ff3fb48e4 "Emscripten: Move the Qt event loop off the JS main thread" solved. And, for another, when I experimentally tried it out, it caused massive Qt threading issues, so I quickly gave up again.) Change-Id: If01a7859751706f168e93ccac75758ae5ce17cd2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171870 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-14Related: cool#9735 vcl lok: add an AnyInput() callbackMiklos Vajna2-1/+15
Open the 300 pages bugdoc, paste a oneliner plain text content in a paragraph which is part of a numbered list, observe a 274 ms hang till layout is done for all pages, then we get an updated tile. This could be better, there is no such hang in the desktop case. What happens is that 1) vcl doesn't try to invoke the poll callback of the LOK client when there was a processed timer and 2) Writer layout doesn't try to split its work into pieces because the LOK client has no way to inform vcl that it has pending input events. Fix the first problem in this commit: add a new API that allows a LOK client to inform vcl that it has pending input events and use that SvpSalInstance::ImplYield(): if a LOK client has pending input events, then invoke the poll callback after each processed timer. For example, this allows the LOK client to process emitted callbacks between two idle layout jobs, word counting, etc. The second problem around Writer to use comphelper::LibreOfficeKit::anyInput() is not yet fixed. Change-Id: I2e39253bfc4d1b5546bc60eef9ff05ccdc0868b9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171846 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2024-08-14LOKit: enable the Distribute commandHubert Figuière1-0/+8
Signed-off-by: Hubert Figuière <hub@collabora.com> Change-Id: Id26ac3cd02198bbd3d4dcf0539cbc372a5e08c72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171830 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit d7349b9ac4d56adfaf9bbd7c8dac84152bd230fe) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171772 Tested-by: Jenkins
2024-08-12Emscripten: Move the Qt event loop off the JS main threadStephan Bergmann1-0/+1
...so that spawning and joining new threads works now and we no longer need a hardcoded -sPTHREAD_POOL_SIZE of pre-spawned threads (see b84ef4d67eaf9f9fd7fd700ca05339cb0cdff742 "Adapt comphelper::ThreadPool to Emscripten's threading needs"; lets keep MAX_CONCURRENCY capped at 4, at least for now, though). This requires <https://github.com/allotropia/qtbase/commit/167b08844df06e3cea85c98161b26e97442ab242> "Minimal support for Emscripten -sPROXY_TO_PTHREAD=1" and <https://github.com/allotropia/qtbase/commit/c722a25630a5390f18a4d974aa942f6376fcb8e1> "Implement QWasmCursor::changeCursor for Emscripten PROXY_TO_PTHREAD case" (see TODOs there). Change-Id: I8cea827bd7786e3c9fd9401b4b2bef9d3ec00d5a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171758 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-08-07I finally understand why we need that hackStephan Bergmann1-2/+13
...that 77129fbb74bcefde4551d494f029169e7c6026e3 "Emscripten: Add hack to prepare for --enable-wasm-exceptions" was puzzled about Change-Id: Iba54a77e3c2a71fe45b97795ca2da0606c3adf41 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171594 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-08-04cid#1556583 COPY_INSTEAD_OF_MOVECaolán McNamara1-1/+1
and cid#1556585 COPY_INSTEAD_OF_MOVE cid#1556588 COPY_INSTEAD_OF_MOVE cid#1556593 COPY_INSTEAD_OF_MOVE cid#1556597 COPY_INSTEAD_OF_MOVE cid#1556605 COPY_INSTEAD_OF_MOVE cid#1556617 COPY_INSTEAD_OF_MOVE cid#1556635 COPY_INSTEAD_OF_MOVE cid#1556790 COPY_INSTEAD_OF_MOVE cid#1556792 COPY_INSTEAD_OF_MOVE cid#1556796 COPY_INSTEAD_OF_MOVE cid#1556799 COPY_INSTEAD_OF_MOVE cid#1556815 COPY_INSTEAD_OF_MOVE cid#1556836 COPY_INSTEAD_OF_MOVE cid#1556840 COPY_INSTEAD_OF_MOVE cid#1556842 COPY_INSTEAD_OF_MOVE cid#1556859 COPY_INSTEAD_OF_MOVE cid#1556860 COPY_INSTEAD_OF_MOVE cid#1556866 COPY_INSTEAD_OF_MOVE cid#1556869 COPY_INSTEAD_OF_MOVE cid#1556870 COPY_INSTEAD_OF_MOVE Change-Id: I3df8698a4aecbb03999c084517e37e12ff46ee97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171435 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-02cid#1556086 COPY_INSTEAD_OF_MOVECaolán McNamara1-1/+1
and cid#1556087 COPY_INSTEAD_OF_MOVE cid#1556093 COPY_INSTEAD_OF_MOVE cid#1556094 COPY_INSTEAD_OF_MOVE cid#1556105 COPY_INSTEAD_OF_MOVE cid#1556121 COPY_INSTEAD_OF_MOVE cid#1556184 COPY_INSTEAD_OF_MOVE cid#1556399 COPY_INSTEAD_OF_MOVE cid#1556405 COPY_INSTEAD_OF_MOVE cid#1556419 COPY_INSTEAD_OF_MOVE cid#1556421 COPY_INSTEAD_OF_MOVE cid#1556444 COPY_INSTEAD_OF_MOVE cid#1556448 COPY_INSTEAD_OF_MOVE cid#1556457 COPY_INSTEAD_OF_MOVE cid#1556468 COPY_INSTEAD_OF_MOVE Change-Id: I1f352682daebd4e3ed2e7fe669aa0943dcc33edd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171372 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-08-01Use gb_SUPPRESS_TESTS to control inclusion of embindtest.jsStephan Bergmann1-1/+1
Change-Id: Ic020678e531322b9c3af194c3529464775fd1a61 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171318 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-07-30LOK: Mention name of unknown command in exceptionAron Budea1-1/+1
Change-Id: I665c9aebaa4e215b8bc4622f3e245e5f2c47deab Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171133 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 8fe4ca79d4b3cc2a62c59b7dfd2849b7a79d9437) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171196 Tested-by: Jenkins Reviewed-by: Aron Budea <aron.budea@collabora.com>
2024-07-28cool#9082 - lok: cleanup WakeUpThread before forking, then re-start.Michael Meeks1-3/+12
It seems likely that this lingering briefly after various un-identified and tough to reproduce, longer running operations in calc - which is a big ScProgress user - caused problems with background save. Change-Id: I1d0ec56c759dff30c48c8562b6400b57be4a25b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168033 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168052 Tested-by: Jenkins