Commit Graph

4259 Commits (ecdd5648bde7ee71f1c993f6c4f59ff4ea373784)

Author SHA1 Message Date
Jan Kundrát a1b84fe729 Fix bunch of other segfaults due to null screens
This was motivated by a real segfault:

 #0  QScreen::handle (this=0x0)
     at qtgui-5.5.9999/work/qtgui-5.5.9999/src/gui/kernel/qscreen.cpp:112
 #1  0x00007faaf5d5e85e in QXcbNativeInterface::connectionForWindow (this=this@entry=0x7fab04d684f0, window=window@entry=0x0)
     at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:483
 #2  0x00007faaf5d5fa53 in QXcbNativeInterface::nativeResourceForWindow (this=this@entry=0x7fab04d684f0, resourceString=..., window=window@entry=0x0)
     at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:304
 #3  0x00007fab048b8b57 in QX11Info::connection ()
     at /var/tmp/portage/dev-qt/qtx11extras-5.5.9999/work/qtx11extras-5.5.9999/src/x11extras/qx11info_x11.cpp:358
 #4  0x00007fab02ce14c6 in NETEventFilter::nativeEventFilter (this=0x7fab04ea5e70, ev=0x7faaec003a60)
     at kwindowsystem-5.7.0/work/kwindowsystem-5.7.0/src/kwindowsystem_x11.cpp:229

...at which point I tried to stop playing the
get-backtrace-patch-rebuild-repeat cycle and looked at the stuff which
looked fishy to my untrained eye. So this is speculative in nature, but
I think that each of these cases can be hit and dereference a nullptr.

Change-Id: I046debaa1b49fa55e876247fc62f3eb924496fe8
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-12 13:23:31 +00:00
Gabriel de Dietrich f85b6c2461 Get CoreText style name when resolving Qt font
Since we use CoreText API to populate the font DB, we
should also make sure we use consistent data when doing
queries.

This partially reverts and ameds b619c35d85.

Change-Id: I6a3470fbee719ae1ea3085c252a4870040b9af1a
Task-number: QTBUG-41487
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-03-12 13:20:13 +00:00
Richard Moe Gustavsen 4add7d236b iOS: ensure keyboard is visible, even when IM hints hasn't changed
When showing a QWindow, we transfer first responder status to its
QUIView. If another QWindow was active with a text responder at
that point, the text responder will loose first responder status
in favor of the new view, and the keyboard will hide.

Now, if the new window has a focus object with the same IM state
as the previous focus object (in the previous window), m_imeState
will not change, and QIOSIntegration::update() will assume that
nothing needs to be done to show the keyboard, even if it's
actually hidden.

This patch will change the logic, so that we:
- show the keyboard if its supposed to be visible, even if
    m_imeState did not change.
- Only recreate the text responder if it needs a different
    configuration than the one we already got (not only
    from changes to Qt::ImEnabled)

Task-number: QTBUG-40695
Change-Id: I6f6788af4cbff5c7abe4f5a29e23a7cefea6b711
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-03-12 13:07:35 +00:00
Tor Arne Vestbø d758c115e4 iOS: Prepare QIOSIntegration for handling plugin options
QGuiApplication sets options passed to the plugin through -platform
as properties on the QPlatformNativeInterface. To handle those we need
to inherit QPlatformNativeInterface first (which is the QObject
subclass), and include the Q_OBJECT macro.

Change-Id: Ia496851c64cbb0036c26e7ed0683d0ecfa8319cc
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2015-03-12 10:10:07 +00:00
Morten Johan Sørvig 10126b37d2 Cocoa: Correct mouse event forwarding for popups
We need to track the active popup globally, having
parent windows track child popups is not sufficient
since there may be one or more intermediate windows
in between the event receiving window and popup window.

Add API to QOCocoaIntegration for tracking the global
popup window and use it instead of the per-window
tracking. Make sure to only close popups on clicks
outside the popup only. Add code to QNSView::handleMouseEvent
that redirects mouse events to the active popup.

Add manual test.

Change-Id: Ia3e3fd42d8fddf5c69f0c6879b333ca544521f61
Task-number: QTBUG-43464
Task-number: QTBUG-31937
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-03-12 09:32:17 +00:00
Jan Kundrát 4c022338aa Fix segfault when requesting root window and there are no screens
This was easy to hit with KDE Plasma 5.2.1; KWindowSystem called
QX11Info::appRootWindow() which in turn tried to dereference a nullptr
returned from QXcbConnection::primaryScreen().

 #0  QXcbConnection::rootWindow (this=<optimized out>)
     at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:1303
 #1  0x00007fc26da096d7 in QXcbNativeInterface::rootWindow (this=this@entry=0x7fc27d1734d0)
     at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:425
 #2  0x00007fc26da0ab21 in QXcbNativeInterface::nativeResourceForIntegration (this=0x7fc27d1734d0, resourceString=...)
     at qtgui-5.5.9999/work/qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbnativeinterface.cpp:223
 #3  0x00007fc27c563148 in QX11Info::appRootWindow (screen=screen@entry=-1)
     at qtx11extras-5.5.9999/work/qtx11extras-5.5.9999/src/x11extras/qx11info_x11.cpp:158
 #4  0x00007fc27a98c444 in NETEventFilter::nativeEventFilter (this=0x7fc27d425b60, ev=0x7fc264004ad0)
     at kwindowsystem-5.7.0/work/kwindowsystem-5.7.0/src/kwindowsystem_x11.cpp:192
 #5  0x00007fc2795d0a8a in QAbstractEventDispatcher::filterNativeEvent (this=<optimized out>,
     eventType=..., message=message@entry=0x7fc264004ad0, result=result@entry=0x7ffc96ecf348)
     at qtcore-5.5.9999/work/qtcore-5.5.9999/src/corelib/kernel/qabstracteventdispatcher.cpp:460
 #6  0x00007fc26d9ea941 in QXcbConnection::handleXcbEvent (this=this@entry=0x7fc27d173580, event=event@entry=0x7fc264004ad0)
     at qtgui-5.5.9999/src/plugins/platforms/xcb/qxcbconnection.cpp:971

Change-Id: I98a5d767cd7e143f00666f6fc78e9dc10893513d
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-12 07:25:15 +00:00
Andrew Knight 718f87046a eglfs_kms: Use a QByteArray for connectorName
Using a byte array here simplifies the logic while being more efficient.
It also removes warnings about using deprecated QString methods.

