Commit Graph

13106 Commits

Author SHA1 Message Date
Robin Burchell 5a5f140e60 QQmlInfo: Add qmlDebug & qmlWarning functions alongside qmlInfo
This way, we can correctly write to multiple levels of QDebug with QML context
information. A followup change will port all existing callers, and
subsequently change qmlInfo's message level to QtInfoMsg.

[ChangeLog][QtQml] Introduced qmlDebug & qmlWarning functions to qqmlinfo.h, in
addition to the pre-existing qmlInfo function. As a side effect, QQmlError has
also gained messageType() and setMessageType().

Change-Id: I04ced5952c5c3c58293a89a6767c7b545c03cc0a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-11 13:49:04 +00:00
Simon Hausmann 971314dbb5 Binop assembler cleanup
In preparation for the binop generator to work with different
assemblers, we can bring some of the externally prefixed Assembler::
types into the Binop class namespace. That makes the code easier to read
(less visual noise) and centralizes the dependency to the external type
to one place (the using statements).

Change-Id: Ib7700689196f8e54bba1f3ab6de3bf85ed93ff87
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2017-01-11 13:48:17 +00:00
Simon Hausmann 6cab0ee6e2 Break circular assembler dependency
The QV4::Assembler does not need a reference to the ISel that uses the
assembler, a reference to the JS unit generator for string registration
is sufficient.

Change-Id: I9e929e4d0aecbf0144296f85cb8d208296f28003
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-11 13:45:08 +00:00
Simon Hausmann 3215ebbc33 Minor assembler cleanup
Move code from the Assembler helper-class into the .cpp file that has
the rest of the Assembler class implementation.

Change-Id: I4e9fb264216a078a3ee11119d7610fd108ddf8c7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-11 13:45:01 +00:00
Albert Astals Cid 07a55e28a8 Remove Q_FLAGS about a enum/flags that don't exist at all
Change-Id: Ie6954aef0e28cd1356a195d34b92b8df9d6fb9c7
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-01-11 10:42:43 +00:00
Edward Welbourne 7277fdd603 tst_qqmllocale: avoid duplicating a QLocale::toString() call
Reuse the same const QString in both places, in each of the functions
that repeated this pattern.

Change-Id: Ic20281692d84b3ad5257af9837957e0893452b1a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 18:11:38 +00:00
Edward Welbourne 676340aef6 tst_qqmllocale: simplify creation of a QDateTime
Nine tests all used setDate and setTime on a default QDateTime, where
just initializing it right, in one line, is simple, terse and easy to
understand.  This also allows it to be const.

Change-Id: I77fd8b36b705cafc49f9020ae9280dfdcfece0d8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 18:11:32 +00:00
Edward Welbourne fb15a8c242 tst_qqmllocale: shuffle commentary on JS Date's month numbering
While it departs from common date numbering, as used by QDateTime, the
0=Jan numbering used by JS's Date was copied from Java's Date, which
(probably) copied it from ANSI C's struct tm; and C likes to count
from zero.  So don't call it weird; and let's comment on it where it's
actually relevant (in JS code with the offset, rather than against
uses of QDate, which uses 1=Jan numbering) and only once.

Change-Id: I926138e88583339bec8641e3b28a642794dc217d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 18:11:26 +00:00
Edward Welbourne e7bfab82b4 tst_qqmllocale: use unsetenv to clear environment variable
tst_qqmllocale::timeZoneUpdated() was recording the prior time zone,
frobbing it for the duration of its test, then restoring it.  However,
if TZ was previously unset, it got set to empty instead of being
unset.  This did not quite have the same effect; UTC ends up being
used instead of the system default, with potential for conflict
between system functions (that have attended to tzset) and third-party
libraries (e.g. ICU) with internal state saved from before the change.

Change-Id: I9f2147cd8858316e9ba5fd84d95dfc2c4538b0ab
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 18:11:19 +00:00
Edward Welbourne ba244f5400 tst_qqmllocale: use QVERIFY() rather than QCOMPARE(, true)
Use booleans as booleans, it's what they're for.

