summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbconnection.h
Commit message (Collapse)AuthorAgeFilesLines
* xcb: don't do mouse synthesis from touch unless we find a reasonShawn Rutledge2013-05-071-0/+2
| | | | | | | | | | | | One reason is when we are using XInput 2.2, because touch devices will then generate touch events only. For the other X11 scenarios, X11 does its own mouse emulation. QPlatformIntegration::styleHint() wasn't overridden yet. The remaining hints are TODO for now. Change-Id: I2e444a00a18b33ed840ebfa8d8218655c2c39aad Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Add QXcbWindowEventListenerJørgen Lind2013-04-261-4/+29
| | | | | | | | This makes it possible to listen for events on xcb_window_t which are not platformwindows inside the xcb plugin Change-Id: Ic9ec17ed757a7f9a5302ef2759c119a72bac573c Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Moving logic from Qt4 for grabbing the X serverJørgen Lind2013-04-261-1/+4
| | | | | | | | | Basically you don't want to grab the X server while your debugging. Also added an environment variable which lets you force to not grab the X server Change-Id: Iba03f11c8f486ce71c55fac7716bffcb7cc8cb98 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Implement startup notification spec again.David Faure2013-04-231-0/+5
| | | | | | | | | | | | | | | | | This functionality was in Qt4's qapplication_x11.cpp and was missing from the XCB QPA plugin. Ported the code from xlib to xcb. This code was actually tested (with plasma), unlike the Qt-4.8 code which skipped every other character... for (uint i = 0; i < 20 && i + sent <= length; i++) xevent.xclient.data.b[i] = message[i + sent++]; Provide a QPA native-function for accessing the startup id, for cases where an application doesn't show a window, but starts another app instead, or asks a running app to show the window on its behalf. Change-Id: If392179efddd70a51c45a8fab4fb9d753913094a Reviewed-by: David Faure (KDE) <faure@kde.org>
* Implement XEmbed protocolAlberto Mardegan2013-03-061-1/+1
| | | | | | | | | | | | | | | | | | | Add a static QWindow::fromWinId(WId id) constructor which can be used to create a QWindow object representing windows created by other processes. Then, QWindow::setParent() can be used to embed a window into a foreign window socket and QWindow::setTransientParent() to stick the current window on top of a foreign window. The changes in the QtWidgets module ensure that the focus chain (TAB navigation) correctly works when a QtWidgets-based window is embedded into another application. As far as the platform implementation is concerned, this commit only implements the embedding functionality in the XCB plugin. So, this is roughly equivalent to the Qt4 QX11EmbedWidget functionality. Change-Id: Iff8f7b9ee974d33fb30f36056f7838b433a413c7 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix focus handling of native child widgets in xcb.Gunnar Sletta2013-01-241-0/+5
| | | | | Change-Id: If4d596195624011142bff6853849a23064e478df Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* XCB: add support for getting and setting appTime and appUserTime.David Faure2012-12-141-0/+4
| | | | | | | | | | | | The QX11Info class needs this. This required adding the missing nativeResourceFunctionForScreen in QPlatformNativeInterface. Change-Id: I2c6e91c7f122f3ecdf769a177deafd2aa3896e2f Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fixed incorrect handling of extra mouse buttons in XCB platform plugin.Samuel Rødal2012-12-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | translateMouseButtons() was only able to correctly handle the left, right, and mid mouse buttons. Thus, if any buttons outside of those were pressed, the motion notify event would basically unset the mouse button mask, leading to a release event being sent instead. Later on, when the actual release event arrives, that button gets xor'ed into the empty button mask generating another press, and later another motion event will generate a release. In the end that means two press-release sequences are sent for any extra mouse buttons. Instead of getting the mask of the buttons currently being pressed from the event, we need to keep track of the mask ourselves. Task-number: QTBUG-28561 Change-Id: Iaa67e784a13d792deef8fc29dbd5456a5471a861 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Rick Stockton <rickstockton@reno-computerhelp.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Report threaded rendering support in xcb when using event reader thread.Samuel Rødal2012-11-081-0/+2
| | | | | | | | | | | Threaded rendering had issues due to bugs in xcb before xcb_poll_for_queued_event() was added. Now xcb_poll_for_queued_event() is resolved at runtime and if present xcb events are received on a separate thread. Change-Id: I05420c8c9f9a20f41ce0f86ed255bc8b295e7fe5 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Resolve xcb_poll_for_queued_event at run-time.Samuel Rødal2012-11-071-6/+6
| | | | | | | | | By not making this a compile time decision we ensure forward compatibility for older xcb versions if the xcb plugin is built against a newer xcb. Change-Id: I744777d53bf7b8deb6eff372494f4403d19d364c Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Remove DRI2/OpenGL code paths from xcb plugin.Samuel Rødal2012-10-191-18/+4
| | | | | | | | | | | These were used to test QtWayland, but there are other options available for that now. The DRI2 code hasn't been maintained and doesn't even compile at the moment, so let's just remove it to de-clutter the source. Change-Id: I7db0f4db82348497b9f4d6c2dcf2e13f3ab14a76 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Made xcb plugin work when the GLX extension is not present.Samuel Rødal2012-10-191-0/+3
| | | | | Change-Id: I9285d7524586ff404206c088019ece33335137d9 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Make sure timestamp is initialized before using it for seting selection owner.Gatis Paeglis2012-10-131-1/+2
| | | | | | | | | | | | | | | | | | | | | Convention from icccm: Clients attempting to acquire a selection must set the time value of the xcb_set_selection_owner request to the timestamp of the event triggering the acquisition attempt, not to XCB_CURRENT_TIME. In some cases it happened that timestamp was set to XCB_CURRENT_TIME. A zero-length append to a property is a way to obtain a timestamp for this purpose; the timestamp is in the corresponding XCB_PROPERTY_NOTIFY event. We used to have this mechanism in 4.8, it was achieved by XWindowEvent. AFAIK there isn't an equivalent for XWindowEvent in XCB. Therefore i had to introduce a new mechanism in QXcbConnection - getTimestamp. This function blocks until it receives the requested event. Change-Id: Ide46a4fdd44cf026fdd17a79d3c4b17741d1b7d4 Task-number: QTBUG-26783 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* xcb: dynamic QScreens; primary first; corrected logical DPIShawn Rutledge2012-09-241-2/+4
| | | | | | | | | | | | | | | | A new QScreen is created when an output is activated (monitor or projector is added, for example), and destroyed when the output is turned off. Ensures that screens and siblings are always in the right order: primary comes first. Logical DPI is derived from virtual geom / virtual size, which will be different than output geom / physical size if X was started with --dpi override. This is a good thing: when X gets wrong EDID info for physical size and you need to override it to get reasonable font sizes, Qt will heed the logical DPI for font sizing. Change-Id: I5e3de34013c1b6b21067243de56f3f1eb72787fa Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* X11 (xcb) support for QScreen-per-output and runtime changesShawn Rutledge2012-09-181-0/+2
| | | | | | | | | | | | | QScreen has notifiers for its properties, but they were not being emitted when one changes the resolution or arrangement of individual outputs, e.g. via xrandr. Also there should be one QScreen per "output", e.g. laptop LCD + external monitor means 2 QScreens which will be siblings, rather than just 1 QScreen to represent the whole desktop. Change-Id: Ia61bbc5e6a3506f813ab11f87c03d14cf7f4ce85 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Need to have the XI2 import to detect XI_TouchBeginMaskShawn Rutledge2012-08-091-0/+1
| | | | | | | | | | Followup to I5c925ae3e191244c7ab9415e4ba2fe49b93dd2af : touch was not actually working by default. A major symptom was getting double-clicks instead of clicks on buttons and such, making it quite hard to interact with anything. There are some problems remaining. Change-Id: I09fa5965036bac242ccc1f4db71f6d912445ca01 Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Revert "Move QWindowSystemInterface out of qpa."Paul Olav Tvete2012-08-031-1/+1
| | | | | | | | | | | | | | This reverts commit 784a877d3cd9a1a75aca9c83146389503a966071. Conflicts: src/plugins/platforms/cocoa/qcocoawindow.mm src/testlib/qtestkeyboard.h src/testlib/qtestmouse.h src/testlib/qtesttouch.h Change-Id: Iebfed179b3eb7f30e4c95edcae5a8ad6fd50330e Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Move QWindowSystemInterface out of qpa.Stephen Kelly2012-07-191-1/+1
| | | | | | | | Public QtTest headers require it, so all unit tests would have to use private Qt headers otherwise, which is not practical. Change-Id: I5d4466ec30b6a57ebdfc34413e716e657eb51368 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* handle XInput 2.2 multipoint touch eventsShawn Rutledge2012-07-161-1/+11
| | | | | Change-Id: I5c925ae3e191244c7ab9415e4ba2fe49b93dd2af Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Basic tablet support in xcb through XI2Laszlo Agocs2012-06-281-12/+58
| | | | | | | | | | The Maemo-specific function have been renamed a bit to prevent them clashing with the more generic stuff. Task-number: QTBUG-25865 Change-Id: Id55693159e15d5a0c679546eb48308feb48acac9 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Implement QXcbWindow::setWindowIconCorentin Jabot2012-06-021-0/+1
| | | | | | | Change-Id: I1908cbef0c20d3725423b559f234bd6d3ddd4167 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fix xcb plugin compilation for -qconfig largeTasuku Suzuki2012-05-261-0/+8
| | | | | | Change-Id: I1ee1fb9c140396e83272d607ee4dd63ce2c50b8d Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Added QScreen::refreshRate() to get the vertical refresh rate.Samuel Rødal2012-05-081-0/+4
| | | | | | | | | | | | To give applications that want it the option to use a fixed timestep for animations, and to avoid having values of 60 hard-coded (we have a couple of those in qtdeclarative/src/quick already), we need to know the refresh rates of the screens we are rendering to. Change-Id: Ife49162e830440ad7eab563a27e8aebbbafc5fc5 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* xcb: Check for SHAPE extension before using itUli Schlachter2012-03-021-0/+6
| | | | | | | | | | | | | This change makes sure that the X11 server really supports the SHAPE extension before it is used. Before this, libxcb would disconnect from the server as soon as it was told to send a SHAPE request to a server which doesn't support SHAPE. Oh and of course it would do so without any good error message. Change-Id: I5f9481e488925e74e62f229e9f637ef262020c04 Signed-off-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Add support for platform plugin specific event filters.Simon Hausmann2012-01-201-1/+3
| | | | | | | | | The setEventFilter on the platform native interface allows subscribing to events on the backend by event name. Change-Id: Ib10077fbc69f0207edbae1177e7bbd18c8d0f9ae Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com> Reviewed-by: Michalina Ziemba <michalina.ziemba@nokia.com>
* Add support for QWindow::setOrientation on HarmattanSimon Hausmann2012-01-171-0/+4
| | | | | | | | | | Set the _MEEGOTOUCH_ORIENTATION_ANGLE property on the window, just like Qt Components for MeeGo and MeegoTouch itself. Change-Id: I0b9adf4550593678bbcba89a2d4f1f65c1f4bd20 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Rename check to checkEvent.Stephen Kelly2012-01-101-1/+1
| | | | | | | Avoids conflict with macro on Mac OS. Change-Id: I1b597205c32531e054832fcb396622b47b18040a Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Detect autoreapeat in xcb plugin.Samuel Rødal2012-01-071-2/+2
| | | | | | | Until now QKeyEvent::isAutoRepeat() would always return false. Change-Id: I7771bc7a7ec848ef280f99bada0a26eda188604e Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Disable logging in xcbJørgen Lind2011-12-221-1/+1
| | | | | | | | The logging groves and modifies a vector.. It should at least be a linked-list. but anyway, it shouldn't be enabled by default Change-Id: Iaebb1158eea1c907e31e9606b143c0318a189dd1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Use QVarLengthArray in QXcbConnection.Robin Burchell2011-12-131-3/+6
| | | | | | | | | | There's no need in using a QList here, since it's never passed around anywhere; the reference counting is just unnecessary overhead. Change-Id: I92107c69f7338acc396e2ac4a69123c6a2becaed Reviewed-by: John Brooks <john.brooks@dereferenced.net> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fix a memory leak in QXcbConnection.Jędrzej Nowacki2011-11-181-2/+2
| | | | | Change-Id: I2307bf434c53d9321c71609eeacc1f3883bbbb13 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Add multipoint touch support for Harmattan to the xcb platform plugin.Jocelyn Turcotte2011-10-171-0/+31
| | | | | | | | | | | Proper multipoint touch support was only introduced in XInput2.1, but Harmattan uses a tweaked version of XInput2.0 that transfers touch data through mouse events. This patch applies on the xcb plugin a subset of the changes that were applied on the Qt 4.7 that was shipped to Harmattan to get similar multipoint touch support. Change-Id: Ifda7ad40de29d7ded1443d4f78b3ec3807303a9f Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* Fixed potential issue in XCB plugin.Samuel Rødal2011-10-071-2/+3
| | | | | | | | | | Use the actual atom instead of the enum value of the atom when signaling that the event loop should exit. Change-Id: Ib98c6a46cadcecc727b28411b4c0c12c434ea828 Reviewed-on: http://codereview.qt-project.org/6265 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make qtbase build with Qt-in-namespace againKent Hansen2011-09-281-0/+4
| | | | | | | Change-Id: I5faa8690a05d6ec352fc69c0b69848539f2ed216 Reviewed-on: http://codereview.qt-project.org/5460 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fixed race condition in xcb plugin logging (when debugging is enabled).Samuel Rødal2011-09-121-0/+1
| | | | | | | Change-Id: I8fa11ba26037d8f78e7c5131326d94836d0de9d4 Reviewed-on: http://codereview.qt-project.org/4647 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Move XCB event reading to a separate thread.Samuel Rødal2011-08-261-7/+41
| | | | | | | | | | | | | | Work-around for bug in XCB which causes a xcb_wait_for_reply to block if xcb_poll_for_events() is called simultaneously from a different thread. If the XCB version is too old this work-around causes even more problems, so we kill two birds with one stone by only using the work-around if the XCB version has the recent xcb_poll_for_queue_event() function, which we also need to read events from a separate thread with reasonable efficiency. Change-Id: I8a899dad6ded381ce42cba0112e77da3c8aa6887 Reviewed-on: http://codereview.qt.nokia.com/3612 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make QPlatformIntegration not have a factory for eventdispatcherJørgen Lind2011-07-281-2/+0
| | | | | | | | | but rather an accessor for the guiThreadEventDispatcher Change-Id: I1b9ba14efc9f338c5a67e3e24ddb0caf76c07413 Reviewed-on: http://codereview.qt.nokia.com/2321 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Make xcb work again after event dispatcher changes.Morten Johan Sorvig2011-06-221-0/+3
| | | | | | The platform plugin/event dispatcher creation order has now been reversed and the event dispatcher cannot be accessed during plugin construciton.
* use selection changed events from XFixesLars Knoll2011-06-201-0/+4
| | | | | | | | properly initialize the XFixes extension and then use the selection changed events to notify Qt apps. Reviewed-by: Samuel
* Create custom cursors via XRender.Laszlo Agocs2011-06-091-0/+1
| | | | Reviewed-by: Samuel Rødal
* Cursor support in xcb plug-in.Laszlo Agocs2011-06-081-0/+1
| | | | | | | Custom cursor pixmaps with depth greater than 1 are not yet supported and will be converted to monochrome always. Reviewed-by: Samuel Rødal
* cleanups codeLars Knoll2011-06-071-9/+0
| | | | | | | Make QXcbClipboard and QXcbDrag a QXcbObject to simplify the code. Use the predefined atoms in xproto.h instead of our own defines.
* add WM support classLars Knoll2011-06-071-2/+5
| | | | | | | | | Add a QXcbWMSupport class to better integrate with NET_WM compliant window managers. Suppport NET_WM_USER_TIME on windows. Reviewed-by: Samuel
* Implement XDnD in the xcb pluginLars Knoll2011-06-071-1/+7
| | | | | | | | | Ported most of the code to support dragging from qdnd_x11.cpp to xcb. Some features are still not working 100% correct, but it's becoming usable. Reviewed-by: Samuel
* X11 DnD implementationLars Knoll2011-06-071-3/+8
| | | | | | | | | | | Initial code for DnD on X11. Only Xdnd based, Motif DnD is being ignored. The code is currently limited to dropping stuff onto the application. Starting drags is not yet implemented. Reviewed-by: Samuel