| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
It's more efficient than we are. This also enables the code to work in
the unlikely case of an ELF platform without RTLD_DEFAULT.
Change-Id: Ib306f8f647014b399b87ffff13f12f8aeeb2589a
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the normal case, this change is a no-op. In case RTLD_DEFAULT isn't
defined, this makes the job of the optimizer easier to detect that the
static variable is never modified and that it can do a lot of dead code
elimination.
This also enables the optimization in the next commit.
Change-Id: Ib306f8f647014b399b87ffff13f12f40a359233b
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X server may send RROutputChangeNotify event with null crtc and mode,
when it switches an output mode. Request RROutputInfo to distinguish
this case from the case when the output is explicitly disabled.
Change-Id: I4c2356ec71dbcc8013009ea8a6f46dd11f19d6bb
Task-number: QTBUG-44158
Task-number: QTBUG-46786
Task-number: QTBUG-46822
Reviewed-by: Daniel Vrátil <dvratil@redhat.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On my system, this fixes the misbehavior of Qt applications when the (only) active screen is
switched, e.g. from an external screen to the laptop.
This behavior is caused by the screen() of widgets to be set to NULL when their screen goes away.
When a new screen comes online, the widgets *should* be told about it, but they are not. The only
place that "maybeSetScreen" is called is when an existing screen changes its geometry, but not
when a screen gets enabled without its geometry being affected in any way (e.g. because it was
just disabled via xrandr, but has been connected all along). This makes sure that "maybeSetScreen"
is also called when a screen gets enabled.
Task-number: QTBUG-47041
Change-Id: Ic72d6beaa544bf9a4efdbea0830b1bc0d6ce5362
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SM_CLIENT_ID is required by kwin for proper session management.
- move client leader initialization from screen to connection
- add SM_CLIENT_ID property to client leader
Change-Id: I19fb0d098811c865f6f13d5bc3e59a173c596a65
Task-number: QTBUG-46310
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some window managers don't reparent the client window into the frame,
so the old method of calculating frame margins by the geometries of the
window and it's frame window is not suitable for them. Use it only as a
fallback.
Change-Id: Ie4d62370425effef4dd91bf27d98e3746e8a375e
Task-number: QTBUG-2280
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By setting QT_XCB_GL_INTEGRATION to the special value "none", no plugins
will be considered for loading. This matches what eglfs does with
QT_QPA_EGLFS_INTEGRATION.
This allows widget or raster-QWindow-only apps to start up faster by not
spending time on plugin loading and potential initialization steps there.
Task-number: QTBUG-46765
Change-Id: Ifeec3548a9b58f619a18e0be75fe4a9f489677a9
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Switch to using the pointer events from XI2 when touch is available (i.e.
version is >= 2.2). This allows us to select and grab the button and motion
events together with the touch ones. This prevents the issue of not getting
touch events when grabbing via the plain xcb functions.
To prevent touch sequences from being replayed after ungrabbing (for example after
dismissing a popup that caused a grab), we try to accept touches via XIAllowTouchEvents.
Unfortunately this leads to a deadlock and therefore we can only do it when we know
we have a new enough libXi. This is a configure time check which is not ideal since
the system on which apps run can have a newer libXi than the machine that did the Qt
build, but seems like the best we can do.
The environment variable QT_XCB_NO_XI2_MOUSE can be set to 1 in order to prevent
processing mouse events through XInput. This restores the old behavior with broken
grabbing.
[ChangeLog][QtGui] Pointer event delivery on X11 is now done via XInput 2.2+ when available.
Done-with: Michal Klocek <michal.klocek@theqtcompany.com>
Done-with: Alexander Volkov <a.volkov@rusbitech.ru>
Task-number: QTBUG-43525
Task-number: QTBUG-45054
Task-number: QTBUG-30417
Change-Id: I7cb2002b31bef4cd527aa427549dcf2d5467968e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
| |
Change-Id: I4069fdb75c2ef27fd4ac30de0963472c89165b20
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
for xcb applications to use a specific visual id when creating windows.
Also make it possible to retrieve the visual id of a specific window
with QXcbWindowFunctions::visualId(QWindow *window).
UINT_MAX is used as an invalid visualId.
Change-Id: If62ada119ce8f9174cc211f53bbf1ce1bb7d021a
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
The virtual desktop may be composed of several outputs which are
represented by the QXcbScreen class. XSettings are related to
the virtual desktop, so introduce a QXcbVirtualDesktop class and
store QXcbXSettings in it.
Change-Id: Ib2261675ef8e5136592d4b856bc84646db3a3af4
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
| |
And replace Xlib define GenericEvent with
XCB define XCB_GE_GENERIC.
Change-Id: Ie82cb7f58b18fc0d253e4b7fd65495608df0a7d9
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Some older window managers and utilities still ignore _NET_WM_NAME.
Task-number: QTBUG-42209
Change-Id: Iff93c8188a0a73b04cdf361add153cd818ac670f
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Martin Gräßlin <mgraesslin@kde.org>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When having a vnc server with pixel format bgr888, we may not have
a working GL integration. (we may not have one regardless of the
pixel format in fact)
We should still keep on attempting to create a regular SHM window
for RasterGLSurface windows too, to keep regular widgets apps working.
Task-number: QTBUG-42776
Change-Id: Idbf8de29694613b240bd27affcc3d80810ce1460
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use RRGetScreenResourcesCurrent to get the screen's outputs.
It is fast but it may return nothing if the configuration is not
initialized wrt to the hardware. Call RRGetScreenResources in this
case to get the up-to-date configuration.
Task-number: QTBUG-40207
Change-Id: I84dc8a45b89d0bf8881a72b02e81f701637cdb6a
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Daniel Vrátil <dvratil@redhat.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This partially reverts 51ada7734ad780178ecced11e0dff454dfc2e5f2
because it's necessary to keep some scenarios with vnc and
remote X servers working. When an application is starting,
if we don't find the xrandr outputs but we know the dimensions
of the screen, we should still be able to put windows onto that
screen; but when we already had known xrandr outputs and then they
were removed, that's the case where we want to stop rendering
(and have no screen instances) until the screen(s) are reattached.
Task-number: QTBUG-31389
Task-number: QTBUG-40174
Task-number: QTBUG-42985
Change-Id: I13d0996ba6ece78c4ebcd2c3a59f1617c1c7f0fa
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was easy to hit with KDE Plasma 5.2.1; KWindowSystem called
QX11Info::appRootWindow() which in turn tried to dereference a nullptr
returned from QXcbConnection::primaryScreen().
#0 QXcbConnection::rootWindow (this=<optimized out>)
at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:1303
#1 0x00007fc26da096d7 in QXcbNativeInterface::rootWindow (this=this@entry=0x7fc27d1734d0)
at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:425
#2 0x00007fc26da0ab21 in QXcbNativeInterface::nativeResourceForIntegration (this=0x7fc27d1734d0, resourceString=...)
at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:223
#3 0x00007fc27c563148 in QX11Info::appRootWindow (screen=screen@entry=-1)
at qtx11extras-5.5.9999/work/qtx11extras-5.5.9999/src/x11extras/qx11info_x11.cpp:158
#4 0x00007fc27a98c444 in NETEventFilter::nativeEventFilter (this=0x7fc27d425b60, ev=0x7fc264004ad0)
at kwindowsystem-5.7.0/work/kwindowsystem-5.7.0/src/kwindowsystem_x11.cpp:192
#5 0x00007fc2795d0a8a in QAbstractEventDispatcher::filterNativeEvent (this=<optimized out>,
eventType=..., message=message@entry=0x7fc264004ad0, result=result@entry=0x7ffc96ecf348)
at qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qabstracteventdispatcher.cpp:460
#6 0x00007fc26d9ea941 in QXcbConnection::handleXcbEvent (this=this@entry=0x7fc27d173580, event=event@entry=0x7fc264004ad0)
at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:971
Change-Id: I98a5d767cd7e143f00666f6fc78e9dc10893513d
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Querying X server for data can be very expensive, especially when there
are multiple processes querying it at the same time (which is exactly what
happens when screen configuration changes and all Qt applications receive
XRandR change notifications). This patch is aiming to reduce the number of
queries to X server as much as possible by making use of detailed information
available in the RRCrtcChangeNotify and RROutputChangeNotify events.
Firstly, the backend now does not rebuild all QXcbScreens on any change (which
involved the very expensive xcb_randr_get_screen_resources() call), but only
builds the full set of QXcbScreens once in initializeScreens(), and then just
incrementally updates it.
Secondly, it avoids querying X server for all screens geometry as much as
possible, and only does so when CRTC/Output change notification for a particular
screen is delivered.
As a result, handling of all XRandR events on screen change is reduced from tens
of seconds to less then a seconds and applications are better responsive after
that, because we don't block the event loop for long. The X server is also more
responsive after the screen change, since we are not overloading it with requests.
Change-Id: I9b8308341cada71dfc9590030909b1e68a335a1f
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Whenever a QWindow is associated with a QScreen, the screen is expected
to be a real working one, so that rendering continues to be possible.
This partially reverts 52f5e50f11a3ba82e32dc2efc656e4021a3fa4f5
[ChangeLog][QPA][Xcb] If all QScreens (xcb outputs) are disconnected
while an application is running, QGuiApplication::primaryScreen() will
return null until a screen is connected again.
Task-number: QTBUG-40174
Task-number: QTBUG-42985
Change-Id: Id1b29dd70eaf3f2e7fd477516ce7e2bf24e095f6
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
It produces too much log output, so now it must be enabled by both
defining Q_XCB_DEBUG and enabling the qt.qpa.input category.
Change-Id: Id2eb7545a7cd07dadd70da31a1f17c2999feec0d
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently Qt uses the QPlatformIntegration::StyleHint
SynthesizeMouseFromTouchEvents to check whether to synthesize mouse
events from touch events. But not only platform plugins can produce
touch events, they can be created by e.g. QTest::touchEvent() and in
this case we almost definitely need synthesizing regardless of the
platform.
This commit introduces a QTouchDevice::MouseEmulation capability which
replaces use of the QPlatformIntegration::SynthesizeMouseFromTouchEvents.
So it's possible to pass QTouchDevice without this capability to
QTest::touchEvent() and be sure that mouse events will be synthesized.
Notice that touch pads always emulate mouse events.
As a result we can activate some tests which were disabled for specific
platform configurations by commits 6c1670d8c273819435867c42725c0db0eee597dc
and e9760f1559361c39f269fb89f1ebd01f6ee8378d.
Change-Id: Idc82fa4007a095fc1cb5934979361b0023d2b793
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Some existing debug output required recompiling with Q_XCB_DEBUG.
Being able to enable this debugging in the field will help with
troubleshooting any remaining screen management issues.
Change-Id: Ie67b0009d4b00b0d39fde0fb4d8d54fcf89d6693
Reviewed-by: Sandro Mani <manisandro@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
| |
Ensure QGuiApplicationPrivate::screen_list always contains at least one
screen, and that the first item (returned by QGuiApplication::primaryScreen)
is always the current primary screen
Task-number: QTBUG-42985
Change-Id: I08b880b3e94387f28230ed5fc738bceea943bad3
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Through the chain of code called by QPlatformIntegrationFactory::create, there
are cases where QGuiApplicationPrivate::platform_integration is accessed
(typically through QGuiApplicationPrivate::platformIntegration()) before the call
to QPlatformIntegrationFactory::create has returned.
Change-Id: I7805b72be5b56aed5cb8ce30cb908743c9b1f91b
Task-number: QTBUG-44388
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
examples/xml/htmlinfo/simpleexample.html
examples/xml/rsslisting/rsslisting.cpp
qmake/generators/win32/msbuild_objectmodel.cpp
src/3rdparty/harfbuzz-ng/src/hb-private.hh
src/corelib/global/qlogging.cpp
src/corelib/io/qstorageinfo_unix.cpp
src/corelib/thread/qwaitcondition_unix.cpp
src/gui/kernel/qguiapplication.cpp
src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
src/testlib/doc/src/qt-webpages.qdoc
tests/auto/other/qaccessibility/tst_qaccessibility.cpp
Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We don't receive ButtonRelease event after closing a popup
by clicking outside of the client area. Thus the internal
state of mouse buttons in the xcb plugin becomes outdated
until we receive ButtonRelease event.
This commit updates the internal state of mouse buttons
from MotionNotify events. So when a user will move a mouse
on the client area, the xcb plugin will send a mouse event
with updated buttons to Qt Gui and QGuiApplication will
detect the following mouse events correctly.
Task-number: QTBUG-32609
Task-number: QTBUG-35065
Task-number: QTBUG-43776
Task-number: QTBUG-44166
Task-number: QTBUG-44231
Change-Id: Ica334dfbf04f7ef81db86b25262328fe5da11808
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.
Outdated header.LGPL removed (use header.LGPL21 instead)
Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)
Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination
Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Don't crash; restore windows when all screens are removed and re-added.
xcb: on configure notify, check for screen change: it may be that a
window belonging to a screen which was removed has now gotten mapped
to the new screen. On screen change, send a synthetic expose event,
because the real expose events already happened.
Task-number: QTBUG-38326
Task-number: QTBUG-32973
Task-number: QTBUG-42985
Change-Id: If334f55c248468ad3c95e7066bb14eca377d2050
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Destroy the GLX or EGL backend. This also requires fixing an uninitalized
member in the native interfaace handler.
Besides fixing the leak this will also do eglTerminate on exit, which is
very beneficial for proper resource cleanup and avoids "Display is destroyed
with resources" warnings on Mesa with debugging enabled.
Change-Id: Ibd62d6964e86ac1319abed1f06b478327c348a0e
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I533f1d989b5f4b427ce572620e27c3870a64c2ae
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously QPlatformScreen was automatically deleting its QScreen
in ~QPlatformScreen(). That means that we cannot use QScreen's
methods when the screen is being removed, because doing so would
call virtual methods of QPlatformScreen. By that point the
QPlatformScreen subclass object does not exist anymore, and we
call the default implementation instead of the subclassed one, or
get a crash for the pure virtual methods. This happens for example
when removing a screen which contains a QWindow with some QML item
using QQuickScreenAttached.
This patch adds a QPlatformIntegration::destroyScreen() function,
which deletes the QScreen and later the QPlatformScreen.
~QPlatformScreen will still delete the QScreen if it was not deleted
with destroyScreen(), so code not ported to the new approach
will continue to work as before, with only a warning added.
Task-number: QTBUG-41141
Change-Id: Ie4a03dee08ceb4c3e94a81875411f6f723273fe1
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][QPA][Xcb] GLX and EGL code paths are now dynamically
resolved, making it possible for one build of a plugin to use both code
paths. Default is to use the GLX code path if available. This can be
overwritten by specifying QT_XCB_GL_INTEGRATION=xcb_egl as an
evnironment variable. Enable qt.xcb.glintegration.debug to get debug log
output of what integration is used
Change-Id: Ia9fa95fcca3d901b91dadb8c98a695fea0ae3b1e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|/
|
|
|
| |
Change-Id: Ieb3ccd18a2bdde9ef7628a031266004cd55480da
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently getting QXcbScreen* for primary screen is too messy and it
wrongly uses QXcbConnection::primaryScreen() as an index in
QXcbConnection::screens() although QXcbConnection::screens() returns
the primary screen as the first item in the list since
3c8eb404877df9c967d81fa9df7d718c538fb407.
So to clear the API rename primaryScreen() to primaryScreenNumber(),
add QXcbConnection::primaryScreen() that returns correct QXcbScreen*
and use it directly.
Change-Id: Icb7391aa3e82b32ca48f2bda764dcf7ffd89cc47
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
| |
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL
Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The isAlwaysAskOption was removed in 38621713150b663355ebeb799a5a50d8e39a3c38
so manually removed code in
src/plugins/bearer/connman/qconnmanengine.cpp
Conflicts:
src/corelib/global/qglobal.h
src/corelib/tools/qcollator_macx.cpp
src/corelib/tools/qstring.cpp
src/gui/kernel/qwindow.cpp
src/gui/kernel/qwindow_p.h
src/gui/text/qtextengine.cpp
src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h
src/plugins/platforms/android/qandroidinputcontext.cpp
src/plugins/platforms/xcb/qglxintegration.cpp
src/plugins/platforms/xcb/qglxintegration.h
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
src/testlib/qtestcase.cpp
src/testlib/qtestlog.cpp
src/widgets/dialogs/qfiledialog.cpp
src/widgets/kernel/qwindowcontainer.cpp
tests/auto/corelib/tools/qcollator/tst_qcollator.cpp
tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Was added with 19a39a4 to allow no input context to be created.
Broken by commit 24c10b0. Especially if compose input context didn't
get compiled, the first input context found was loaded.
Also made Xcb integration use compose plugin by default.
Change-Id: I992eaa8b383320e4ab725bb7b79f561f4f841458
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The xcb auto-repeat checking code checks for queued events on the target
(focused) window. This breaks down if you have a native child widget,
and QKeyEvent::autoRepeat is never true.
Task-number: QTBUG-21500
Change-Id: Ia979edfa8a3afce07a3e1cbaa778541ffb9ce5dc
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If qtlogging.ini contains a rule
qt.qpa.input*=true
then all available input event logging will be enabled on any platform.
There are more specific categories for touch, tablet, gestures,
input methods etc. on some platforms.
Change-Id: I8754ce23df8f0b750a4b7dfcf3afe5bab800ead8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
[ChangeLog][Platform Specific Changes][X11 / XCB] environment variables
QT_XCB_DEBUG_XINPUT and QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and
replaced with logging categories qt.qpa.events.input and
qt.qpa.devices respectively
Change-Id: I287a56de5cb9ece2ac14df6510b9aa52c864c99b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We no longer support the maemo/meego platform, so we can remove the
specific code for that platform.
Change-Id: Ia7f0730eba2d96794b97b7ca4753f63a2d7bc2a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
DRI2 clients don't receive GLXBufferSwapComplete events on the wire.
Instead the event is synthesized by the DRI2 WireToEvent handler,
so for an application to be able to see it we have to convert the
synthetic event to an xcb_glx_buffer_swap_complete_event_t and pass
it to the native event filter.
Change-Id: Ic466ff26487937b03f072a57e0ee4df335492a5f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Issuing a metacall from swapBuffers is dangerous since the window
may get destroyed by the time the slot is invoked.
This patch changes it to use an event, which is more efficient anyway,
that can be invalidated in case the QXcbWindow is destroy()'ed before
the event is delivered.
Change-Id: I44618ac1cb8b221aecce001ea39702164dcab6a5
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The non-threaded QXcbEventReader invokes processXcbEvents when the
EventDispatcher is about to block. This method ensures that the xcb
connection is going to flush. Applications can use low level xcb code
in that case without having to ensure to flush the connection before
going to block again.
With the threaded QXcbEventReader this didn't work and applications
which for example changed a window property and waited for the matching
property notify event were stalled.
This change ensures that also in the threaded case the connection gets
flushed when the EventDispatcher is going to block.
Change-Id: If1dc5eb96e2f1bde10b7a40af550b0608c62f70c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change improves the synced resizes of xcb windows and adds support
for synced resizes of glx windows.
The QXcbWindow keeps a better track on whether the window manager
expects a sync and can be in one of three states:
* no sync required
* sync required, but configure notify event not yet received
* sync required and configured
By tracking this in the QXcbWindow itself the backing store can make
use of this information and doesn't need an own heuristic to decide
whether a sync is needed.
Also this allows to add support for synced resizes of windows with an
OpenGLSurface. This is accomplished by checking the sync state after
swapping buffers. As the OpenGL context may be bound to a background
thread the sync is done using a QueuedConnection to ensure that the
sync happens in the thread which created the xcb window.
So far this is only added for GLX.
This significantly improves the resize experience of QQuickWindow and
also the initial mapping with a composited window manager in case the
compositor uses the sync protocol to determine whether the window is
ready to get painted on screen.
Change-Id: Ied0261873043d785dec652d2821fc3638292fa36
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
The button state part of the XI2 events appears to be badly constructed
on some devices and platforms. Even where supported the 'detail' field
of the XI2 events is what we should be reading since it indicates the
button the event refers to and not just the state of all buttons.
Task-number: QTBUG-38169
Change-Id: Iedb7971194b3c27448b72c285a54100c511c17e4
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
Ensure we fall back to using wheel button events if xinput 2.1
scroll events are not available. Handles lack of xinput 2.1
support in the server or in the input devices drivers.
Task-number: QTBUG-38169
Change-Id: Ie4ad9069f648d0ab02d8f9540ed01ad58fd9e9d8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When Xlib detects that its underlying XCB connection got into an error
state, it calls its I/O error handler. However, the default
implementation doesn't print the error code from XCB which might be
useful for debugging.
This commit adds an I/O error handler which prints the error code from
XCB with a string describing the error and then calls Xlib's default
error handler.
Change-Id: I7f1fb3f1e8d0fdc3ac9db03ae7d154330c31db0c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current logic requires primary->output to not be specified, or
match the output number. This fails when the output by that number
doesn't currently have a display attached, as non-connected outputs
are skipped. This means setting the display to :0.1 for Qt5 will put
the window on :0.0 and it can't be moved to :0.1 after the fact. The
solution is to pick the first output on the requested screen, then
override if an output exactly matches the primary output value. That
way it will at least be on the requested screen.
Tested with Xephyr, ATI, and nVidia (proprietary driver), where the
nVidia had the primary output disconnected.
Task-number: QTBUG-15418
Change-Id: I7951dcef74cb135dc12a6e133a71c5852eae9778
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the new X11 support API xkb_x11_* released in libxkbcommon version 0.4.0.
From the commit message where this API was introduced:
"These are function to create an xkb_keymap directly from XKB requests
to the X server. This opens up the possibility for X clients to use
xcb + xcb-xkb + xkbcommon as a proper replacement for Xlib + xkbfile for
keyboard support.
Why not just use the RMLVO that the server puts in the _XKB_RULES_NAMES
property? This does not account for custom keymaps, on-the-fly keymap
modifications, remote clients, etc., so is not a proper solution in
practice. Also, some servers don't even set it. Now, the client just
needs to recreate the keymap in response to a change in the server's
keymap (as Xlib clients do with XRefreshKeyboardMapping() and friends)."
This patch moves XKEYBOARD presence decision from compile time to runtime
for a proper remote X client support.
Task-number: QTBUG-31527
Task-number: QTBUG-32760
Change-Id: I4d402668cda2126ef180b27022154f96b1874b1d
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|