Change-Id: I68c0ba5efcfd3556eeef043b179769e91c77cf03
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 18:11:11 +00:00
Liang Qi 26051fd572 Blacklist tst_QQuickGraphicsInfo::testProperties() on linux
Task-number: QTBUG-58039
Change-Id: Ib7a371c6dec7748b9c5257b6cf4dfb61efc7aa88
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-10 14:07:00 +00:00
Simon Hausmann 0fada59c49 Clarify JIT selection for 32-bit and 64-bit architectures
Instead of relying on the somewhat "cryptic" ILP32 macro on x86/x86-64,
we can also use the macro that the JIT generated code _really_ relies
on, which is the size of pointers. For x32 those will be 4 despite
Q_PROCESSOR_X86_64, and the JIT will end up disabled. For regular x86
and x86-64 it should get enabled.

The same logic is applied to ARM32/ARM64 to disable the JIT once
machines start showing up with ILP32 data model on ARM64.

Change-Id: Id8dfb203c9b75e8ed5a61dcae28482f8f99be75f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
2017-01-04 16:52:18 +00:00
Shawn Rutledge 4038160a32 MultiPointTouchArea.TouchPoint: add rotation, uniqueId and ellipseDiameters
So far uniqueId and rotation are mainly applicable to TUIO.
Deprecate the area property in favor of ellipseDiameters.
Also improve the mpta-crosshairs manual test to show this information.

Change-Id: I16ea6618ae21ce66dac45638d6e2bb3c0a3b1818
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-04 12:02:33 +00:00
Shawn Rutledge 63a03f6772 mpta-crosshairs manual test: correct the velocity vector rotation
acos cannot return any possible angle, but atan2 can.

Change-Id: Ic277bc1d3616900775b6076dce6b05bdf3c35da3
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-04 06:57:26 +00:00
Shawn Rutledge 9b2b06fd7b qml: use QUrl::fromUserInput("file.qml", QDir::currentPath())
After change dc6b73390b262b9554599cbf40539763b1280261 in qtbase,
the qml runtime was failing at an assertion in
QQmlTypeLoader::getType() which tries to avoid relative URLs
and relative directory paths.  It's important to convert
relative paths to fully-qualified paths when converting to
an URL, because QQmlTypeLoader uses it as a cache key, and
we want to avoid ambiguity about which file is being cached.

Task-number: QTBUG-57870
Change-Id: Ib984cf722009f5f04cb67fffbc52d12bcc98df89
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2017-01-03 09:53:31 +00:00
Oleg Yadrov f70066e95e Make it possible to call grabToImage() on Window.contentItem
Window.contentItem was not associated with any QQmlContext and
QQmlEngine. A valid pointer to QQmlEngine is needed for callback
function execution.

Task-number: QTBUG-57175
Change-Id: Iab7730bfc8860521ff2e8c1631a11d0e1fe0cf94
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-01-02 07:01:15 +00:00
Shawn Rutledge bb123fa3a4 add text manual test
The initial goal is to verify the behavior of text, preeditText
and displayText properties and their associated signals
on various platforms.

Change-Id: Ie50c78a83930e05158a197f38087db9ae3cba534
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-31 14:55:59 +00:00
J-P Nurmi 3f6d82715d Add TextInput::textEdited()
[ChangeLog][QtQuick][TextInput] Added textEdited() signal to
distinguish user edits from programmatical text changes.

Change-Id: I1d78499e3e11f9f1cab80ce3b0a6d9f2713219f4
Task-number: QTBUG-57203
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-12-30 17:46:15 +00:00
J-P Nurmi bb594453f9 Flickable: add horizontal/verticalOvershoot properties
[ChangeLog][QtQuick][Flickable] Added horizontalOvershoot and
verticalOvershoot properties that can be used for implementing
boundary actions and effects.

Task-number: QTBUG-38515
Change-Id: I06379348a67d03507b56788d6fc7020bbb2d375f
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-29 11:43:59 +00:00
Liang Qi 9a272ad185 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	tools/qmlimportscanner/main.cpp

