QGuiApplicationPrivate::lastCursorPosition is initialized to qInf(),
qIn(). Under some circumstances, this is passed to dispatchEnterLeave()
which causes an FPE in QPointF::toPoint().
Move the invocation of QPointF::toPoint() to the if-branch handling the
enter list, which already fixes the FPE. To be extra sure, clamp to
QWIDGETSIZE_MAX.
Task-number: QTBUG-45501
Change-Id: I2d1407415e6360196730d23ee319d1ee6981d1f5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
In order to obey a palette set globally on QApplication, an application
attribute for checking if it's set at all is added.
Task-number: QTBUG-39800
Change-Id: I26b965e6e18e0e1ca4df03cf343b3527df3636b2
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Currently pressed touch point is added to the list of active touch
points in Gui module. It must be excluded from consideration when
we traverse the list.
Task-number: QTBUG-43255
Change-Id: Idddab093b1f6a79122cf18fad7f43bfc93ce7eea
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Input method events contain attributes, etc. and cannot
be compressed.
Change-Id: Ib9a2a80f1efec53f9d843684f8227e1f2e245853
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Make styleHints a static member variable of QGuiApplicationPrivate and
fix accessor accordingly. Extend tst_QApplication::settableStyleHints()
to run without QApplication instance as well and add a similar test
to QGuiApplication.
Task-number: QTBUG-44499
Change-Id: I42b92ef38f7dd512d08d70accfa7dd4f09a22f01
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Avoid repeated instantiation of end() in loops, use variable instead.
Change-Id: I5f58fa63c2845827ebe9be2d0fcee80b7ccc74bc
Reviewed-by: Marc Mutz <marc.mutz@kdab.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>
Commit 1259c5768e410361bcd8b5cf0c2057a2ebabda83 in qtdeclarative removed the
ability to create QWidgets in QML by giving them the correct parent, which
requires calling QWidget::setParent instead of QObject::setParent. This patch
introduces a hook that will allow QtQml to give widgets a proper parent.
Change-Id: I84c57ca5032582c43e405219343d55ac9cf2ffa0
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
This is analogous to 0a92295ca8
which added QMouseEvent::source.
For now, we say that a wheel event is synthetic when it comes from
a trackpad or other device that provides scrolling by some means
other than an actual wheel.
Change-Id: I0452ca2080b551b18b9c2f6e42db925d14ae339e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Wheel events should not cause a popup widget parented on a scrollable
widget to be closed or moved to correctly reflect the system behavior
on OS X and Windows.
Task-number: QTBUG-42731
Task-number: QTBUG-40656
Change-Id: I4ef75aa8331390309c251316ac76db2cf9ec51f7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
An application might choose to change focus when receiving mouse/touch
press/move events. This is in conflict with Qt assigning focus on touch
release (QPlatformIntegration::SetFocusOnTouchRelease), since Qt
might then reassign focus to something else.
An example of this is seen with the "frozencolumn" example. Here, when
the user double clicks on a cell, the application creates an 'edit'
widget inside the cell that gets focus. But at soon as the last release
is sent, Qt will change focus to the focus proxy of QScrollArea instead.
This patch will introduce an exception to setting focus on release, so that
we only set focus if we detect that focus didn't change (by the app)
while processing press/move events.
Task-number: QTBUG-39390
Change-Id: I7b398b59e3175265afd2fcd938e11f88155abc89
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
This reverts commit cf0d96f4c8.
It broke text selection on iOS and was never tested on that platform.
Task-number: QTBUG-43101
Change-Id: I9f224a3838a1f741bc9a9c24f16923ef2018ddf3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Add a convenience function to QApplicationPrivate returning
the source of mouse events to be able to detect synthesized
mouse events.
Change-Id: I09f82ed917586cd3de8b4146fc6638d19d428163
Task-number: QTBUG-40461
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Otherwise, a widget can't detect pinches if the points don't start
simultaneously unless it sets WA_TouchPadAcceptSingleTouchEvents.
The use case is for a widget that doesn't actually want the single
touch events, but only when there are two or more touchpoints.
Task-number: QTBUG-42389
Change-Id: I5269d9acb93a0001c4fde02b1f7b9e0dfcc0032f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
If a context menu contains a menu item which will open a dialog, the
context menu will never get the leave event, which might leave the menu
in an invalid state.
Synthetic leave events are sent to windows, but not to popups that are
blocked by modal dialogs. Hovever, a popup is removed from the popup
stack in QApplication before it receives the leave event. Therefore
always give popups events, even when they are not visible.
Task-number: QTBUG-38021
Change-Id: I63f6febed44f1e7c8f29e7a09af07f32b4ddbc82
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Instead of sending the event from random places, send it from
QWindowSystemInterface. This allows to send override events on OS X to
menus before doing other key processing and reduces the number of
ShortcutOverride events on all platforms to exactly one per key press
event.
Additional test by Friedemann Kleint.
Task-number: QTBUG-38986
Change-Id: I6981bb776aba586ebc7c3daa5fd7a0d84c25bc3e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().
Change-Id: I3bd7b79b520ddbb9d4dd6adb3a495e214f111c2c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Synthesized mouse events should not cause mouse events which
look like they were obtained from the system.
So set the source of generated events from the original event.
Change-Id: I862829446ac6ef664e1b8e4a5b54ed11926a1d4b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Qt supports changing the default lines a scroll wheel click scroll, but
wasn't trying to read the system settings. The patch adds support for
platform themes to set the default.
Change-Id: I53fdcec7984941d1d1285d927d70460356613f81
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
To convert coordinates to a parent's coordinate system one should
translate them by an offset of a child widget relative to it's
parent widget. QRect::moveCenter() doesn't translate, it sets
the coordinates of the touch point's center to this offset.
Change-Id: I9d823784803bd1448c0d665944090674d3ff518b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
The QPanGesture recognizer requires single-point touch events. The touch
implementation in Qt 4 would test Qt::WA_TouchPadAcceptSingleTouchEvents
and forward single touch events if set.
Making this work in Qt 5 is a little bit more involved since the platform
plugins don't know about widgets.
Change the Cocoa touch implementation to send single-point touch events
to QWidgetWindow windows only. Make QApplication forward single-point
touch events only if the target widget has the
Qt::WA_TouchPadAcceptSingleTouchEvents attribute set.
Task-number: QTBUG-35893
Change-Id: I68712a5e3efb4ece7a81ca42f49c412e525eeb3a
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Tooltips may occur outside the widget area when it has mouse grab.
Task-number: QTBUG-40261
Change-Id: I68c1e28ad264fc5aaeb7d96273342f1d4bca8ce6
Reviewed-by: David Faure <david.faure@kdab.com>
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>
On Windows QApplication::cursorFlashTime() can return -1 if keyboard
blinking is disabled. Add documentation for that case.
Change-Id: I1e5d683573e55b045e2d9bd9804daf4be579fd02
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This is useful without QWidget too.
Change-Id: Ic7857e52e4a8f57c1205615a1f30323b486814af
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Adds QApplicationPrivate::usesNativeStyle to check whether the
QApplication is using the native platform style.
This can be needed internally to decided whether to let the platform
plugins do stuff or do it interally, style dependent. E.g. letting the
platform plugin popup a QMenu vs. letting the style draw one.
Change-Id: Ibb5e11a4d9d1d2824685ff146786a9354ceef43c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The variable 'appFont' was removed as it was not used.
Change-Id: I8dfa8382b3f30b72490fd22b4e0a27e991318a9c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
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>
Otherwise, touch update/end events were ignored and the gestures
were never triggered (unless a native widget was used).
Task-number: QTBUG-37759
Change-Id: I4b0145ffe535065e1458164b67bc8d9e33a4af97
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>