Change-Id: Ia1384dfb92e953c56179647b92a41b59cd26d9ea
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-03-12 05:00:56 +00:00
Laszlo Agocs 85620bd788 windows: Introduce a built-in GPU blacklist
Use a built-in JSON file in case the QT_OPENGL_BUGLIST environment
variable is not set. When QT_OPENGL_BUGLIST is set, the built-in list
is ignored.

To make the implementation simpler and more readable, some of the code
in QWindowsOpenGLTester is reshuffled a bit. It also caches the results
now, so it is safe and fast to call supportedRenderers() and friends
multiple times.

The blacklist currently contains the Intel card from QTBUG-43263 (Intel
GMA / HD3000 ?) and may also apply to QTBUG-42240.

[ChangeLog][QtGui] Qt now contains a built-in GPU driver blacklist for
Windows that disables the usage of desktop OpenGL with some older cards
that are known to be unstable with opengl32.dll.

Task-number: QTBUG-42240
Task-number: QTBUG-43263
Change-Id: I1ecd65b51fca77925317d52048e7ab01d9b8797c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-11 19:23:17 +00:00
Gabriel de Dietrich 22afbc1536 QShortCut: Check whether the menu is QPA-disabled
When climbing the menu hierarchy, it's sounder to
check whether the actual QPA menu is enabled. This
way we can trigger modifier-less shortcuts even in
submenus.

Task-number: QTBUG-38256
Task-number: QTBUG-42584
Change-Id: I13a27027306bce0f0732b05bf9469f3b77028f73
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
2015-03-11 17:04:59 +00:00
Laszlo Agocs 367a91d278 Enhance EGL_CONTEXT_LOST checks
Apparently failures can occur not just when doing eglMakeCurrent() but
also when creating window surfaces.

Change-Id: Ife1210293d5120fd41352164d9c89e83fb5ce468
Reviewed-by: Michael Brüning <michael.bruning@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-11 09:43:14 +00:00
Shawn Rutledge 37b7c5164c xcb: another QXcbScreen null pointer check
In QXcbWindow::setParent(), the window may not have a screen,
and in that case we cannot get the root window in this way.

Task-number: QTBUG-44719
Change-Id: I719e5e2f8cad13b1460b4d9df6ffd6c4a48e0d37
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-11 07:46:01 +00:00
Andy Shaw c87f8a3797 Windows: Only set the touch flags if the window is not already registered
It is possible for there to be a HCBT_CREATEWND hook which can set the
touch window flags already while the window is being created. Therefore
we want to defer to those settings instead as they should take precedence.

Change-Id: If8dcbd34db2b3bbbfb1bc36731665fb17fb87c24
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-11 07:15:53 +00:00
Daniel Vrátil 3b30a8215e Improve handling of XRandR events in XCB backend
Querying X server for data can be very expensive, especially when there
are multiple processes querying it at the same time (which is exactly what
happens when screen configuration changes and all Qt applications receive
XRandR change notifications). This patch is aiming to reduce the number of
queries to X server as much as possible by making use of detailed information
available in the RRCrtcChangeNotify and RROutputChangeNotify events.

Firstly, the backend now does not rebuild all QXcbScreens on any change (which
involved the very expensive xcb_randr_get_screen_resources() call), but only
builds the full set of QXcbScreens once in initializeScreens(), and then just
incrementally updates it.

Secondly, it avoids querying X server for all screens geometry as much as
possible, and only does so when CRTC/Output change notification for a particular
screen is delivered.

As a result, handling of all XRandR events on screen change is reduced from tens
of seconds to less then a seconds and applications are better responsive after
that, because we don't block the event loop for long. The X server is also more
responsive after the screen change, since we are not overloading it with requests.

Change-Id: I9b8308341cada71dfc9590030909b1e68a335a1f
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-11 07:15:28 +00:00
Tor Arne Vestbø dfd6fc7bce iOS: Only use root level native runloop if at first level of processEvents
We used to support calling QEventLoop::exec() from within a processEvent
recursion and still jump down to the root native runloop, but this does
not work as intended due to how QEventDispatcherCoreFoundation uses
flags in its ProcessEventsState for e.g. deferred wake up or timer
updates. The logic in QEventDispatcherCoreFoundation assumes that
the next recursion to processEvents will be handled by itself, so
that it can interpret the flags in ProcessEventsState. The iOS
event dispatcher subclass, QIOSEventDispatcher, does neither of
these things, and should only be used from a 'clean' state.

Change-Id: I44fa156feecc45772806002465c35bef0797ead2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2015-03-10 12:48:16 +00:00
Tor Arne Vestbø 4c542ab592 iOS: Handle an QIOSViewController outliving its related QIOSScreen
We release the UIWindow that retains QIOSViewController in the
QIOSScreen destructor, but other parts of the OS may have retained
the view controller, so the dealloc may not happen until later. In
the meantime we may receive calls to shouldAutorotate, so we need to
guard this code for the situation that m_screen has been deleted.

Change-Id: Iefeb75f4fc698b5e80417ffd3a971b7de625bcd5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2015-03-10 12:46:37 +00:00
Eskil Abrahamsen Blomfeldt ac3502345f Fix design metrics for text on Windows
The trick to get design metrics on Windows is to request the
font with the design size, however we were passing the em square
size in as the cell height instead of the em square size (aka
character height in Windows docs). This would give us hinted metrics
and thus the design metrics would differ from other platforms.

[ChangeLog][Windows][Text] Fixed design metrics for text

Task-number: QTBUG-44501
Change-Id: I4cffc3b86359cfdaf2ece07e1259f6fa862132bc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-09 14:45:06 +00:00
Thiago Macieira afe3e24711 QPA plugins: Fix const correctness in old style casts
Found with GCC's -Wcast-qual.

Change-Id: Ia0aac2f09e9245339951ffff13c946899b4ba15b
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-09 13:21:38 +00:00
Andrew Knight 0fce009f1c eglfs_kms: remove deprecated QString uses
Fixes "warning: ‘QString::QString(const char*)’ is deprecated"

While we're here, make the locals const.

Change-Id: Iee70253a46f91937b93e06cc08cd361716cd669d
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-03-09 11:10:10 +00:00
Friedemann Kleint 8f1eb52525 Windows: Fix build of qwindowsfontdatabase.cpp with MinGW 4.9.2/-Werror.
Disable warning:
qwindowsfontdatabase.cpp: In member function 'virtual QFontEngine* QWindowsFontDatabase::fontEngine(const QByteArray&, qreal, QFont::HintingPreference)':
qwindowsfontdatabase.cpp:1111:74: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

