summaryrefslogtreecommitdiff
path: root/vcl/qt5
AgeCommit message (Collapse)Author
2019-07-31Improved loplugin:stringconstant (now that GCC 7 supports it): vclStephan Bergmann
Change-Id: I0bd1d26f6fc4052b812fde33ebd1d63111426942 Reviewed-on: https://gerrit.libreoffice.org/76627 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-07-21tdf#125922 rename kde5 to kf5 + plasma5Jan-Marek Glogowski
Just as the gtk3 plugin isn't named GNOME, rename kde5 to kf5, as it is based on the KDE frameworks 5 libraries. This also includes: * a convenience alias to load the kf5 VCL plugin in case someone requests the kde5 plugin. * keep convenience kde5 configure switch, but warn about it * rename detected desktop from kde5 to plasma5 Change-Id: I6764a05b81a5edbf284484c234fee2649aacf735 Reviewed-on: https://gerrit.libreoffice.org/75313 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-07-12Qt5 drop special QPushButton handlingJan-Marek Glogowski
Basically reverts commit 3f0dbdd61df ("Draw button focus so that it doesn't obscure the actual button") and declares qt5 doesn't support an extra native focus for a button. LO's own "ant" focus is prevented by Qt5Data::Qt5Data(): pSVData->maNWFData.mbNoFocusRects = true; pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true; Change-Id: Ifdce615cac92f69b008780cf986cdfd0915ccd14 Reviewed-on: https://gerrit.libreoffice.org/75415 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
2019-07-11Qt5 set default QStyle::State for draw functionsJan-Marek Glogowski
Just a little cleanup for all functions, which already modify the QStyle::State of their QStyleOption* parameter. Change-Id: Ib1fbe3ed3481a17a57ac07f390fafe8a7333f218 Reviewed-on: https://gerrit.libreoffice.org/75418 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-07-11Qt5 correctly draw rectangle frameJan-Marek Glogowski
This bug can be seen with the Writer comments "button" to hide or show comments, where qt5 misses the bottom and right borders. The drawRect from X11SalGraphicsImpl and SvpSalGraphics do this and it fixes the visual glitch. I'm not sure this is needed for drawAlphaRect, as other implementations don't handle drawing borders in these at all. Change-Id: Ic82d499cd8e1bb420a7df14269e86c75e0d30c0b Reviewed-on: https://gerrit.libreoffice.org/75416 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-07-11Qt5 fix drawing of the toolbar handleJan-Marek Glogowski
This is visible in Writer, where the 2nd toolbar misses the handle. Change-Id: Iddf3a002c9d75f668c40977cf02671640b38f083 Reviewed-on: https://gerrit.libreoffice.org/75417 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-07-06Constify GlyphItemJan-Marek Glogowski
This hides all the data, which shouldn't change after init. Real const makes a lot of problems for copying, so this is the 2nd option to just add getters for private data. While at it use typed_flags for the GlyphItemFlags. Change-Id: Ic1eeabe2398f6c30080fdd516285b72c620b11be Reviewed-on: https://gerrit.libreoffice.org/75147 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-25tdf#120873 Qt5 invert checked state on triggerJan-Marek Glogowski
SalMenu's event handling is not really compatible with QAction. LO expects to get something like an activate event, which happens without any menu state update. The item handler will then update the item state, as expected by LO. I'm not sure how this could be implemented in a good way in Qt, so this patch is just a hack. If the item is checkable, we invert its state before handling it. This just works correctly for single items, not radio groups, but it does the trick for this bug. And since setChecked() just emits toggled(), triggered() won't run twice. Maybe someone can come up with a better way using event filters, if ever needed. Change-Id: Ic32d07525ce8f394b83d04f53689d1669ddc9d83 Reviewed-on: https://gerrit.libreoffice.org/74590 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-24Qt5 don't assert broken height or widthJan-Marek Glogowski
At least maths element docking window has a floating height of zero. So the original gtk comment about broken values is still true. And the initial SalFrameGeometry is ok, so no need to initialize it. And set default size and position on show, if not explicitly set. Change-Id: Ibe4969a164b50b666745ce010f5100af4b3ff2f6 Reviewed-on: https://gerrit.libreoffice.org/74614 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-23Fix typoAndrea Gelmini
Change-Id: I357c004e724ebe580a121bf7ecdc63da9c02343f Reviewed-on: https://gerrit.libreoffice.org/74593 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2019-06-22Qt5 directly show tooltips + respect the help areaJan-Marek Glogowski
I'm not sure why this redirection was implemented, which also ommited the provided help area. I tried hard to use vc::Window code in the beginning, but that also mirrors the cursor position for the window. Using Qt here is simply straight forward, so just do that, Change-Id: Ia8c4efc1e43b915c4b071ee26d4da37d7580817c Reviewed-on: https://gerrit.libreoffice.org/74548 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-22tdf#123779 Qt5 correctly fill Qt5Frame::maGeometryJan-Marek Glogowski
The tooltip in the bug is actually not one, but the VCL implementation of Gtk's popover widget triggered by SalFrame::ShowPopover. This has no Qt equivalent, so we currently rely on the crude VCL version. But for this maGeometry must contain the correct information, AKA the absolute, unmirrored, paintable system geometry of the frame. Then the window can be positioned correctly. The patch gets rid of most of the code initially copied from gtk, when this VCL backend was in a very early state. Change-Id: Id44e4dc2aac41f1f01d51c4d8107892e644ef243 Reviewed-on: https://gerrit.libreoffice.org/74546 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-22Qt5 fix some broken RTL handlingJan-Marek Glogowski
For RTL decisions we always use Qt's own setting after setting it on startup using QGuiApplication::setLayoutDirection. The only difference between LO and Qt events is the mirrored cursor position, which needs explicit mirroring before reporting mouse based events (mouse and wheel). Tooltips and frame positioning will be handled in separate patches. Additionally the horizontal scroll bar direction hack based on the scroll bar button positions, needs to handle RTL explicitly. Change-Id: I5ce5e69113a6cb6a9cf37a449265c49d92a7c159 Reviewed-on: https://gerrit.libreoffice.org/74545 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-21tdf#105884 Qt5 implement TabControl themingJan-Marek Glogowski
Drawing a QTabWidget is a really complex procedure. The main problems I had were the adjustment of the frame, which I totally missed in the Qt code for a long time. Then there is the frame gap, which Qt draws by simply overlapping the items a bit with the frame. And all the calculations need the tabs together with the pane. None of it really fits very good into the way VCL handles drawing the TabControl and since I needed a way back from the plugin into VCL for the nOverlap value, there is this hack using a static. I hope nOverlap never changes. Change-Id: I8fe6eb12d39a2ac7f6fb89424586cac76e12545b Reviewed-on: https://gerrit.libreoffice.org/74480 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-21tdf#126020 Qt5 delete orphan Qt5ObjectWindowsJan-Marek Glogowski
The Qt5ObjectWindow is "adopted" by Qt5Frame's QWidget, which is needed for the correct display. But since the Qt5Object is itself a child of the Qt5Frame, it'll be deleted before the Qt5Frame, which keeps the Qt5ObjectWindows alive. But the Qt5ObjectWindows child relies on the Qt5Object parent, so reap it, when the real parent is destructed. And just in case the Qt5Frame will delete the QWidget with the child while the Qt5Object is still alive, update the pointer to the child on its destruction. Change-Id: I563ddc2294b7b1651f56abdde75319c7455dd9b7 Reviewed-on: https://gerrit.libreoffice.org/74482 Tested-by: Jenkins Reviewed-by: Aleksei Nikiforov <darktemplar@basealt.ru>
2019-06-20Demote from std::unique_lock to std::scoped_lock where applicableStephan Bergmann
Change-Id: I53a019f05978bab62ad0da3d0eb08f37f8ec1e18 Reviewed-on: https://gerrit.libreoffice.org/74414 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-06-19tdf#125971: map file URLs from QFileDialog to LO internal formatStephan Bergmann
jmux' suggestion at <https://bugs.documentfoundation.org/show_bug.cgi?id=125971#c7> turns out to be the correct fix after all; explained in a lengthy comment why that seemingly wrong call of translateToInternal happens to do the right thing. (Much of this patch is about passing the XComponentContext down to where it is now needed in Qt5FilePicker::getSelectedFiles.) Change-Id: I235554f8494cd3094a011d5a903059326db499fc Reviewed-on: https://gerrit.libreoffice.org/74359 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-06-19Fix typoAndrea Gelmini
Change-Id: I95d7efef5021b1a43c1e8a9e4b6aa0be47ad3302 Reviewed-on: https://gerrit.libreoffice.org/74312 Tested-by: Jenkins Reviewed-by: Jens Carl <j.carl43@gmx.de>
2019-06-18VCL cleanup WidgetDrawInterfaceJan-Marek Glogowski
I don't understand why WidgetDrawInterface, which is basically a copy of the SalGraphics native controls interface, duplicated it, instead of cleaning things up. The whole commit message of commit 8fcfa3853a81, which added this code, is just: "custom widgets: Custom Widget Themes". That's it. So this patch does, what the original one skipped: replacing the SalGraphics interface with the WidgetDrawInterface. One result is the addition of handleDamage to SalGraphics to correctly handle the damage done by a custom widget theme to the underlying SalGraphics implementation. Change-Id: I5fda1a64b28e6560fb3c62e02b6dcda827f698e2 Reviewed-on: https://gerrit.libreoffice.org/74118 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-18tdf#125934 Qt5 set the desktop file name...Jan-Marek Glogowski
.. but only on wayland, as this also overrides the individual window icons on X11. Change-Id: I1b453b23f0dfd4ef2616d7b8054580a6018cdc53 Reviewed-on: https://gerrit.libreoffice.org/74293 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-18Qt5 initialize bool before lcl_textMimeInfo callJan-Marek Glogowski
Change-Id: Ie1b2e77145c4f84dc7d2c1edd214363b7fa0625e Reviewed-on: https://gerrit.libreoffice.org/74294 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-18loplugin:passstuffbyrefNoel Grandin
Change-Id: Icb7c22cf4ac95eab54d04e79312fb471ca27bceb Reviewed-on: https://gerrit.libreoffice.org/74246 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-06-18loplugin:logexceptionnicely in vclNoel Grandin
Change-Id: I0ed575a11c84c2e8aabfa1b4204ba6ae27393d5f Reviewed-on: https://gerrit.libreoffice.org/74245 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-06-17tdf#125968 fix the result order of text mime infoJan-Marek Glogowski
lcl_textMimeInfo returns three booleans when decoding the text mime string in the order: NoCharset / locale encoded, UTF16, and UTF8. Change-Id: I3cc4090e9874125ed68ec953d7d72889dead269b Reviewed-on: https://gerrit.libreoffice.org/74183 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2019-06-15tdf#125934 Qt5 set the desktop file nameJan-Marek Glogowski
This is a preliminary fix, so LO on Wayland has an application icon at all. As the result, the start center icon will appear as the application icon on Wayland for all windows. For the proper, per QWindow fix, we need some QtCore and QtWayland changes, to allow setting the appId per QWindow and eventually a Waylnad XDG shell spec update, to officially allow a top level window to change its appId. Change-Id: Icefcfc992836e0c657237984d7d88561b26b06a2 Reviewed-on: https://gerrit.libreoffice.org/74097 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-15Fix typoAndrea Gelmini
Change-Id: I27a00608a5dba9fc467c61d5919233972b293811 Reviewed-on: https://gerrit.libreoffice.org/74093 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-06-15Qt5 move and init static m_ActiveDragSourceJan-Marek Glogowski
Change-Id: Iab82151b8d1a8281c9999983b9de5f35dfb0442e Reviewed-on: https://gerrit.libreoffice.org/74013 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-15Fix typoAndrea Gelmini
Change-Id: I16f502fd3365f8db330c4228e44924c03ef227c1 Reviewed-on: https://gerrit.libreoffice.org/74077 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-06-15Fix typoAndrea Gelmini
Change-Id: Ic0b38891daf699f232a7dbc1378e30c53289d067 Reviewed-on: https://gerrit.libreoffice.org/74076 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-06-15Fix typoAndrea Gelmini
Change-Id: I55458141b212c0c2ed4b67d773a5cee6ff10cc18 Reviewed-on: https://gerrit.libreoffice.org/74078 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-06-15tdf#125921 Qt5 set WM_CLASS for top level windowsJan-Marek Glogowski
Uses the same naming then the gtk3 backend, i.e. "libreoffice" for the instance name and different class names for the module windows, like "libreoffice-writer". These names are referenced in the desktop files a StartupWMClass and for example used to pin an app to the task bar. Change-Id: Ic9b8890536f6413ab59d2e0da866e2280ab3181a Reviewed-on: https://gerrit.libreoffice.org/74014 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-14KDE5 move screensafer inhibiting code into Qt5Jan-Marek Glogowski
There will presumably be more X11 specific code later to implement some "fix" for tdf#119202. Moving the screensafer inhibitor is rather uncontroversial in comparion, so start with it and use it to carry the matching configure.ac changes. A little "nightmare" are all the clashing X11 / Qt type undefs, but I couldn't find a better solution while the inhibitor continues to include the X11 headers in it's header. Change-Id: I55c89c76726d30a890178488484e954207267e89 Reviewed-on: https://gerrit.libreoffice.org/74015 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-13Don't link avmediagst with gtk3 and qt5Jan-Marek Glogowski
While the VCL plugins are dynamically loaded and therefore just load their depending toolkit libraries, the GStreamer avmedia backend now links against Qt and GTK+. The GStreamer API itself is toolkit agnostic and the toolkit setup just uses a single GStreamer symbol to create the specific video sink. So the toolkit binding can simply be moved into the VCL plugin. At the point of the GStreamer toolkit setup call the GStreamer library is loaded by avmediagst, so the dlsym lookup should never fail. I also dropped the special GtkWidget handling. Using g_object_get will increase the refcount of the widget. A g_object_unref after adding it to the container seems to destroy it correctly. Change-Id: I693947e441bceb4b09bc38920e308e39142d0a35 Reviewed-on: https://gerrit.libreoffice.org/73849 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-13Qt5 move boilerplate clipboard code to the end...Jan-Marek Glogowski
... in the implementation file. Change-Id: I1f6fae0eb7c5d6973ce44320ff6d977e40d54a72 Reviewed-on: https://gerrit.libreoffice.org/73734 Tested-by: Jenkins Reviewed-by: Aleksei Nikiforov <darktemplar@basealt.ru> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2019-06-13tdf#122239 Qt5 implement lazy clipboard handlingJan-Marek Glogowski
This changes the Qt5Clipboard to a lazy loading one, which will just deliver data on read requests. This fixes not only the PRIMARY selection problems with Writer, but will generally speed up C'n'P, inside LO, because the data has not to be copied or transferred via QMimeData. This is mainly done by implementing the "mirror" interface of the Qt5Transferable, the Qt5MimeData using the retrieveData override. To prevent clipboard loss on shutdown, this sets a deep copied QMimeData of the current XTransferable, to make it persistent. This code explicitly doesn't use any of the QMimeData convenience functions and relies completely on LO's string handling, so we won't mix in eventual Qt bugs; all bugs are ours... Change-Id: I43d92a95df8fcac88dc41b00021cea0b5f040413 Reviewed-on: https://gerrit.libreoffice.org/73288 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2019-06-13Qt5 correctly hide menu bar in tabbed modeJan-Marek Glogowski
Change-Id: I179780c2df5637b8a28c3a77b829319b1a64845b Reviewed-on: https://gerrit.libreoffice.org/73924 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-12tdf#125692 SalObject always holds a SystemChildWindowJan-Marek Glogowski
Let's just face reality and store it as a VclPtr. And this is needed, because Qt, like VCL, uses deferred deletion, and has no way to filter events to QObjects out of its event queue easily. This way the qt5 plugin can report focus changes for SalObjects without a crash, which happens when you close a presentation with a video by click. And in addition it reverts the workaround introduced in commit e770bacc85a0 ("Qt5 workaround modal change after show bug"), as it seems this bug is a use-after-free error, introduced by LO. Thanks Michael Weghorn for catching that! Maybe someone should also rename SalObject... Change-Id: I0bc64ea64f95dfc7a838799c4a04de183adfefcf Reviewed-on: https://gerrit.libreoffice.org/73567 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-12tdf#125517 Qt5 implement a minimal Qt5ObjectWindowJan-Marek Glogowski
Since we can't use an input and visual transparent widget, like a GtkGrid, we have to implement input forwarding in the QWindow. Using a Qt5Widget directly results in other problems on Qt 5.12+, like these warnings (depending on the tested Qt::WA_* flags): * Attempted flush to non-raster surface QWidgetWindow(0xa386c10, name="QWidgetClassWindow") of type QSurface::OpenGLSurface (consider using Qt::WA_PaintOnScreen to exclude from backingstore sync) * QWidget::paintEngine: Should no longer be called So the current QWidget::createWindowContainer has to stay and key and mouse handling must be implemented as in Qt5Widget. And the QWindow is strangely not accessible through the windowHandle() of the container QWwidget. As a result this patch is mostly boilerplate code, publishing the Qt5Widget mouse and key handling as static functions. Change-Id: I5be5f5fa1379c6bdefab0f96604251801c252b38 Reviewed-on: https://gerrit.libreoffice.org/73566 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-12qt5: Make it compile with '-Werror=shadow'Michael Weghorn
This fixes the following issue for the GCC build with '-Werror=shadow' in place which does not show up in the default build setup since compiler flag '-Wno-shadow' is currently being set in 'RepositoryExternal.mk' for qt5 and kde5. (This will be dropped in a follow-up commit.) .../libreoffice/vcl/qt5/Qt5SvpSurface.cxx: In constructor ‘cairo::Qt5SvpSurface::Qt5SvpSurface(const CairoSurfaceSharedPtr&)’: .../libreoffice/vcl/qt5/Qt5SvpSurface.cxx:24:69: error: declaration of ‘m_pSurface’ shadows a member of ‘cairo::Qt5SvpSurface’ [-Werror=shadow] Qt5SvpSurface::Qt5SvpSurface(const CairoSurfaceSharedPtr& m_pSurface) ^ In file included from .../libreoffice/vcl/qt5/Qt5SvpSurface.cxx:12: .../libreoffice/vcl/inc/qt5/Qt5SvpSurface.hxx:27:27: note: shadowed declaration is here CairoSurfaceSharedPtr m_pSurface; ^~~~~~~~~~ cc1plus: all warnings being treated as errors Change-Id: I501657447e02675f7c6b1c9aaca670ba81715590 Reviewed-on: https://gerrit.libreoffice.org/73891 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2019-06-09tdf#125219 qt5: Try qwidget5videosink on WaylandMichael Weghorn
Try to use GStreamer's qwidget5videosink when using the qt5 (or kde5) VCL plugin on Wayland. This is strongly inspired by commit 8543fbc72fafc0d71a8760752ca2ef5b7119cb5c ("gtk3+wayland: play video via gtksink gstreamer element"). qwidget5videosink allows to directly set a 'QWidget*' for the sink's "widget" property to make it paint into this widget, s. [1] for more details. In order for this to work, the relevant Qt5 packages for QtGStreamer need to be installed (provided e.g. by package 'qtgstreamer-plugins-qt5' on Debian). If qwidget5videosink is available, video playback works as expected on Wayland. If it is not available, GStreamer will create it's own (misplaced) window(s) to show the video as is the case without this commit. Switching to e.g. qtglvideosink in the future may theoretically improve performance, since that one uses OpenGL/OpenGLES and supports hardware colorspace conversion and color balance, while qwidgetvideosink does software painting (s. [1]). Also, extending commit 9d18bc40416b651340804f44ba5fae65f3bbbcfa ("tdf#125271 under wayland without gtksink, try waylandsink") to also work with (i.e. set the right window for) waylandsink on qt5 may be worth to take a look at in the future, but didn't "just work" in a quick attempt. [1] https://gstreamer.freedesktop.org/data/doc/gstreamer/head/qt-gstreamer/html/qtvideosink_overview.html Change-Id: I6e17838dcdf5c31a1a8a07f7836a4cf36c63bd06 Reviewed-on: https://gerrit.libreoffice.org/72968 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2019-06-09Qt5Widget: lcl_retrieveSurrounding needs SolarMutexMichael Weghorn
Otherwise * starting Writer * "File" -> "New" -> "Spreadsheet" * switching back to Writer window using Alt+Tab in Plasma Wayland session results in Thread 1 "soffice.bin" received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt #0 0x00007ffff7b287bb in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff7b13535 in __GI_abort () at abort.c:79 #2 0x00007ffff7b1340f in __assert_fail_base (fmt=0x7ffff7c75ee0 "%s%s%s:%u: %s%sAssertion `%s' failed. %n", assertion=0x7ffff14b0410 "ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && \"SolarMutex not owned!\"", file=0x7ffff14b03d0 "/mnt/data/development/git/libreoffice/vcl/source/app/dbggui.cxx", line=46, function=<optimized out>) at assert.c:92 #3 0x00007ffff7b21102 in __GI___assert_fail (assertion=0x7ffff14b0410 "ImplGetSVData()->mpDefInst->GetYieldMutex()->IsCurrentThread() && \"SolarMutex not owned!\"", file=0x7ffff14b03d0 "/mnt/data/development/git/libreoffice/vcl/source/app/dbggui.cxx", line=46, function=0x7ffff14b0470 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:101 #4 0x00007ffff0e495db in ImplDbgTestSolarMutex() () at /mnt/data/development/git/libreoffice/vcl/source/app/dbggui.cxx:46 #5 0x00007ffff2026c2f in DbgTestSolarMutex() () at /mnt/data/development/git/libreoffice/tools/source/debug/debug.cxx:91 #6 0x00007ffff4eea765 in SfxBroadcaster::AddListener(SfxListener&) (this=0x555558e61620, rListener=...) at /mnt/data/development/git/libreoffice/svl/source/notify/SfxBroadcaster.cxx:94 #7 0x00007ffff4effe4e in SfxListener::StartListening(SfxBroadcaster&, DuplicateHandling) (this=0x55555a1ebe50, rBroadcaster=..., eDuplicateHanding=DuplicateHandling::Unexpected) at /mnt/data/development/git/libreoffice/svl/source/notify/lstner.cxx:104 #8 0x00007fffbfdff188 in ScTabViewShell::AddAccessibilityObject(SfxListener&) (this=0x555558c27080, rObject=...) at /mnt/data/development/git/libreoffice/sc/source/ui/view/tabvwshh.cxx:215 #9 0x00007fffbf65754a in ScAccessibleDocument::PreInit() (this=0x55555a1ebdb0) at /mnt/data/development/git/libreoffice/sc/source/ui/Accessibility/AccessibleDocument.cxx:1303 #10 0x00007fffbfd12754 in ScGridWindow::CreateAccessible() (this=0x555558c2dd50) at /mnt/data/development/git/libreoffice/sc/source/ui/view/gridwin5.cxx:443 #11 0x00007ffff06ef948 in vcl::Window::GetAccessible(bool) (this=0x555558c2dd50, bCreate=true) at /mnt/data/development/git/libreoffice/vcl/source/window/accessibility.cxx:129 #12 0x00007fffe730f9c6 in lcl_retrieveSurrounding(sal_Int32&, sal_Int32&, QString*, QString*) (rPosition=@0x7fffffffcb90: -12560, rAnchor=@0x7fffffffcba0: -13392, pText=0x0, pSelection=0x0) at /mnt/data/development/git/libreoffice/vcl/qt5/Qt5Widget.cxx:598 #13 0x00007fffe730ff17 in Qt5Widget::inputMethodQuery(Qt::InputMethodQuery) const (this=0x555556c50ec0, property=Qt::ImCursorPosition) at /mnt/data/development/git/libreoffice/vcl/qt5/Qt5Widget.cxx:656 #14 0x00007fffe786c7f7 in QWidget::event(QEvent*) (this=0x555556c50ec0, event=0x7fffffffcef0) at kernel/qwidget.cpp:8993 #15 0x00007fffe730f0d3 in Qt5Widget::event(QEvent*) (this=0x555556c50ec0, pEvent=0x7fffffffcef0) at /mnt/data/development/git/libreoffice/vcl/qt5/Qt5Widget.cxx:466 #16 0x00007fffe782e4b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x5555556480f0, receiver=receiver@entry=0x555556c50ec0, e=e@entry=0x7fffffffcef0) at kernel/qapplication.cpp:3726 #17 0x00007fffe7835950 in QApplication::notify(QObject*, QEvent*) (this=0x555555647fe0, receiver=0x555556c50ec0, e=0x7fffffffcef0) at kernel/qapplication.cpp:3485 #18 0x00007fffe851b5a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x555556c50ec0, event=event@entry=0x7fffffffcef0) at ../../include/QtCore/5.11.3/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:307 #19 0x00007fffe5bdbf6a in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x7fffffffcef0, receiver=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qcoreapplication.h:234 #20 0x00007fffe5bdbf6a in QtWaylandClient::QWaylandTextInput::updateState(QFlags<Qt::InputMethodQuery>, unsigned int) (this=0x555555655ab0, queries=..., flags=2) at qwaylandinputcontext.cpp:134 #21 0x00007fffe5bdc433 in QtWaylandClient::QWaylandTextInput::commit() (this=0x555555655ab0) at qwaylandinputcontext.cpp:98 #22 0x00007fffe5bdc4b9 in QtWaylandClient::QWaylandInputContext::commit() (this=0x555555652300) at qwaylandinputcontext.cpp:544 #23 0x00007fffe5bdc4b9 in QtWaylandClient::QWaylandInputContext::commit() (this=0x555555652300) at qwaylandinputcontext.cpp:410 #24 0x00007fffe7833aa5 in QApplication::setActiveWindow(QWidget*) (act=act@entry=0x555556f29a60) at kernel/qapplication.cpp:2088 #25 0x00007fffe7833b53 in QApplicationPrivate::notifyActiveWindowChange(QWindow*) (this=<optimized out>, previous=<optimized out>) at kernel/qapplication.cpp:2182 #26 0x00007fffe7e42ce5 in QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) (e=<optimized out>) at kernel/qguiapplication.cpp:2292 #27 0x00007fffe7e42f1d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=e@entry=0x555559c186d0) at kernel/qguiapplication.cpp:1838 #28 0x00007fffe7e1d06b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...) at kernel/qwindowsysteminterface.cpp:1032 #29 0x00007fffe5bfc6cb in QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5WaylandClient.so.5 #30 0x00007fffe72e9d7d in Qt5Instance::ImplYield(bool, bool) (this=0x5555556c46a0, bWait=true, bHandleAllCurrentEvents=false) at /mnt/data/development/git/libreoffice/vcl/qt5/Qt5Instance.cxx:345 #31 0x00007fffe72e9e8d in Qt5Instance::DoYield(bool, bool) (this=0x5555556c46a0, bWait=true, bHandleAllCurrentEvents=false) at /mnt/data/development/git/libreoffice/vcl/qt5/Qt5Instance.cxx:356 #32 0x00007ffff0ec1a66 in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at /mnt/data/development/git/libreoffice/vcl/source/app/svapp.cxx:457 #33 0x00007ffff0ec1f89 in Application::Yield() () at /mnt/data/development/git/libreoffice/vcl/source/app/svapp.cxx:521 #34 0x00007ffff0ec185e in Application::Execute() () at /mnt/data/development/git/libreoffice/vcl/source/app/svapp.cxx:438 #35 0x00007ffff7d3dfea in desktop::Desktop::Main() (this=0x7fffffffda80) at /mnt/data/development/git/libreoffice/desktop/source/app/app.cxx:1621 #36 0x00007ffff0edc6c9 in ImplSVMain() () at /mnt/data/development/git/libreoffice/vcl/source/app/svmain.cxx:203 #37 0x00007ffff0edc7ee in SVMain() () at /mnt/data/development/git/libreoffice/vcl/source/app/svmain.cxx:237 #38 0x00007ffff7d977a9 in soffice_main() () at /mnt/data/development/git/libreoffice/desktop/source/app/sofficemain.cxx:170 #39 0x000055555555495d in sal_main () at /mnt/data/development/git/libreoffice/desktop/source/app/main.c:48 #40 0x0000555555554943 in main (argc=2, argv=0x7fffffffddd8) at /mnt/data/development/git/libreoffice/desktop/source/app/main.c:47 Change-Id: I40bf501d07dde0c4610496aa1b2bb2a4051fdf2d Reviewed-on: https://gerrit.libreoffice.org/73696 Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2019-06-08KDE5 merge KDE5SalGraphics into Qt5SvpGraphicsJan-Marek Glogowski
Nothing KDE specific left in there, so just merge it. Change-Id: I11712961f2abc5e11256a158300ec6b388f9ee44 Reviewed-on: https://gerrit.libreoffice.org/73680 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-06tdf#125201 fix QWheelEvent angleDelta() handlingJan-Marek Glogowski
Comming back to my initial, known broken implementation from 2017-11 (see commit 1426437be053 ("QT5 implement some mouse handling")), which just works with mouse scroll wheels. This just fixes angleDelta() based scrolling. An additional patch might be needed, if some driver just uses pixelDelta() values, but Qt explicitly states: "On X11 the pixelDelta() value is driver specific and unreliable, use angleDelta() instead.", so we'll do just that for now. Change-Id: I1be5f9392ed475aea7ab4d965a07e1e3c2574fe7 Reviewed-on: https://gerrit.libreoffice.org/73614 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-06tdf#124118 Qt5 post non-code keys via ExtTextInputJan-Marek Glogowski
Originally I tried to implement the gtk3 way by shoving all key input in some way through the QInputMethod. But that turned out to be impossible, because all the nice input event filtering is privately hidden in the platform abstraction. And it took me much longer to realize that gtk3 is doing this. Still the delivered code point in the KeyEvent is correct, so this simply uses ExtTextInput events for non-code key events, if LO has enabled input method support for a frame. Change-Id: Ia9bb6baf013cf790deecb9675f8309e32294e982 Reviewed-on: https://gerrit.libreoffice.org/73322 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-05Qt5 workaround modal change after show bugJan-Marek Glogowski
The presentation minimizer dialog calls setVisible before execute. This results in the dialog being shown before setting the modality in execute. And this triggers a bug in the Qt / Xcb stack (gtk is fine because it directly uses XSendEvent to change the state). The result is an unmapped, modal dialog window: it's invisible and blocks the GUI. Qt believes it's show; isVisible() returns true. And my ~/.xsession-errors shows a "qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow) ... major code: 18 (ChangeProperty)" with an invalid resource id, according to 'xwininfo -tree -root'. You can find the window resource of the minimizer by its name in the full root tree and its unmapped state with 'xwininfo -id'. I originally thought of a Scheduler bug so enabled debug output for it. This is already responsible for a delay long enough to prevent the bug often. Same for doing an additional hide() and show() sequence. In the end I went with a fixed delay, but that is just a guess. In theory we could check the mapped state via Xlib in Qt's show event and manually map it using XMapWindow and the winId... I also noted that the minimizer leaks, as there are multiple new presenter resources after each show and hide... Change-Id: I2060918aa9c63d385ebb2ffee9e7a3e4196ea766 Reviewed-on: https://gerrit.libreoffice.org/73462 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-05Qt5/KDE5 always use either Qt5 or KDE5 pickersJan-Marek Glogowski
And use RunInMain for both SalInstances and for both picker types, as there is no reason to assume just the file and not the folder picker can be called from the non-GUI thread. Little drawback is the inclusion of Qt5FilePicker header in the Qt5Instance header, as Qt's enums aren't forward-declarable. Change-Id: Ie170d247a76134df9aff835393c71c9d6e907d32 Reviewed-on: https://gerrit.libreoffice.org/73416 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-04Qt5 introduce Qt5Frame::asChild() helperJan-Marek Glogowski
Just a little refactoring. Gets rid of the common used idom in the code: m_pTopLevel ? m_pTopLevel : m_pQWidget Change-Id: I3e96687d9d02c0b1a5537c6b6cea53e1ca3a2067 Reviewed-on: https://gerrit.libreoffice.org/73414 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-03Qt5 use precise timer to prevent unneeded restartsJan-Marek Glogowski
We just have one driving timer. Not much to sync with. Gets rid of these annoying scheduler restart messages. The idea of coarse, synced timer events sounds nice to have, but LO currently can't handle it in a sensible sense.. Change-Id: I169c2bb582aca0e03b00e24dc364ac9b19162c3b Reviewed-on: https://gerrit.libreoffice.org/73392 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-03Qt5 refactor and move XTransferable implementationsJan-Marek Glogowski
There is already duplicate code getTransferDataFlavorsAsVector. Maybe getTransferData can be also merged later. Change-Id: Iaa1c16990c1f19757f04944bcd21f395f6b8f69b Reviewed-on: https://gerrit.libreoffice.org/73301 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-06-03Qt5 remove header using namespaces and Vcl prefixJan-Marek Glogowski
This is mainly about the using namespace in the Qt5Clipboard header. While at it get rid of the Vcl prefix. Change-Id: I62a804a83afe2feb4bf130eb5475790bc52365c4 Reviewed-on: https://gerrit.libreoffice.org/73287 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>