eglfs: Show the mouse cursor when a mouse is connected

Currently the mouse cursor is shown by default and it can be
turned off by setting QT_QPA_EGLFS_HIDECURSOR to a non-zero
value. This is now enhanced with an automatic detection step
via QDeviceDiscovery (the helper the input code use anyway).

From now on if QT_QPA_EGLFS_HIDECURSOR is not set, the cursor
is shown only if a mouse device is present in the system.

This could later be enhanced further by showing and hiding the cursor
dynamically during runtime although that will not be of much use for
embedded platforms without libudev.

Change-Id: I7e4b85ea8807200871c88fc42b11ab2adac90d32
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Ensure CSS rules are inherited from the parent tags

When CSS was set in the head tag then it was not being inherited by the
child tags. This ensures that the inhertiance happens and that the deeper
the CSS is set then it will ensure that it has precedence over the ones
set on the parent.

A test is added that shows the standard inheritance from the head tag and
the precedence from child tags in effect too.

Task-number: QTBUG-28770

Change-Id: I30be3ec141b2cd8d6e0db8a92669aed34da93b33
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Memory leak with Small-caps QRawFont

Make sure we deallocate the scaled rawfont, when it is not used due
to a cached engine being used instead.

This fixes a major memory leak in Qt WebKit when using Small Caps in the
complex font path. The complex font path is always used for small caps
since Qt 5.1.

Task-number: QTBUG-33576

Change-Id: I500db9ae6f6576734f1a972387a1a488218a9db6
Reviewed-by: pierre.rossi@digia.com
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
eglfs/imx6: enable double buffering and vsync by default

Enabling vsync and double buffering improves the overall impression.
Enabling by default helps to get the best "out of the box"

If not desired, one can disable this behavior via:
export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1

Change-Id: I21ce5366ea5829140d8103cf2dbd8c487d079db6
Reviewed-by: Donald Carr <sirspudd@gmail.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
qmake: Load extra variables only if also loading pre-files

The extra variables only need to be applied once, when we
are loading the pro file (and hence are loding pre files),
not for every single pri/prf that's loaded as a result of that
(which do not load pre files themselves).

Change-Id: I3118694a8eeccf2dc32c4f62df754033fad13528
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
qmake: Evaluate extra configs before loading default_pre

Exclusive builds uses setExtraConfigs to apply the particular CONFIG
of each build pass. Unfortunately we were not applying these extra
configs early enough in QMakeEvaluator::visitProFile() for them to
be picked up/usable by default_pre, something that can be useful.

Change-Id: I423a4688250a15f0c1a2cc65a48f0bbc14ad4497
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Use QAtomicInt ref/deref pattern

Change check of QAtomicInt::load with the preferred ref() deref() pattern.

Change-Id: I12d2e24812259c16623c8a59cac30cafa4b05565
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Make QSystemTrayIcon::showMessage invokable

Qt WebKit's HTML5 web notifications rely on QSystemTrayIcon::showMessage
to be invokable since the lower WebCore components can not link directly
to QWidgets.

Change-Id: I952de47ed8a90553a8f1ac30256d77ef6014da44
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
add a missing break in QGuiApplicationPrivate::processWindowSystemEvent

Task-number: QTBUG-34016
Change-Id: Ifbb4a63845328e32fb0ad679415dca0f90dde624
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
iOS: Skip qtmacextras module

This module doesn't make much sense for iOS.

Change-Id: Iadcf3006e1e2bdd97c460e836e91717856cb118c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
Stabilize tst_QComboBox::keyBoardNavigationWithMouse.

The cursor needs to be within the view from start on Mac.

Task-number: QTBUG-33973
Change-Id: I313c9fd1c3a917e135a92497f1818d1b0d8b7698
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
qmake: Centralize TARGET sanitization in default_post.prf

Shared between UNIX and Win generators, and allows prfs after
default_post to rely on sane TARGET and DESTDIR values.

This allows us to clean up the DESTDIR logic in testcase.prf,
which was completely busted. Doing the two in separate commits
is unfortunately not possible as the old testcase.prf logic
was so broken it would barf if only looked at.

Change-Id: Ibf21216195c760ee46ae679c162b207b77a9d813
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
QVector: add some functions missing for QList compat

Eases migration from QList to QVector.

Had to rename the 'length' parameter to mid() to suppress
-Wshadow warnings.

Task-number: QTBUG-3781

Change-Id: I755c6caefe4de81ea42a81b1c76aab728e639613
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reduce risks of lock file corruption

Trying to do as few operations as possible once the file got opened.
That includes generating the data which will go in the file. Indeed if
we crashed at that point the lock file is already emptied. Could happen
because of the qAppName call. It's then safer to prepare the data
upfront, and just open/write/close if possible.

Change-Id: Iad32fa822c6a5958ae89d84a2fe02ed5366ea278
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
qmake: Allow QMAKE_MAC_XCODE_SETTINGS to be limited to debug or release

The Xcode generator does not support exclusive builds, but still
generates projects that contain both debug and release configurations,
each with hard-coded differences such as whether or not to strip or
to generate debug symbols.

As a stop-gap solution we allow projects and mkspecs to add extra
settings that are limited to a given build. Long term we want to
rewrite the Xcode generator to support exclusive builds, but that
is a much bigger task.

Change-Id: I85056164bb1b3c8c6e0cf66410348cca7138eca5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Allow custom definition of Q_FORWARD_DECLARE_OBJC_CLASS and friends

Change-Id: I761ef508672d5d4e8b9067a1b5f91debe09607d4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Remove last traces of CoreServices/QT_NO_CORESERVICES on Mac

Change-Id: Ia603e717f3b37dc982468eb2b7eb781d7529ccb0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Let QLoggingCategory::defaultCategory return a pointer

The pointer can be null. Going trough the reference invokes undefined
behavior here.

Change-Id: Ia84e4e732cdcbbaee0f5f0679765d18069ea8b2d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
qml_plugin.prf: moc plugin with -Muri=$$TARGETPATH

When we build qml plugins, we now depend on embedding
the uri of the plugin into its meta-data using the new
-M switch to moc for static builds.

This patch will let this happen automatically whenever you
call load(qml_plugin) from your pro file.

With this patch, you only need to rebuild your plugin
to support static applications.

Task-number: QTBUG-28357
Change-Id: I99e2fc80688fa43cf734551553f4fa0cb5ed47ed
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
qmake: Update internal mkspec on changes to QMAKESPEC

Allows the macx-xcode mkspec to be a wrapper around other mkspecs.

Since QMAKESPEC can now be set in the spec, we have to ensure not
to append to QMAKESPEC.

Change-Id: Idf33ff38147f14c488f14b426c02d9a739fdaecf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>