Change-Id: I01e17581f6691a03f83788773364d0cf96319514
2016-12-25 18:35:38 +01:00
Andy Nichols 70c6b9639c Fix Q_QUICK_SG_PROFILE macros in OpenVG renderloop
Change-Id: Ied37cc78b5338d17bb72735061be24cb20501d57
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-25 14:44:06 +00:00
Liang Qi d8a052bc6b Merge remote-tracking branch 'origin/5.8.0' into 5.8
Change-Id: I72ed8656ef03d1bc28225e2186f03620b9e119e9
2016-12-25 14:43:36 +01:00
Robin Burchell 55ba234990 quicktest: Don't warn if the root item has no size
It could be argued that all callers should be fixed, but this warning has
existed since 2012 and even our own tests do not all set sizes, so I think that
battle is a lost fight.

This helps make real problems with the tests more visible.

Change-Id: Ie29521695ef11943154dae40726d194dc72316c2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-22 10:24:43 +00:00
Robin Burchell fc9754e236 QQuickValueTypes: Avoid QVariant boxing (and unboxing) to convert color to string
We can maintain the spoken about compatibility without the performance penalty
by inlining what qguivariant.cpp does.

Change-Id: I95a8b8d660fb9104ae2d30d0ece943bccf169679
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-21 23:41:00 +00:00
Laszlo Agocs 9774757312 particles: Fix up 16k warnings and apply them on non-ES too
The isOpenGLES() condition is plain wrong: the code always uses ushort as
the index type.

Change-Id: Ibc5989227f61201913ff124485df4890b3490db5
Task-number: QTBUG-57515
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-21 20:31:56 +00:00
Mitch Curtis 42c52e6f2d TestCase: make parent argument to createTemporaryObject optional
This matches the behavior seen from Component's createObject()
function.

Change-Id: I83fe73a588d04c5efd30c49059bb19e7584bef48
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-21 17:34:33 +00:00
Robin Burchell 312967965f Remove checksync.pl
This seems to date back to much earlier times, and does not seem to be of much
use anymore.

Change-Id: Ia0047c280102da9e85de0d10133df3135433dc45
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-21 15:36:32 +00:00
Mitch Curtis fd0c4fb24a TestCase: don't try to access destroyed temporary objects
Objects created with createTemporaryObject() and
createTemporaryQmlObject() can be destroyed manually before the test
ends. Before this patch, there would be a type error when trying to
check if the object still exists in qtest_destroyTemporaryObjects().

The error seems to stem from the fact that objects that are stored in
an array and later destroy()'d are not nullified, but rather left in
a corrupt state. See the linked bug for more information about this.

We work around this issue by checking for the existence of the
destroy() function on the object before attempting to call it.

Task-number: QTBUG-57749
Change-Id: I0f6ddd47d86af6fb87392c2992f9f6143af6aab8
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-21 14:09:32 +00:00
Nico Vertriest 0f911e46c5 Doc: minor grammar mistake
Change-Id: If3aebd27e886181ebe0d41532935afdfb974586c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-21 13:17:23 +00:00
Nico Vertriest ee3e437762 Example: corrected screenshot of the localstorage app
Was still displaying a screenshot of the previous example
\image --> \borderedimage

Change-Id: Ifb23d0ffe1216c7d79170b6bbbd7da1511afe79c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-12-21 09:37:01 +00:00
Friedemann Kleint 68e23adeeb qmlimportscanner: Output the relative path of a plugin
Change 3c5e438890 enabling
using the target path version of a parent module made it harder
to determine the deployment target path from the module name.
Output the relative path in addition to remove the need to
do that in deployment tools.

Task-number: QTBUG-57494
Task-number: QTBUG-52556
Change-Id: Ib76f40f19b530f9351205df9109f2fef6191979d
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-20 19:20:14 +00:00
Filipe Azevedo 0d243a89ac Fix wrong grabbing behavior
QQuickWidget::grabFrameBuffer() was not polishing its items nor
syncing the scene graph compared to standard QQuickWindow::grabWindow().
This lead to QQuickWidget grabbed content to be outdated (render
the previous frame as a new frame).

Task-number: QTBUG-57596
Change-Id: I94f5e0aa5b096fb9e21259267c0e50473e8ed5bd
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-20 12:29:29 +00:00
Mitch Curtis 7b7322c497 ListView, GridView: fix missing keyNavigationEnabled property
Before this patch, this code:

import QtQuick 2.7

