summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidgetwindow.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Expose screen change event to widgets so that they can check the dprLaszlo Agocs2014-09-101-3/+22
| | | | | | | | | | Unlike ordinary widgets, the ones that have OpenGL framebuffers must know about screen changes because the device pixel ratio may be different on the new screen. Add an internal event, ScreenChangeInternal, as the counterpart to WindowChangeInternal. Change-Id: I5e55999838e4c0284e7d9832299f7cc6b541ee3f Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* add buttons to QTabletEventShawn Rutledge2014-07-281-1/+1
| | | | | | | | | | | | | Until now, it has been necessary for tablet-oriented applications which care about multi-button styli to reject each tablet event and wait for the mouse event in order to know which buttons are pressed. This patch adds the new API and also the X11/xcb implementation. [ChangeLog][QtCore][Tablet support] Added buttons to QTabletEvent Task-number: QTBUG-39458 Change-Id: If2c9ec1ceacc1700a82686c5fc6f568f9111055a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* qpa: Rename qwidgetwindow_qpa_p.h to qwidgetwindow_p.hTor Arne Vestbø2014-05-201-1/+1
| | | | | Change-Id: I24835b86194653e89c0bacefd22ddbff06b6e97b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Remove friends of QEvent.Friedemann Kleint2014-05-181-1/+1
| | | | | | | | Introduce function to set the spontaneous flag to QCoreApplicationPrivate to solve a few cases. Change-Id: I7c1f1f3644defe00deea9cecb244ca258afd5b94 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use QCoreApplication::postEvent() for replaying popup mouse events.Friedemann Kleint2014-05-061-4/+6
| | | | | | | | | When replaying the mouse events synchronously, nested calls of QEventLoop::exec() may happen in conjunction with menus. Task-number: QTBUG-38550 Change-Id: I2b1dafdac59d1a080775af5f165d1e594ea58804 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Don't assume qt_tablet_target widget exists from one event to the nextShawn Rutledge2014-04-041-10/+2
| | | | | | | | | | | | | | | | In this scenario there is a widget with a button inside, and you click the button with the tablet. The target of the event is the button, but when you click it, the parent (or ancestor) is destroyed. Commit 2bac49265efcf8faabc3756d1a3e405a3d336f68 took care of the case when the parent is a window, but it is not always a window which is being destroyed. So the approach of using a QPointer is better because it should take care of all the cases when the qt_tablet_target is destroyed during the course of a tablet event sequence. Task-number: QTBUG-36848 Task-number: QTBUG-38040 Change-Id: Ia0e861f2cb2fbc30234aa596f3a36ddd0835a9af Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Avoid double clicks confusing popupsLaszlo Agocs2014-04-031-1/+1
| | | | | | | | | | | | Setting qt_button_down on DblClick is dubious and breaks popups like menus since they won't appear correctly on every click anymore when clicking on them rapidly several times. Task-number: QTBUG-37891 Change-Id: Ic6cbbbe8b42891d2f9fa2ff66aa42bb89230d896 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Rick Stockton <rickstockton@reno-computerhelp.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Repaint widgets on screen change.Morten Johan Sørvig2014-03-141-0/+14
| | | | | | | | | | | | | | | | | Add a screenChanged handler slot to QWidgetWindow, which calls markDirty() on the backing store with the BufferInvalid and UpdateNow flags set. Update CocoaBackingStore to create a new buffer on window devicePixelRatio change. Use the QCocoaWindow::devicePixelRatio() implementation instead of a duplicate implementation in the backing store. The plan is to replace this implementation with one based on QUpdateWindowRequestEvent for Qt 5.4 Change-Id: I8e521c53df4ac90815613e730fe821996334721f Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Tablet target widget isn't always the same as its widget windowShawn Rutledge2014-03-061-2/+8
| | | | | | | | | | | | | In this scenario there is a widget with a QPushButton inside, and you click the pushbutton with the tablet. The target of the event is the pushbutton, but when you click it, the window is destroyed. The widgetwindow destructor cannot check the pushbutton's window() because it has already been destroyed. So it seems we have to store both widgets: the actual target and the parent widget which has the window. Task-number: QTBUG-36848 Change-Id: I37d8fb03743f3e501d695342edc42de104777b18 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Widgets: Pass on mouse event source when translating mouse events.Friedemann Kleint2014-02-271-0/+3
| | | | | Change-Id: I70dacc2f96552e08dd71d5cbd63fb4cf9916c11f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Enabling QQuickWidget and QOpenGLWidgetPaul Olav Tvete2014-02-121-0/+6
| | | | | | | | | Enable child widgets (without a native window) that render to an FBO and are composed with the raster backingstore by the platform plugin. A preliminary version of QOpenGLWidget is included as private API. Change-Id: I8f984a4d7db285069ce3d6564707942c823d890d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* QPA: Introduce QPlatformWindow::normalGeometry().Friedemann Kleint2014-02-071-8/+21
| | | | | | | | | | | | | QWidgetWindow stores the normal geometry obtained from the widget when transiting to other states. This does not work reliably on Windows, where this geometry is already that of the new state. Instead, introduce QPlatformWindow::normalGeometry(), add implementation for Windows and use that in QWidgetWindow. Task-number: QTBUG-21371 Change-Id: I3819ebaf55b4e7d2f7eef1affe6c20712ba45d7c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Prevent crash and emit warning when receiving bogus drop events.Friedemann Kleint2014-01-311-0/+5
| | | | | | | | Task-number: QTBUG-33635 Change-Id: I6d436bc4d47d1d6b063fc2cf27d67fe4684e7491 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* If DblClick, do not deliver 'duplicated' MouseButtonPressRick Stockton2014-01-271-7/+12
| | | | | | | | | | | | | | | | | | | | | | | QWidgetWIndow: In Qt4, when Qt created a MouseButtonDblClick event, Qt would consume the causing MouseButtonPress. It would send only the derived dblclick event to widget windows and their children. This change makes Qt5.3 and higher emulate Qt4 delivery of double click-related events to widget windows and their children. QML objects (e.g. mousearea) continue to receive the second MouseButtonPress. [ChangeLog][QtGui][QWidget] MouseButtonDblClick: Do not send the 2nd MouseButtonPress event to Widgets. Restore Qt4 behavior in sequence of mouse events delivered to widget windows and their children. Task-number: QTBUG-25831 Change-Id: Iff0f9c592bceacb2ca844d30f8180081e136a889 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Windows: Show context menu on mouse release.Friedemann Kleint2013-12-101-2/+6
| | | | | | | | | | Introduce a hint to QPlatformTheme to control the behavior. Task-number: QTBUG-35231 Change-Id: Ia28e153a8dd3f1931321a222d8906ca87166ed62 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-11-261-4/+0
|\ | | | | | | Change-Id: I83ff8f4d7dffd7385013a1bd8a1732a89ee20d56
| * Revert "Ensure Qt::WA_Mapped is set in case of obscured native windows."Tor Arne Vestbø2013-11-211-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Qt::WA_Mapped maps (sic) to windowHandle()->isExposed(), and we set/update it in QWidgetWindow::handleExposeEvent(). Setting it directly in show_sys shortcuts QPA and assumes showing a window is synchronous on all platforms, resulting in trying to flush the widget backingstore when the window was not exposed yet (due to discardSyncRequest starting to return false). This reverts commit 829b1d13b225e87b8a385397e2b53c7a9f8cda9e. Change-Id: I0bd700d4939bc69ba184d8586435b68ec3dd72fb Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-11-201-0/+4
|\| | | | | | | | | | | | | Conflicts: configure Change-Id: I0d31f23483ea67c4cac5af16014366e1ba5ac093
| * Ensure Qt::WA_Mapped is set in case of obscured native windows.Friedemann Kleint2013-11-201-0/+4
| | | | | | | | | | | | | | | | Task-number: QTBUG-33520 Change-Id: I51f9b4634be29fd32f4ad9cc8b5d3e10b19ea2f5 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | When we get a WindowBlocked event then reset the qt_button_down valueAndy Shaw2013-11-201-1/+3
|/ | | | | | | | | | | Whenever a window gets blocked, then the qt_button_down variable should be reset as it is not going to receive the release event for the mouse. This fixes problems with the mouse cursor not being updated when moving over widgets (such as QLineEdit) after a dialog is shown in response to a press event. Change-Id: Idfd072eaf36f51b816a0b2a0391cdc447d7a5d9d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QWindowPrivate: add virtual function 'clearFocusObject'Richard Moe Gustavsen2013-10-311-0/+7
| | | | | | | | | | | | | | | | | | | | | | | On mobile platforms, a line edit should only have keyboard focus when the virtual keyboard is open. As it stands, the only way to clear focus when the user hides the keyboard, is to deactivate the whole window. This is a bit too much, since Qt still expects the window in front to be active/focused. What we need is a way to remove focus from the current focus object without disturbing the state of the window. QWindow has a virtual function 'focusObject' from before. We now add a virtual function 'clearFocusObject' to QWindowPrivate that can be overridden by QWidgetWindowPrivate and QQuickWindowPrivate. That way we can remove focus from current focus object when the virtual keyboard is closed from the platform plugins. Change-Id: Ica4ec76f8a69cd6107236a8000ff8bd742e988b5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Clear qt_tablet_target in ~QWidgetWindow.Friedemann Kleint2013-10-181-0/+6
| | | | | | | Task-number: QTBUG-34007 Change-Id: If67563e5d9c4040256b58521773736e14db6fbaf Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Implement native gestures on OS X.Morten Johan Sørvig2013-10-171-0/+27
| | | | | | | | | | | | | | | Add QWindowSystemInterface::GestureEvent and QNativeGestureEvent to QtGui. These events are copies of Qt4's QNativeGestureEvent, where it was an implementation detail of QGestureManager. Add gesture message handlers to QNSView and bring back the Mac gesture recognizers for QGestureManager. Task-number: QTBUG-28126 Change-Id: I1304e09e776fa7c44d133d54ca8b895ca2f544c5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-141-2/+3
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * Fix ignoring closeEvents on OSX for QtQuick.Daiwei Li2013-08-031-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The QCloseEvent's accepted state should not be inverted for the QWindowSystemInterfacePrivate::CloseEvent. To make Widgets work with this change, pass whether the close was accepted from close_helper to the QCloseEvent generated by QGuiApplication. Task-number: QTBUG-28965 Change-Id: If384b0355776b93df02dff2ab78b5647903200e7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Josh Faust <jfaust@suitabletech.com>
* | Introduce QWheelEvent::Phase (Begin, Changed, Ended)J-P Nurmi2013-08-081-1/+1
|/ | | | | | | | | | | | | | Some platforms (read: OS X) send wheel events without delta to indicate that scrolling is about to start or has ended. Currently, Qt simply ignores wheel events that have no delta. This change introduces a new QWheelEvent attribute that specifies the phase, and makes it possible to receive the special wheel events in started/ended phases. These events are required for implementing correctly behaving transient scrollbars. Change-Id: Ib8ce0d9ce9be63b2ad60aa7b0aaa1f12ef6cad09 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Widgets: Set qt_button_down for each press.Friedemann Kleint2013-06-241-1/+1
| | | | | | | | | Do not rely on release events. Task-number: QTBUG-31333 Change-Id: I09a056fed8892715c04ca78a42ae191e5a9a3b42 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* QWidgetWindow: Prioritize keyboard grabber over popup for key events.Friedemann Kleint2013-05-131-4/+2
| | | | | | | | | | Fix the inline editor of the QMenuBar in Qt Designer not working due to the key events being sent to the QMenu which is open at that time. Task-number: QTBUG-31059 Change-Id: Ic96bc119d0d2566d8f8d6ee62858445a70a447b7 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* QWidgetWindow: don't accept touch events while in popup modeRichard Moe Gustavsen2013-05-071-0/+4
| | | | | | | | | | | | | | | | | | | | QWidgetWindow will always redirect mouse events to the active popup (if any). The same logic is not implemented for touch events, which means that touch events are always delivered to the widget under the finger. It is therefore possible to interact with widgets that are modally shaddowed by the popup. It is also not possible to close popups without touching them directly. This patch will ignore touch events when a popup is active, and as such, force a synthesised mouse event to be sent instead. Implementing proper touch support also for popups is out of scope for widgets. Change-Id: I023c09c3e1fd4e5495df990c11419c69ecafb8f9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Widgets: Propagate 'accepted'-state of touch begin events.Friedemann Kleint2013-04-121-3/+5
| | | | | | | Task-number: QTBUG-29946 Change-Id: Ia9ac54251f52b6ae4b3d667e49b96441def72a57 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Fix license headers stating QtGui for QtWidgets files.Jake Petroules2013-03-191-1/+1
| | | | | Change-Id: I0ca49e3e1f9f603f0b0f7f3553e854b871efe303 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Implement XEmbed protocolAlberto Mardegan2013-03-061-0/+40
| | | | | | | | | | | | | | | | | | | 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>
* Activate window before replay mouse press eventjian liang2013-02-201-0/+6
| | | | | | | | | | Activate the window of the widget under mouse pointer before replay mouse press event. Change-Id: I9e699374accf108aa49b2a3c73d5e76631100dfd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* replay mouse press event after a popup widget has been closedJian Liang2013-02-121-0/+15
| | | | | | | | | | | | | | If a popup widget(e.g. a popup menu) has been closed due to a mouse press event, the mouse press event will be consumed by the popup widget and the widget under the mouse pointer can't receive the event. This will lead to confusing behavior such as a push button under the mouse pointer is not been push down. This patch replay the mouse press event if a popup widget has been closed. Change-Id: Id493583dfea9e64ab2964e28d559122c43bbc2a6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix focus handling of native child widgets in xcb.Gunnar Sletta2013-01-241-1/+17
| | | | | 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>
* Minimized, maximized and fullscreen are mutually exclusive.Shawn Rutledge2013-01-111-0/+2
| | | | | | | | | | Only if minimized does QWidgetWindow need to remember the previous state. Maybe it's OK to restore from fullscreen to maximized though. Task-number: QTBUG-29030 Change-Id: I1e2724c8811366c9536a3e372ce281e8d473a4ac Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix keyboard grab in QWidgetWindow.Friedemann Kleint2012-11-261-0/+2
| | | | | | | Task-number: QTBUG-28070 Change-Id: I6f55a2dd906ee896071137a5d47fb97c9a571b5f Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Accept subsequent drag moves in QWidgetWindow if enter was accepted.Friedemann Kleint2012-11-161-0/+4
| | | | | | | | Add handling similar to QGuiApplicationPrivate::processDrag. Task-number: QTBUG-28008 Change-Id: I516531da242471cdfbb59418d0052b25f799f373 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Send enter to the child at the position of the QEnterEvent.Friedemann Kleint2012-11-141-2/+4
| | | | | | | | | | | | | This was apparently done so in each of the widget_<platform>.cpp in Qt 4.8. This then causes the cursor to be updated in dispatchEnterLeave() on Windows and Linux. Task-number: QTBUG-27871 Task-number: QTBUG-27585 Task-number: QTBUG-26424 Change-Id: Idf14cd96ccb36f7c2607853ed8b0024c36a5413c Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Add a QEnterEvent containing the mouse position.Friedemann Kleint2012-11-101-2/+4
| | | | | | | | | | | | | Enter handling requires knowledge of the mouse position. Extend the enter handling of QWindowSystemInterface to receive the position (implemented for Windows, XCB and Mac), passing it on to QEnterEvent. Dispatch QEnterEvent from widgets code. Change-Id: I49c07d2b1f46310c877017dd55d4cd7d636bdbce Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Do not call QWidget::show/hideEvent twiceOliver Wolff2012-11-081-0/+6
| | | | | | | | | | | | | | | | | | | | | While handling events for Widgets and Windows in QWidgetWindow::event makes sense for other events, it causes QWidget::show/hideEvent to be called twice when handled like "the rest". Having that as one case here seems to be the cleanest solution. Removing the call to showEvent from QWidgetPrivate::show_helper (as proposed in the bug report) causes autotests to fail and thus is not a viable option. Additionally the expected result for the task221221 test for QDoubleSpinBox was reverted to the Qt4 value as Qt4 behaviour was restored. Task-number: QTBUG-27199 Task-number: QTBUG-26424 Task-number: QTBUG-22565 Change-Id: I0ac42b09b1a7618de042d27aa5dd1b3d9f30f552 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Fix inconsistent leave/enter events for main window when popup is openMiikka Heikkinen2012-11-061-1/+5
| | | | | | | | | | | | | Changed the platform leave event handling logic in QWidgetWindow to match platform leave event handling logic in Qt4, where last mouse receiver is used as leave target only if last mouse receiver wasn't a native window itself. In that case it is assumed to get leave event of its own when relevant. Task-number: QTBUG-27639 Change-Id: Id6edcd29754a15c959f18ab38b20d66e5d446510 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Send leave to most recently entered window when modal dialog is shown.Miikka Heikkinen2012-10-301-0/+1
| | | | | | | | | | | | | | | If a modal dialog was shown as a response to button click, the button retained its hover highlight, because it didn't get leave event. Fixed by tracking the most recently entered window and sending a leave to it when modal dialog is shown that blocks it. Also modified tst_QGuiApplication::modalWindow() autotest to check for enters and leaves. Task-number: QTBUG-27644 Change-Id: I387647e18a762a39d523e3df31221b9583a39f9d Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix enter/leave event generation between native widgets when grabbing.Miikka Heikkinen2012-10-261-3/+8
| | | | | | | | | | | Removed enter/leave event generation when moving between between related windows in QWidgetWindow (i.e. native widgets) while some widget was explicitly grabbing the mouse input. This makes enter/leave event generation identical to non-native widgets. Task-number: QTBUG-27551 Change-Id: I4996007bd7922e073a2957ad267a6373e8f3fecc Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Add ContextMenu event to QWindowSystemInterfaceMiikka Heikkinen2012-10-251-1/+34
| | | | | | | | | | | | | Context menu key wasn't working, as QPA had no handling for it. Added ContextMenu event to QWindowSystemInterface and proper handling to QGuiApplication and QWidgetWindow. Also provide Windows implementation. Task-number: QTBUG-27648 Change-Id: I7ce71ec4b5cdcc7be758e67f9faf6d863f7b19be Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix excess enter/leave event generation for native widgetsMiikka Heikkinen2012-10-191-2/+25
| | | | | | | | | | | | | | | | | | | | | | Native widgets have a native window each, so QPA plugin sends enter and leave events for associated QWindow whenever mouse cursor moves from one widget to another. QWidgetWindow had no context to interpret these events as moves from one widget to another, since they were sent separately. This resulted in leaves and enters for each widget in parent chain, when only the bottom child should have gotten them. Fixed by peeking into window system message queue when handling leave in QWidgetWindow and retrieving the entered window from queued enter event. Also provided a convenience function that QPA plugin can use to ensure both leave and enter events are in the event queue when moving from one QWindow to another. Task-number: QTBUG-27550 Change-Id: I74fec0ac90f6848495c2392c5f7e41624ad8aea2 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix drag and drop with native widgetsjian liang2012-09-271-4/+4
| | | | | | | | | | | | | | | Task-number: QTBUG-27336 Don't check 'widget != m_widget' in QWidgetWindow::handleDragEnterMoveEvent() since the current window's parent widget may be the actual drop target. I replace it with a check '!widget->isWindow()' to prevent we pass through a top level window. I also change 'widget->mapFrom(m_widget, event->pos())' to 'widget->mapFromGlobal(m_widget->mapToGlobal(event->pos()))' since m_widget may not be widget's parent. Change-Id: Ia4f10f85ccdf1e27223ddc51afabd98b5d16f2fb Reviewed-by: Marc Mutz <marc.mutz@kdab.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>
* Fix build with QT_NO_WHEELEVENT.Sérgio Martins2012-09-101-0/+6
| | | | | Change-Id: I80c64183677a5f518e2c637f4c1ff4004e3010c0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>