summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
Commit message (Collapse)AuthorAgeFilesLines
* Windows: Work on QPlatformScreen implementation.Friedemann Kleint2012-01-208-38/+239
| | | | | | | | Implement virtual desktops (which is the default for EnumDisplayMonitors) and change notifications. Change-Id: Id24a1b6d9766903901ddf1ded8e9933aa03589d4 Reviewed-by: Oliver Wolff <oliver.wolff@nokia.com>
* Add a virtual sendPostedEvents() to QEventDispatcherWin32.Friedemann Kleint2012-01-203-9/+10
| | | | | | | | | | | | | Reimplement this in QWindowGuiEventDispatcher to send both Qt posted events and queued QPA window system events. We need to do this at a well defined place, instead of sending events outside of the eventloop from the Windows proc. This fixes various hangs for example in tst_qinputdialog, which used a 0-timer to close a dialog. Change-Id: I64e0b8f1209fb434059a7fa667ed585902c19db4 Initial-patch-by: bhughes <bradley.hughes@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Introducing QPlatformSharedGraphicsCacheEskil Abrahamsen Blomfeldt2012-01-207-2/+1280
| | | | | | | | Interface to provide cross-process caching mechanisms in a platform plugin. Can be used for shared glyph caches and icon caches etc. Change-Id: If0d89a0a50bbd6eee05daf908448262ff270fc5b Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Add support for platform plugin specific event filters.Simon Hausmann2012-01-206-69/+97
| | | | | | | | | 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>
* fix case of included windows headersMark Brand2012-01-193-5/+5
| | | | | | | | Allows cross-building on unix. Change-Id: If389138c2d3bf5e72c62c85d054785ac9232f158 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Add "nswindow" resource to the Cocoa native interface implementationBradley T. Hughes2012-01-191-0/+2
| | | | | | | | | This will return the NSWindow* for the given QWindow*. Port the QWidget autotest helper to use the native interface and the "nswindow" resource. Change-Id: I754b7e9288690ac3c99c3ec65c5526d5fe121234 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Prevent menubar related crashesBradley T. Hughes2012-01-191-8/+8
| | | | | | | | | | | | | | | The native menubar interface does not communicate menubar destruction down to the implementation, so we cannot keep naked pointers (otherwise they become dangling). This happens often while running autotests as windows, menus, widgets, etc. are quickly created, tested, and then destroyed. Work-around the crashes for now by using QWeakPointer. A proper fix will need to be investigated to prevent the menubars hash from holding dangling key pointers. Change-Id: Ie8e50cbc52f9510e844fc3c0c5ae6a0865320282 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Windows: Implement QPlatformScreen::name()Friedemann Kleint2012-01-192-0/+3
| | | | | Change-Id: I04ec91b12936bdcc179b79558ac2285b70281dcd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove all references to QAccessible::SelfJan-Arve Saether2012-01-191-2/+2
| | | | | | | | | | | | | navigate() to Self does not make any sense (its basically a clone). It seems that its not that useful to return Self from relationTo(), since it was only one place where relationTo() was called where it checked for the Self flag. This was in the windows bridge, and we could easily work around that. If it really turns out that Self is useful, we can always add that enum value back later. Change-Id: I9ebb60da059a843de5e6fcab9e815b919afc6f2a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Improve accessibility actions descriptions on MacMorten Johan Sorvig2012-01-171-4/+5
| | | | | | | Use built-in descriptions for built-in actions Change-Id: Ic5581e89e4568abcc6c3add126d492345d26d87d Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Added libxrender-dev to xcb's README.Samuel Rødal2012-01-171-2/+2
| | | | | | Task-number: QTBUG-23633 Change-Id: I9428d04dab9e769f531a5aaffb943c6c2fa79f9a Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Add support for QWindow::setOrientation on HarmattanSimon Hausmann2012-01-175-5/+36
| | | | | | | | | | 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>
* Delete src/widgets/platforms/macMorten Johan Sorvig2012-01-175-5/+446
| | | | | | | | This looks like the mac port but isn't any more, remove it to prevent confusion. Change-Id: I498f536d77d1a3c53e687f696ca6992539a1a90b Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Cleanup properly when destroying QCocoaWindowBradley T. Hughes2012-01-161-0/+2
| | | | | | | | | | [NSNotificationCenter addObserver]'s documentation clearly states that removeObserver needs to be called before releasing the object being observed. The m_contentView we create was never released either, so be sure to release that as well. Change-Id: Ia54eb1c5c751f4cb0edb21ad559b261cb8f24208 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* xcb: Obey maximum request length when uploading imagesUli Schlachter2012-01-161-11/+41
| | | | | | | | | | | | | | | | | | | | | When connecting to an X11 server, the server tells the client what its maximum allowed request size is. Larger requests are not permitted. Thus, libxcb verifies that all requests which are sent are smaller than this size limit and possibly kills the connection (without any good error message). Thus, when uploading an image, we could be trying to send more pixel data than fit into a single request. If this would be the case, the code will now use multiple requests where each request only sends a part of the allowed rows. In case all the data fits into a single request, this commit shouldn't change any behavior. Change-Id: I84a4ebfcdb6de7e206015c37e3e33cba3bd309b1 Signed-off-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Clean up and extend QAccessible::State.Frederik Gladhorn2012-01-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | The state should contain useful and clear information. Some of the old enum/bitfield members were not really clear. Make them follow Qt terminology and shift the burden of interpreting them to the bridge. Apart from the previous commit changing from enum to bitfield, these flags have changed names: unavailable -> disabled mixed -> checkStateMixed protected -> passwordEdit (in the last commit) floating is completely removed, even MSAA documentation states it is unsupported. Some new states have been added. Documentation added. Change-Id: I152256e77a061f28ee5780f527524c80a2c7e333 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* xcb: abort (rather than segfault) when X is not availableRohan McGovern2012-01-161-13/+16
| | | | | | | | Be more user-friendly (e.g. when logging into a machine by ssh and forgetting to export DISPLAY). Change-Id: I9d07b0af9c5b4841827826053bb27b507801ae61 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Clean up QCocoaIntegration destruction.Morten Johan Sorvig2012-01-142-9/+12
| | | | | | | | Fix memory leak - delete the font database. Remove the NAApplication delegate. Change-Id: I7c69eb4df01c8450c0abde360f77fbb318b20c83 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Windows: Use a message-only window as clipboard viewer or for GL.Friedemann Kleint2012-01-131-3/+3
| | | | | Change-Id: Ib8d287404b157aae2f4493ef8eba220afaba6c47 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Added application flags to translate between touch and mouse events.Samuel Rødal2012-01-133-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current way we do it of having the platform or touch plugin send both mouse and touch events is not ideal. There's no good way to write an application that works sanely both on a touch-only device and on a desktop except by restricting yourself to only handling mouse events. If you try to handle touch events you don't get any events at all on desktop, and if you try to handle both, you end up getting duplicate events on touch devices. Instead, we should get rid of the code in the plugins that automatically sends mouse events translated from touch events. This change enables that by making the behaviour fully configurable in QtGui. Two new application attributes are added to explicitly say whether unhandled touch events should be sent as synthesized mouse events and vice versa, and no duplicates are automatically sent as the current situation. Synthesized mouse events are enabled by default. We also get rid of the QTouchEvent::TouchPoint::Primary flag, which was only used to signal that the windowing system automatically generated mouse events for that touch point. Now we only generate mouse events from the first touch point in the list. Change-Id: I8e20f3480407ca8c31b42de0a4d2b319e1346b65 Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
* Cocoa: Send window activation events.Morten Johan Sorvig2012-01-133-0/+22
| | | | | | Change-Id: I599b4316f1535bf4855b205bfb2117bbcee63bf0 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
* Remove all references to QAccessible::(Up|Down|Left|Right)Jan-Arve Saether2012-01-121-2/+8
| | | | | | | | | | | | It is now the resonsibility of the bridge to support this (by querying for QAccessibleInterface::rect()) The windows bridge (currently the only bridge in need of this) has already been updated to reflect this in commit 7dca461620ee6d8cce3a74acf2e1530d4497bff9 Change-Id: Ief1339ab6edc118e2d47e3875e09fa885db65c2f Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Don't crash during QApplication constructionBradley T. Hughes2012-01-121-1/+2
| | | | | | | | | | | | The QCoreApplication::init() function calls the virtual QCoreApplicationPrivate::createEventDispatcher(), which for QApplication, also creates the plaform integration. Unfortunately, the Cocoa menubar integration uses qApp before QApplication is constructed, causing a crash. Circumvent this by using QGuiApplicationPrivate directly. Change-Id: Ib36f628641761e70f9e9e39dd23e70e7537a165b Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Ignore uninteresting accessibile interfaces.Morten Johan Sorvig2012-01-124-2/+54
| | | | | | | | | Certain interface roles should be ignored and not be a part of the user-visible accessibility interface tree. Change-Id: I264fef909052c528ee505875e3a211a33114d881 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Make show() default to sane sizing behaviour based on the platform.Samuel Rødal2012-01-122-0/+10
| | | | | | | | | | | | | | | | Traditionally it's been hard to write a Qt app that behaves sanely across embedded and desktop platforms, i.e. defaults to fullscreen on embedded and non-fullscreen on desktop. For Qt 5 we can fix this by making the behaviour of the default QWindow::show() be customizable by the platform plugin. If the application developer wants to override this behaviour he can still use the explicit showFullScreen(), showNormal() etc functions. Change-Id: I26a907b404058e345d841c818daefbb57a26d3fd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Make QAccessibleInterface::indexOfChild() 0-based.Frederik Gladhorn2012-01-112-3/+3
| | | | | | | Makes the code nicer and more consistent with the rest of the world. Change-Id: I5ba0ee39f5b0afd1a079a3cea9990d123955ed3f Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Add support for accessibility actions.Morten Johan Sorvig2012-01-114-6/+95
| | | | | | | | Match Cocoa and Qt actions manually. Some have no corresponding action on the other side. Change-Id: I775cb8987ab843bd88d57d856ef7c0403290db00 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Match the name in the cpp fileAlbert Astals Cid2012-01-111-1/+1
| | | | | | | Which is actually the name Lars wanted i just forgot to fix it everywhere Change-Id: Iaa190da6c17d0a423c34202c986d69feec01af96 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Introduce a QVariant themeHint() to QPlatformTheme.Friedemann Kleint2012-01-112-0/+34
| | | | | | | Start on removing platform-specific code from QtWidgets. Change-Id: Ic2163a0ce6f2db2151cdf7ca93766b2d861eeb55 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Platform style hints: Introduce keyboard repeat rate.Friedemann Kleint2012-01-101-1/+10
| | | | | Change-Id: I556c2ecec7d5368122875a659af3ae7db88aa481 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fix key codes on mac.Zeno Albisser2012-01-101-1/+1
| | | | | | | Qt key codes match the unicode character in upper case format. Change-Id: I92b43463921e71f2607e569ba7ee23d6f844c50a Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Accessiblity State as bit field.Frederik Gladhorn2012-01-101-3/+57
| | | | | | | | | | | We would like to add more flags that will be over the 32 bit boundary. On Windows enums don't seem to digest values >32 bit. This patch changes the state flags to be a bit field instead. The windows part of the patch was written by Jan-Arve Sæther. Change-Id: I2d1d87807f920ce4d4a5c7bfea8b1122ed44eb08 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Rename check to checkEvent.Stephen Kelly2012-01-104-5/+5
| | | | | | | Avoids conflict with macro on Mac OS. Change-Id: I1b597205c32531e054832fcb396622b47b18040a Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Lock X display while calling XESetWireToEvent and its callback.Samuel Rødal2012-01-101-3/+7
| | | | | | | | | Prevent potential race conditions as suggested by Uli Schlachter. Change-Id: Ia93eb8be1cbbc3d8ae7913a934c195af6b5ec538 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Uli Schlachter <psychon@znc.in>
* Remove unused function.Frederik Gladhorn2012-01-091-100/+0
| | | | | | | Instead this code has been ported to qAccessibleRoleString. Change-Id: I41dd83d09cbcf2b0de3eb2fa027f24cf070f22a2 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Change QCocoaEventDispatcher timer handling to use QTimerInfoListBradley T. Hughes2012-01-092-106/+100
| | | | | | | | | | | | | | | | This gives us support for the various Qt::TimerTypes. We only use one CFRunLoopTimer to drive all of the Qt timers. We update the time-to-fire for this timer as we add/remove/fire Qt timers. The documentation for the CFRunLoopTimerSetNextFireDate() function says that this is a valid use case, and is more performant than constantly adding and removing CFRunLoopTimers. The documentation recommends using a large interval for this use case (the docs say "several decades", but we use 1 year). Change-Id: Ie7fd7a845f4254699a5b6a5720e7626f2c5e787f Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
* xcb: Fix a memleak when atomName() failsUli Schlachter2012-01-081-0/+1
| | | | | | | | | | The only reason for GetAtomName to fail is when an invalid atom is specified, so the xcb_generic_error_t struct doesn't contain any useful information for us. Still, we have to free it. Change-Id: I3da98018b7bfe08a9d7dcd566ed010f5d7b0df73 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Detect autoreapeat in xcb plugin.Samuel Rødal2012-01-073-3/+85
| | | | | | | Until now QKeyEvent::isAutoRepeat() would always return false. Change-Id: I7771bc7a7ec848ef280f99bada0a26eda188604e Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Remove all references to QAccessible:: {Child|Ancestor|Sibling}Jan-Arve Saether2012-01-061-24/+92
| | | | | | | | | | | These are deprecated in favor of QAccessibleInterface::child() and QAccessibleInterface::parent() QAccessible::Sibling can be done with a combination of those two. This is handled by the bridges, if required. Change-Id: I2e2a6eb2a982e7c9001a393d69f0c5f1ae9c0970 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Windows: Run on Windows XP.Friedemann Kleint2012-01-062-5/+4
| | | | | | | | | | | Replace Q_ASSERT() on missing functions from User32.dll by qFatal() with error message. Do not check "UpdateLayeredWindowIndirect" as it was introduced with Windows Vista. Task-number: QTBUG-23351 Change-Id: I0064611351c687f0c3c6e13156dd534b9f7a5d75 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove all non-inline of qMalloc/qFree/qRealloc.Robin Burchell2012-01-061-2/+2
| | | | | | | | | | | | We're trying to deprecate these, so don't use them anymore. The inline uses of these have been left intact, for the moment. Inline code will need to create their own non-inline allocation methods (for future-proofing to allow alterations in how e.g. individual containers allocate) Change-Id: I1071a487c25e95b7bb81a3327b20c5481fb5ed22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Windows: Fix compiler warnings in accessibility.Friedemann Kleint2012-01-061-0/+2
| | | | | | Change-Id: Id9ffe1069116f25b89df85337a75dae54b5beec5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Andriy Golovnya <andriy.golovnya@googlemail.com>
* Use clipboard_timeout instead of hardcoded 5000 (since its the same value)Albert Astals Cid2012-01-051-1/+1
| | | | | Change-Id: Ia0edf04e36c8d30394a2bc9a691ab9aa78831f78 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Free the repliesAlbert Astals Cid2012-01-051-0/+2
| | | | | Change-Id: I719bd95d94f3bfd41eeb09a49ac3e2701a516619 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Check for the clipboard manager when looping due to app quitingAlbert Astals Cid2012-01-052-3/+13
| | | | | | | | | | | | | One can be extremely unlucky and on session logout get this: * All apps are going down * A Qt app checks if the clipboard manager is there to yield its clipboard contents * The clipboard manager is still there * Then just after that check, the clipboard manager finishes because of the session end * This means the Qt app will loop for 5 seconds trying to yield its clipboard contents to a clipboard manager that is not there anymore Change-Id: Ia89670d4deb72f12e660a0d7aa5b2d212955d6fe Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* QCocoaEventDispatcherPrivate members should not be staticBradley T. Hughes2012-01-052-70/+60
| | | | | | | | | | | | | | | Keep the Cocoa event dispatcher's private data as normal members of QCocoaEventDispatcherPrivate. This removes the global initializers for the macTimerHash and cocoaModalSessionStask as well. To keep timers working, we pass a pointer to the timer's MacTimerInfo struct to the callback, instead of just the timer id. The MacTimerInfo needs to keep a pointer back to the QCocoaEventDispatcherPrivate to get access to the private's members. Change-Id: Ic3a61e5e1d1d82030735de73cf0b0c70a13c21a4 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-05276-276/+276
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Don't release timer ids in event dispatcher codeBradley T. Hughes2012-01-041-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3rdparty event dispatchers are impossible to write without using the internal API QAbstractEventDispatcherPrivate::releaseTimerId(). Fix this by having each QObject keep track of its own timer ids, and release them when they are no longer used. As a side effect, this makes the QObjectData::pendTimer bit unnecessary. This also removes the QObjectData::inThreadChangeEvent hack that the event dispatchers used to avoid releasing timer ids when moving timers to a new thread. QBasicTimer becomes even more low-level. It cannot use QObject::startTimer() anymore, since we do not have a way to call QObject::killTimer() from QBasicTimer::stop(). QBasicTimer uses the QAbstractEventDispatcher interface directly, and releases the timer id explicitly as well when stopping the timer. This change also fixes some rare timer id "leaks" when destroying or stopping timers after a thread has exited and destroyed its event dispatcher (the timer ids would never be released when no dispatcher exists). Globally destructed QObjects that have running timers may try to release their timer ids after the timer id freelist has been destroyed. This commit accomodates such objects by avoiding the null dereference in QAbstractEventDispatcherPrivate::releaseTimerId(). Change-Id: I2d7cd8221fae441f3cf02b6c0b4bc16063834d00 Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Make QCocoaEventDispatcher inherit from QAbstractEventDispatcherBradley T. Hughes2012-01-032-4/+9
| | | | | | | | | | | ... instead of QEventDispatcherUNIX. The Cocoa dispatcher does not use any of the facilities of the UNIX dispatcher, and it reimplements every virtual method already (with the exception of flush(), which just needs an empty implementation). Change-Id: I24aefd169888946afac7800192a0f96770787718 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Use meta object to get string rep of QAccessible::Role.Frederik Gladhorn2012-01-031-76/+1
| | | | | Change-Id: I69320b69ea13ebc594575277e39d30a066df61fd Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>