ListView {
    keyNavigationEnabled: true
}

Would cause this error:

"ListView.keyNavigationEnabled" is not available in QtQuick 2.7.

This is because ItemView was missing a revision:

qmlRegisterUncreatableType<QQuickItemView, 7>(
    uri, 2, 7, "ItemView", QQuickItemView::tr("ItemView is an abstract base class"));

Task-number: QTBUG-57621
Change-Id: Ia00cb7446a0d83278760f3aa361db5a864661bc6
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:51:24 +00:00
Ulf Hermann ddba1d1281 QmlProfiler: Don't create a new event ID for each binding instance
We want the IDs to reflect the location and the type of event that is
happening. Thus all instances of a particular component should share
the same IDs for their bindings. Otherwise the aggregated views of the
QML profiler list the same locations again and again for each object.

Change-Id: I3f8a7531589b42f785e40c7c5b04b229f639d696
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-20 11:49:21 +00:00
Ulf Hermann 9727dd069f V4 Profiler: Don't delete compilation units when copying trace data
If the trace data is the only thing holding a reference to a particular
compilation unit and we are copying the last FunctionCall from that
compilationUnit onto the second last, we have to first addref() and
then release() as otherwise it might disappear in between.

Also we don't need to check m_function for null, as the ctor guarantees
it is never null.

Change-Id: I6eaf64abe71f9785d4e76e18dabd9a0676564da1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-20 11:36:45 +00:00
Ulf Hermann c7025b456e Q_CHECK_PTR QSGGeometry allocations
We want to cleanly crash if they fail, rather than return a null
pointer from vertexData().

Change-Id: Ie88adaa9f0977c70ef4a47a59463509dcd15bdcf
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:27:53 +00:00
Ulf Hermann 054dbb0bee Q_CHECK_PTR the result of malloc() in batch renderer
We want to cleanly crash if it fails.

Change-Id: Ib32d3d6ae0c5d58e0a954e55adca8b2c4081a7f5
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:27:48 +00:00
Nico Vertriest 0577aa9fd2 Doc: added support for JSON in localstorage documentation
Added examples on how to store in JSON format

Change-Id: Ief58e28d42cd87cc0829e9265670e7c7bbdbeffe
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-20 09:44:01 +00:00
Mitch Curtis c4eefa4a8d Keys: add shortcutOverride signal
This allows an item to accept the shortcutOverride event, preventing
e.g. Shortcut from stealing key events.

The original use case that prompted the creation of this patch was
using a Popup from Controls 2 to create a keyboard shortcut editor.
When the user wanted to cancel the shortcut that they were editing,
they could press escape, but Popup would grab the shortcut and close
itself. As the test case demonstrates, the same problem occurs with
the Shortcut type in Qt Quick.

[ChangeLog][QtQuick][Keys] Added shortcutOverride signal to Keys
attached object to allow prevention of e.g. Shortcut from stealing
key events.

Task-number: QTBUG-57098
Change-Id: I594e4ea17ec417d8c7d93c6cf347c1a1a2e62b93
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-18 14:57:54 +00:00
Olivier JG 17a1c12a45 Add pressAndHoldInterval to MouseArea
Introduce pressAndHoldInterval to allow setting the pressAndHold delay
per-MouseArea.

[ChangeLog][QtQml][MouseArea] Introduce pressAndHoldInterval property,
which controls the elapsed time before pressAndHold is emitted.

Task-Id: QTBUG-47662
Change-Id: Ic2173335033a6ed0d4b652333020f030de63a8e7
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-16 18:28:44 +00:00
Liang Qi 0e80d28aa5 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp
	src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp
	src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp
	src/qml/qml/qqmlimport.cpp
	src/quick/items/context2d/qquickcontext2dtexture_p.h
	tools/qmleasing/splineeditor.h

Change-Id: I8f6630fcac243824350986c8e9f4bd6483bf20b5
2016-12-14 19:01:23 +01:00
Liang Qi ed32558d62 Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2016-12-14 08:39:44 +00:00
Liang Qi 172260ebef Merge remote-tracking branch 'origin/5.8' into dev
Change-Id: I905dcd29377bf1b2e0ee086823b54277d18e78dd
2016-12-14 08:54:57 +01:00
Mitch Curtis 7aaebe5574 TestCase: add createTemporaryObject(), createTemporaryQmlObject()
A typical pattern with QML tests is to dynamically create
an item and then destroy it at the end of the test function:

