Commit Graph

28 Commits (ea14a6308394ded16b4666ddc19f9c95c4e60658)

Author SHA1 Message Date
Friedemann Kleint a4f7bb8733 Widgets: Set qt_button_down for each press.
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>
2013-06-24 10:16:28 +02:00
Friedemann Kleint 38dc6ccca0 QWidgetWindow: Prioritize keyboard grabber over popup for key events.
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>
2013-05-13 15:39:35 +02:00
Richard Moe Gustavsen 53e01c4329 QWidgetWindow: don't accept touch events while in popup mode
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>
2013-05-07 22:43:14 +02:00
Friedemann Kleint 8c81b282f8 Widgets: Propagate 'accepted'-state of touch begin events.
Task-number: QTBUG-29946

Change-Id: Ia9ac54251f52b6ae4b3d667e49b96441def72a57
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-04-12 09:31:51 +02:00
Jake Petroules ef9c3c753d Fix license headers stating QtGui for QtWidgets files.
Change-Id: I0ca49e3e1f9f603f0b0f7f3553e854b871efe303
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2013-03-19 23:17:27 +01:00
Alberto Mardegan b5bdd31de4 Implement XEmbed protocol
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>
2013-03-06 18:59:07 +01:00
jian liang af27b37b08 Activate window before replay mouse press event
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>
2013-02-20 16:09:59 +01:00
Jian Liang a65157e5b7 replay mouse press event after a popup widget has been closed
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>
2013-02-12 23:52:56 +01:00
Gunnar Sletta fc663b5f9a Fix focus handling of native child widgets in xcb.
Change-Id: If4d596195624011142bff6853849a23064e478df
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2013-01-24 09:08:59 +01:00
Sergio Ahumada 48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Shawn Rutledge 3295378325 Minimized, maximized and fullscreen are mutually exclusive.
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>
2013-01-11 10:16:44 +01:00
Friedemann Kleint eefec0e0be Fix keyboard grab in QWidgetWindow.
Task-number: QTBUG-28070
Change-Id: I6f55a2dd906ee896071137a5d47fb97c9a571b5f
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
2012-11-26 11:00:07 +01:00
Friedemann Kleint 72a0ce045c Accept subsequent drag moves in QWidgetWindow if enter was accepted.
Add handling similar to QGuiApplicationPrivate::processDrag.

Task-number: QTBUG-28008
Change-Id: I516531da242471cdfbb59418d0052b25f799f373
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2012-11-16 14:09:52 +01:00
Friedemann Kleint 39a0952687 Send enter to the child at the position of the QEnterEvent.
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>
2012-11-14 10:36:38 +01:00
Friedemann Kleint 2d07d3b4e3 Add a QEnterEvent containing the mouse position.
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>
2012-11-10 20:08:28 +01:00
Oliver Wolff d2e5c7787e Do not call QWidget::show/hideEvent twice
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>
2012-11-08 15:01:52 +01:00
Miikka Heikkinen 715902051a Fix inconsistent leave/enter events for main window when popup is open
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>
2012-11-06 20:26:43 +01:00
Miikka Heikkinen a48508cd76 Send leave to most recently entered window when modal dialog is shown.
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>
2012-10-30 12:53:46 +01:00
Miikka Heikkinen 8ac2ea94d3 Fix enter/leave event generation between native widgets when grabbing.
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>
2012-10-26 11:18:12 +02:00
Miikka Heikkinen 9fc7fcb4c9 Add ContextMenu event to QWindowSystemInterface
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>
2012-10-25 10:08:04 +02:00
Miikka Heikkinen bdc0eaae6b Fix excess enter/leave event generation for native widgets
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>
2012-10-19 13:02:17 +02:00
jian liang 0a7e8350ae Fix drag and drop with native widgets
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>
2012-09-27 23:51:30 +02:00
Iikka Eklund be15856f61 Change copyrights from Nokia to Digia
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>
2012-09-22 19:20:11 +02:00
Sérgio Martins ed6ee1b2ee Fix build with QT_NO_WHEELEVENT.
Change-Id: I80c64183677a5f518e2c637f4c1ff4004e3010c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-09-10 14:09:45 +02:00
Friedemann Kleint 1e34d3525f Fix updating of drag icons.
Try to find a target widget that accepts drops; ignore the event
if none can be found. Split the handleDrag*() functions
to reduce indentation.

Add an autotest.

Task-number: QTBUG-22987
Change-Id: I516ac5f0c002caaf83c52ac16f821246e565230f
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-08-31 16:10:25 +02:00
Samuel Rødal 054645c846 Do not call markDirty() for hidden widgets.
Fixed crash when resizing a scroll area with a native viewport
(typically a QGLWidget) causes the scroll bars to get hidden, while
there are still expose events in the queue for the scroll bar widget.

Task-number: QTBUG-26746
Change-Id: Ia77c8eb32a6730670333120af3f9a772c64807f1
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-08-06 03:21:38 +02:00
Joerg Bornemann 84e84b507c fix fullscreen state in QWidgetWindow::handleWindowStateChangedEvent
A widget can be Qt::WindowMaximized and Qt::WindowFullScreen at the same
time. See tst_qwidget::windowState.

Task-number: QTBUG-26420
Change-Id: I89d6edb857f41cda911152244cf23d36dfd1cdce
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-07-09 10:50:25 +02:00
Girish Ramakrishnan f128c1f6d3 Remove _qpa from cpp filenames
36547f4eff removed the _qpa from .h
files and promised to remove it from .cpp files at a later date.

Change-Id: I24a5c3796f6b07dd9a1931b699f3212d315edb12
Reviewed-by: Andrew Stanley-Jones <andrew.stanley-jones@nokia.com>
2012-07-03 08:11:54 +02:00