Changed the processing of non-character code handling in the UTF8 codec.
Non-character codes are now accepted in QStrings, QUrls and QJson strings.
Unit tests were adapted accordingly.
For more info about non-character codes,
see: http://www.unicode.org/versions/corrigendum9.html
[ChangeLog][QtCore][QUtf8]
UTF-8 now accepts non-character unicode points; these are not replaced
by the replacement character anymore
[ChangeLog][QtCore][QUrl]
QUrl now fully accepts non-character unicode points; they are encoded as
percent characters; they can also be pretty decoded
[ChangeLog][QtCore][QJson]
The Writer and the Parser now fully accept non-character unicode points.
Change-Id: I77cf4f0e6210741eac8082912a0b6118eced4f77
Task-number: QTBUG-33229
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Add qjson* implementation files from corelib/json
to the qmake build. Add a read-only compile mode,
enabled by defining QT_JSON_READONLY.
Add qmake built-in function parseJson(file, into)
which parses a json file into the given variable.
qmake uses a flat key -> value-list implementation
for storing variables, which means that some hackery
is need to represent arbitrarily nested JSON. Use a
special "_KEYS_" variable for arrays and objects:
Arrays:
["item1", "item2"]
$${array._KEYS_} -> 0 1 2
$${array.0} -> "item1"
$${array.1} -> "item2"
Objects:
{ "key1" : "value1", "key2" : "value2" }
$${object._KEYS_} -> key1 key2
$${object.key1} -> value1
$${object.key2} -> value2
Change-Id: I0aa2e4e4ae14fa25be8242bc16d3cffce32504d2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Android does not provide rand_r(), so we would fall back to rand()
and srand() which means we where not keeping the promise of qrand
and qsrand being thread-safe. As a replacement we can use the Java
api and have one Random object for each thread.
Task-number: QTBUG-32814
Change-Id: Id46d195a0bb122bc7a5a8de43bdf088e11a9c42e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Also changed the 'step' range check to treat NaNs as invalid, too.
Change-Id: I993c5efffcf7140fba8f80a7db499cd2335867e0
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Check if the datetime is valid before converting it to a different time
spec. If it is invalid then just change the spec to keep behavior
consistent with 5.1.
Task-number: QTBUG-34020
Change-Id: I6630ec1d50f810a2178ab3222bd32af018085f81
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Those are not related to C++11, so move them to the Clang detection
block.
Change-Id: I80b298e1df5f74a865d743625895e0f01cb5fd6b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Non-framework builds would automatically link to whatever Qt library
matched the config at the time of running qmake, eg hard-coded to
libQtCore_debug, while Xcode itself allowed the user to switch between
release and debug configurations.
We now append an Xcode settings variable to the library path, which gets
resolved at build time depending on the current config in Xcode.
Change-Id: I12873e38a28d9595ef3fd0ae0ad849e6744833a9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Change the default output of the logging framework to prefix messages
with a 'category: ' in case the category is not "default", so that e.g.
QLoggingCategory cat("qt.core.codes.windows");
qCWarning(cat) << "MultiByteToWideChar: Cannot convert multibyte text";
will print
qt.core.codes.windows: MultiByteToWideChar: Cannot convert multibyte text
while output from qWarning etc will show unaltered output. This should
help users to discover categories, and to group output together.
Change-Id: Iac2e1514f7dc5671966c36a440a119c857564cfc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
Since Mac lacks a compatibility profile, we often use the highest
supported compatible version, 2.1; this lacks vertex-array-object (VAO)
support in the API, but Apple provide a compatible extension. Extend
the helper object to detect this case and make VAO support work.
Change-Id: I75a74e048a0d188cec76bc5a4a9eafa4c9143740
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
When using the mouse to show a context menu on Mac then even if the
window is not active then it will show the menu for native applications.
So this ensures that this is respected for context menus in Qt too.
Task-number: QTBUG-31497
Change-Id: Ibfcb4b893b0e31d4ce36926a83c9214d130d8fa2
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
but this time without reshuffling it. it's actually easy with awk.
this makes the resulting qconfig.pri cleaner (and thus easier to debug).
and configure needs a few millisecs less to finish. ^^
QMAKE_DEFAULT_INCDIRS doesn't appear to contain dupes to start with.
Change-Id: I9eed2cf853cd15d0d24a885b1c3d69f22ffafb36
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
the consumers of these variables use the strings for naive text-based
"subtraction", which of course doesn't work particularly well when the
paths contain "../", "./", and trailing slashes.
Task-number: QTBUG-33714
Change-Id: I893c90e6f5c7cf18c9e6cb1e5be825a16509a2a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
the function is a trivial wrapper for the QTextCodec one, so there is
little point in explicitly testing it.
Change-Id: I0c4950e5a54b7ffff9ba73a001cedb517497a596
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Having several QWidgetWindow in our hierarchy translates as as many NSViews.
Clicking will make the NSView under the mouse cursor key, meaning it will
receive all the Cocoa key events. In order to make sure the QWidgets hierarchy
sees the key event "as usual," we climb the QWindow hierarchy in search for the
top-level QWidgetWindow. (Something similar is already being done in -[QNSView
becomeFirstResponder]).
Task-number: QTBUG-32914
Change-Id: Idc700309d202820de326d4e2990fad24d7b692ae
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Change-Id: I2e874af4f5bf22a3028b7099c39436c400136386
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
When building for x86, the prefix for the tools is not equal
to the prefix for the toolchain directory, so we need a separate
option for this.
Task-number: QTBUG-34110
Change-Id: Iefe8c37892eb6c31fc8762bfb7bc7c6c23cd8b1e
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The source includes shouldn't be used by installations, so
don't install the extra file, but only use it if the package
is used from the build-dir.
Task-number: QTBUG-33970
Change-Id: I08f91b8a716e935cb04d1233d44cf5c092e240ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The DLLDESTDIR is not related to the install location and is not
populated for prefix_build configurations.
That resulted in the CMake files attempting to find the dlls in the lib/
directory instead of the bin/ directory.
Change-Id: Iec6a7c9b6dd656278b70ab128f3df9e8c45bbe4a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
This patch partially reverts ad443dfb1d,
the test that was added is still there as it can be used to compare
against Chrome and to check that indenting works correctly.
The original behavior of clipping the bullets is correct because the
specified indent is where the text itself should be positioned, the bullet
uses the available space to the side of it. This is how other web browsers
handle the same situation.
Change-Id: I63440e037d8efec356459c09228ef4817ccb9cb6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
When we don't know if a key event is caused by autorepeat, then
the safest assumption is that it is not.
Task-number: QTBUG-30793
Change-Id: Iea6aba164e299f0f2c772547b45df6a49639b7e9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
There are a few problems with the Quadruplor setup in Qt 5.
First of all, it doesn't work with modules, since it has
a hard coded library dependency list. Second of all, it
duplicates the application template, so changes need to also
be duplicated. This often gets out of sync. Third of all,
it duplicates a lot of deployment rules which are now contained
in androiddeployqt.
Task-number: QTBUG-33996
Change-Id: I0630a38aeba7d0075df8fae671abc311fc36de61
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Needed for autotest script, so that we can pass command line
arguments to Qt Test.
This can now be done by:
% adb shell am start \
-e applicationArguments "argument1 argument2" \
<INTENT>
Change-Id: I772209f66da055c6a0b01b709f36e33fdb5c2ed6
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
No need to default to yet another SDK here. This is a left-over
from Necessitas, which supports versions down to android-4.
Change-Id: I2e79be641288c14f92c205b30f2db6db793d783f
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Additions/Changes:
- Add QML's WorkerScript type
- Add QFuture + QFutureWatcher
- Clarify differences between QtConcurrent::run() and the map/filter/
reduce functions
- Reword table headings
- QThreadPool accepts a priority parameter too (although it's not OS-
level, unlike QThread)
Rows removed from the table:
- QThread can be "reused" and "task oriented" too, depending on the
program design. It's hard to convey this in a table though, so I just
removed it.
- "High level" is ambiguous and doesn't really help readers choose a
tool to use.
Task-number: QTBUG-33360
Change-Id: Idc5100eaf09033998c155572d44c6c0ad0ba9ef6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Although the C++ language builds in the 'wchar_t' datatype, the
library functions such as wcscmp() which manipulate them are not
automatically available. For these, inclusion of the <cwhar> header
is still required.
This changeset fixes build breakage observed from failure to include
the requisite system header for accessing wcscmp() and other related
functions on non-GNU standard C++ library implementations.
Change-Id: I5b2f9148ea011004e5dd00cf41698339db172de8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
glibc is nice to us and provides a #define with the actual name. On most
Linux systems, the .so file is installed only if the glibc-devel package
is installed. For all of us Qt developers, it's installed. But for end
users, it might not be.
Change-Id: Id455371db91a074befd3bcd071f285c725d7e7e5
Reviewed-by: Ian Monroe <imonroe@kde.org>
Reviewed-by: Richard J. Moore <rich@kde.org>
Those features have slightly different behavior as the C++11 keywords
that MSVC 2012 officially supports. When compiling in C++/CLI mode,
the "virtual" keyword must be present too.
We have not actually tested whether the official MSVC 2012 support for
C++/CLI still requires the virtual keyword. This is just going on the
assumption that C++/CLI follows the C++11 spec.
Task-number: QTBUG-34019
Change-Id: I148a443bfbff985033c555f5a9cfcd5be7f5f106
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Don't discard stdout, it might contain important information. For
example, if qmake crashes, the segfault or similar notification comes
to stdout.
Change-Id: I53def75f37f134544922cf01b4f2ba7c903351cb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
QStringBuilder will precalculate the size of the string for us, which
avoids extra realloc() and moving data around.
Change-Id: I4e31964bb9bfffbe2083b3cb8c120e602160dfd8
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Extract the correct length sub-string from the /etc/sysconfig/clock file
Change-Id: I37b4f625a51b172ed11ecefbd1b7dc562c5bb89d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
51c28cad67 resulted in setting the title
of the wrong window.
Task-number: QTBUG-34048
Change-Id: Ia22d563e0ba9b0e074ef79ae5169c1627369c70d
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
We will show an error message saying no platform context is available
but the crash (due to GL windows having a null backingstore) is not
desirable.
Change-Id: Iba3a61bfc4eeeb89b4a0017a58c87a7dbd0895e7
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* The explicitly linked support libraries like gnustl_shared, etc. can be
linked as private libs, there's no need for them to show up in the .prl files of our libraries.
* Removed the explicit linkage against libsupc++, which is a static library whos symbols
are also available in libgnustl_shared. It is only needed when linking against gnustl_static,
which we fortunately don't do.
For QtQml on Android this is more than just cleanup. Without the first change, the libgnustl_shared
comes early on in the link line, because it is a dependency of for example Qt5Network. Anything that
qml.pro itself adds to LIBS comes afterwards. That is not intended, we want libgnustl_shared to come
at the end of the link line, in order to make sure that the linker finds an overriding symbol from
another library earlier in the link line first.
The explicit linkage against libsupc++ affects the same, as that's the library
that contains the symbol we want to override locally (__cxa_end_cleanup).
(needed for QTBUG-33892)
Change-Id: Id6dff733d6610ae8b15aa72f9cf60ae2c7834194
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
-many articles link to the page using the "and" or the "&"
version, causing missing links.
Change-Id: I6447149befce169cfafff29164172290a7c15f0c
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Migrate to the new 5.2 pattern: Prevent relying on the event
dispatcher in the constructor by performing initialization later
in initialize() instead.
Change-Id: Ifa6024affc35e995d6e33a63fa813da9df0c491b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
The compiler inserts __cxa_guard_acquire, __cxa_guard_release calls around
the initialization of local static objects to make the initialization
thread safe. However, the implementation of _cxa_guard_acquire in Apple's
libc++abi uses a global lock, which means that only one thread can
initialize a local static variable at a time. This can be a problem if
e.g. the constructor of the variable is blocking while waiting for another
thread ...
This behavior has caused issues so far in webkit and the qml debugging
infrastructure. Better avoid it by using our custom lock implementation.
__cxa_guard_acquire implementation:
http://www.opensource.apple.com/source/libcppabi/libcppabi-24.2/src/cxa_guard.cxx
Task-number: QTBUG-33967
Change-Id: I0d50531ed91ddd074aa07f61f6bf7791e23d990b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This fixes QStatusBar so it is back to the original behavior of only
emitting the signal when the message has changed. The intention of the
code that caused this to break in the first place is kept intact.
Change-Id: I2f57c2abec01246ed924626ad954ac9ff9889855
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>