Change-Id: Ifce69db7d1f3b78d52e5b4e01db8e7bbfb62b439
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-03-06 22:18:15 +00:00
Shawn Rutledge 51ada7734a xcb: do not create a dummy QScreen when there are no outputs
Whenever a QWindow is associated with a QScreen, the screen is expected
to be a real working one, so that rendering continues to be possible.
This partially reverts 52f5e50f11

[ChangeLog][QPA][Xcb] If all QScreens (xcb outputs) are disconnected
while an application is running, QGuiApplication::primaryScreen() will
return null until a screen is connected again.

Task-number: QTBUG-40174
Task-number: QTBUG-42985
Change-Id: Id1b29dd70eaf3f2e7fd477516ce7e2bf24e095f6
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-03-06 19:54:46 +00:00
Laszlo Agocs d7401c32c5 Avoid crashing when there is no QWindowsIntegration anymore
When destroying the QWindowsIntegration, the global instance is set to
null in the destructor. This is followed by a lot of additional steps
when destroying the members. Some of that cleanup calls to
staticOpenGLContext() which was not handling the case of the integration
global instance being null.

Change-Id: Ib74faf491d4c81635934547968ec91e9dceec6e7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-06 19:27:11 +00:00
Tor Arne Vestbø ddf09adeeb iOS: Use qFatal when detecting QApplication before UIApplicationMain
Gives a stack-trace at the point the error was caused, making it easier
to debug what's going on.

Change-Id: I0d65bb5061e9a97c142d41f6c99a1a1803cbe82d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-03-06 19:01:39 +00:00
Laszlo Agocs f6e6ef46b3 Fix up signal handling in QFbVtHandler
Start using signalfd where we can. Drop the crash (SIGSEGV, SIGBUS) handling completely.

The crash handling that was in place previously was not async-safe. It also prevented getting
a core dump. So just remove it. There is no safe solution for a single application process since
restoring the keyboard, video modes, etc. all need unsafe calls in the signal handler almost for sure.

We can however improve the handling of non-crash scenarios greatly:

Introduce support for SIGINT, allowing nicely and cleanly restoring the video
mode with the KMS backend when pressing Ctrl+C while QT_QPA_ENABLE_TERMINAL_KEYBOARD
is set.

Same goes for keyboard suspend (SIGTSTP, Ctrl+Z). When QT_QPA_ENABLE_TERMINAL_KEYBOARD is set,
platform plugins now have the possibility to act upon Ctrl+Z. As an example eglfs' KMS backend
is enhanced to handle this by restoring the video mode before suspending the process, and
reinitializing when brought into foreground again (SIGCONT).

SIGTERM is also handled. This is extremely handy when starting an application locally on the embedded
device and then kill-ing it via a remote ssh session. Keyboard and video mode is now cleanly restored.

Finally, when disabling the keyboard, try setting also KDSKBMUTE.

Change-Id: I2b3608dc23c798e2b39f74cb27f12dcb0e958435
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
2015-03-06 07:13:21 +00:00
Laszlo Agocs d04c3d2079 eglfs: Pluginize RPi, iMX6 and Mali backends
eglfs does not depend on the device makespecs anymore when it comes to these device
integration backends (hooks). Instead, backends are autodetected by configure.

The name of the preferred plugin is still set in the device makespecs. This
is optional. When not set and there is more than one plugin present in the system,
the environment variable QT_QPA_EGLFS_INTEGRATION will have to be set at runtime.
In the absence of that, the order is undefined.

Change-Id: Ie1ced2c9aa1beff2adb13b4fdea7c499cb5a6aab
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-03-05 09:51:16 +00:00
Friedemann Kleint d70492d1ee Remove debug formatting functions obsoleted by the new debug operator for QFlag<T>.
Change-Id: I6d737eb86b790eeefb537ca5e6a075bf30a3dcfb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-05 08:56:43 +00:00
Friedemann Kleint ae554cb8c2 Windows plugin: Simplify cursor code in platform screen.
Change the shared pointer to store a QPlatformCursor instead of
QWindowsCursor, removing the dependency of qwindowsscreen.h on
qwindowscursor.h.

Change-Id: I8b4bbc9fd4d5046c30ac3784f14229a9cc6d8dc6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-03-05 08:56:35 +00:00
Friedemann Kleint eee4c6f190 Clean headers in the Windows plugin.
Change-Id: Ibc6b904e6e0b21f5daa0730a7eda2cae43cd3dcf
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-03-05 08:56:30 +00:00
Friedemann Kleint e1ae71d3c3 Clean headers in the Direct2D plugin.
Change-Id: Iab85ccdf49ee81214ada87a2e476f650b39a29ce
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-03-05 08:56:25 +00:00
BogDan Vatra 1ee25cedb4 Android: Make sure applicationState is set correctly
The Activity onResume function is always called before the application
gets initialized and we let the applicationState set to the default
value which is AppicationInactive.

