summaryrefslogtreecommitdiff
path: root/vcl
AgeCommit message (Collapse)AuthorFilesLines
2022-07-27tdf#150145 text appears to have a row of pixels cropped outCaolán McNamara1-3/+3
which is very similar sounding to https://gitlab.freedesktop.org/cairo/cairo/-/issues/390 seems to be a bad interaction of slight hinting and sub pixel positioning with hints_metrics disabled with CAIRO_HINT_METRICS_OFF. lets continue to assume we desire CAIRO_HINT_METRICS_OFF most and disable hinting rather than use slight Change-Id: Id7b35d0e4f9291987e8ab96814936700374c6e16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137431 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-07-25Resolves tdf#143688 - Allow detaching of sub-toolbars when lockedHeiko Tietze1-2/+1
Change-Id: I36669d953eb9438df73256676e2dfbfe3c263031 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137100 Tested-by: Jenkins Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com> (cherry picked from commit db26f712e1edfef6b61a324b146310be00aeb100) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137174 Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2022-07-20tdf#127236 vcl: fix missing encryption of PDF images during exportMiklos Vajna10-27/+186
Regression from commit 78e25558e86188314b9b72048b8ddca18697cb86 (tdf#106059 PDF export: create a reference XObject for JPG images with PDF data, 2017-02-23), once a PDF image was inserted to a document, an encrypted PDF export lost those images. The reason for this is that we started to preserve PDF images as vector data with the above commit, but this means we copied over PDF objects from PDF images to the export result as-is, so encryption was not performed for them. Fix this by separating the write of the PDF object headers, stream content and object footer and then calling checkAndEnableStreamEncryption() / disableStreamEncryption() for each object, even if it's not something our PDF export created but comes from a PDF image. Note that when existing PDF files are signed, PDF objects are also copied into a vcl::filter::PDFDocument, but such PDF images are never encrypted, so it's fine to have stub implementations in vcl::filter::PDFDocument. (cherry picked from commit 7d56dae3375dc0180aa6d20983b3f5f962302588) Change-Id: I2f74b9f51cd35b4319221532ca890e197bab9cf3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137260 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-07-18ofz#49157 Object-sizeCaolán McNamara1-10/+15
Change-Id: I3a17d7967512a282b13894ba479aa3507f1be38f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137068 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2022-07-17tdf#149952 gtk3 a11y: Return pos relative to window when requestedMichael Weghorn2-5/+49
ATK (and AT-SPI) allows to specify 3 different coordinate types [1]: 1) `ATK_XY_SCREEN`: coordinates relative to the screen. 2) `ATK_XY_WINDOW`: coordinates relative to the widget's top-level window. 3) `ATK_XY_PARENT` coordinates relative to the widget's immediate parent. The `XAccessibleComponent` interface provides equivalents for 1) and 3), but not 2), and the gtk3 VCL plugin wasn't really handling 2) so far either. This adds handling for `ATK_XY_WINDOW`. The position in the window is calculated by recursively walking up the a11y hierarchy and summing up the positions relative to the parent, until a window is reached (or there's no parent, or none implementing `AtkComponent`). Also add an explicit check for `ATK_XY_PARENT` if none of the other two constants is used and warn and return if that isn't used either, to cover the case that new constants will be introduced in newer ATK versions. (That check needs to be conditional, because `ATK_XY_PARENT` is only defined from ATK 2.30 on, while our minimum required version is currently 2.28.1.) The coordinates received when testing this with a selected Writer paragraph in Accerciser's IPython console look generally plausible now with this change in place: In [108]: acc.queryComponent().getPosition(pyatspi.component.XY_SCREEN) Out[109]: (1939, 417) In [109]: acc.queryComponent().getPosition(pyatspi.component.XY_WINDOW) Out[110]: (19, 245) In [110]: acc.queryComponent().getPosition(pyatspi.component.XY_PARENT) Out[111]: (19, 113) In [111]: acc.queryText().getCharacterExtents(0, pyatspi.component.XY_SCREEN) Out[112]: (2015, 417, 5, 19) In [112]: acc.queryText().getCharacterExtents(0, pyatspi.component.XY_WINDOW) Out[113]: (95, 245, 5, 19) In [113]: acc.queryText().getCharacterExtents(0, pyatspi.component.XY_PARENT) Out[114]: (76, 0, 5, 19) (Previously, requesting window-relative coordinates gave the same result as coordinates relative to direct parent.) [1] https://docs.gtk.org/atk/enum.CoordType.html Change-Id: Idf8f7d08f9054a8df28d1ee8fccc791a803de045 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137027 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit 4ac4e8aacefcdc106a450895ab751f0544e76377) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137060 Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-07-01tdf#149680 qt: Open native popup menu at given positionMichael Weghorn1-3/+7
Calculate the position at which to open the popup menu from the passed window and rectangle, rather than always opening the native popup menu at the cursor position. The commit message in commit 1e0b16f8695498e4eea7c2208aabf7e7664ce749 Date: Wed Feb 12 08:07:42 2020 +0100 tdf#128921 tdf#130341 tdf#122053 qt5: Native PopupMenus which had implemented native poup menus, already said: > For now, this always shows the popup menu at cursor position, which > can be changed by taking the Rectangle passed to > 'Qt5Menu::ShowNativePopupMenu' into account if there should be any > need. Change-Id: If1a44b6d53f3dcd6fa7ceec0738219f11cfc22c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136356 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit ee3976f2c613f9015477ab327996c074e8516f9d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136707 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-30Don't link against private CoreUI framework when sandboxedChristian Lohmaier1-2/+6
Actual use of the code was already disabled since 2014 with b8bee05dbf85bc4f5834520aa5d64e9ae18aba4e - but the link flags were not conditionalized. Change-Id: Ia1dd299cb78274850eb6a7b10259991bb4970ab9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136614 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> (cherry picked from commit 788dcbef1bae7dbe600f8f193944cd9b31aa27d5) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136634 Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2022-06-28tdf#149755 bottom of characters missing in dwrite rendered caseCaolán McNamara1-6/+13
snap bounding box to full pixels Change-Id: Iecd973e99cec49ee129bad422ae00f558f057abd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136546 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-27tdf#149279 SwNavigator enhancement to show at least two headingsJim Raykowski1-2/+0
above tracked heading For gtk3, treeview scroll_to_row to a visible collapsed row makes the row expanded. The sal version does not. To make the behavior consistent, the patch removes the call to gtk_tree_view_expand_to_path which causes a visible collapsed row to expand. Change-Id: I29e67535ab23aa1952b4ff97c1b81276794b8036 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136436 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com> (cherry picked from commit 8e8e0aefc998adba749a93cacc4660d859fba675) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136462 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-24tdf#149626 use recursive_mutex to fix hang in macro callback during dndCaolán McNamara1-1/+1
See frame #5 and frame #45 where both the same DNDEventDispatcher object and both functions lock m_aMutex which is a std::mutex since commit 8de81db4e3fca488d50db2d74734109b31541a6f Date: Mon Aug 2 09:21:17 2021 +0200 osl::Mutex->std::mutex in DNDEventDispatcher #0 0x00007ff094530c40 in __lll_lock_wait () at /lib64/libc.so.6 #1 0x00007ff0945371d2 in pthread_mutex_lock@@GLIBC_2.2.5 () at /lib64/libc.so.6 #2 0x00007ff08b901663 in __gthread_mutex_lock(pthread_mutex_t*) (__mutex=0x1a32c60) at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/x86_64-redhat-linux/bits/gthr-default.h:749 #3 0x00007ff08b9024d5 in std::mutex::lock() (this=0x1a32c60) at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/std_mutex.h:100 #4 0x00007ff08b9018f3 in std::scoped_lock<std::mutex>::scoped_lock(std::mutex&) (this=0x7ffdd0d79240, __m=...) at /usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/mutex:731 #5 0x00007ff08b9006a8 in DNDEventDispatcher::dragOver(com::sun::star::datatransfer::dnd::DropTargetDragEvent const&) (this=0x1a32c10, dtde=...) at vcl/source/window/dndeventdispatcher.cxx:156 #6 0x00007ff075f47658 in GtkInstDropTarget::fire_dragOver(com::sun::star::datatransfer::dnd::DropTargetDragEvent const&) (this=0x199eb40, dtde=...) at vcl/unx/gtk3/gtkinst.cxx:1710 #7 0x00007ff0760a7010 in GtkInstDropTarget::signalDragMotion(_GtkWidget*, _GdkDragContext*, int, int, unsigned int) (this=0x199eb40, pWidget=0x1c67e40, context=0x1957450, x=89, y=175, time=0) at vcl/unx/gtk3/gtkframe.cxx:5026 #8 0x00007ff07609bb77 in GtkSalFrame::signalDragMotion(_GtkWidget*, _GdkDragContext*, int, int, unsigned int, void*) (pWidget=0x1c67e40, context=0x1957450, x=89, y=175, time=0, frame=0x19b7d70) at vcl/unx/gtk3/gtkframe.cxx:4922 #9 0x00007ff075649527 in _gtk_marshal_BOOLEAN__OBJECT_INT_INT_UINTv () at /lib64/libgtk-3.so.0 #10 0x00007ff0865dcd5b in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #11 0x00007ff0865ddeb8 in g_signal_emit_by_name () at /lib64/libgobject-2.0.so.0 #12 0x00007ff07595b491 in gtk_drag_dest_motion.lto_priv () at /lib64/libgtk-3.so.0 #13 0x00007ff0757b8f7d in gtk_main_do_event () at /lib64/libgtk-3.so.0 #14 0x00007ff0754e5463 in _gdk_event_emit () at /lib64/libgdk-3.so.0 #15 0x00007ff075518056 in gdk_event_source_dispatch () at /lib64/libgdk-3.so.0 #16 0x00007ff0864c3faf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0 #17 0x00007ff0865192c8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0 #18 0x00007ff0864c1940 in g_main_context_iteration () at /lib64/libglib-2.0.so.0 #19 0x00007ff075f3e60f in GtkSalData::Yield(bool, bool) (this=0x952930, bWait=false, bHandleAllCurrentEvents=false) at vcl/unx/gtk3/gtkdata.cxx:405 #20 0x00007ff075f43e43 in GtkInstance::DoYield(bool, bool) (this=0x9527e0, bWait=false, bHandleAllCurrentEvents=false) at vcl/unx/gtk3/gtkinst.cxx:428 #21 0x00007ff08c2dc5df in ImplYield(bool, bool) (i_bWait=false, i_bAllEvents=false) at vcl/source/app/svapp.cxx:474 #22 0x00007ff08c2dc24d in Application::Reschedule(bool) (i_bAllEvents=false) at vcl/source/app/svapp.cxx:493 #23 0x00007ff091eeeb55 in SbiRuntime::Step() (this=0xa21eb20) at basic/source/runtime/runtime.cxx:801 #24 0x00007ff091e0e659 in (anonymous namespace)::RunInitGuard::run() (this=0x76a6290) at basic/source/classes/sbxmod.cxx:1015 #25 0x00007ff091e0d135 in SbModule::Run(SbMethod*) (this=0xa0ada00, pMeth=0xa16d7e0) at basic/source/classes/sbxmod.cxx:1176 #26 0x00007ff091e0c503 in SbModule::Notify(SfxBroadcaster&, SfxHint const&) (this=0xa0ada00, rBC=..., rHint=...) at basic/source/classes/sbxmod.cxx:775 #27 0x00007ff090b3ee6e in SfxBroadcaster::Broadcast(SfxHint const&) (this=0xa231de0, rHint=...) at svl/source/notify/SfxBroadcaster.cxx:39 #28 0x00007ff091e1372e in SbMethod::Broadcast(SfxHintId) (this=0xa231ca0, nHintId=SfxHintId::BasicDataWanted) at basic/source/classes/sbxmod.cxx:2113 #29 0x00007ff091f6ddfa in SbxObject::Call(rtl::OUString const&, SbxArray*) (this=0xa258670, rName="DTL_dragOver", pParam=0xa1e47d0) at basic/source/sbx/sbxobj.cxx:274 #30 0x00007ff091d9dd76 in StarBASIC::Call(rtl::OUString const&, SbxArray*) (this=0xa258670, rName="DTL_dragOver", pParam=0xa1e47d0) at basic/source/classes/sb.cxx:1324 #31 0x00007ff091dd7127 in (anonymous namespace)::BasicAllListener_Impl::firing_impl(com::sun::star::script::AllEventObject const&, com::sun::star::uno::Any*) (this=0xa2344a0, Event=..., pRet=0x0) at basic/source/classes/sbunoobj.cxx:3831 #32 0x00007ff091dd6ba1 in (anonymous namespace)::BasicAllListener_Impl::firing(com::sun::star::script::AllEventObject const&) (this=0xa2344a0, Event=...) at basic/source/classes/sbunoobj.cxx:3855 #33 0x00007ff091dd792f in (anonymous namespace)::InvocationToAllListenerMapper::invoke(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&, com::sun::star::uno::Sequence<short>&, com::sun::star::uno::Sequence<com::sun::star::uno::Any>&) (this=0xa110b70, FunctionName="dragOver", Params=uno::Sequence of length 1 = {...}) at basic/source/classes/sbunoobj.cxx:3983 #34 0x00007ff091dd7be7 in non-virtual thunk to (anonymous namespace)::InvocationToAllListenerMapper::invoke(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&, com::sun::star::uno::Sequence<short>&, com::sun::star::uno::Sequence<com::sun::star::uno::Any>&) () at /home/caolan/LibreOffice/core/instdir/program/libsblo.so #35 0x00007ff072d19921 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) (pThis=0xa110b98, nVtableIndex=4, pRegisterReturn=0x7ffdd0d7b5c0, pReturnTypeRef=0xa875c0, bSimpleReturn=false, pStack=0x7ffdd0d7b5e0, nStack=0, pGPR=0x7ffdd0d7b900, pFPR=0x7ffdd0d7b8c0) at bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77 #36 0x00007ff072d184fc in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) (pThis=0xa238bb0, aVtableSlot=..., pReturnTypeRef=0xa875c0, nParams=4, pParams=0x2470e40, pUnoReturn=0x7ffdd0d7bb80, pUnoArgs=0x7ffdd0d7bbb0, ppUnoExc=0x7ffdd0d7bb60) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233 #37 0x00007ff072d17c58 in unoInterfaceProxyDispatch(uno_Interface*, typelib_TypeDescription const*, void*, void**, uno_Any**) (pUnoI=0xa238bb0, pMemberDescr=0x24c98c0, pReturn=0x7ffdd0d7bb80, pArgs=0x7ffdd0d7bbb0, ppException=0x7ffdd0d7bb60) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413 #38 0x00007ff0472645ca in stoc_invadp::(anonymous namespace)::AdapterImpl::invoke(_typelib_TypeDescription const*, void*, void**, _uno_Any**) (this=0xa112060, pMemberType=0xa11be80, pReturn=0x7ffdd0d7c4f0, pArgs=0x7ffdd0d7bca0, ppException=0x7ffdd0d7bde0) at stoc/source/invocation_adapterfactory/iafactory.cxx:457 #39 0x00007ff04726379d in stoc_invadp::adapter_dispatch(_uno_Interface*, _typelib_TypeDescription const*, void*, void**, _uno_Any**) (pUnoI=0xa118a50, pMemberType=0xa11be80, pReturn=0x7ffdd0d7c4f0, pArgs=0x7ffdd0d7bca0, ppException=0x7ffdd0d7bde0) at stoc/source/invocation_adapterfactory/iafactory.cxx:605 #40 0x00007ff072d04e95 in cpp2uno_call(bridges::cpp_uno::shared::CppInterfaceProxy*, _typelib_TypeDescription const*, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void**, void**, void**, unsigned long*) (pThis=0xa11b350, pMemberTypeDescr=0xa11be80, pReturnTypeRef=0x939280, nParams=1, pParams=0xa112460, gpreg=0x7ffdd0d7c520, fpreg=0x7ffdd0d7c540, ovrflw=0x7ffdd0d7c590, pRegisterReturn=0x7ffdd0d7c4f0) at bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx:191 #41 0x00007ff072d04611 in cpp_vtable_call(sal_Int32, sal_Int32, void**, void**, void**, sal_uInt64*) (nFunctionIndex=7, nVtableOffset=0, gpreg=0x7ffdd0d7c510, fpreg=0x7ffdd0d7c540, ovrflw=0x7ffdd0d7c590, pRegisterReturn=0x7ffdd0d7c4f0) at bridges/source/cpp_uno/gcc3_linux_x86-64/cpp2uno.cxx:389 #42 0x00007ff072d29836 in privateSnippetExecutor () at /home/caolan/LibreOffice/core/instdir/program/libgcc3_uno.so #43 0x00007ff08b903787 in DNDListenerContainer::fireDragOverEvent(com::sun::star::uno::Reference<com::sun::star::datatransfer::dnd::XDropTargetDragContext> const&, signed char, int, int, signed char) (this=0x5a444c0, context=uno::Reference to ((anonymous namespace)::GtkDropTargetDragContext *) 0xa1dda68, dropAction=1 '\001', locationX=89, locationY=33, sourceActions=3 '\003') at vcl/source/window/dndlistenercontainer.cxx:224 #44 0x00007ff08b900b7d in DNDEventDispatcher::fireDragOverEvent(vcl::Window*, com::sun::star::uno::Reference<com::sun::star::datatransfer::dnd::XDropTargetDragContext> const&, signed char, Point const&, signed char) (pWindow=0x5a27060, xContext=uno::Reference to ((anonymous namespace)::GtkDropTargetDragContext *) 0xa1dda68, nDropAction=1 '\001', rLocation=Point = {...}, nSourceActions=3 '\003') at vcl/source/window/dndeventdispatcher.cxx:297 #45 0x00007ff08b9007f5 in DNDEventDispatcher::dragOver(com::sun::star::datatransfer::dnd::DropTargetDragEvent const&) (this=0x1a32c10, dtde=...) at vcl/source/window/dndeventdispatcher.cxx:178 #46 0x00007ff075f47658 in GtkInstDropTarget::fire_dragOver(com::sun::star::datatransfer::dnd::DropTargetDragEvent const&) (this=0x199eb40, dtde=...) at vcl/unx/gtk3/gtkinst.cxx:1710 Change-Id: I06f24ac50d6d029803d46974162e1afec898d866 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136390 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-21Fix crash when no valid EntryDescriptor foundSamuel Mehrbrodt2-0/+8
When opening macro run dlg, the last selected entry is displayed again. When no entry was found, a crash occured in some situations (GetLastEntryDescriptor() returned garbage). Initialize m_aLastEntryDesc properly, and make sure the method returns when no last selected macro was found. Also fix some nullptr crashes which occurred during UITests Change-Id: I7bd1a0b8824725f9935876ae26d8222410a3bc25 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136140 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> (cherry picked from commit 499ecbf3a36990c29dc7e1fb9b0ecb1d297c2848) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136170 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-20Use of uninitialised value of size 8 on export to pdfCaolán McNamara1-1/+3
==2899330== Use of uninitialised value of size 8 ==2899330== at 0xCABB82A: (anonymous namespace)::appendHex(signed char, rtl::OStringBuffer&) (pdfwriter_impl.cxx:120) ==2899330== by 0xCAEB14C: vcl::PDFWriterImpl::emitTrailer() (pdfwriter_impl.cxx:5466) ==2899330== by 0xCAEDA09: vcl::PDFWriterImpl::emit() (pdfwriter_impl.cxx:5773) ==2899330== by 0xCA9F10C: vcl::PDFWriter::Emit() (pdfwriter.cxx:53) ==2899330== by 0x3D5FE329: PDFExport::Export(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (pdfexport.cxx:1012) an issue since... commit be39eba9a3d81e20c42f1073a365e91ce855c1cd Date: Mon Jun 6 00:17:02 2022 +0200 Use same glyph width in PDF drawing and font subset Change-Id: I72dbcf2bb7934c9f911c7c5c3035d3d166e9521a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136164 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-20avoid uninitialized data when handling WindowStateLuboš Luňák1-17/+12
I get valgrind reports when I start LO with kf5 backend and a maximized window, since in that case position and size are not set (since the maximized state makes them irrelevant). The semantics here seem to conflict, the caller of GetWindowState() sets flags to say what data it wants, and SalFrame::GetWindowState() sets flags to say what data it provides, but as can be seen here those aren't necessarily the same. So actually use only those flags that are in both sets. Change-Id: I4559baab90d6f465382560549d52431b28119b3f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135563 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit b7b06f28d5728c2c33c073df35ac0c3bcc51e583) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135709 Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-17make VirtualDevice::SetOutputSizePixelScaleOffsetAndBuffer() LOK-onlyLuboš Luňák2-22/+21
Because it's used only for LOK, and SvpSalVirtualDevice::CreateSurface() otherwise wouldn't know whether to apply LOK DPI settings or not (since this might be called for LOK tiled painting, when it should, or it might be called from somewhere else while LOK is active, in which case this should be handled normally). Getting that mismatched can cause things like https://github.com/CollaboraOnline/online/issues/4834 . Change-Id: I1df7b8a169c8ef2e799731a6695a032948536582 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135588 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 91b98efc2a5cf41d9442f90d7cb37075721519e0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135710
2022-06-17handle GC* pixmap functions on Mac reading past pixmap (tdf#145843)Luboš Luňák1-0/+12
The code passes adjusted position for pixel data in order to create a sub-rect of the pixmap without copying, but at least on Intel Mac the GC* functions then try to read the entire pixel row even though it shouldn't be necessary. Since that may cause reading past the pixmap data if the last line is involved, use entire pixmap width to avoid that. Change-Id: Ia08059b363d39dd465b2cadde5138ee045628f59 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136003 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit fca6d9111314d659e7adb417d03de656b516b528) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136029
2022-06-16Make sure pEntry is not nullSamuel Mehrbrodt1-1/+1
Crash seen: > mergedlo.dll!SvTreeList::GetDepth(const SvTreeListEntry * pEntry) line 106 mergedlo.dll!SalInstanceTreeView::get_iter_depth(const weld::TreeIter & rIter) line 4230 basctllo.dll!basctl::SbTreeListBox::FindVariable(const weld::TreeIter * pEntry) line 271 basctllo.dll!basctl::SbTreeListBox::FindModule(const weld::TreeIter * pEntry) line 695 basctllo.dll!basctl::MacroChooser::BasicSelectHdl(weld::TreeView & __formal) line 473 basctllo.dll!basctl::MacroChooser::RestoreMacroDescription() line 158 basctllo.dll!basctl::MacroChooser::run() line 178 Change-Id: Ic85758c0bbee952d0a23b1d52e8bbdd231e8de26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135914 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> (cherry picked from commit 79f820b6822f8d3578975a4757b4293728c8c717) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135937
2022-06-14vcl: restore lost spinner imagesMiklos Vajna1-0/+35
This went wrong in commit 13aa5081793f133077610cd01b7f01ee765b4add (remove unused defines, 2021-11-19), the trouble is that postprocess/CustomTarget_images.mk needs these images to be listed in bitmaps.hlst explictly, and the makefile won't see that the same names are used in Throbber::getDefaultImageURLs(), constructed dynamically. (cherry picked from commit 214438f1dcce52043c27c39e529cf60ff96c98cf) Change-Id: Ie7ea1734ed417d17e1ce54d6a755509ef52572d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135829 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-13vcl: Trigger IconView action on space key as wellMichael Weghorn1-0/+1
Handle space key the same as the return key. This e.g. allows to insert the selected element into the formula this way in Math again after the switch to IconView in commit d79c527c2a599c7821d27cf03b95cb79e2abe685 Date: Wed Jun 1 11:20:12 2022 +0300 Use IconView in SmElementsControl gtk3 was already behaving that way without this change in place. Change-Id: I061b286723fedf023551afbb2184abc946b54b9f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135592 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> (cherry picked from commit c66de992e1cb4f7f87035191832b5e28295c3477) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135702
2022-06-13crashtesting: fix crash seen on loading forum-mso-de-98993.xlsxCaolán McNamara2-2/+2
which may explain the backtraces seen with BitmapFilterStackBlur::filter and BitmapBasicMorphologyFilter::filter in crashreporting Change-Id: Ib55cde1603d354b8ca0e336a08fe2d73b548f73f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135694 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-10Entry may have no textMike Kaganski2-12/+4
... after the changes made to IconView. This partially reverts commit 54725f6e5f06b074d1c08d8efbd16518b96882d5 Author Mike Kaganski <mike.kaganski@collabora.com> Date Tue May 03 09:49:07 2022 +0100 Don't add empty labels to fontwork's icon view and instead, makes SvTreeListBox::GetEntryText tolerate absent text. Change-Id: Ifc386263ad656478416907a6f6b567cd1f3331ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135582 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2022-06-10new loplugin:moveitNoel Grandin5-7/+7
look for local variables that can be std::move'd to parameters off by default, since it doesn't do proper data flow analysis Change-Id: I3403a0fcffd165bdea6a772528bc53995c5fdb40 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135527 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-10tdf#135346: vcl_pdfexport: Add unittestXisco Fauli2-0/+17
Change-Id: I11ad776419ea3c0eb5babd0f1ee2c7c70b7e7485 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135580 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-10tdf#114256: vcl_pdfexport: Add unittestXisco Fauli2-0/+16
Change-Id: Iaaeb0b248f84709855d9e83d34cecf22f1169769 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135581 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-10Add asserts to those places where I fixed a EXCEPTION_INT_DIVIDE_BY_ZEROXisco Fauli1-0/+2
I found those crashes scraping https://crashreport.libreoffice.org/stats/ so those are blind fixes basically. Add these asserts, hoping one day someone will hit them so we can find the root cause. See 7c8b9fa98f4c5f7f5620e797dbbe24081e252548 fae937b6859517bd9fe8e400cad3c84561ff98ab ce39195e533336ce1482e2be6b1bec2b7f992125 23e3bff528ab38c8d5c6d401b672a0033cef2bd4 ea4cd397300120a0f825752182eb3b943eb8a1b2 Change-Id: I175f47361e07961417c87cc8f3d7d4d1fb50fb2c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135448 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-09Accessibility for IconViewMike Kaganski6-0/+85
Change-Id: I65ca9d43f70a50e2e95aabfc3b8ba1b15f9ff8be Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135226 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-06-09loplugin:unusedmethodsNoel Grandin5-45/+3
Change-Id: Ib89ab59f7ad7e90b2a44ddd122176cde904fba4d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135520 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-09a Frame has max two childrenCaolán McNamara1-1/+1
during creation it might not have all its children created yet if a11y querys it during its setup. Change-Id: Ifbbec7eeb80409dc5e871c2022d1ee1e36c6e74f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135526 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-09Use same glyph width in PDF drawing and font subsetKhaled Hosny4-32/+53
During PDF drawing we already know the glyph width, but when subsetting we get it again from the font subset. For fonts without CFF table this is redundant but harmless, but for fonts with CFF table, if the CFF and hmtx table (the authoritative source of glyph widths) disagree, we will be drawing the PDF string with the wrong adjustment resulting in displaced glyphs. This is a font bug, but avoiding redundancy and having one source of truth is an improvement overall. I kept the code that calculates advance widths for font subsets, just in case it is is still used elsewhere. Change-Id: I757cd0c2ebb6477b2f840d0005e84b5a131f7efb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135442 Tested-by: Jenkins Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-08VCL add vcl::WindowPosSize abstract classJan-Marek Glogowski39-1024/+896
... and use it to remove a duplicate and simplify code. Should mostly be a refactoring, which was mainly done by some larger sed calls, except for the new API calls, which helped shrinking some LOC. All data is also now private. Originally two of the "replaced" "classes" had unsigned width and height and one had signed. Noel pointed out, that during calculations, the value might get negative temporarly, so this now settles with signed values. Still the set size should never be negative and this is enforced this way. Not sure that is what Noel had in mind. This also includes: - rename WindowState => WindowData - rename WindowStateMask => WindowDataMask - rename WindowStateState => WindowState - move WindowState and WindowDataMask to vcl/windowstate.hxx - move WindowData(Mask) and WindowState into vcl namespace - readability: replace or'ed WindowState enums with "meta" enums + add "meta" WindowState enums PosSize and PosSizeState Change-Id: Icd16cfb498531aa7238ddbde83fcb0ed6d9e4f77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135426 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-06-08tdf#119827 implement GtkBuilder "scale" property for font sizeCaolán McNamara2-0/+16
and use it for the case in charnamepage Change-Id: I5920aa429c750e9b147cbc09a6f3814166851a8c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135493 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-08CppunitTest_vcl_pdfexport: reduce test doc size in testAlternativeTextMiklos Vajna1-420/+3
A one-pixel image will do the job. Change-Id: Ied9b51c104a39b0bcf5401d8486c11f87c979805 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135477 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-06-07Fix ImageView without text on GTKMike Kaganski1-4/+7
Change-Id: I2c1884722de2d40e96282d1efbba4be0ad078bd2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135465 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-06-06Fix typoAndrea Gelmini1-1/+1
Change-Id: I313b07bb1a3c387abddcad85c997075bd584ae6f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135440 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2022-06-05assert if a model is used in duplicate widgetsCaolán McNamara1-0/+4
we never do this deliberately Change-Id: I6d6d8ea13fb5f09bcf631c0474e671d4605f4c69 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135427 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-05tdf#137471 Qt return frame pos + client area sizeJan-Marek Glogowski1-2/+2
My code comment about "drawable area" and Michaels bug comment 12 about the "frameGeometry()" usage were both half right. LO expects the window's frame position and the drawable client area size almost everywhere when "geometry" is involved. The frame's border is stored in the decorations members of SalFrameGeometry. Change-Id: Ic00ad1f1d74d7afadcaca0c01e1a41ea7f2833de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135434 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-06-04WIN refactor geometry updatingJan-Marek Glogowski1-29/+18
Change-Id: I34e710c022e6362dc2381327eb896610c35bcbf0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135425 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-06-04this should call the base class enable_notify_eventsCaolán McNamara1-1/+1
Change-Id: Icc26f3adcb3273426e6892aafd16da23176e23de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135373 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-04ofz#47759 TimeoutCaolán McNamara1-0/+8
Change-Id: I8d6b1adb83963c229d71b9f593d39d8cd3e281e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135363 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-03Related: tdf#147844 still log the discrepancyAron Budea1-3/+3
Change-Id: Iaed261c5b85ce507fb30b572eb08f09c89dda3e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135367 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Aron Budea <aron.budea@collabora.com>
2022-06-03ofz#47781 Out of memoryCaolán McNamara1-1/+3
Change-Id: I6ebd284bb3fa2c220b6a09fa9875b97c79f4a239 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135364 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-03allow to dynamically show/hide notebook tabsCaolán McNamara3-0/+25
Change-Id: I19681d9bfcd91e205e684674d1ec8f0058c1eb91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135350 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-03implement "show-tabs" for TabControlCaolán McNamara1-17/+53
defaults to the current status of "true" Change-Id: Id4fa50d359e29fa3a7db845edbcb86a3b1caa790 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135345 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-03elide some makeStringAndClear() classNoel Grandin12-52/+64
when we are passing the result to a string_view, it is pointless. Change-Id: Id5906bbd7315e80358d09a0d036e605c54ccbf93 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135328 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-02tdf#149418: vcl_filters_test: Add unittestXisco Fauli2-0/+19
Change-Id: I643175f077723b0a865270691f3b50cc817e572d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135295 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-02cid#1504591 Uninitialized scalar fieldCaolán McNamara1-0/+1
Change-Id: I647888f13fc18010efc5ff6023790e91fa11611a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135293 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-02tdf#149418 the expectation is on success the tiff stream pos is at EOFCaolán McNamara2-3/+9
which is what the old one did, so do that here as well, libtiff will leave the stream some other pos by default, presumably the directory. which explains the testTdf138818 mystery Change-Id: I574700f81a21ee164d9911e05e2023aa48d10370 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135279 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-06-01tdf#149417: vcl_filters_test: Add unittestXisco Fauli1-0/+0
Change-Id: I1c575027d53b93c5d08c7e4fdf6da9d34654bc4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135249 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2022-06-01Introduce weld::IconView::insert_separatorMike Kaganski12-248/+437
Needed to eventual re-implementation of starmath's SmElementsControl using IconView. This required re-implementation of IconViewImpl, to layout entries by iteration, because now it's impossible to find an entry position just based on its index. This coincidentally fixed some visual glitches in non-gtk IconView implementation from commit 5813660e7bfe128ac076e592fe31de64a6863780 Author Szymon Kłos <eszkadev@gmail.com> Date Tue Feb 16 16:03:30 2016 +0100 icon view for RemoteFilesDialog where any selected element could become first in row when scrolling. SvTreeListBox::SetEntryHeight taking a SvTreeListEntry const* had to be renamed to CalcEntryHeight, to avoid both virtual and non-virtual overloads, additionally having different accessibility. A TODO is implement separators in GtkInstanceIconView. I couldn't find a GTK API for separators in IconView, so possibly a workaround would be needed with some non-selectable narrow elements. Change-Id: Ie8dc35d94049a1c48e4eb49697681ffbe93c17f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135112 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-06-01Don't resize to parent windowMike Kaganski1-3/+1
The parent may contain other controls (e.g. Fontworks dialog's grid contains also a label above the icon view). The control already has the correct size; just use it. Fixes vertical scrollbar being partially hidden behind control's bottom in non-GTK Fontworks dialog. Change-Id: I424999777f24bbb28619d07a9de782057f0257a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135003 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2022-06-01Implement weld::IconView::[gs]et_item_widthMike Kaganski3-0/+16
Change-Id: I211e3c21b4e0148c4ff6fc9931838e37ccd0cc41 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134897 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>