summaryrefslogtreecommitdiff
path: root/vcl/qt5/QtInstance.cxx
AgeCommit message (Collapse)Author
2022-09-01qt: Add include needed with qtbase dev branchMichael Weghorn
`qVersion()` has been moved to a different header in qtbase commit [1]: commit 50b05e3e2ad969abf4b939d5db2253380e47d775 (gerrit/dev) Author: Sona Kurazyan <sona.kurazyan@qt.io> Date: Tue Aug 30 10:37:00 2022 +0200 Move qVersion() from qglobal.h to qlibraryinfo.h Since qVersion() might be called also from C code, disable the parts of qlibraryinfo.h that are relevant only for C++ code if __cplusplus is not defined. [ChangeLog][Potentially Source-Incompatible Changes] qVersion() is moved from qglobal.h to qlibraryinfo.h, '#include <QtCore/QLibraryInfo>' needs to be added where it's used. Task-number: QTBUG-99313 Change-Id: I3363ef3fa4073114e5151cb3a2a1e8282ad42a4d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> [1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=50b05e3e2ad969abf4b939d5db2253380e47d775 Change-Id: Iafeb0ed6a77420f9a303d8ec4d3c5ba29c6f4b19 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139221 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-04-21tdf#148699 Qt track the active / shown popupJan-Marek Glogowski
I have no idea, if there can be multiple active popups in LO in some way. There can be multiple FloatingWindow and gtk does count them in m_nFloats... There is a whole lot going on in gtk3 related to isFloatGrabWindow(), with "funny" comments like: // FIXME: find out who the hell steals the focus from our frame So this goes with some "optimistic" approach: there is just one active popup, so we can track it in QtInstance. It WFM... Change-Id: I9778587696e1ad9e641dba4f102e2e921266eee6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133249 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-01-21VCL fix shutdown when run via system loopJan-Marek Glogowski
Adds DoQuit and SAL_USE_SYSTEM_LOOP to complement DoExecute. Makes it easier to switch between a LO with and without nested event processing. Unfortunatly the recovery dialogs run outside of Application::Execute(), so this currently also disables recovery handling. Follow-up (and no more Emscripten-specific) change to commit 93133585b5b52e38defc3162eeb1e7704dceafcb ("WASM optionally run any app via system loop"). Change-Id: I1b622065d7fa0c5ad03a7c7daaf8241dcc3f09a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128717 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-19WASM optionally run any app via system loopJan-Marek Glogowski
Allows LO to run via system event loop instead of having an own one and processing system events as needed. Needed for WASM, so the browser isn't blocked, as there is no way to run the browser mainloop from WASM. Generally an alternative to running LO in a WebWorker and communicating to some frontend. Change-Id: I24955638827f3b8c04240845ffc781cd28f2aa29 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128602 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-16Qt notify LO of many QScreen related eventsJan-Marek Glogowski
LO just has a single display event, SalEvent::DisplayChanged, Qt has a multitude. So this will generate multiple LO notifications. I don't see any reasonable way to prevent that. Doesn't seem a problem here. Change-Id: I2f11e53765869a4ca292a1d337347e4e7470e3c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128474 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-14VCL drop m_pInstance from *nix SalDataJan-Marek Glogowski
AKA the "*nix SalData untangling" commit. The original plan was to get rid of vcl/inc/saldatabasic.hxx and even SalData for all the *nix backends. But after many backs and forths, reinspecting the code and imagining the resulting code, I decided against that plan. All these variants would have resulted in reinterpret_cast calls, I wanted to prevent. And they would have required larger renames for no benefit. An other, related idea was to include all SalData implementations in the vcl/inc/svdata.hxx header, but that seemed like an include explosion, so was also dropped. I tried to untangling iOS from using GenericUnixSalData, as it doesn't use any of it's features. The new, minimal SalData should be sufficient. I'm leaving the easier drop of mpInstance from the Windows and MacOSX backend as a minimal interesting EasyHack. Change-Id: I5be01c1f42131a7e31cb30899392308e1e2de53b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128402 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2022-01-07VCL move platform code from mouse.cxx into pluginsJan-Marek Glogowski
... by moving it into ImplCreate(DragSource|DropTarget). The existing Create* variant now checks for headless mode and the IsRunningUnitTest flag, before creating the platform variants. There are two small helpers to initialize either X11 or Ole based UNO DnD interace implementations. Unfortunatly Windows requires to move two dtrans header files, but at least any other changes are minimal. Change-Id: Id79459ad71a26243b1c9cb1fe38ab236b0ab8fa6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128049 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-11-05tdf#144994 QtInstance::CreateMenu needs SolarMutexMichael Weghorn
It can be called from extensions (as is the case e.g. for LanguageTool, s. tdf#144994 comment 19; assertion is hit after clicking around in the menu a bit) and 'RunInMainThread' requires that the SolarMutex is held. Change-Id: I282ef6a21e60b636abb27aeba332ae3a634ce680 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124750 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-10-22qt: Adapt log area: "vcl.qt5" -> "vcl.qt"Michael Weghorn
And also: "vcl.opengl.qt5" -> "vcl.opengl.qt" Change-Id: I86f8a34cb8c1303a81ffbf40c801ba628f3fa0d4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124065 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29qt: Use actual major Qt version number in toolkit IDMichael Weghorn
This makes the qt6 VCL plugin actually show up as such instead of "qt5" in "Help" -> "About LibreOffice". Change-Id: I33804dc779c7f2692be260353dda2edc86ea8544 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122809 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29qt6: Add a qt6 VCL pluginMichael Weghorn
This adds a new "qt6" VCL plugin based on Qt 6. Building the plugin is enabled by autogen option '--enable-qt6' (and optionally setting 'QT6DIR' as needed). Use the 'SAL_USE_VCLPLUGIN=qt6' environment variable before running LO to select this VCL plugin. Taking qt6 into account at all relevant places certainly still requires follow-up changes, but this builds and runs with a self-compiled qtbase from the 'dev' git branch as of commit 3ce0672143d2eb3c3809f82998a4d71c5800d77a. I didn't see anything obviously broken in a quick run, but didn't test much. This reuses and shares the qt5 VCL plugin code; the qt6 headers and sources for now just '#include' the qt5 ones. Version checks are used for the code places that need different handling to be built against Qt 6. The build system parts in this commit were mostly done by copying the qt5 equivalents, then adapting as needed. Some notes on things I came across while porting to qt6: 1) At least in my self-compiled Qt versions, 'moc' (the meta-object compiler) is located in the 'libexec' subdirectory in 'QT6DIR', while the Qt 5 equivalent is located in the "bin" subdirectory of 'QT5DIR', so the configure.ac check uses the former. 2) moc does not process classes from the included headers. Since the headers in 'vcl/inc/qt6' just '#include' the ones from 'vcl/inc/qt5', running moc on the qt6 headers doesn't work, so moc is currently run on the qt5 headers for qt6 as well (s. 'vcl/CustomTarget_qt6_moc.mk'). That will have to be adapted in case the qt6 VCL plugin uses "own" headers instead of just including the qt5 ones at some point. 3) QX11Extras has been removed from Qt 6. [1] says: > Changes to Qt X11 Extras > > The QX11Info class has been removed. > > Clients that still rely on the functionality can include the private > header <QtGui/private/qtx11extras_p.h> as a stopgap solution. To enable > private headers use QT += core-private with qmake, or add a project > dependency to Qt::CorePrivate with CMake. I didn't take any closer look, just dropped the use of QtX11Extras for qt6 for now. 4) XCB_ICCCM is no longer needed. It is only used in qt5 to workaround a Qt bug fixed in Qt 5.12, s. commit fe2baf9e84e0ca9aeaa683e37076f57fa3f38dca Author: Jan-Marek Glogowski <jan-marek.glogowski@extern.cib.de> Date: Tue Dec 3 08:32:58 2019 +0100 Qt5 fix missing XCB_ICCCM_WM_HINT_WINDOW_GROUP 5) X11-specific code is still used for key modifier handling. Therefore, still check for the XCB headers when 'USING_X11' is set in configure.ac, and use a 'QT6_USING_X11' define (as qt5 uses 'QT5_USING_X11'). 6) There's currently no Qt 6 video sink for GStreamer. As of today, qt-gstreamer is unmaintained and there is no Qt 6 version. The project's README [2] says: > 0. Maintenance Notice > --------------------- > > This code is unmaintained. You can use it at your own risk. > > If you want to integrate video display in your QML-based UI, > you should consider using 'qmlglsink', from gst-plugins-good. > This is a well supported video sink that uses the generic > gstreamer-gl stack and is in many ways superior to 'qtquick2videosink' > that is provided by qt-gstreamer. You can use this code as an example: > https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/qt/qmlsink > > If you are not interested in using QML in your UI, then you > may use one of the other elements provided by this module > (see below). If you do that, it would be helpful to let us > know that this code is still useful to you. We may consider > adding these elements in one of the core gstreamer modules. > > If you are here for the Qt-style bindings, I'm sorry to disappoint you. > The alternative is to use the C API, or the GStreamermm C++ API. > Qt-style bindings are cool, but unfortunately they are very hard > to maintain because they are written by hand. If you are interested > in continuing this project, you are welcome to implement a > generator for them, probably based on GObject-Introspection. > I am happy to provide directions if you want to pursue such a thing. Therefore, the Qt video sink handling is qt5-only and the corresponding handling for GOBJECT (used for the GStreamer video sink handling) was not taken over for qt6. This presumably means that video playback in Impress presentations does not work when using qt6 with they Qt Wayland plugin, s. tdf#125219 for the corresponding bug for qt5/kf5. (I did not build the qtwayland module to actually test this, though. Video playback with the Qt xcb plugin in a Wayland session works.) [1] https://doc-snapshots.qt.io/qt6-dev/extras-changes-qt6.html [2] https://cgit.freedesktop.org/gstreamer/qt-gstreamer/tree/README Change-Id: Ib105ccfb2c3630ec5d5403793a3cd9ba31d85bdf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122808 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29qt5: Drop "5" from VCLPLUG_QT5_{IMPLEMENTATION,PUBLIC} definesMichael Weghorn
Rename those to no more include the Qt version number, since they will be used for the upcoming qt6 VCL plugin as well. Change-Id: I49bf362b830e07193dca03524e0d6001d0d191a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122807 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29qt5: Rename sources + headers according to new class namesMichael Weghorn
This renames the source and header files according to the new class names without a "5" in them, as mentioned in Change-Id: Idf422f82ca9dafbb70e9a64de9c8cfc4cc8c0909 (qt5: Remove "5" from class names in qt5 VCL plugin): > Renaming the headers and source files will be done > in a separate commit to make tracking git history easier. Change-Id: If955e77c8ba508d0a2e01e3a9df1be6dc04c4e4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122806 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>