Merge QFontEngineMultiBasicImpl and QFontEngineMulti

Minor refactoring also improves the behavior and the code readability.

Change-Id: Id89dd224f4132a4c0dfbc16f414ef42cc8d8a4da
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
QFontDatabase: Fall back to "Any" writing system if none matches

The scriptForWritingSystem array has significantly fewer entries than
QChar::Script. It can easily happen that we don't find a writing system
for a given script. In that case, just assume any writing system can
be used.

This fixes an out-of-bounds array access resulting from the writing
system index being one-past-end if std::find doesn't find a match.

Change-Id: Ic277be1dad71af42d479e70e0b4bf29a7dc8d0a7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Add missing QT_NO_REGEXP guard to search functions

Change-Id: I651243ad5dcdd0dcef20f12f37769bf8c45ae3c5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
provide Android timezones in QTimeZone

QTimeZone on a unix-based system expects IANA (Olson) timezones to be
provided in /usr/share/zoneinfo or /usr/lib/zoneinfo.  But on an
Android system the timezone datafiles at this location are incomplete
(Android instead uses the java class java.util.TimeZone). QTimeZone on
Android therefore would only return the default UTC timezones, not the
full set of IANA timezones.

This patch invokes JNI on an Android system to make the full set of
java timezones known to QTimeZone.

The implementation adds a new QAndroidTimeZonePrivate class, invoked
by the private implementation of QTimeZone in place of
QTzTimeZonePrivate.  QAndroidTimeZonePrivate contains adds a new
QJNIObjectPrivate [java.util.TimeZone] androidTimeZone property which
is used to access the java timezone API.

Android limitations:

1) the java class java.util.TimeZone does not provide transitions
(see http://developer.android.com/reference/java/util/TimeZone.html).

2) abbreviation( ) is provided using Java TimeZone::getDisplayName( )
with the java SHORT style. This sometimes generates a GMT reference
instead of a three-letter code, e.g. America/Sao_Paulo returns
"GMT-03:00" instead of "BRT"

3) hasDaylightTime() is handled using Java
TimeZone::useDaylightTime(), which according to java (Android)
documentation only tests for future transitions, not past transitions.
This might conflict with the Qt documentation for this function (which
is intended to test also for past transitions).

[ChangeLog][Platform Specific Changes][Android][QtCore][QTimeZone]
Android timezones are now available in QTimeZone.

Change-Id: I165a39b7d4cb30b68f2da8556d85fc5b4480da4b
Task-number: QTBUG-35908
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Fix MSVC warning about unused value in qstringalgorithms_p.h.

qstringalgorithms_p.h(144) : warning C4189: 'newlen' : local variable is initialized but not referenced

MSVC mistakenly reports the variable as unused since it is referenced
only in a logical and-expression depending on the template-type deduced
compile-time constant bool isConst.

Change-Id: I84cfc681054f554a4243b6ce659dac16141f7564
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
QRingBuffer: optimize memory usage

QByteArray resizing behavior is to preallocate a certain amount
of memory for future growth. Make QRingBuffer aware of the extra
capacity in QByteArray.

Change-Id: I68310d5783fbc32e4fd5075ed3269ce6b7128a92
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Prevent duplication of display name in window titles.

Do not append QGuiApplicationPrivate::displayName() to window title
if the title already contains it.

Fixes Qt Designer showing up with window title

Qt Designer -  Qt Designer

after qttools:9a58492ce6b62c0fdab373337f39103f4072ad9d

Change-Id: I5ac07a7f4be70372342324a175faf8c825867f50
Reviewed-by: David Faure <david.faure@kdab.com>
Add Q_DECL_RELAXED_CONSTEXPR to QPoint and QPointF

Change-Id: Ib039e491856e1a1c69ee17dbd2648dd8171655c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Add Q_DECL_RELAXED_CONSTEXPR to QSize and QSizeF

Change-Id: I4ce11373ad533d3f090b2de2e5017f8e34d9cfc4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Add Q_DECL_RELAXED_CONSTEXPR to QMargins and QMarginsF

Change-Id: Id77e22ef458a5f855e6b339ea11f8928ad5a68af
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Add Q_DECL_RELAXED_CONSTEXPR to QPair

Change-Id: I9456e820bb514f020b9f1d6c7d68547f92a1f8ff
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Add Q_DECL_RELAXED_CONSTEXPR to QRect and QRectF

Change-Id: Ifc8fabad46803241ccf30143b0c779f29f696335
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Add generic OpenGL compositor and backingstore bits

By removing the EGL(FS) dependencies we get classes that can be used
by any platform plugin that runs without a windowing system.

Change-Id: If99b42de5a4da02bbef80863609b6d92c6734613
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Avoid crashing on embedded

tlw can be null. handleKeyEvent() is already fixed.

Change-Id: I92ffca30841147aca4fa536b80736c799aae4ac0
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
QList::swap: implement the swap with std::swap

Change-Id: Ide2f8a5581978986607de99ac9b5e9c15b3aceff
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Make sure accProbe can retrieve our relations.

For some reason NVDA didn't seem to be affected by this
(it still read out the related buddy/label)

Change-Id: I028c9cca359091a703c080a7caa8ec6f98444a30
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
SSL: Add support for selecting which curves should be used by an elliptic cipher

[ChangeLog][QtNetwork][QtSSL] It is now possible to choose which elliptic
curves should be used by an elliptic curve cipher.

Change-Id: If5d0d58922768b6f1375836489180e576f5a015a
Done-with: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Richard J. Moore <rich@kde.org>