summaryrefslogtreecommitdiff
path: root/vcl
AgeCommit message (Collapse)Author
2023-08-28assert seen on closing navigator while draggingCaolán McNamara
seen when dragging from floating navigator and pressing alt+f4 while continuing to drag Change-Id: Idb563c4ec4d8ab74b794e06194ef748e6346eb1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156181 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-28Related: tdf#144906 unset g_DragSource if drag end callback never calledCaolán McNamara
a scenario I can reproduce with alt+f4 while dragging from the navigator Change-Id: I7123602e036fbe15e0ae8f9a7e1d5fc7483dc6c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156182 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-28jsdialog: dump vertical tab controlSzymon Kłos
Change-Id: I673199dfd7e95bfdb748791db094e7a1c3e74dba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155759 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Attila Szűcs <attila.szucs@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156158 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2023-08-28new loplugin:optionalboolNoel Grandin
which warns against using the 'operator bool' conversion of std::optional<bool> which can lead to interesting bugs The bugs that this plugin have been submitted independantly, so this change is just using has_value() in relevant places. Change-Id: I259b837feeecddcb8cd1d7e5db1e85bf505907cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155978 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-27tdf#150610 fix broken rendering of text meta actionsPatrick Luby
Even when drawing to a VirtualDevice where antialiasing is disabled, text will still be drawn with some antialiased pixels on HiDPI displays. So, expand the size of the VirtualDevice slightly to capture any of the pixles drawn past the edges of the destination bounds. Change-Id: Ibcba8234708d8784c12f984289ec0a8fcad6694e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156098 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-27Add APNG export option in File -> ExportParis Oplopoios
A separate filter was made to allow for the option of exporting a still image instead if the user wants to Change-Id: I8140c834990e592ee579425d6cd18ae764128576 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155878 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-08-26gtk3 a11y: Force running a11y tests with X11 GDK backendMichael Weghorn
On Debian testing, tunning the gtk3 a11y tests with make CppunitTest_vcl_gtk3_a11y in a Wayland session resulted in a visible Writer window popping up (while that should not be the case and isn't when run in an X11 session instead, as the application is meant to run in a virtual X server environment via xvfb-run) and a test failed like this: .../vcl/qa/cppunit/a11y/atspi2/atspi2.cxx:432:Test1::TestBody equality assertion failed - Expected: ATSPI_ROLE_PANEL - Actual : ATSPI_ROLE_FILLER warn:sw.core:15950:15950:sw/source/core/attr/calbck.cxx:196: a 16SwTextFormatColl client added as listener to a 16SwTextFormatColl during client iteration. warn:sw.core:15950:15950:sw/source/core/attr/calbck.cxx:196: a 16SwLineNumberInfo client added as listener to a 12SwCharFormat during client iteration. Test1::TestBody finished in: 56011ms atspi2.cxx:432:Assertion Test name: Test1::TestBody equality assertion failed - Expected: ATSPI_ROLE_PANEL - Actual : ATSPI_ROLE_FILLER Failures !!! Run: 1 Failure total: 1 Failures: 1 Errors: 0 Force use of the X11 GDK backend by setting env var `GDK_BACKEND=x11`, which makes that scenario work as expected. Change-Id: I7de03593998ffa3bc18d487cb92e00ae75427598 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156086 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-26tsan: use std::atomic<bool> for mbAppQuitNoel Grandin
which is (IMO) the same as using volatile, but seems to make tsan happier Change-Id: I52024716ea75d7113357a169e225eee85cf22229 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156108 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-26vcl does not actually use mddsGabor Kelemen
This was added in a copy-paste accident Change-Id: Ifdc9dde30a2d933d4f709f1344d402f9585bbf9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155931 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-08-26Drop glm dependency from vclGabor Kelemen
Serious use of glm was removed from vcl in commit db89f53c31af997b9bf422b0e784afba8d62a42e remove OpenGL VCL backend code This is a bit of leftover from that Change-Id: I019279cd0cc804d3fa4535a651704bccca38b9db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155909 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-08-25This copy ctor should probably take its arg by const refStephan Bergmann
It was introduced in 3426dcfec2b4d5c755024c355f323ecc9f656e4a "vcl gtk3: Introduce AT-SPI2 tests for the GTK3 accessibility layer", and caused at least a build with recent GCC 14 trunk to failed with > In file included from vcl/qa/cppunit/a11y/atspi2/atspiwrapper.cxx:10: > vcl/qa/cppunit/a11y/atspi2/atspiwrapper.hxx: In member function ‘Atspi::Accessible::iterator Atspi::Accessible::iterator::operator++(int)’: > vcl/qa/cppunit/a11y/atspi2/atspiwrapper.hxx:524:20: error: cannot bind non-const lvalue reference of type ‘Atspi::Accessible::iterator&’ to an rvalue of type ‘Atspi::Accessible::iterator’ > 524 | return other; > | ^~~~~ > vcl/qa/cppunit/a11y/atspi2/atspiwrapper.hxx:508:28: note: initializing argument 1 of ‘Atspi::Accessible::iterator::iterator(Atspi::Accessible::iterator&)’ > 508 | iterator(iterator& other) > | ~~~~~~~~~~^~~~~ Change-Id: Ia9a1e3f58d67db1fc9851fe8a844f2076ff740c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156075 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-08-24tdf#140881: Ignore WOFF/WOFF2 fonts with FontConfigKhaled Hosny
FC_FONT_WRAPPER requires unreleased FontConfig, but lets have this in so it works when FontConfig have it. Change-Id: I8f48ac1f68a3af6e1853e9eb1925d382b57136c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156049 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-08-24tdf#156866 use mSize instead of mPixelSize for inverted surfacePatrick Luby
Commit 5baac4e53128d3c0fc73b9918dc9a9c2777ace08 switched to setting the surface size to mPixelsSize in an attempt to avoid downscaling mImage but since it causes tdf#156866, revert back to setting the surface size to mSize. Also, in release builds, tdf#156629 and tdf#156630 reappear in many cases because a BitmapInfoAccess is in a debug block. So, instead of relying on other code to a create a BitmapInfoAccess instance, create one here to force the alpha mask to handle any pending scaling and make the alpha mask immutable. Change-Id: If9f0dfb7b9a82cf7a3e402965ceffd42eace4c82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156022 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-24vcl: Allow pushing/popping OutputDevice’s RTLEnabled stateKhaled Hosny
Change-Id: Icafdc307c5c9df768f00c3ac0d128936607bf3e6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155794 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-08-24vcl: Fix gcc 13.2 build (vcl::PDFWriterImpl::emitType3Font)Michael Weghorn
Fix this build failure seen with a gcc 13.2.0 `--enable-werror` build on Debian testing: .../vcl/source/gdi/pdfwriter_impl.cxx: In member function ‘bool vcl::PDFWriterImpl::emitType3Font(const vcl::font::PhysicalFontFace*, const vcl::pdf::FontSubset&, std::__debug::map<int, int>&)’: .../vcl/source/gdi/pdfwriter_impl.cxx:2719:47: error: moving a temporary object prevents copy elision [-Werror=pessimizing-move] 2719 | BitmapEx aBitmapEx = std::move(aReader.read()); | ~~~~~~~~~^~~~~~~~~~~~~~~~ .../vcl/source/gdi/pdfwriter_impl.cxx:2719:47: note: remove ‘std::move’ call cc1plus: all warnings being treated as errors make[1]: *** [.../solenv/gbuild/LinkTarget.mk:337: .../workdir/CxxObject/vcl/source/gdi/pdfwriter_impl.o] Error 1 Change-Id: I9f0ba1afd0dee2a8aaa4708672c755ab3a97e5a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156021 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-23tdf#156854 invert alpha mask for macOS native menu item imagesPatrick Luby
At the time of this change, only the AquaSalMenu class calls this function so it should be safe to invert the alpha mask here. Change-Id: Id67ad0f453bbf88b43d37087eef36a27ced3ad37 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155977 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-23tdf#156853: Fix PDF export of bitmap color fontsPatrick Luby
Emoji bitmaps need to have their alpha mask inverted like is done with transparent images and shapes. So, invert the alpha mask of Type 3 font bitmaps. Also, add links to test documents for future development and testing. Regression from: commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) Change-Id: I18223a231ab751945883ede029d660949a406f7d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155960 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org> Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-23vcl: fix gtk4 buildMiklos Vajna
See <https://gerrit.libreoffice.org/c/core/+/155750/4#message-036c9ad1bebd18ae6458cb23d582e0fbd0272b61>. Change-Id: Ibee5c4973a1ea80515742852385e97718b10a260 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155965 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-08-23tdf#146619 Remove unused includes from vcl/incGabor Kelemen
Change-Id: I8fbe02547d5045cfdb5021720b10ddd10106209a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155750 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-08-22tdf#156856: close write access before using AlphaMaskMike Kaganski
Change-Id: I432417f03d378f81c890ce6c313a2f140b564a60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155955 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-08-22Revert "tdf#156853: Fix PDF export of bitmap color fonts"Patrick Luby
This reverts commit 3e20c3e73cbd10e8323f0997e3a6536abd11e2bd. Reason for revert: This breaks every single fix that I have made for exporting alpha masks to PDF. A different solution is needed as the invert needs to be where it was to snapshot the AlphaMask. Change-Id: I5f743b67067dff43a2324d6ca9bc1f444e245a12 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155917 Reviewed-by: Patrick Luby <plubius@neooffice.org> Tested-by: Patrick Luby <plubius@neooffice.org>
2023-08-22tdf#143148 Use pragma once in vclDeepika Goyal
Change-Id: I99ef7d219a427989397d7d7dc75e1e0ebc8e22d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155812 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2023-08-22tdf#156825 Half of the splash screen is visible on both monitors under LinuxNoel Grandin
Blind fix, since I don't have two screens. regression from commit 4c00a5bce384c5fa3b46cf5bb29c7e9b1e506ea0 Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Thu Jul 20 11:27:17 2023 +0200 Assume that, if we have X11, it supports Xinerama It looks like I missed the removal of some USE_XINERAMA pieces Change-Id: I402db170916efe935d8ff9f96cc9b327070809b7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155939 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-22tdf#141101 tdf#101886 a11y: Restore previous focus on col/line popup closeMichael Weghorn
Don't request focus for the color window before the menu button popup opens. Doing so would prevent properly restoring focus to the menu button itself after the popup closes again. Without this change in place, the call to `MenuButton::Activate` in `MenuButton::ExecuteMenu (s. frame 14/15 in below backtrace) would already set focus to the "Automatic" button in the color window: 1 PushButton::GetFocus button.cxx 1490 0x7f4acfdc83b6 2 vcl::Window::CompatGetFocus window.cxx 3888 0x7f4acfd9d26d 3 vcl::Window::ImplGrabFocus mouse.cxx 384 0x7f4acfcd5215 4 vcl::Window::GrabFocus window.cxx 2979 0x7f4acfd988e9 5 SalInstanceWidget::grab_focus salvtables.cxx 390 0x7f4ad046f505 6 ColorWindow::GrabFocus tbcontrl.cxx 2127 0x7f4ad3f21af1 7 ColorListBox::ToggleHdl tbcontrl.cxx 4291 0x7f4ad3f313d6 8 ColorListBox::LinkStubToggleHdl tbcontrl.cxx 4285 0x7f4ad3f31369 9 Link<weld::Toggleable&, void>::Call link.hxx 111 0x7f4ad04aec71 10 weld::Toggleable::signal_toggled weld.hxx 1539 0x7f4ad04a77a3 11 SalInstanceMenuButton::ActivateHdl salvtables.cxx 3075 0x7f4ad0483086 12 SalInstanceMenuButton::LinkStubActivateHdl salvtables.cxx 3071 0x7f4ad0483043 13 Link<MenuButton *, void>::Call link.hxx 111 0x7f4acfe9e9c1 14 MenuButton::Activate menubtn.cxx 237 0x7f4acfe9e136 15 MenuButton::ExecuteMenu menubtn.cxx 61 0x7f4acfe9cca1 16 MenuButton::KeyInput menubtn.cxx 226 0x7f4acfe9e092 17 ImplHandleKey winproc.cxx 1211 0x7f4acfdb0962 18 ImplWindowFrameProc winproc.cxx 2724 0x7f4acfdb6fcf 19 SalFrame::CallCallback salframe.hxx 310 0x7f4ac5aa3dfa 20 QtFrame::CallCallback QtFrame.hxx 229 0x7f4ac5aa5336 ... <More> As a consequence, this "Automatic" button inside of the color window would be the UI element remembered as the the one to which focus focus should be restored when closing the popup, see the mxPrevFocusWin = Window::SaveFocus(); in `FloatingWindow::StartPopupMode`, which gets called like this: 1 FloatingWindow::StartPopupMode floatwin.cxx 824 0x7f4acfc61a61 2 ImplDockingWindowWrapper::StartPopupMode dockmgr.cxx 846 0x7f4acfc43bd3 3 DockingManager::StartPopupMode dockmgr.cxx 341 0x7f4acfc412c3 4 MenuButton::ExecuteMenu menubtn.cxx 94 0x7f4acfe9cfa9 5 MenuButton::KeyInput menubtn.cxx 226 0x7f4acfe9e092 6 ImplHandleKey winproc.cxx 1211 0x7f4acfdb0962 7 ImplWindowFrameProc winproc.cxx 2724 0x7f4acfdb6fcf 8 SalFrame::CallCallback salframe.hxx 310 0x7f4ac5aa3dfa 9 QtFrame::CallCallback QtFrame.hxx 229 0x7f4ac5aa5336 10 QtWidget::handleKeyEvent QtWidget.cxx 671 0x7f4ac5af9f38 11 QtWidget::handleEvent QtWidget.cxx 707 0x7f4ac5afa094 12 QtWidget::event QtWidget.cxx 730 0x7f4ac5afa1f7 13 QApplicationPrivate::notify_helper qapplication.cpp 3287 0x7f4ac37a2414 14 QApplication::notify qapplication.cpp 2715 0x7f4ac379fd5b 15 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1123 0x7f4ac51a3c34 16 QCoreApplication::forwardEvent qcoreapplication.cpp 1138 0x7f4ac51a3cac 17 QWidgetWindow::handleKeyEvent qwidgetwindow.cpp 669 0x7f4ac38567b1 18 QWidgetWindow::event qwidgetwindow.cpp 234 0x7f4ac3854924 19 QApplicationPrivate::notify_helper qapplication.cpp 3287 0x7f4ac37a2414 20 QApplication::notify qapplication.cpp 3238 0x7f4ac37a2224 ... <More> and then properly restoring focus fails in `FloatingWindow::EndPopupMode`. Move the call to `Activate` to after showing the popup instead. This makes sure that the actual widget that had focus *before* the popup opened is remembered and focus is correctly restored on close. The handler for the toggled signal had been added in commit e55a1dc163165cb79fc9113101d16ee8d3db7298 Date: Wed Nov 27 14:58:00 2019 +0000 don't put focus into unmapped windows defer until the color selectors are activated to grab focus, otherwise esc doesn't work to close a dialog under gtk3 until focus is put into some visible widget which apparently already moved the focus request to later than it was before. With this change in place, the NVDA screen reader announces the menu button again once the color popup closes (tdf#141101) and it also makes opening the popup menu again right away work by pressing Alt+Down button again on Windows or with the gen or qt6 VCL plugins on Linux, which didn't work beforehand, but required either using the mouse or tabbing to another UI element and back before that keyboard shortcut would work again. The same is true for the border line style popup (tdf#101886). Setting the focus only when the popup shows also makes the focus correctly be on the previously selected color for the non-gtk3 case when opening the popup again. (Previously, the "Automatic" button would always have focus.) Ensure that the required preparations for showing the popup in the `ManagedMenuButton` subclass are still done before executing the menu by doing what's needed in the newly named `ManagedMenuButton::PrepareExecute` method rather than in `Activate` and call that one before showing the menu. Change-Id: I82fbfea2ae8b9064979796da279750350deb742d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155891 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-22tdf#155610: Workaround Acrobat bug with Type 3 fonts and unusual UPEMKhaled Hosny
Adobe Acrobat seems to have a bug with Type 3 fonts with unusual UPEM, the common 1000 and 2048 UPEM work fine, but Sitka has 2250 UPEM and Acrobat handles the advance widths in this case incorrectly and everything gets cramped up with gaps when we re-start glyph positioning. Workaround this by always using 0.001 scale in FontMatrix (equivalent to 1000 UPEM) and scale everything if the font’s UPEM is different. Change-Id: I80d25a16456f04bb00304b22b967688fa8260a83 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155935 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-08-22vcl: Fix dumping meta file layout flags to XMLKhaled Hosny
These are bit flags, so we were always writing #0000, so now it does bitwise check for the flags and while at it write the names of the flags not the numeric values. Change-Id: I13cae38c0e549b2da1f834a264e3a3255bfa5c5a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155793 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-08-22Related: ofz#57493 TimeoutCaolán McNamara
restore this now that ofz has closed ofz#57493 and has reset Change-Id: Ibf5545d1f499e1c986a8242eb501ac870a7a6d72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155879 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-22tdf#156853: Fix PDF export of bitmap color fontsKhaled Hosny
Move the alpha inversion down to createBitmapEmit() so that it gets applied to any bitmap embedded in the PDF, especially since embedded color bitmap glyphs don't go through the higher level code path. Regression from: commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) Change-Id: I68601a7a0d9ac01f5e8054f074f8e18fcbdea1be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155930 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-08-19Eliminate special alpha mask inversions when Skia is disabledPatrick Luby
Commit ad1f69d28d31725a22e7e1cbb4d950aa9ad3bea7 fixed an alpha blending bug in AlphaMask::BlendWith(const AlphaMask&) so almost all of the special alpha mask inversions when drawing transparent meta actions are no longer needed and so, when Skia is disabled, the same inversions as Skia are now used. The one special alpha mask inversion that is still needed when Skia is disabled is when exporting to PDF documents like the following with transparent gradients: https://bugs.documentfoundation.org/attachment.cgi?id=188084 Change-Id: I3212a38916be3d238bb9c868b161031616baf0a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155859 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-19Reimplement fix for tdf#156629 and tdf#156630Patrick Luby
Reimplement fix in commit 926c5246b6694d469a6caed5d7ea4c3a68648468 in an attempt to reduce the fix's performance hit. Instead of invoking EnsureBitmapData() and converting the SkImage to a memory buffer, any pending scaling on alpha masks is handled by creating a new, scaled SkImage. Note that in commit 926c5246b6694d469a6caed5d7ea4c3a68648468, EnsureBitmapData() was invoked which converted the SkImage to a memory buffer. That in turn would make Invert() a noop which fixed the related bug where an image has been opened and, before it has been printed or run in a slideshow, the alpha mask would unexpectedly be inverted. So keep this immutable behavior without calling EnsureBitmapData() by adding a new mutability flag. Change-Id: I99dc272b40c53664ea49333402a6a637b1548a5f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155850 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-18tdf#141101 a11y: Ensure focused event after showing popup contentMichael Weghorn
If the `FloatWinPopupFlags::GrabFocus` flag is set, don't only pass it to `FloatingWindow::StartPopupMode`, but explicitly grab focus again after showing the docking window (client window of the floating window). At least proper handling for accessible focus/focused events depends on the window being visible at the point it receives focus. For winaccessibility, the a11y event listener only gets registered once the window gets shown (`VCLXAccessibleComponent::ProcessWindowChildEvent` forwards a `VclEventId::WindowShow` as `accessibility::AccessibleEventId::CHILD` event, which winaccessibility then processes and registers an event listener for the new child). This makes NVDA on Windows announce focus for the "Automatic" button in the color popup in Writer's character style dialog also when the popup shows for the first time. Change-Id: I2e4028eb4ec68a8b586cbd1a0dc5351d1453937e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155843 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18Fix typosAndrea Gelmini
Change-Id: I29aa97b8072fccee24ed0053c9492d61bef44cb0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155828 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-08-18Fix typoAndrea Gelmini
Change-Id: Ia78a6a37b21cd2e286574adcd5fa64818f7d0d75 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155829 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-08-18ITEM: preparations for more/easier changesArmin Le Grand (allotropia)
This change is not about speed improvements but diverse preparations to make changes/reading/understanding easier. It does not change speed AFAIK. Added a global static debug-only counter to allow getting an overview over number of all allocated SfxPoolItem's and the still alloated ones at office shutdown. The values are used in Application::~Application to make a short info statement. It allows to be able to quickly detect if an error in future changes may lead to memory losses - these would show in dramaitically higher numbers then (hopefully) immediately. Moved SfxVoidItem to own source/header. Added container library interface support to SfxItemSet, adapted already some methods to use it - not all possible, I will commit & get status from gerrit 1st if all still works and then continue. Changed INVALID_POOL_ITEM from -1 to use a global unique incarnation of an isolated derivation from SfxPoolItem. It allows to avoid the (-1) pointer hack. Since still just pointers are compared it's not worse. NOTE: That way, more 'special' SfxPoolItem's may be used for more States - a candidate is e.g. SfxVoidItem(0) which represents ::DISABLED state -- unfortunately not only, it is also used (mainly for UI stuff) with 'real' WhichIDs - hard to sort out, will have to stay that way for now AFAIK. Changed INVALID_POOL_ITEM stuff to use a static extern incarnated item in combination with a inline method to return it, called GetGlobalStaticInvalidItemInstance(). Isolated create/cleanup of a SfxPoolItem entry in SfxItemSet to further modularize/simplify that. It is currently from constructor & destructor but already shows that PoolDefaults are handled differently - probably an error. Still, for now, do no change in behaviour (yet). Got regular 'killed by the Kill-Wrapper' messages from gerrit, seems to have to do with UITest_sw_findReplace. That python/c++ scripting stuff is hard to debug, but finally I identified the problem has to do with the INVALID_POOL_ITEM change. It was in SfxItemSet::InvalidateAllItems() where still a (-1) was used -> chaos in detecting invalid items. Change-Id: I595e1f25ab660c35c4f2d19c233d1dfadfe25214 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155675 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-08-18SAL_DEBUG "is never meant to remain in the code"Caolán McNamara
Change-Id: I8c0e513d36c087e9ea8019325cdb3122bec744be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155743 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-18vcl a11y: Fix nullptr deref in SvHeaderTabListBox::calcHeaderRectMichael Weghorn
While working on tdf#156561 and tdf#141101, I experienced a crash with the below backtrace on Windows at some point. Potentially a regression from: commit 0e8b7dd7a013dffe080148baac926a698f36ad85 Date: Wed Jul 19 15:19:28 2023 +0200 split GetWindowExtentsRelative asunder Use the `GetWindowExtentsAbsolute` variant when screen coordinates are wanted, as is done elsewhere since the above commit. Backtrace: 1 std::unique_ptr<WindowImpl,std::default_delete<WindowImpl>>::operator-> memory 3295 0x7fffa807a02a 2 vcl::Window::GetWindowExtentsRelative window.cxx 2953 0x7fffa82b7132 3 SvHeaderTabListBox::calcHeaderRect svtabbx.cxx 771 0x7fffa850a1a6 4 accessibility::AccessibleBrowseBoxHeaderBar::implGetBoundingBoxOnScreen AccessibleBrowseBoxHeaderBar.cxx 311 0x7fffa41b2728 5 accessibility::AccessibleBrowseBoxBase::getBoundingBoxOnScreen AccessibleBrowseBoxBase.cxx 408 0x7fffa41ada97 6 accessibility::AccessibleBrowseBoxBase::getLocationOnScreen AccessibleBrowseBoxBase.cxx 228 0x7fffa41ae134 7 CMAccessible::accHitTest MAccessible.cxx 988 0x7fffbf8d7fad 8 NdrSendReceive RPCRT4 0x7ff81155b4b3 9 NdrSendReceive RPCRT4 0x7ff81155a282 10 NdrStubCall2 RPCRT4 0x7ff8114fe1ca 11 NdrStubCall3 RPCRT4 0x7ff8114fd494 12 CStdStubBuffer_Invoke combase 0x7ff812295f1c 13 CStdStubBuffer_Invoke RPCRT4 0x7ff81153a74b 14 CoWaitForMultipleHandles combase 0x7ff81226bad3 15 CoWaitForMultipleHandles combase 0x7ff81226b85e 16 HSTRING_UserSize combase 0x7ff81229aaa6 17 RoGetActivatableClassRegistration combase 0x7ff812211283 18 CoWaitForMultipleHandles combase 0x7ff812269d7d 19 SetErrorInfo combase 0x7ff812205036 20 CoMarshalInterface combase 0x7ff8122635fa 21 CallWindowProcW USER32 0x7ff8126be858 22 DispatchMessageW USER32 0x7ff8126be299 23 ImplSalDispatchMessage salinst.cxx 474 0x7fffa48301d8 24 ImplSalYield salinst.cxx 551 0x7fffa48308fd 25 WinSalInstance::DoYield salinst.cxx 580 0x7fffa482fe01 26 ImplYield svapp.cxx 352 0x7fffa891790d 27 Application::Yield svapp.cxx 437 0x7fffa891b862 28 Application::Execute svapp.cxx 330 0x7fffa8914c4a 29 desktop::Desktop::Main app.cxx 1601 0x7fffc71696b2 30 ImplSVMain svmain.cxx 204 0x7fffa892d08c 31 SVMain svmain.cxx 237 0x7fffa892d8f2 32 soffice_main sofficemain.cxx 94 0x7fffc71b81f2 33 sal_main main.c 51 0x7ff6b4f91013 34 main main.c 49 0x7ff6b4f9105a 35 invoke_main exe_common.inl 79 0x7ff6b4f91459 36 __scrt_common_main_seh exe_common.inl 288 0x7ff6b4f9137e 37 __scrt_common_main exe_common.inl 331 0x7ff6b4f9123e 38 mainCRTStartup exe_main.cpp 17 0x7ff6b4f914ce 39 BaseThreadInitThunk KERNEL32 0x7ff810cd7614 40 RtlUserThreadStart ntdll 0x7ff8128e26b1 Change-Id: I43c2a19e6ec2ccda11114251883e41b47f74929c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155807 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18tdf#156561 tdf#141101 Revert "tdf#140762 tdf#152671 Make dock win ..." et alMichael Weghorn
Revert commit dc0706cabfe39ddb6ea23d60ccfb756f2b9e6efb Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Mar 15 17:00:27 2023 +0100 tdf#140762 tdf#152671 Make dock win visible before showing popup and 2 follow-up commits, since it's no longer necessary to have the window visible already when the popup shows in order for NVDA on Windows to announce the content. This unifies the code path between gtk and non-gtk again, as already pointed out in commit 3bb762c53ea79f8915a1b8fa39f3f5f57aa68c84 Date: Tue Aug 1 09:44:56 2023 +0200 tdf#156100 tdf#156561 Revert to previous behavior for gtk popups > Further analysis of the root causes is planned in the context of > tdf#156561, so hopefully the code paths can be unified again in > the future. The underlying issues have now been addressed by these commits instead now: commit 1d92445fcac1c51c17d8dbfd1a4017430fe7bc46 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Tue Aug 1 09:26:37 2023 +0100 tdf#156561 wina11y: Handle CHILD event Change-Id I83cf5732bfc9d4886e4f7fa75d4ff462e4d4af6d tdf#141101 tdf#156561 a11y: Handle a11y child events in win parent Change-Id I69c6066127c8b853a27cc1f692f139572541f8eb tdf#156561 a11y: Create VCLXTopWindow peer for border win frame Change-Id If374032387babf41b28067d5df54d5f6ce682c48 tdf#156561 a11y: Don't ignore child events in AccessibleListBox Change-Id Ifbe27de01739103d1da04951475db32aa50d429d tdf#156561 svtools, a11y: Return created popup win for focus handling Together with the above-mentioned commits, this also makes NVDA announce the font color popup in the "Character" (character style) dialog. (Announcement starts as soon as Tab is pressed once, not yet for the initially focused item right away.) Reverted commits: commit 3bb762c53ea79f8915a1b8fa39f3f5f57aa68c84 Date: Tue Aug 1 09:44:56 2023 +0200 tdf#156100 tdf#156561 Revert to previous behavior for gtk popups commit 70642bb7afd2cee6f7ae6eff2936a35978bd0597 Date: Thu Apr 6 15:07:15 2023 +0100 tdf#154470 try moving the Show of the client to after the float positioning commit dc0706cabfe39ddb6ea23d60ccfb756f2b9e6efb Date: Wed Mar 15 17:00:27 2023 +0100 tdf#140762 tdf#152671 Make dock win visible before showing popup Change-Id: Ic621b4344311679af2d13b5a80220e1daf411061 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155803 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18Rename Window::ImplIsAccessibleNativeFrame and make it publicMichael Weghorn
The way to determine whether this window is a "native frame" doesn't look particularly specific to a11y, so rename it to just `Window::IsNativeFrame` and make it public in order to reuse it in a follow-up commit. Also move the implementation out of the source file that implements accessibility-specific Window methods for consistency. Change-Id: I980f251cacce6a601e86fc6261a231b799b30317 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155798 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18vcl: Reuse existing Window::ImplIsAccessibleNativeFrameMichael Weghorn
... instead of duplicating what it does in `Window::ImplIsAccessibleCandidate`. Change-Id: If422597046447bbf30a0488ceed2cf1d2fa49c5c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155797 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-18vcl: Deduplicate 2 common lines for border win framesMichael Weghorn
These 2 members are set the same way for all of the 3 branches. Change-Id: I2acbb519e30926eb5798bb52e1ef95dceca47b5d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155796 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-17Skia: Avoid assertion failure inside ProcessAndBlurAlphaMaskMike Kaganski
As seen opening https://bugs.documentfoundation.org/attachment.cgi?id=182024 from tdf#150610. The upscale is pending, and SkiaSalBitmap::mImage is empty here; EnsureBitmapData call works correctly in this case. Change-Id: I71575b09b3b4513b06b55271f6440688785cfb84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155792 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-08-17Drop defines obsoleted by Windows 7 baselineMike Kaganski
I.e., those that are guarded in Windows headers by stuff like #if(_WIN32_WINNT >= 0x0600) #if(WINVER >= 0x0501) Change-Id: If9ab06663b2c9f511549823f14c8bc759a30a74c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155751 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-08-16Resolves: tdf#156751 add "Special Character..." to GtkEntry context menusCaolán McNamara
translation exists so doesn't require additional translation Change-Id: Ibc5df15b9b8442307195d79c862c69e0506c4057 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155733 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-16no need for mutex locking hereNoel Grandin
these values are assigned in the constructor and never updated Change-Id: Ia4e0524c2b5c5465f9659eb88a11b955492e7e63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155723 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-15VCLSession: avoid null dereferencesJustin Luth
Found while I was (mis)using XSessionManagerListener2 in https://gerrit.libreoffice.org/c/core/+/155460 But I think these are valid anyway. Certainly one is when it is checked in the try clause but not in the catch clause. Change-Id: Ia3f7211e4a4c86dd503ffe1b04e5b5c13227218e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155719 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-08-15GTK3 Disabled menu items are not hidden in DontHideDisabledEntry = false modeJulien Nabet
Change-Id: Iece7d9de56477702fadbf1cadc2e0f5d9224c96e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155197 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-08-14qt: Implement pinch/zoom gesture handlingMichael Weghorn
Subscribe to receive pinch gestures by calling `QWidget::grabGesture(Qt::PinchGesture)` and forward that as the corresponding `SalGestureZoomEvent`. From looking at what values the gtk implementation uses, `1 + pPinchGesture->totalScaleFactor()` seems to be a proper choice for the `SalGestureZoomEvent::mfScaleDelta` value. With this in place, zooming in and out of a Writer document with a two-finger zoom gesture works for me with the Qt-based VCL plugins in Writer on my laptop that has a touch screen. (It seems to be a bit more smooth with qt5/kf5 than with qt6, where doing several zoom gestures after each other sometimes requires to wait a bit before doing another gesture in order for that one to be processed properly.) Qt documentation for gestures: [1] Corresponding commit for gtk VCL plugins: commit f2bd19f6720239db228cd4388be8e928505c51b6 Author: Povilas Kanapickas <povilas@radix.lt> Date: Thu Aug 25 00:18:30 2022 +0300 vcl: implement touchpad zoom gesture support on gtk backend [1] https://doc.qt.io/qt-6/gestures-overview.html Change-Id: I288943d923463fee44314969648e03dca84c483f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155649 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-08-13Related tdf#156630 and tdf#156629 force snapshot of alpha maskPatrick Luby
On macOS, with Skia/Metal or Skia/Raster with a Retina display (i.e. 2.0 window scale), the alpha mask gets upscaled in certain cases. This bug appears to be caused by pending scaling of an existing SkImage in the bitmap parameter. So, force the SkiaSalBitmap to handle its pending scaling. This change consolidates the three duplicate fixes added in the following commits into the AlphaMask(const Bitmap&) constructor. commit 12fd870113a663dde5ceb38c61f1986a34095d0e commit ce2d9f5dd4b6a26847c4779bce4866d969ff4400 From my light testing, the bitmap's SkImage is not scaled except when running macOS with a Retina display. The only exception is that this fix will be triggered on all platforms when exporting to PDF images with an alpha mask. Change-Id: Iea5afd55aac984ca606b2b4b44e457d81d76fac0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155568 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-13cid#1539910 avoid Missing move assignment operatorCaolán McNamara
and cid#1539912 Missing move assignment operator cid#1539913 Missing move assignment operator Change-Id: If46cb15c20479a4a88fdfa70fe4bb662004239d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155645 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-13Revert "clang-tidy bugprone-parent-virtual-call in vcl"Noel Grandin
This reverts commit 69972719542cd686687ddd91f2b5284483513608. There are some odd things gone in with some of these changes that I do understand. Reverting until I have worked it out. Change-Id: If5316654c16a697a2aff5eccdffaa5b2a6e0052d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155598 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>