Change-Id: Ifc3c7e3dfc51f2b821f8ca87f8b711f485b6a6f8
Reviewed-by: Peter Rustler <peter.rustler@basyskom.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-03-05 08:50:04 +00:00
Thiago Macieira 259b2b6cd7 XCB: Solve crash when plugging a screen with unshown QWindow
If a QWindow has never been shown, it has no platformWindow (it's null).
So it's a valid condition and we need to be sure that the pointer isn't
null before dereferencing it.

Task-number: QTBUG-44766
Change-Id: Ia0aac2f09e9245339951ffff13c7eb024d6a0773
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-04 22:43:52 +00:00
Oswald Buddenhagen 2b5982aac8 Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I95b3a87c5068c6b8068b30a35655b4c2419e7f9e
2015-03-02 09:23:07 +01:00
Liang Jian 5f2f38854f Register font's english name as alias when populating font database
Register font's english name as alias in the callback of
EnumFontFamiliesEx() at the time
QWindowsFontDatabase::populateFontDatabase() is being called. This will
help us to resolve english font family name to its corresponding localized
alias once windows font database has been populated. It will also fix an
assertion in Chinese Windows.

Task-number: QTBUG-44647
Change-Id: I265d93c16a1677a7f31ff56d60c24f6e90666419
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-27 09:29:53 +00:00
Shawn Rutledge 2e63f7bf92 xcb: Don't log mouse moves by default
It produces too much log output, so now it must be enabled by both
defining Q_XCB_DEBUG and enabling the qt.qpa.input category.

Change-Id: Id2eb7545a7cd07dadd70da31a1f17c2999feec0d
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-27 06:54:47 +00:00
Erik Verbruggen 9608629d7e OSX: fix leaks due to missing NSAutoreleasePool
env OBJC_DEBUG_MISSING_POOLS=YES qtcreator

Change-Id: Ibbe5f42af5b94a439be3f0dd0f2b6e34bb1afd3f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-02-26 12:11:33 +00:00
Allan Sandfeld Jensen a09e67c2f7 Remove unused CGImage in qcocoabackingstore
Since 916dfcb827 m_cgImage has been unsed
in the QCocoaBackingStore and can be removed.

Change-Id: Ib289b1a3b848e05dda2dfc76ca5d857770883a0b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-02-26 09:49:13 +00:00
Michal Klocek 081afb2a16 Fix android menubar's menu not opening at the first press.
In case of selected item in submenu, call aboutToHide() on still
visible menus. This will allow quickquickcontrols to act
poperly when menus are closed.

This patch is a resubmission of
dbd6d158e3 which was merged to dev
although it should have targeted 5.5.

Task-number: QTBUG-42188
Change-Id: I868cc6fc8403f0586f35a1734e0cb026982f6063
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-26 09:49:04 +00:00
Kai Uwe Broulik 8b0b24064e qiosmenu: Move "Done" button to the right
The "Done" action is traditionally on the right.

Change-Id: I2497b878b552a9bcf69827a0ab85f1931067a023
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-25 14:51:56 +00:00
Friedemann Kleint 7bbde34ee0 Fix invocations of static methods of QGuiApplication/QApplication.
Change-Id: I99ba58763f6063fa2a6f511adbea0163cce7ea32
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-25 14:06:27 +00:00
Alexander Volkov 76922a706f Decide whether to synthesize mouse events on a per device basis
Currently Qt uses the QPlatformIntegration::StyleHint
SynthesizeMouseFromTouchEvents to check whether to synthesize mouse
events from touch events. But not only platform plugins can produce
touch events, they can be created by e.g. QTest::touchEvent() and in
this case we almost definitely need synthesizing regardless of the
platform.

This commit introduces a QTouchDevice::MouseEmulation capability which
replaces use of the QPlatformIntegration::SynthesizeMouseFromTouchEvents.
So it's possible to pass QTouchDevice without this capability to
QTest::touchEvent() and be sure that mouse events will be synthesized.
Notice that touch pads always emulate mouse events.
As a result we can activate some tests which were disabled for specific
platform configurations by commits 6c1670d8c2
and e9760f1559.

Change-Id: Idc82fa4007a095fc1cb5934979361b0023d2b793
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-25 13:31:41 +00:00
Shawn Rutledge bbdef3ca98 xcb: add qt.qpa.screen logging category
Some existing debug output required recompiling with Q_XCB_DEBUG.
Being able to enable this debugging in the field will help with
troubleshooting any remaining screen management issues.

Change-Id: Ie67b0009d4b00b0d39fde0fb4d8d54fcf89d6693
Reviewed-by: Sandro Mani <manisandro@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-25 12:15:13 +00:00
Sandro Mani 52f5e50f11 Ensure QGuiApplicationPrivate::screen_list is correctly populated
Ensure QGuiApplicationPrivate::screen_list always contains at least one
screen, and that the first item (returned by QGuiApplication::primaryScreen)
is always the current primary screen

Task-number: QTBUG-42985
Change-Id: I08b880b3e94387f28230ed5fc738bceea943bad3
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-25 12:15:05 +00:00
Sandro Mani df39295f23 Have XCB/Windows platform integration classes keep their own instance pointer
Through the chain of code called by QPlatformIntegrationFactory::create, there
are cases where QGuiApplicationPrivate::platform_integration is accessed
(typically through QGuiApplicationPrivate::platformIntegration()) before the call
to QPlatformIntegrationFactory::create has returned.

Change-Id: I7805b72be5b56aed5cb8ce30cb908743c9b1f91b
Task-number: QTBUG-44388
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-25 12:14:51 +00:00
Frederik Gladhorn 34b14a8472 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	examples/xml/htmlinfo/simpleexample.html
	examples/xml/rsslisting/rsslisting.cpp
	qmake/generators/win32/msbuild_objectmodel.cpp
	src/3rdparty/harfbuzz-ng/src/hb-private.hh
	src/corelib/global/qlogging.cpp
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/thread/qwaitcondition_unix.cpp
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	src/testlib/doc/src/qt-webpages.qdoc
	tests/auto/other/qaccessibility/tst_qaccessibility.cpp

Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
2015-02-24 21:02:08 +01:00
Thiago Macieira 341a32bcee Merge "Merge remote-tracking branch 'origin/5.4.1' into 5.4" into refs/staging/5.4 2015-02-24 03:56:27 +00:00
Oswald Buddenhagen d34353a065 Merge dev into 5.5
Change-Id: Id6dbbbfc542c214fe695c6795c6aaf23aedc1cd1
2015-02-23 11:24:07 +01:00
Stéphane Chatty 4af142d4e1 Linux/XCB: added a missing arg to QXcbConnection::QXcbConnection call
QXcbConnection::QXcbConnection has 3 args now, but in the call for
extra X displays it still was used with 2 args. The bug has gone
unnoticed so far because of default args and type conversion.

Change-Id: I48b60ce6da8edb1e564010d2b4af9ae95da25316
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-20 21:28:38 +00:00
Rafael Roquetto 7e2ef1fd21 Remove BlackBerry PlayBook support.
Reasons:
    - the PlayBook NDK is old and its compiler does not keep up with newest
      C++11 improvements inside Qt code.
    - the PlayBook NDK diverges considerably from the standard BB10 NDK,
      making it non-trivial to keep a common codebase.
    - It's a defunct platform.
    - Maintenance time is limited.

[ChangeLog][Platform Specific Changes] Removed BlackBerry PlayBook support.

Change-Id: Ia338aff55f4e4b747ebdecb0e1463a369a656c03
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Bernd Weimer <bernd.weimer@pelagicore.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-20 14:55:54 +00:00
Alex Blasche d3893d8054 Don't deploy networkmanager/connman/generic bearer on Android
Android has its own plugin for bearer management

Change-Id: I85c40ef7ae9ac5f9509123db11fe6f3d7a71604b
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2015-02-20 14:44:38 +00:00
Thiago Macieira 0bcd067193 Fix warning-as-error about member not used with Clang 3.6
Found by Clang 3.6 on Linux:
qxcbeglcontext.h:91:21: error: private field 'm_connection' is not used [-Werror,-Wunused-private-field]

Change-Id: I1a800c709d3543699131ffff13c2fcf8cf013175
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-20 12:53:05 +00:00
Andrew Knight dee1998d4e direct2d: Optimize dashed [poly]line drawing
Move the optimized dash drawing into stroke() in order to apply the
optimization to polygons in addition to lines.

In the case of polygons/polylines, a vertex patch is redrawn using the
original dash brush in order to respect the joinStyle of the line.

As the line correction code flows through both the optimized dashed path
and the standard geometry code path, line adjustment is now also performed
for normal geometry.

Task-number: QTBUG-40604
Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Done-with: Andrew Knight <andrew.knight@theqtcompany.com>
Change-Id: I668369b4aadb6a1bbbd4d621cb8ce1e3b19fbbc9
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
2015-02-20 11:55:18 +00:00
Shawn Rutledge 26a05fc097 xcb: remove stray QDBusMenuConnection in QXcbNativeInterface
It was unintentionally left in from an earlier version of
38abd65377

Change-Id: I7b0b19ed313493562874642cae8865bb0783e366
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-20 11:41:49 +00:00
Friedemann Kleint 54b1126805 Windows: Refactor FreeType font database.
- Split apart Windows CE/Windows code paths, moving
  code out of addFontToDatabase() to separate
  static functions.
- Pass faceName/fullName as separate parameters to
  addFontToDatabase().

This is preparatory work for introducing the delayed
font population scheme for FreeType.

Task-number: QTBUG-43774
Change-Id: I3863bf847bc4024b8955d3bdb9af3cdd2abc1e5e
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-20 00:21:50 +00:00
Konstantin Ritt 4429f7510c Guarantee there is always a valid HFONT to get metrics for
Change-Id: I69d72803f994a5455b607c4f94f87c1c782eb0a4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-20 00:20:26 +00:00
Frederik Gladhorn bbfaf03b53 Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: I400eb311c5c7f821ddbf3a52e5b101e7a8d50e20
2015-02-18 14:20:10 +01:00
Tobias Koenig fa93d0ceec Haiku: Initial version of QPA plugin for Haiku
Change-Id: Ib4d1d75a11602af8423970e12c7cc594576e1c4d
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-02-17 19:21:58 +00:00
Alexander Volkov 64d7bb9f55 xcb: Check for the presence of XInput 2.2 before selecting touch events
Change-Id: I5309f9cdaadb87e0a577a0701d2c100d29525424
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-17 18:58:03 +00:00
Jani Heikkinen cb95fff1c7 Fixed license headers
Change-Id: Ibebe1318d1c2de97601aa07269705c87737083ee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-17 18:46:09 +00:00
hjk f727ffa1eb compose: Rename main.cpp to qcomposeplatforminputcontextmain.cpp
Files with same base name cause extra trouble for debuggers.
Similarly to 26cf0f0d5a, it can be avoided here.

Change-Id: Ide47170f417d636aa031b0d84a1951df8bf32316
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-17 15:36:21 +00:00
Christian Strømme 02c5657a7d Android: Fix local ref handling.
We where allowing conversion from jobject to QJNIObject without taking
ownership of the jobject. Since we are managing the JNI environment we
should not allow conversions without having the option of taking
ownership of the local ref. This is now done by making the conversions
explicit, i.e., local refs are converted through
QJNIObjectPrivate::fromLocalRef() and global refs through the
QJNIObjectPrivate's jobject constructor.

This change breaks SC, but the API is private and no usage have been
found outside QtBase.

Change-Id: I3175f171699ec3f8e65144aaebc6246bc6e5bb4d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-17 14:30:32 +00:00
Frederik Gladhorn 393fc2d4f5 Merge remote-tracking branch 'origin/dev' into 5.5
Needed due to license header patch.

Change-Id: Id7e30490132a7c487687a0a376419e9f9b97ea41
2015-02-17 12:35:29 +01:00
Albert Astals Cid 8d6341a721 Call [ofono|nm]Registered delayed in constructor otherwise signals will be lost
If we call them just in the constructor all the signals they sent
out can't be connected and will be lost, particularly this means
the QNetworkConfigurationManager doesn't see my ethernet connection
and thus thinks i'm not online

Change-Id: I1480f76338d6ae4fbed676f9fa40ada18ea431ad
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-02-17 08:10:59 +00:00
Andrew Knight b63c721a0e xcb: Fix build with -no-xcb-xlib -qt-xcb
The EGL integration should not call Xlib functions in this case.

Change-Id: I46656b12d603ca1b4b0b41f34c3c0e8410c91db8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-17 05:09:17 +00:00
Thiago Macieira aa855afa44 Fix compilation with ICC: failure to parse placement of Q_DECL_OVERRIDE
This is the right way:
  void (*getProcAddress(const QByteArray &procName)) () Q_DECL_OVERRIDE;

However, ICC and GCC do not get it. They expect it in the form:
  void (*getProcAddress(const QByteArray &procName) Q_DECL_OVERRIDE) ();

ICC complains with an error, so this needs a workaround. GCC ignores the
incorrectly-placed "override", so it just looks to GCC like no "override"
was added.

See also: https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/IjVB8CWiS5A
Change-Id: I1a800c709d3543699131ffff13c2ffc9cee46245
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:41:41 +00:00
Sérgio Martins fbeeaf23fe Introduce QT_NO_MIMETYPE
The mime type stuff generates one of the biggest translation units in QtCore
due to the compressed 1.7MB freedesktop.org.xml resource.

With QT_NO_MIMETYPE, libQt5Core.so is almost 400Kb smaller
(4.8MB->4.4MB gcc 4.9 stripped release build)

Change-Id: I5339090994034355724ff4deddb64720e81baeaf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-17 00:06:47 +00:00
Sergio Ahumada 3c1d9911c4 Fix license headers
Change-Id: I964ca9d3aff1a1cbe39dc53d04a408c754e96a77
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
2015-02-16 17:08:39 +00:00
Allan Sandfeld Jensen 515e802ae2 Use C++ <cmath> instead of <math.h>
Including math.h can pollute the default namespace, and break
some compilers if cmath versions of the method are declared as using.

Switching to C++ math functions also greatly simplifies handling of
float qreal as C++ automatically chooses the right method.

[ChangeLog][QtCore][QtMath] qmath.h no longer includes math.h, so any
sources depending on that indirect inclusion may fail to build.

Change-Id: I4d0e331dafba354ec05dc5052e61ef4ff8d387fe
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-16 16:21:15 +00:00
Andy Shaw cbece1e8c4 Ensure the filedialog shows the initial filename
Whenever the selection changes it will call panelSelectionDidChange
even if the panel is not visible which causes it to overwrite our
chosen initial file with "untitled". Therefore we only set the name
when the panel is actually visible.

Change-Id: I09f7ebabce5c2139a7f74b953391d39dfad65db2
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-16 14:59:22 +00:00
Alexander Volkov 76de1ac0a4 xcb: Update mouse buttons from MotionNotify events
We don't receive ButtonRelease event after closing a popup
by clicking outside of the client area. Thus the internal
state of mouse buttons in the xcb plugin becomes outdated
until we receive ButtonRelease event.

This commit updates the internal state of mouse buttons
from MotionNotify events. So when a user will move a mouse
on the client area, the xcb plugin will send a mouse event
with updated buttons to Qt Gui and QGuiApplication will
detect the following mouse events correctly.

Task-number: QTBUG-32609
Task-number: QTBUG-35065
Task-number: QTBUG-43776
Task-number: QTBUG-44166
Task-number: QTBUG-44231
Change-Id: Ica334dfbf04f7ef81db86b25262328fe5da11808
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-02-16 13:40:59 +00:00
Richard Moe Gustavsen 6342c4a183 iOS: only flush non-user input events from layoutSubviews
Change a4e1c15b1 will cause setGeometry to take immediate effect
by doing a synchronuous layout and a flush. As a side-effect, the
flush will also send posted touch events. So if the current
setGeometry call comes from a touchMove, a touchEnd might
be delivered before the touchMove returns.

A crash in QToolBar drag-n-drop is seen from this. There
drag data is deleted on mouse release (during the flush), while
a mouse move is already handled on the stack. When the code returns
to the move handler, drag-data has been deleted, and we have a crash.

Since the root problem is that we flush events on a callback from
the app, we can be more careful and precise by only flushing non-user
input events from layoutSubviews.

Change-Id: I3f5e025d774d21509ef837de9d7e85a1ac6e48cc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:12:39 +00:00
Richard Moe Gustavsen bcda398001 iOS: add native file dialog for selecing photos/assets
This will add a file dialog backend on iOS. The implementation
will check if a dialogs initial directory points to the system
picture location, and if so, present a UIImagePickerController.
Otherwise it will return false upon show, which causes
QFileDialog to use the widget based version as fallback.

Change-Id: I276b630911652b6d28f60763decc7ec38f00c817
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:11:59 +00:00
Richard Moe Gustavsen 66a61c7d2c iOS: add a file engine to support loading assets/photos
This patch will add a new file engine that lets the
app load images from the asset library using QFile.
The engine will recognize file names with the scheme
'assets-library', which is the same scheme returned
by UIImagePickerController.

This patch will be the first of a set of patches
that lets the user open a native image picker dialog
by using a QFileDialog with directory set to
QStandardPaths::PictureLocation. This patch will
ensure that the url returned from the dialog can
be loaded using QFile.

AssetsLibrary, which is used in this patch, is actually
deprecated in favor of the new Photos framework. But
since the latter is only supported from iOS8, we
choose to use the former framework for now.

Change-Id: If2a6eb394ae4df55fb4e9e1dc245a1574d38618a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 11:11:52 +00:00
Konstantin Ritt 071b286756 Fix indentation and move some variables around
Change-Id: Ice1987242d288b0b18e77c647153e6d133135896
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-15 03:01:40 +00:00
Friedemann Kleint 4dd7aeee10 Add support for GPU bug list reading.
- Add support for reading out feature lists from GPU bug lists
  in Chromium format (supporting OS + version, exceptions lists,
  device ids and vendor ids).
  Add a overloads allowing for passing file name,
  data or JSON documents.

- Test reading in tst_qopenglconfig

- Prototypically have the Windows plugin read the file
  from the environment variable "QT_OPENGL_BUGLIST" and
  turn off renderers depending on the standard keyword
  "disable_d3d11" and newly introduced keywords
  "disable_d3d9", "disable_desktopgl".

- QT_OPENGL_BUGLIST can point to an absolute or relative
  path, in which case it is resolved via QLibraryInfo::SettingsPath
  and QStandardPaths::ConfigLocation.

[ChangeLog][QtGui][Windows]
Introduce experimental feature allowing the user to specify
a GPU driver buglist with some additional keywords to chooose
the GL renderer backend depending on GPU.

Task-number: QTBUG-43263
Change-Id: I8c20b0e8ee3cf575b91d0672bf405c42d3e9fb64
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-14 16:23:47 +00:00
Friedemann Kleint af495c2042 Windows: Use QVersionNumber in GPU driver version.
Remove custom class.

Task-number: QTBUG-43263
Change-Id: I3399f86bbbe287560917ccda00334e348ac7da4c
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-14 16:22:48 +00:00
Eskil Abrahamsen Blomfeldt 255ecba269 Windows: Remove "experimental" sticker for DirectWrite engine
This engine has been regarded "experimental" for a long time, but
it is in active use by some applications and rather stable.

While if may be replaced by FreeType at some point, if support
for Microsoft's colored fonts is introduced there, at this point
it really doesn't make sense to call it "experimental" anymore.

Change-Id: I038d71b121e90bd7b4dbc6d0afa7b14c9b824b08
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-02-14 05:44:56 +00:00
Sérgio Martins fbc3d75354 FreeType: Support RGB rendering when not using FontConfig
Windows+FreeType, Linux with -no-fontconfig and the forthcoming
OSX FreeType engine can now use sub pixel rendering.

The function to get the subpixel type is in QPlatformScreen because
we're moving to per screen font settings in the future.

This patch is safe, as no functionality is changed for existing users,
if one wants sub pixel rendering they'll still have to pass -DFT_CONFIG_OPTION_SUBPIXEL_RENDERING
to configure.

Task-number: QTBUG-44269
Change-Id: Ib6c22d48a1b7c7b85ee316d5d9e3b6eae0c1ecc0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-14 01:15:11 +00:00
Alex Trotsenko 9f3bd7542c Fix xcb plugin compilation without D-Bus
Change-Id: I84afaa5668ac0f2c3954af50d123cfe469cbf255
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-13 20:52:04 +00:00
Mathias Hasselmann e300efe6ee OSX: Avoid !strcmp() anti pattern
People often complain that strcmp() like functions are confusing because they
return false on equality and true on difference. Rightfully, because strcmp()
like functions return three distinct values, not a boolean value. But I guess
dear reviewer, you already know that story...

Change-Id: Ie69093f61b55448010dc324d14c62faa27214238
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-13 20:44:55 +00:00
Konstantin Ritt 9b67d89c24 Pass params of shareable type by const-ref rather than by value
...where passing them by value was not intentional.

Change-Id: Ifd5036d57b41fddeeacfbd3f5890881605b80647
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-13 16:29:16 +00:00
Boris Dušek 37fc14a9cb OS X Accessibility: fix role description
Now we take into account also the subrole of the element.

Change-Id: I471e7c6620e704780cef48266ef302ec8b56466d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-13 07:00:01 +00:00
Boris Dušek e9bbe07501 OS X Accessibility: implement AXStyleRangeForIndex in QTextEdit
Not tested as I have no idea what VoiceOver uses it for (it seems to
never query this attribute during any operation I tested).

Change-Id: Ie5e2b765a9956bcf2be9b659b8914e393ed1ea90
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-13 06:59:52 +00:00
Boris Dušek 250e80ceb9 OS X accessibility: implement AXRangeForPosition
This enables users with "Speak text under mouse after delay" set in
VoiceOver Utility > Verbosity > Announcements to hover mouse over text
in QTextEdit and have it spoken by VoiceOver. It also allows users with
Trackpad Commander on to interact with the text area (VO-Shift-arrow
down) and "touch-explore" the text while holding their finger on the
trackpad and moving it around.

[ChangeLog][QtWidgets][Accessibility][OS X] VoiceOver users of QTextEdit
can now use mouse and touch exploration on trackpad to point at text to
have spoken to them.

Change-Id: I6cfaa8b1ff2179cce027b22539ba9ee4f3ee7f3f
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-13 06:59:42 +00:00
Boris Dušek f7f58b8b69 Fix AXBoundsForRange in OS X accessibility
When returning a rect for AXBoundsForRange, we always incorporated one
more character. Along with this one more character being often either a
newline or the first character of new softline, visual bounds often got
wrongly and unnecessarily multiline when in fact only single line was
correct.

Also noticeable when moving character by character (VO-Shift-arrow
left/right) - now only one character is being shown (as opposed to two
before). Still due to VoiceOver bug, for bounds of width less than 8
points, it will draw bounds width with of 8 points (reported as
<rdar://problem/19370707>).  But still this is an improvement for cases
with bounds of width more or equal to 8 points.

[ChangeLog][QtGui][Accessibility][OS X] Visual bounds returned by
QTextEdit were singificantly improved, this enables VoiceOver to draw
properly positioned VoiceOver cursor.

Change-Id: Idc50310f8016fbcc01b061d27b655c72922a4807
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-13 06:59:17 +00:00
Morten Johan Sørvig 1b79d1cfe2 Fix crash-on-exit when embedding QNView
The QWindow and QCocoaWindow may be deleted
before the QNSView (which Cocoa keeps a reference
to).

Clear pointers to the Qt windows on QCocoaWindow
destruction and add null-pointer check to QNView::isOpaque.

Change-Id: I71764886c27bf1d14fb4e684c15e7c72e1c0a17c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-02-12 20:33:11 +00:00
Marc Mutz 1c0f247671 Simplify QTableGenerator::printComposeTable()
Instead of filling a QString with lots of temporaries in-between,
simply stream everything into QDebug directly.

Requires the use of #ifndef QT_NO_DEBUG_STREAM because of the
explicit mentioning of QDebug.

Further simplified it by removing the complicated trailing-comma
handling. The struct-like output can tolerate a trailing comma
which has been allowed in C/C++ since its inception.

Change-Id: I0393a37cd21a50e902c8cb9f8b752ebb946d1669
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-12 19:42:01 +00:00
Friedemann Kleint fc8323fec6 Windows QPA: Remove helper function debugWindowStates().
It is no longer required since registered enumerations now
have an output operator for QDebug.

Change-Id: Ib85be4b98f301993c6cda2638b84586d541af841
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-02-12 19:41:40 +00:00
Boris Dušek 07cd153c7e Fix accessibility lines on OS X
Make QTextView accessibility on OS X mirror that of NSTextView in terms
of translating between positions and line numbers.

Most significantly, we report softlines (i.e. "lines" resulting from
visual wrapping induced by text view's width) as individual lines, not
just hardlines (i.e. "lines" delimited by newline characters, a.k.a.
paragraphs).  This fixes keyboard echo when using just arrow up and down
(without VO prefix) as now in such case VoiceOver reads the softline
that the text cursor moved to; before this fix it read again the whole
paragraph (which it read no matter to which softline of paragraph we
moved to). This enables the user to search more effectively for the
softline they need (which they do very often when navigating text).

Further, we changed the behavior to report the trailing newline
character of a line as the last character of the line. This is
consistent with how NSTextView (and TextEdit) does things (and makes the
newline character be displayed on a braille display for the user to be
able to distinguish that this is really the end of paragraph), but could
be debated and changed as some important Apple apps do not include the
newline character in the line range (most notably Pages and Mail, both
in the document (or email text) text area). I asked about this here:
http://lists.apple.com/archives/accessibility-dev/2015/Jan/msg00000.html

This also fixes the case where empty line previously returned empty range
(length == 0) for AXRangeForLine and VoiceOver interpreted that as end of
document even if it was in the middle of document (e.g. in
examples/widgets/richtext/textedit, there is an empty line in "Lists" section
just before the last paragraph, if one attempted to move past it e.g with
VO-arrow down after interacting with the text using VO-Shift-arrow down, then
no luck).

The code is currently O(N) as the previous one, which could mean a performance
problem for bigger documents. As it seems QTextLayout has all the information
it needs to do AXLineForIndex and AXRangeForLine efficiently (I would presume
O(log N)), this should be eventually rewritten to take advantage of
that (but the required interfaces are not currently exposed through
QAccessibleTextInterface)

[ChangeLog][QtGui][Accessibility][OS X] QTextEdit now properly reports
to accessibility visual lines (softlines) as lines, instead of whole
paragraphs. This allows better VoiceOver user experience when reading
text line by line using arrows up/down.

Change-Id: Ie7f06eb919de31d0a083b3b30d26ccac4aa27301
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-12 18:29:42 +00:00
Liang Qi ce10188aa9 Expose TabFocusBehavior in QStyleHints
TabAllWidgets in QPlatformTheme is replaced by TabFocusBehavior.

[ChangeLog][QtGui] Expose TabFocusBehavior in QStyleHints

Change-Id: Iafaad7c6a5c6bc888d1e124e6ddcdbdc46f37b1c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-02-12 13:30:01 +00:00
Shawn Rutledge 98aae7428d xcb: QSystemTrayIcon: grab background pixmap for compositing only once
Followup to 2203d9d93e24e00d6e9bc9bda0e65a0c7f9923cc: clearRegion takes
a little time, so doing grabWindow() too soon afterwards can result in
grabbing a pixmap with undesired leftovers.  And doing it every time
we render the icon causes flicker.  So, do clearRegion() ASAP when showing
the icon, wait for it to happen, then grabWindow() only the first time we
render, and reuse the resulting pixmap for all future calls to paintEvent().
(The downside is, if there is any corruption during the first grabWindow(),
it's going to stay there as long as the app is running.)

Task-number: QTBUG-35658
Change-Id: If881ab192dba43758dcbb0d080663ff42057fa4f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-12 13:24:33 +00:00
Shawn Rutledge 317c341a66 QWheelEvent on OSX: phase changes to ScrollEnd after momentum phase
The phase changes to ScrollEnd as soon as the user's fingers
are lifted from the trackpad; then the OS can optionally continue
sending scroll events to simulate deceleration, which are translated
into more QWheelEvents with phase ScrollUpdate.  With this patch,
the phase of the final event after the momentum phase will be
ScrollEnd to indicate that the scrolling is completely finished.

[ChangeLog][QtGui][QWheelEvent] on OSX, trackpad wheel event phase
transitions occur in the order ScrollBegin, ScrollUpdate, ...,
ScrollEnd, ScrollUpdate, ..., ScrollEnd, where the second batch of
updates represent momentum events (inertial scrolling).

Change-Id: I7404ed6fbbeaff6b1fa63e226fe1800494986b7b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-02-12 10:08:22 +00:00
Konstantin Ritt 7997e56a2e [QWindowsFont*] Unify HFONT fallbacks
In case CreateFontIndirect() call fails, always fallback to a better
stock font provided by Windows (apparently, it is DEFAULT_GUI_FONT).

Change-Id: Ib78fe0d21ba4fccbba1152b81ed87c010e1220e0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-12 10:05:27 +00:00
Laszlo Agocs b436fa590e eglfs: Add the three missing drag cursors
Hand-tuned in an attempt to get something that matches the normal arrow
cursor.

Task-number: QTBUG-44385
Change-Id: Iea2ee309fccb78706f47003fb11b14156fa01a50
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-02-12 07:13:39 +00:00
Laszlo Agocs c66f2433b1 Provide a native interface object from linuxfb
Recent code in font support started to use the platformNativeInterface()
return value without checking for null. Most platform plugins, with the
notable exception of linuxfb and the minimal ones, provide an object.

Start providing a dummy object from linuxfb too. This is more sensible
then adding null checks everywhere.

This will prevent crashing with linuxfb on startup.

Task-number: QTBUG-44414
Change-Id: I48912132e1f8ad52e2a94c3d765dacc7b16f309a
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-02-11 16:17:38 +00:00
Jani Heikkinen 83a5694dc2 Update copyright headers
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>
2015-02-11 06:49:51 +00:00
Laszlo Agocs 0866680bd9 Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2015-02-10 16:57:11 +00:00
Sergey Radionov 34ea269b3b Win: fix wrong mouse leave event generation
When Qt runs in process with low integrity level,
and place child QWindow to HWND from less restricted process,
ChildWindowFromPointEx could fail with ERROR_ACCESS_DENIED
and QWindowsScreen::windowAt will return 0 despite mouse is on window.

Task-number: QTBUG-44332
Change-Id: I07e1594b90cbde8a9496f8d53ef247a7c69d8715
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-10 16:55:37 +00:00
Frederik Gladhorn 51ce5b4829 Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: I9d668a655b548feab43e9d4b03e2437bdff76437
2015-02-10 09:55:09 +01:00
Frederik Gladhorn fc35f71434 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
	src/gui/image/qimage_conversions.cpp
	src/gui/opengl/qopenglextensions_p.h
	src/gui/text/qtextengine.cpp
	src/network/ssl/qsslsocket_openssl.cpp
	src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
	src/plugins/platforms/eglfs/qeglfsscreen.cpp
	src/plugins/platforms/eglfs/qeglfswindow.cpp
	src/plugins/platforms/windows/qwindowsfontdatabase.cpp
	src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp
	src/plugins/platforms/windows/qwindowsnativeinterface.cpp
	src/plugins/platforms/windows/qwindowsscreen.cpp
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/plugins/platforms/windows/qwindowswindow.h
	src/plugins/platforms/xcb/qxcbdrag.h
	src/widgets/itemviews/qabstractitemview.cpp
	src/widgets/kernel/qwidget.cpp
	src/widgets/util/qsystemtrayicon_p.h
	tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp

Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp
conflicts.

Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
2015-02-10 09:42:25 +01:00
Allan Sandfeld Jensen e67ebe8ba4 Listen to XI2 deviceChanged events to reset last position
Some drivers appears to reset their scroll positions when make the
primary point. This patch listens for the device changed event and uses
the information in it to update the position.

Task-number: QTBUG-40829
Change-Id: If354dfde6300ceb2b81be14ea24594ab0658a6aa
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-02-09 14:39:39 +00:00
Shawn Rutledge f4b8697c40 Handle gracefully the removal and re-attachment of all QScreens
Don't crash; restore windows when all screens are removed and re-added.
xcb: on configure notify, check for screen change: it may be that a
window belonging to a screen which was removed has now gotten mapped
to the new screen.  On screen change, send a synthetic expose event,
because the real expose events already happened.

Task-number: QTBUG-38326
Task-number: QTBUG-32973
Task-number: QTBUG-42985
Change-Id: If334f55c248468ad3c95e7066bb14eca377d2050
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-02-07 16:19:59 +00:00