Age | Commit message (Collapse) | Author |
|
Change-Id: I0bd1d26f6fc4052b812fde33ebd1d63111426942
Reviewed-on: https://gerrit.libreoffice.org/76627
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: I357c004e724ebe580a121bf7ecdc63da9c02343f
Reviewed-on: https://gerrit.libreoffice.org/74593
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Julien Nabet <serval2412@yahoo.fr>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: I53a019f05978bab62ad0da3d0eb08f37f8ec1e18
Reviewed-on: https://gerrit.libreoffice.org/74414
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
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>
|
|
Change-Id: I95d7efef5021b1a43c1e8a9e4b6aa0be47ad3302
Reviewed-on: https://gerrit.libreoffice.org/74312
Tested-by: Jenkins
Reviewed-by: Jens Carl <j.carl43@gmx.de>
|
|
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>
|
|
.. 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>
|
|
Change-Id: Ie1b2e77145c4f84dc7d2c1edd214363b7fa0625e
Reviewed-on: https://gerrit.libreoffice.org/74294
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
|
|
Change-Id: Icb7c22cf4ac95eab54d04e79312fb471ca27bceb
Reviewed-on: https://gerrit.libreoffice.org/74246
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I0ed575a11c84c2e8aabfa1b4204ba6ae27393d5f
Reviewed-on: https://gerrit.libreoffice.org/74245
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
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
|
|
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>
|
|
Change-Id: I27a00608a5dba9fc467c61d5919233972b293811
Reviewed-on: https://gerrit.libreoffice.org/74093
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
Change-Id: Iab82151b8d1a8281c9999983b9de5f35dfb0442e
Reviewed-on: https://gerrit.libreoffice.org/74013
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
|
|
Change-Id: I16f502fd3365f8db330c4228e44924c03ef227c1
Reviewed-on: https://gerrit.libreoffice.org/74077
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
Change-Id: Ic0b38891daf699f232a7dbc1378e30c53289d067
Reviewed-on: https://gerrit.libreoffice.org/74076
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
Change-Id: I55458141b212c0c2ed4b67d773a5cee6ff10cc18
Reviewed-on: https://gerrit.libreoffice.org/74078
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
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>
|
|
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>
|
|
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>
|
|
... 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>
|
|
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>
|
|
Change-Id: I179780c2df5637b8a28c3a77b829319b1a64845b
Reviewed-on: https://gerrit.libreoffice.org/73924
Tested-by: Jenkins
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|