TestCase {
    id: testCase
    name: "MyTest"
    when: windowShown

    function test_click() {
        var item = Qt.createQmlObject("import QtQuick 2.0; Item {}", testCase);
        verify(item);

        // Test item...

        item.destroy();
    }
}

The problem with this pattern is that any failures in the test function
will cause the call to item.destroy() to be skipped, leaving the item
hanging around in the scene until the test case has finished. This can
result in interference with future tests; for example, by blocking input
events or producing unrelated debug output that makes it difficult to
follow the code's execution.

By calling e.g. createTemporaryQmlObject() instead, the object is
guaranteed to be destroyed at the end of the test function:

TestCase {
    id: testCase
    name: "MyTest"
    when: windowShown

    function test_click() {
        var item = createTemporaryObject("import QtQuick 2.0; Item {}", testCase);
        verify(item);

        // Test item...

        // Don't need to worry about destroying "item" here.
    }
}

[ChangeLog][TestCase] Added createTemporaryObject() and
createTemporaryQmlObject() functions that can be used to ensure that
dynamically created objects are destroyed at the end of each test
function.

Change-Id: I483342052462aa86464c86bf2082892712dceb58
Task-number: QTBUG-56361
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-14 07:20:30 +00:00
Andy Nichols 9fbc5aa886 OpenVG: Fix Recursive Layers
OpenVG also needed to ping-pong between two offscreen surfaces like the
OpenGL renderer.

Change-Id: I41f671d98d361eb114be5c00ebfe62710a971aaa
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:32 +00:00
Andy Nichols 4cdeeea8e2 OpenVG: Use QRawFont qHash function in font cache
A qHash function was added for QRawFont, so use that instead of our own.

Change-Id: Iad8deb8a0e2a727039ec752e38e42cef2127735c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:28 +00:00
Andy Nichols 0119439c9d OpenVG: Support rendering paths with non-affine transforms
The current approach to rendering paths (used by Rectangles and Glyph
nodes) does not support rendering with non-affine transformations.  That
is because OpenVG does not support passing a non-affine transformation
matrix when rendering paths.  So instead when using a non-affine
transform we will fallback to rendering to an offscreen VGImage, then
rendering that as an image which can have a perspective transform.

Change-Id: I01508bcb67b339323cb6400c7ff6d885b62c5e02
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:24 +00:00
Andy Nichols 3f57f2b7cc OpenVG Scenegraph Adaptation
This is an OpenVG backend for the Qt Quick 2 scenegraph.

Should be feature complete now, but there are still some issues that
could be improved in future commits:

If Rectangle nodes are rendered with a non-affine transform, they will
be rendered incorrectly.  This is because paths expect affine
transformations.

The Glyph cache is a bit cheeky in that it's caching paths, but doing
so per font size.  It shoudln't need to, but right now I've not though
up a good way of getting the transform/scale needed when rendering yet.

Change-Id: Ie3c4f2df35d14279b0f9f55e0e10a873328c025b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:15 +00:00
Nico Vertriest 16c81bb0d4 Example: correction initialization fields Header.qml
Error msg: Can't assign to existing role 'distance' of different
type [String -> Number]

Change-Id: I28842ed25a56077e52496a229294ef992406ca1d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-13 12:46:17 +00:00
Eskil Abrahamsen Blomfeldt 97e4d5d5ae Accept PUA characters, ZWNJ and ZWJ as input in TextInput/Edit
Private Use Area characters are quite valid input characters when used
in combination with a custom font. Joiners also serve an important language
purpose in semitic writing systems.

[ChangeLog][QtWidgets][Input] Support characters in Private Use Area, as well as
zero-width joiners and zero-width non-joiners in input in TextInput and TextEdit.

Task-number: QTBUG-42074
Task-number: QTBUG-57003
Change-Id: I4a9d6b9ea172d29375c20abfb7aebb6748c5d300
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2016-12-13 09:25:33 +00:00