Commit Graph

4954 Commits

Author SHA1 Message Date
David Faure
4c980aedc1 QStandardPaths: add AppConfigLocation.
ConfigLocation was erroneously inconsistent, by adding the org name
and app name on Windows (unintentionally) and not on Unix (while having
subdirs in ~/.config is actually common practice for some XDG desktops)

Therefore this adds AppConfigLocation, which always has the org name
and app name (while GenericConfigLocation never does).

[ChangeLog][QtCore][QStandardPaths] Added QStandardPaths::AppConfigLocation,
for application-specific configuration directory. ConfigLocation was inconsistent.

Task-number: QTBUG-38872
Task-number: QTBUG-38845
Change-Id: I80fb98f296436261f3996c9df87571c29b06ab35
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:15:59 +01:00
Marc Mutz
3b9629e8bd QStateMachine: replace a QHash key involving a QPointer
Using QPointers (or any type that makes a QPointer part of its identity) as a key
in any associative container is wrong. They get externally set to nullptr,
violating the associative container's class invariants, which could lead to
data corruption, even though bucket-based hash implementations are less susceptible
than binary trees.

To fix, write a new class that acts much like the old QPair<QPointer<>,QByteArray>,
but uses the QPointer only as a guard, not as part of its identity. To preseve
identity, also saves the naked pointer originally passed and uses that for op==
and qHash().

Change-Id: I4fa5a6bf86bad8fe7f5abe53d7c7f3ad3754d8d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:06:23 +01:00
Marc Mutz
65eb573926 QStateMachine: fix some misleading code
The old code creates a RestorableId from the passed (QObject*, QByteArray)
and used it for lookup in a hash table (ok) and as a container for the
(QObject*, QByteArray), satisfying later references to those parameters
from the RestorableId instance instead of using the parameters directly.

Now, RestorableId holds the QObject* in a QPointer, so the code might have
wanted to detect the object being destroyed as part of the operation, BUT:
a) the operation is a read-only one, and b) the code didn't check for
nullness before dereferencing the QObject*.

Fix by moving the creation of the RestorableId into the scope it's used
and otherwise using the parameters directly.

Change-Id: Iaf12f722fe6841ee1a55037fe33a6115aa699aca
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:06:15 +01:00
Marc Mutz
3ecc44d5d2 Docs: e.g. -> for example in qhash.cpp
Change-Id: Ifee0117ddadfaa774fdd575467b03ca5b0baf433
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-09 12:05:51 +01:00
Marc Mutz
315ca08e36 QVersionNumber: use qHashRange()
Change-Id: Ia7cfb8030cded33f4246206392b46d1013067ef3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Keith Gardner <kreios4004@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:45 +01:00
Marc Mutz
08373fb02d Add qHashRange and qHashRangeCommutative
qHashRange() takes an (input iterator) range and hashes each element, combining
the hash values using the hash combiner from Boost/N1837 with the magic number
0x9e3779b9, as described here:
http://stackoverflow.com/questions/4948780/magic-number-in-boosthash-combine

qHashRangeCommutative() does the same but with a cummutative combiner (unsigned
addition) to create hash values that are order-independent, e.g. for hashed
containers. The obvious combiner, XOR, is a bad one because it eliminates
duplicate elements. Signed addition cannot be used, since signed overflow
leads to undefined behavior.

[ChangeLog][QtCore] Added qHashRange() and qHashRangeCommutative() functions to aid
implementing qHash() overloads for custom types.

Change-Id: I3c2bbc9ce4bd0455262a70e0cf248486525e534f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:35 +01:00
Thiago Macieira
62b67092ea Don't specialize std::swap, just overload it in the global namespace
This is the modern, correct way of providing a swap
operation. See http://stackoverflow.com/a/8439357/134841 for more
information. By changing this, we also fix Qt building with ICC
and libc++.

This patch also adds a noexcept() rule to match what the C++11 standard
requires.

Change-Id: I18f22fe7c92cf253e94168e1312346b4c183f536
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-09 12:05:26 +01:00
Marc Mutz
3fc9f97d61 QMutex/QReadWriteLock: mark bootstrap implementations nothrow
This is primarily to get a cleaner build of src/tools
under -Wnoexcept.

Change-Id: I0dea21e70aad56b25675fc59fac0327b55ee83e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:11 +01:00
Allan Sandfeld Jensen
7bd3d4591a Fix authenticated POST/PUT http requests with buffering disabled
If reset is disabled then POST and PUT requests can not be authenticated
as the upload device can not be reset. There shouldn't be any reason
that shouldn't be allowed if the QIODevice given supports resetting.

The disableReset feature of QNonContiguousByteDevice is removed as it
is not used anywhere else, and is redundant when reset can indicate
success or failure.

Task-number: QTBUG-43628
Change-Id: If941a98fd3f797872351c10bdca6aa6745dbefea
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
2015-01-09 11:16:54 +01:00
Tobias Koenig
de61130bd4 Seal shared memory on POSIX IPC
Change-Id: I5dc3807af904ad77db82d49b38b4c8e66d2d4de6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:59:11 +01:00
Tobias Koenig
ddc884c841 Use O_CLOEXEC flag POSIX shared memory handle
Change-Id: Ie554c5963112b88c058082085dbc9eed42a41861
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:59:00 +01:00
Tobias Koenig
96995db4af Add POSIX IPC support to QSystemSemaphore and QSharedMemory
This patch is a forward-port from 4.8 branch
(d869e1ad4b0007757e97046609de2097cd9e9c5d).

Change-Id: I6ae36a5417d1176fbecf775668f6033b1cb22a94
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:58:52 +01:00
Gabriel de Dietrich
3d17b73377 QFileSystemWatcher: Use FSEvents FSW on OS X
This removes one of the last references to 10.6.

Change-Id: Ie23d9aba698714460e7478a421e85d4ad50d4ec9
Task-number: QTBUG-43505
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2015-01-09 10:46:56 +01:00
Ashish Kulkarni
da6a706eb3 fix error when cross-compiling with --system-zlib
This is broken since 1f461ac45b, where
Z_PREFIX was defined to namespace the bundled zlib symbols. The
bundled zlib is used by bootstrap.pro when cross-compiling which uses
the namespaced symbols. This breaks linking of rcc when --system-zlib
is used, as it will try to link to compress2 instead of z_compress2.

To fix this, the aliases are pulled in via zconf.h and the bundled
zlib is prepended to the INCLUDEPATH (i.e. before the system zlib).

Change-Id: Iec76cbdead40f888e2ac6a887ec8f3b7bc7db501
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-08 09:31:49 +01:00
Friedemann Kleint
b495a27d4e Introduce Windows version 10.
Detect OS kernel version 10.0 as Windows 10.

Task-number: QTBUG-43413
Change-Id: I39307cf8cc2e7cc209d6a88b8576db87086fa20e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 06:28:04 +01:00
Marc Mutz
ba5b7449a4 Unexport QVersionNumber
And only export those functions which are actually out-of-line.

This prevents exporting all the inline methods of QVersionNumber,
so we can more freely tune the implementation after its release.

Change-Id: Ie0c5e3f95fea9ec9b3dd481058db6c9f5ef2653c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:45:51 +01:00
Marc Mutz
4b08561bb0 QPair: mark relational operators and qMakePair() conditionally noexcept
The member functions are a bit more complicated, since they require
<type_traits> support, so they're left for another commit.

Change-Id: Icb792468e35c63eb1ae97f62ed023266fb86b89b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:40:26 +01:00
Marc Mutz
daaf3b8578 QPair: add member-swap
std::pair has it, too.

Change-Id: I2526b09455db5502ad38a81f3d401098d54614a5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:39:50 +01:00
Marc Mutz
597a71fa99 Make qSwap() noexcept, if possible
This greatly increases the value of qSwap(), since not only does it
automatically do the parallel std+ADL lookup of swap(), but also
now centralizes the rather messy code involved to create a correct
noexcept specification.

Other code now can simply use
    Q_DECL_NOEXCEPT_EXPT(noexcept(qSwap(lhs, rhs))).

Change-Id: Ia35df4876b143e86c4150ac452a48c3775c3702b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:39:33 +01:00
Marc Mutz
0dacb1e282 QMargins: plaster API with Q_DECL_NOTHROW
This is mostly straight-forward, but some things are worth noting:

1. Yes, this is necessary. The noexcept operator looks for noexcept tagging,
   not at the contents of the function to determine whether to return true.
   The more conditionally-noexcept functions are used, the more important it
   becomes that low-level classes are correctly marked noexcept. In that, it
   is like constexpr.
2. In accordance with the rules governing noexcept specifications for the
   standard library itself, the operator/-family of functions are not marked
   as noexcept, since they have preconditions and thus a narrow contract.
   Narrow-contract functions should not be noexcept. All other functions
   have wide contracts (ie. no preconditions).

Change-Id: I2cb1f951a92dcb25eac4d9afc5b7780311e39492
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:39:11 +01:00
Marc Mutz
a92dbddac7 QRect: plaster API with Q_DECL_NOTHROW
This is mostly straight-forward, but some things are worth noting:

1. Yes, this is necessary. The noexcept operator looks for noexcept tagging,
   not at the contents of the function to determine whether to return true.
   The more conditionally-noexcept functions are used, the more important it
   becomes that low-level classes are correctly marked noexcept. In that, it
   is like constexpr.
2. In accordance with the rules governing noexcept specifications for the
   standard library itself, the get*()-family of functions are not marked
   as noexcept, since they have preconditions and thus a narrow contract.
   Narrow-contract functions should not be noexcept. All other functions
   have wide contracts (ie. no preconditions).

Change-Id: I82e5d34a0293d73ddc98ee231e17e26463ab6686
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:38:55 +01:00
Thiago Macieira
63cd16d03c Add support for printing the real thread ID with QT_MESSAGE_PATTERN
%{threadid} should have been %{qthreadptr} but we forgot to make the
change for Qt 5.4. So do it now.

[ChangeLog][QtCore][Logging framework] %{threadid} now prints the real
thread ID. On Linux, OS X, iOS, FreeBSD and Windows, the value is unique
system-wide. On other systems, it will print something that may be
process-specific (the value of pthread_self(3)). To print the pointer
to QThread::current(), use %{qthreadptr}.

Change-Id: Ie383ff864a11966cf5d095b966a30ace65d34ee6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-08 00:23:03 +01:00
Marc Mutz
ceb753626f QSize: plaster API with Q_DECL_NOTHROW
This is mostly straight-forward, but some things are worth noting:

1. Yes, this is necessary. The noexcept operator looks for noexcept tagging,
   not at the contents of the function to determine whether to return true.
   The more conditionally-noexcept functions are used, the more important it
   becomes that low-level classes are correctly marked noexcept. In that, it
   is like constexpr.
2. In accordance with the rules governing noexcept specifications for the
   standard library itself, the operator/-family of functions are not marked
   as noexcept, since they have preconditions and thus a narrow contract.
   Narrow-contract functions should not be noexcept. All other functions
   have wide contracts (ie. no preconditions).

Change-Id: I9fc94218a2728c272483f9c2826c265f5b11c9b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 00:12:26 +01:00
Kai Koehne
d72544ea11 Remove qRegisterSequentialContainer, qRegisterAssociativeContainer traces
The methods where introduced with commit 01fb843af8, but removed before
the next release in a1898f4466.

Also add a comment that we should get rid of the special Q_CC_MSVC
handling in Qt 6.

Change-Id: I8bb992a59f31a0de7e3f14f34d1d4f604ebfe8f3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-07 12:21:52 +01:00
Friedemann Kleint
6796f2337e Windows: Fix OS version determination for Windows >= 8
First, try to determine the version of kernel32.dll by
using the version API. If that fails, loop using the
version macros, taking the major version into account.

Hangs in the minor version loop have been observed, potentially
related to the major version.

Task-number: QTBUG-43413
Change-Id: I982e78873510e7598c7cf839177e59812acd86f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-01-07 09:17:18 +01:00
Thiago Macieira
90e7cc172a Move a few QStringList methods up to QList<QString>
This should be completely source-compatible, aside from the indirect
header order change.

Change-Id: I4cf8800ea1bfeb3023c7319991ab8ae281c925e8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-07 05:19:47 +01:00
Thiago Macieira
82c2262b80 Disable the warning about deprecation inside qalgorithms.h
Since some of the algorithms use other ones, we should not warn about
those. The warnings are supposed to happen only in user code.

Warnings obtained with GCC 5. The Clang change is just to be on the safe
side.

Change-Id: If295899f6ff6534de7b19741d33efc0b5c4c912c
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-01-06 19:42:47 +01:00
Thiago Macieira
dd8b75d8fb Remove workarounds for RVCT compiler bugs
This does not try to remove support for RVCT. There has been no report
of it working or failing to work, so the status continues to be unknown.
In particular, the inline assembly code in atomic_armv[56].h remains in
place.

This commit only removes workarounds for compiler bugs or bogus
warnings, assuming that anyone using this compiler has updated since Qt
last tried to use it for Symbian in 2011. Note also how anonymous unions
are now part of the language in C++11.

Change-Id: Idc4fab092beb31239eb08b7e139bce2602adae81
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-06 19:38:24 +01:00
Orgad Shaneh
a457bf3ff7 Doc: Fixed date format doc bug in QDateTime/Qt namespace
MM stands for month, SS is invalid

mostly cherry picked from Qt4 commit 670f460fab6a386407c07281cf6417ccf6430970.

Task-number: QTBUG-12236
Change-Id: I7af4be655d2d10f1befa1366abb48225c60d31dc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-06 17:54:58 +01:00
Thiago Macieira
9d9b785259 Give ICC-as-Clang a Q_CC_CLANG version number too
Give it version number 3.5 for current compatibility.

Change-Id: Ia023d29b3b3946f8642a0550279ae63cbb803fc5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-06 17:39:03 +01:00
Thiago Macieira
01fc82e357 Re-enable constexpr for ICC 15
The bug noted in d88e4edcd5 appears to be
resolved.

Change-Id: Id20906ff83f74bd16267d44bf447626b81187e71
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-06 17:36:49 +01:00
Thiago Macieira
f3e9f11265 Fix change-of-sign warnings with ICC
qlocale_p.h(427): error #68: integer conversion resulted in a change of sign

We hadn't enabled Q_COMPILER_CONSTEXPR for ICC.

Change-Id: Ie7e3070b9f8f2cf512d2745001312865e698596b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-06 17:36:47 +01:00
Cory Bloor
f38b7e0343 Fix QFileSystemWatcher::directoryChanged docs/test
QFileSystemWatcher does not signal directoryChanged() when files are
modified in a watched directory. QTBUG-8945 was closed with the
decision that it should not signal. Updating the docs and tests to
reflect this fact.

The test code that is being changed is a partial revert of Qt4 commit
1428cc6d71a65c1ac7123c9c4cc3cfaf225cceed. It appears that Symbian
supported directoryChanged() on modification, hence why the check
was for 0 or 1.

Change-Id: I04320c68f227ca338ce65e525956ee201fd50699
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-01-05 23:52:58 +01:00
Giuseppe D'Angelo
8a4099a0aa QIsciiCodec: add an assert to silence Coverity
Coverity (not rightfully) complains that the code is using "iscii",
a uchar obtained by looking up into a table, as an index into the
"uni_to_iscii_pairs" array. Since the array is only 18 elements
long, there's the theoretic risk of accessing it past its end.

However, the lookup of "iscii" never returns values that may
actually go out of bounds. Coverity may be smart enough
to see the values that "iscii" can get and not raise the warning,
but since it does, make the code more robust and add an assert.

Task-number: QTBUG-43642
Change-Id: Id75ca105758b343102ca94137d0379c10e55581a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-05 15:51:01 +01:00
Marc Mutz
1049b36fc2 QFlags: plaster API with Q_DECL_NOTHROW
Yes, this is necessary. The noexcept operator looks for noexcept tagging,
not at the contents of the function to determine whether to return true.

The more conditionally-noexcept functions are used, the more important it
becomes that low-level classes are correctly marked noexcept. In that, it
is like constexpr.

Change-Id: Ia1aebf9b8d73fd8164c10dfca27a710934ba79a8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-05 13:05:00 +01:00
Milian Wolff
cd82be5c17 Use QStringLiteral to prevent runtime string conversions.
Change-Id: I0b2f06f9f09868051e84af80b2c61b5ada99af69
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-05 13:02:58 +01:00
Marc Mutz
d7fa2d060a Fix a memleak in QAssociativeIterable::value()
QtMetaTypePrivate::QAssociativeIterableImpl::{find,begin,end}() allocate a new _iterator,
so when they're used outside of the ref-counted world of QAssociativeIterable::const_iterator,
their lifetime needs to be manually managed.

Instead of going to that length, which failed in previous iterations of this patch, implement
value() in terms of (new) find() and let find() operate on const_iterator.

Because of forwards compatibility between patch releases, use (unexported) friend functions
for now with the intention to make them proper member functions come Qt 5.5.

Task-number: QTBUG-41469
Change-Id: I43b21eae0c2fc4c182369e669a8b3b457be68885
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-04 02:20:32 +01:00
Raphael Kubo da Costa
350c60b79e Link against QMAKE_LIBS_EXECINFO when using backtrace(3).
Add a new mkspec variable, QMAKE_LIBS_EXECINFO, for platforms where
backtrace(3), backtrace_symbols(3) and others are not in libc, but
rather in a separate library -- on the BSDs, this is libexecinfo.

Use it in corelib/global/global.pri so that libqt5core links against it
and has the proper dependency when necessary.

Change-Id: I62ac36c9b3ba7ab0719420cb795087d43ec138a4
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-03 14:48:53 +01:00
Thiago Macieira
86ca4de8a2 Doc: fix the type listed for the functions in QAtomicInteger
The "int" was a left over when this was documentation for QAtomicInt.

Change-Id: If7b7688982d27cbbd42f080eff7d08344b587f44
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-02 17:50:17 +01:00
Thiago Macieira
cd407e1bc6 Fix undefined behavior found by GCC 5
GCC said:
qtldurl.cpp:51:50: error: loop exit may only be reached after undefined behavior [-Werror=aggressive-loop-optimizations]
qtldurl.cpp:51:48: note: possible undefined statement is here
     while (tldIndices[index] >= tldChunks[chunk] && chunk < tldChunkCount) {
                                                ^

That's because we check whether chunk is still valid (less than
tldChunkCount) after we've dereferenced tldChunks[chunk]. That is, we've
already read tldChunk[2].

Change-Id: I79b6a1ea9a2454813d6cce7596fc2bb6d972d097
Reviewed-by: David Faure <david.faure@kdab.com>
2015-01-02 14:58:10 +01:00
Rafael Roquetto
8951b628fa QNX: Fix build.
Commit 99357e32a0 introduces a change that
causes <cstddef> to be included instead of <stddef.h> under QNX. That causes
symbols such as size_t to be placed on the std namespace only - QNX does not
put those in the global namespace, since it is not really required by the
standard, and therefore the build fails.

Merry Xmas!

Change-Id: I70c6976203a9d7beadd0076e122e2ac633a4ba69
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-31 18:21:51 +01:00
Israel Lins
b60773934d [QDateTime] ISO Time zone designators can be [+-]HH
Added support on QDateTime::fromString to read correctly dates on ISO
format with Time zone designators at format [+-]HH

Change-Id: Ied5c3b7950aee3d0879af0e05398081395c18df5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-12-30 23:56:01 +01:00
Pino Toscano
ca59365656 Enable ELF .interp section on Hurd
The toolchain is basically the same as on Linux, so we can get the
program interpreter and print the build information when Qt5Core.so
is run.

Change-Id: I02a910e691622e24e882015716c5f74dd5a20c4a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-30 20:22:08 +01:00
Pino Toscano
7ec14ae0b2 Complete MIPS atomic support on pre-MIPS32 architectures
Extend the support for pre-MIPS32 architectures (done mostly in
60b6b28c21) also to orderedMemoryFence.

Change-Id: I50b9091c16166b8434a07988053c1f901d528237
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-30 20:21:56 +01:00
Frederik Gladhorn
aaff94c2df Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/kernel/qplatformsystemtrayicon.cpp
	src/gui/kernel/qplatformsystemtrayicon.h
	src/plugins/platforms/xcb/xcb-plugin.pro

Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
2014-12-29 16:37:38 +01:00
Roger Maclean
dec81ad2da QNX: Revert the change to give higher precision timers.
The previous change (SHA 82c2118c) to provide better
than 1ms accuracy for timers on QNX is not safe.

According to the docs, ClockCycles is not guaranteed to
return consistent information if called from different
CPUs.  While this can be addressed by locking the thread
to a single CPU, you wouldn't want to do that here.

On some systems (e.g. BB10) the behavior  is extremely bad
since ClockCycles only has 32 bits of precision.  This
results in overflows in the calculations making short
timers run very slowly (16ms timers were around 1s).  Also
ClockCycles wraps in under three minutes causing even
more problems.

I've talked to the kernel developers and there is currently
nothing that will give you better than 1ms accuracy.  An
individual program could use ClockCycles to calculate more
accurate times if they want.

It's not clear to me what benefit one would get with
increased accuracy.  Unless I've missed something, these
times are only used to calculate timeouts for calls such as
select.  These timeouts will themselves have the same
resolution as clock_gettime provides so the increased
accuracy would appear to be for naught.

Change-Id: Ia38b154ca41949becbd0b8558a9ff4ddd5e01a43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-12-24 20:35:09 +01:00
Nick Shaforostoff
5b11e43e9f QThreadPool::cancel() to remove individual jobs from the job queue.
[ChangeLog][QtCore][QThreadPool] Added QThreadPool::cancel() which allows
removing from the job queue a job that hasn't been started yet.

Change-Id: Ib8f1c1f32a34f5eec8338c641d820b928e470164
Reviewed-by: Nick Shaforostoff <shafff@ukr.net>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-24 15:01:36 +01:00
Dmitry Shachnev
13972476ad qstorageinfo_unix.cpp: Fix build on BSD and other unices
* Include statvfs.h on all non-Linux and non-Solaris systems.
* Fix type of stat_buf structure on BSD.

Change-Id: I6336503082fafd7f6108cf95c079bdd329d2ea0f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-23 09:12:01 +01:00
Aleix Pol
c63bb90ac7 Fix typo in Qt5CoreMacros.cmake
According to the documentation, the argument is called COPYONLY instead
of COPY_ONLY.
Fixes warning and ensures it works properly.

Change-Id: I643f5ea808aaaf94c3ee666ec39485e84ed38df1
Reviewed-by: Vishesh Handa <vhanda@kde.org>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2014-12-23 01:14:11 +01:00
Thiago Macieira
3c9847a068 Remove the operator<< | >> (QDataStream, QStringList)
They aren't needed. The template version for QList in qdatastream.h is
sufficient.

This is binary compatible, since the functions were never exported. It's
also source compatible, provided no one tried to do:

    QDataStream & (*fptr)(QDataStream &, QStringList &) = &operator>>;

Change-Id: I8a4449b416154b34c007ef6abacf2b112451028f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:47:19 +01:00
Thiago Macieira
41f7053b87 Fix build error without precompiled headers
qstringlist.h no longer includes qiodevice.h

Change-Id: I08b83400316cb0b43bde0b390a9430e589e79e10
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:38:33 +01:00
Thiago Macieira
99357e32a0 Fix detection of C++11 Unicode strings with icl.exe
Even though the compiler supports it, the MSVC headers might do
something wrong and make compilation fail later due to attempting to
overload unsigned short with char16_t.

The _CHAR16_T definition comes from <cstddef>, so include that instead
of <stddef.h> in C++ mode.

Change-Id: Ifaeb1c92bde2db4ed4129507462391904afd6510
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:38:29 +01:00
Thiago Macieira
045fc1db75 Unbreak the build with the Intel compiler on Windows
icl.exe behaves like cl.exe (MSVC), so we should use the MSVC-style of
__pragma instead of _Pragma.

Change-Id: Ieee740c430589c3bb1b964138f8bf7f58b8d2892
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:38:25 +01:00
Thiago Macieira
3092bd56c3 Fix Clang warning about inconsistent use of C++11 override
We cannot use override in the Q_OBJECT macro, so tell Clang not to warn
about our lack of use of the keyword in the three virtuals that Q_OBJECT
overrides when the user uses Q_DECL_OVERRIDE in their own functions.

We can't use Q_DECL_OVERRIDE for two reasons:
 1) because that would trigger the warning in any and all virtual
    overrides the user may have in their own class (and most of Qt)
 2) because when Q_OBJECT is used in QObject, it's not overriding
    anything -- it's the base declaration

For #2, we could add a different macro exclusively for QObject that moc
would expand, but it's unnecessary work.

Change-Id: Ic9cb7896f93f06f4e86b6a42dc08f96d257f7550
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:38:21 +01:00
Thiago Macieira
2e4b1a8334 Remove Q_NO_USING_KEYWORD
There's a lot of code now requiring it. Any compiler that doesn't
support the keyword is too old for Qt now. The last time anyone asked
about this macro was for QTBUG-27393 and we don't know which compiler
that was.

As a necessity, this patch contains a reversal of
a0c3a57aed

[ChangeLog][Compiler Specific Changes] Qt 5.5 now unconditionally uses
the "using" keyword. Compilers that do not support this keyword are
deprecated and will not be able to build Qt. Previous versions of Qt may
or may not compile, as no testing was done to ensure it worked.

Change-Id: Ief042f34aba555a095d1f342a0ee7ee9feadf42d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-20 07:38:17 +01:00
Thiago Macieira
5d366f7e42 Display the QElapsedTimer reference time in %{time}
This allows the time to be synchronized between different programs, as
opposed to how long it has been since the message pattern was first
parsed...

Change-Id: If8bdfa0d997ca418a5fcae40f8c34fb77f90d2aa
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-12-20 07:38:13 +01:00
Thiago Macieira
71d576abc8 Add the detection of MSVC 2015 for QLibraryInfo
Now it will say "MSVC 2015" instead of "MSVC _MSC_VER 1900".

Change-Id: I1546929aec205d0a9a62dcc39f20093664951048
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-12-20 07:38:09 +01:00
Thiago Macieira
d1d3c36e87 Simplify use of __has_include in qlogging.cpp
Easier to just #define it to 0

Change-Id: Ife99fdca6564077762fa67c6d7a5becaf48655d8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-20 07:36:17 +01:00
André Klitzing
ebd33883e7 QState: Added template PointerToMemberFunction
Added the function pointer to addTransition to take
advantage of the new connect syntax.

[ChangeLog][QtCore][State Machine] Added an addTransition() overload that
takes a pointer-to-member for the signal triggering the transition.

Change-Id: Ic97f7983839217ca0c8484b269d38221cbe804e3
Task-number: QTBUG-40293
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-20 06:36:26 +01:00
Thiago Macieira
a31b75b766 Use the GCC and Clang __builtin_bswap intrinsics in qbswap
Glibc will use the intrinsics for 32- and 64-bit, but didn't for 16-bit
(probably because GCC didn't document it until version 4.8), so this
commit will make us access the intrinsics directly the intrisincs for
all type sizes.

Additionally, this will get us access to the compiler intrisics even
without Glibc, such as when building against uclibc or Bionic.

Another benefit is that both Clang and ICC will use the MOVBE
instruction on Atom and Haswell architectures.

Change-Id: I39d1891f479887d719d69ebe4ac92ac9bfeda8af
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-20 01:41:00 +01:00
Thiago Macieira
c70658d301 Make sure we don't try to ask QByteArray to allocate too much
QFile::readAll could be asked to read a file that is over 1 GB in size
and thus cause an assertion:

ASSERT failure in qAllocMore: "Requested size is too large!", ...

The idea behind the existing code was correct, but the value was wrong.
It prevented overflow of the integer size request, but didn't prevent
overflowing the storage size.

Change-Id: I072e6e419f47b639454f3fd96deb0f88d03e960c
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-12-20 01:39:33 +01:00
Thiago Macieira
80d0075588 Fix QThread::idealThreadCount on Unix if sysconf or sysctl fails
The BSD4 code (including OS X) calls sysctl and if that fails, it sets
cores to -1. Similarly, the generic Unix code calls sysconf() and
assigns the returned value to cores, but sysconf can return -1 on
failure.

Change-Id: I9e521d366e9c42f36c2ba20a37e7a74539ddb8f4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-20 01:39:22 +01:00
Andy Shaw
7393bb0af4 MSVC: Restore 'public' accessibility of QMetaType member functions
They were made 'private' as a side effect of a change enabling
support of template friends for MSVC. However, accessibility
is part of the MSVC's name mangling and thus BC was broken.

[ChangeLog][Important Behavior Changes] Restored binary
compatibility with Qt 5.3.2 on Windows when using MSVC 2012 or
MSVC 2013. This means that Qt 5.4.1 is no longer binary compatible
with Qt 5.4.0 when using either of those compilers.

Change-Id: I18679aa15821a7365606dc80fdc8411641573820
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-12-19 09:15:30 +01:00
Simon Hausmann
e281537f20 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/global/qglobal.h
	src/platformsupport/platformcompositor/qopenglcompositor.cpp
	src/platformsupport/platformcompositor/qopenglcompositorbackingstore.cpp
	tests/auto/gui/kernel/qwindow/tst_qwindow.cpp

Change-Id: I5422868500be695584a496dbbbc719d146bc572d
2014-12-18 12:12:58 +01:00
Alex Blasche
8eb4b281d9 Change bugreports.qt-project.org -> bugreports.qt.io
The Qt bug tracker URL changes as part of the qt.io transition

Change-Id: Icb4ab198943b93639b5e3a8d99262303785c6459
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-12-18 09:46:09 +01:00
André Klitzing
87ede1fc7a Fix constant "Qt" LOG_TAG in Android
The LOG_TAG for Android can be set by QCoreApplication::applicationName
instead of a constant "Qt" tag. This will avoid that multiple apps
will use the same tag.

Also it will be easier to filter the logs for different apps instead
of "adb logcat -s Qt" for all Qt apps.

Change-Id: I422cc3adf8b526634b5daa9a1bb1b90403de5618
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-15 21:24:02 +01:00
Alex Trotsenko
5c5e4582d6 QTextStreamPrivate::scan(): remove unnecessary checks
The delimiter search scan() loop detects a device or string reaching
the end of input and size limits. After that, 'false' is returned only
when no data was read at all. So, there is no a reason to test anything
except 'totalSize'.

Change-Id: Ib9cc21c0f4b7863c2dafb1bb074c5cda07387b8f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-13 09:37:26 +01:00
Thiago Macieira
dc469691a9 Bump version number to 5.4.1
Change-Id: I54231de422ffc63162e49c587f371c56c3312210
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-13 05:12:17 +01:00
Thiago Macieira
a670b916b0 Add the C++11 features supported by Visual Studio 2015
Tested with the November 2014 Preview.

There are three C++11 features that aren't supported as of MSVC2015:
 - attributes
 - constexpr
 - uniform initialization

Microsoft recognizes that constexpr support in this compiler is partial,
so we don't enable it yet. Attributes are not implemented at all.

As for uniform initialization, Microsoft's feature list says
initalizer_list is supported, but we still see compile errors trying to
initialize arrays in constructor initialization lists.

Change-Id: Id686ccb6b4b2ecd63f16d308552174db1f05f2c5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-13 05:11:34 +01:00
Thiago Macieira
ef89efe137 Merge the multiple implementations of fromHex too
Change-Id: I8c22f784207dd8bffb88e70ac3c867abf0af86af
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2014-12-13 05:10:28 +01:00
Thiago Macieira
cfe12f716b Merge the different implementations of toHex in one central place
It's a simple enough function, but we don't need to duplicate those 17
bytes all over the place. Now they'll be duplicated at most once per
library.

Change-Id: Ic995e2a934b005e7e996e70f2ee644bfa948eb38
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2014-12-13 05:10:20 +01:00
Thiago Macieira
0bc6c4f7ec QTextStream: stream QStrings without modifying the user content
QTextStream::operator<< calls QTextStreamPrivate::putString, which was
taking a copy of the user's string and modifying it depending on
padding. That is not necessary, since we're only talking about
padding. Instead, calculate the left and right paddings. For the case of
"accounting padding", we move the sign (if any) to the beginning of the
left padding and skip it in the data.

The one side-effect I can think of is that the stream could flush in the
middle of the writing operation.

The debugging section had to be removed because it doesn't make sense
anymore.

Change-Id: I57fdbf98ec6f054f4e085f2e465de3dcbb6225ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-13 05:10:10 +01:00
Nico Vertriest
fff996e8ad Doc: corrected documentation addOptions()
Task-number: QTBUG-43259
Change-Id: If27c0658f7abaa4ce01de343ce90c14bd911212f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-12-12 15:33:14 +01:00
Thiago Macieira
d47b9ace50 Fix the Apple build version numbers for Clang
A bunch of zeroes were missing. And not to the left.

Task-number: QTBUG-43279
Change-Id: I1a710cf572099547b2ade7b2574a7e0a61649758
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2014-12-12 03:39:37 +01:00
Drew Parsons
0478bc15bd fix daylight time in QTimeZone on Android
Android does not provide an API to access daylight time transitions,
so the standard QTimeZonePrivate::dataForLocalTime only returns
standard time without the daylight offset

Therefore provide an override,
QAndroidTimeZonePrivate::dataForLocalTime, which tests daylight time
offsets directly rather than using transitions.

Change-Id: Ia8adaf9af40da38aadfa7d22d9a3fe9da9ba24a8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-12-11 22:18:21 +01:00
Olivier Goffart
c9b99994b0 Add Q_DECL_RELAXED_CONSTEXPR to QUuid
Change-Id: I0fa5806ef7a8e14b0728f0b914fa9ffd0dbad811
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-12-11 11:05:53 +01:00
Kai Koehne
b3638e1d11 Clean up QDebug operators for QDir
Change-Id: Ia0a9eb5058adde98f690288cfbbb62a82a75dc60
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-10 16:25:54 +01:00
Robin Burchell
99e69dce78 QFileSystemEngineUnix: Don't stat before retrieving working path.
This is entirely unnecessary. If the path is bad, then getcwd and friends will
fail. Doing an extra stat imposes an extra performance overhead without reason.

Trivia: A dive into Qt's history shows that the stat dates back to:
  Sat Aug 12 14:24:36 1995 +0100
The original purpose of the stat was to avoid calling getcwd unless the path had
actually changed. Subsequently, the caching was removed, but the stat remained.

Change-Id: Ia4598dc74ded36516b3e10e7ab0eb5a6a5690466
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-10 14:08:44 +01:00
Alejandro Exojo
dd670a2f3d doc: Clarify NOTIFY emission with MEMBER variables
Document that NOTIFY signals should be emitted only when really needed,
and that such is the case with MEMBER variables.

Change-Id: Icc38a0790aa43ffe8f24d124da966b4240a41a6f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-10 11:09:25 +01:00
Simon Hausmann
015002fec9 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	doc/global/template/style/online.css
	mkspecs/android-g++/qmake.conf

Change-Id: Ib39ea7bd42f5ae12e82a3bc59a66787a16bdfc61
2014-12-10 07:58:06 +01:00
Marc Mutz
f1e0026232 QChar: mark even more functions constexpr
These differ from the functions already marked constexpr in that
they contain subexpressions that are not constexpr. This is fine
according to the standard as long as there's _one_ set of arguments
that yield a Core Constant Expression (paraphrased from N3797
[dcl.constexpr]/5, C++11 contains similar wording), but maybe not
for some compilers, so collect these in a separate change.

Change-Id: If834232fd83059fce7c44d16b71e7d08ef79de65
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-10 01:27:09 +01:00
Marc Mutz
6ebe8f39aa QChar: mark some more functions constexpr
Change-Id: Iff82417b6da751278066cd325c4768cd24d56870
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-10 01:27:01 +01:00
Marc Mutz
cb93117d06 QChar: prepare relational operators for constexpr'ification
Make sure the relational operators are in a constexpr'able form
by removing the use of the const/non-const-overloaded unicode()
function, which in the relational operators is resolved to the
non-const version, which isn't constexpr'able.

Replaced with direct member access for op== and op< (required
making them friends) and reformulating the other operators in
terms of these two.

Since I managed to introduce a bug while doing this change,
add a simple test for QChar operators, too.

Change-Id: I69f3da849e71abc2a17152f797694950914adebc
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-10 01:26:51 +01:00
Giuseppe D'Angelo
f96baeb75f QSortFilterProxyModel: honor the roles parameter of dataChanged
When the source model emits dataChanged, it may tell which roles
have been changed. That information was lost when using a
QSortFilterProxyModel -- the proxy simply dropped that argument
(meaning "all roles may have changed"). It's instead a good idea
to forward the roles argument, as it may minimize hits on the
proxy (on unchanged roles).

[ChangeLog][QtCore][QSortFilterProxyModel] QSortFilterProxyModel
now properly forwards the roles that have been changed when
the source model emits dataChanged().

Task-number: QTBUG-35440
Change-Id: Ifa5213866ba04dfd57d50b5fbd47638f2191eb8e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-12-07 20:51:08 +01:00
Jędrzej Nowacki
a2d7441b83 Fix QMetaProperty::write so it tries to register a property type.
We can not assume that the property type is always registered, because
QVariant argument may contain an instance of a different type.

Change-Id: I4fc9593b826e13c401dbdacec4d60db36edc7102
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-07 12:38:40 +01:00
Jędrzej Nowacki
c0a6a1db85 Re-factor code that do lazy property registration into a function.
The code was repeated in a different form 3 times.

Change-Id: I6d0deb5dd9a317e1aab6a97d5eb2fd647f597661
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-12-07 12:38:32 +01:00
Alex Trotsenko
5f09f2bb33 Simplify QRingBuffer::isEmpty()
Also, make it consistent with size().

Change-Id: Ie5285e3c07ebba2d2eea05a80a75ce148da47d7b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-06 11:34:45 +01:00
Friedemann Kleint
05ad2fc2f4 Fix warnings by MSVC 64 in qtranslator.cpp.
kernel\qtranslator.cpp(880) : warning C4267: 'initializing' : conversion from 'size_t' to 'const uint', possible loss of data
kernel\qtranslator.cpp(881) : warning C4267: 'initializing' : conversion from 'size_t' to 'const uint', possible loss of data
kernel\qtranslator.cpp(882) : warning C4267: 'initializing' : conversion from 'size_t' to 'const uint', possible loss of data
kernel\qtranslator.cpp(975) : warning C4267: 'initializing' : conversion from 'size_t' to 'const int', possible loss of data

Task-number: QTBUG-39757
Change-Id: I54f130e1d83ecc1623ab3c7b9b4fb14de6351625
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-05 15:32:46 +01:00
Nico Vertriest
b74e046174 Doc: corrected autolink issues qalgorithms.qdoc
Task-number: QTBUG-40362
Change-Id: Ia609b68b52472342d791a032974a3d866e8d3266
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-12-05 15:32:43 +01:00
Simon Hausmann
7644faa881 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I0cd11cbe95693b78450ea81a0187760f4a6a8b5f
2014-12-05 11:53:33 +01:00
Albert Astals Cid
247607a1af Don't make invalid assumptions about memcmp()
In qtranslator.cpp match()

Task-number: QTBUG-39757
Change-Id: I49e3ccc0ce900564bbe14609bfda47688382d5f3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-04 19:22:15 +01:00
Thiago Macieira
9ef3ff30e1 Add support for char16_t, char32_t and std::nullptr_t in QDebug
This is required before we can add support for those three types in
QVariant.

This commit changes the output format for QChar when it falls outside
the printable ASCII range. In the future, it might be nice to use the
pretty-printing of control characters like QtTest and QJsonDocument.

Change-Id: I4d942da8d11f83de9c1b485ea6ca804fe1622602
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-04 02:26:29 +01:00
Thiago Macieira
1eb7005850 Use the new warning enabling/disabling macros in qtbase
Change-Id: I91ff06644e8047c2ca483f9768b46c1372eb6171
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:17 +01:00
Thiago Macieira
63a512023e Add macros for enabling/disabling warnings
This allows us to avoid the ugly #if for compiler versions. We might
still need for when a warning only occurs in one compiler version, but
otherwise the code will be much cleaner.

Change-Id: Ibc941d898b3dad2e3d87c11378f29139c31f0fff
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:15 +01:00
Thiago Macieira
34b66aaf07 QVariant: simple improvement to numeric type checking
Results in faster code.

Change-Id: Ibeeac8c0f9d8a525fa233e00301338d3170ee413
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:10 +01:00
Thiago Macieira
38174159be Hoist the numeric comparisons in QVariant::{cmp,compare} further
I had already hoisted them a little in the previous commit, so that the
comparisons run without conversion. This now moves the numeric compare()
before the cmp() equality check, so it saves us a few more cycles.

Another benefit is reduced code duplication.

Change-Id: Ia96da94e169fe0b8d4e761177fc2b74e47d4daff
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:05 +01:00
Thiago Macieira
cf475b91ae Implement proper C++ type numeric promotion for QVariant comparisons
Previously, QVariant would try to convert one operand to the other's
type, which would produce unexpected results: the results would depend
in the order of the operands and whether there was data loss in the
conversion. In addition, ordering comparisons were only done with signed
values, yielding other unexpected results, like
   QVariant(LLONG_MAX / 2) < QVariant(Q_UINT64_C(0)).

Instead, try to obey the C++ standard rules for type promotion in
expressions. Our code is a little simpler than the standard would seem
to require since we know some more details from the ABI.

[ChangeLog][Important Behavior Changes][QVariant] QVariant now obeys the
C++ type promotion rules when comparing numeric types (integrals, float
and double), including the fact that unsigned comparisons are preferred
for types of the same rank (that is, now QVariant(-1) > QVariant(0U)).

Task-number: QTBUG-42722
Change-Id: Ie7b19073dcb45485354710975e561bcdb1a753f1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-12-03 18:09:00 +01:00
Olivier Goffart
5180f32c5a Add Q_DECL_OVERRIDE in the src subdirectory
Done automatically with clang-modernize on linux

(But does not add Q_DECL_OVERRIDE to the function that are marked
 as inline because it a compilation error with MSVC2010)

Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-03 09:57:11 +01:00
Alex Trotsenko
e06f4c2558 QRingBuffer: cache the last released block
A typical ring buffer usage is a sequence of reserve()->chop()->read()
cycles. Usually, between these cycles, the buffer doesn't contain data and
all blocks are released. To reduce reallocations, keep the most recently
used block while the buffer is empty.

Change-Id: I8128f1f04649ae005fd0a480f17f95de01a9a135
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-02 20:05:58 +01:00
Allan Sandfeld Jensen
864cf2a6cd Add DeepBind option to QLibrary
Adds an option to request the RTLD_DEEPBIND flag to dlopen. On Linux
this can be used to force a library to resolve global symbols locally
instead of using the similarly named symbols already loaded.

This makes it possible to load and use plugins linked against Qt 4
without crashing.

[ChangeLog][QtCore][QLibrary] Added DeepBindHint which maps to RTLD_DEEPBIND
on Linux making it possible to load libraries with external symbols that
clash with already loaded ones, such as plugins linked to Qt4.

Change-Id: I4edb4af68e4a47e932a87d108360dba8d91dc34a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-12-02 14:38:36 +01:00
Thiago Macieira
2409ed7d48 Fix placement of QT_{BEGIN,END}_NAMESPACE in qfunctions_winrt.h
Those functions weren't getting properly namespaced. Even if we're
testing WinRT namespaced builds, it wouldn't catch this mistake: those
functions would simply all be in the global namespace. I guess we don't
have a "namespace cleanliness" test.

Change-Id: I2d3d09dc66dad476563dbf51c171683be155ebfd
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Reviewed-by: Andrew Knight <andrew.knight@theqtcompany.com>
2014-12-01 21:37:30 +01:00
Thiago Macieira
2bfc010b83 Un-tighten the WinRT specific code out of qfunctions_winrt.h
Keep the WinRT specific parts for WinRT only. This commit is a partial
reversal of 67c83f329e "Tighten Q_OS_WINRT
ifdefs in qfunctions_winrt.h", which let the WinRT definitions out too
wide.

Strictly speaking, the C++ code that uses
Microsoft::WRL::ComPtr<IAsyncInfo> without the #include is broken. The
forward definition is not enough, but since Visual Studio is also
broken, two wrongs made a right... (MSVC does not implement two-stage
parsing of template code properly). But if you accidentally tried to
compile qfunctions_winrt.h with a non-broken compiler, like GCC (MinGW),
it would correctly complain.

Change-Id: I7591015861d291a82050afe0f4df0cb18b43e23d
Reviewed-by: Andrew Knight <andrew.knight@theqtcompany.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2014-12-01 21:37:24 +01:00
Eike Ziller
03b5ecce4a FSEvents file system watcher: Do not watch whole parent hierarchies.
Unfortunately the FSEvents implementation for watching parent
hierarchies has the major flaw, that watching a path will then
create watches for the whole parent hierarchy even if that
hierarchy is already watched. Watching /A/B/C and /A/B/D will
create two watches each for /A and /A/B. This leads to an explosion
of open file handles.
Luckily we do not need to watch the parent hierarchy since this
is not a supported usecase of QFileSystemWatcher anyhow, so just don't
do it.

Task-number: QTCREATORBUG-13531
Change-Id: I9ecb5f08e4be35e4fbd58a7ca3155867fcb1589f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-12-01 20:03:42 +01:00
Frederik Gladhorn
ce6990c3e7 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: Id20053d261b4fbbcc0ac8ba49dd3ef2253fa4b95
2014-11-27 18:28:12 +01:00
Frederik Gladhorn
3de7382044 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Conflicts:
	dist/changes-5.4.0

7231e1fbe2 went into 5.4 instead of the
5.4.0 branch, thus the conflict.

Change-Id: I70b8597ab52506490dcaf700427183950d42cbd1
2014-11-27 18:12:10 +01:00
Benjamin Lutz
c6aa76122e Fix size miscalculation in QByteArray::toBase64
The size calculation in QByteArray::toBase64 overcalculates the size
required for the output by up to 3 Bytes. This is fixed, which also
implies that truncate() at the end is needed only if OmitTrailingEquals
is used.

Task-number: QTBUG-32436
Change-Id: I92a893047e7aca027c4aa0a6655bcca514585ff5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-27 10:29:08 +01:00
Allan Sandfeld Jensen
fc3402ca82 Clarify QString::clear()
QString::clear() sets the string to the null QString, not just an empty
one.

Change-Id: Ie6f070f9f2e464105a7b87376e6dad90b5e4d2f2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-27 10:18:43 +01:00
Friedemann Kleint
09e674849a QCommandLineParser: Show usage and errors in message boxes on Windows.
Use the Windows MessageBox API if no console window can be obtained.

[ChangeLog][QtCore][QCommandLineParser] Message boxes are used
to display errors and usage if no console window can be obtained
on Windows.

Change-Id: I63ee8e4d8bd78db83e688fd69374779102562aa3
Reviewed-by: David Faure <david.faure@kdab.com>
2014-11-27 09:34:29 +01:00
Jędrzej Nowacki
cc1d9671b3 Micro-optimize QVariant enum to number conversions
Change-Id: I2296d9417e0d1ef08084fb259885ac2a3eff9fe8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-27 09:18:23 +01:00
Giuseppe D'Angelo
8f201ca4e7 QJsonArray::(const_)iterator: mark the pointer typedefs as internal
Just like the other typedefs; removes the doc warnings.

Change-Id: I61142b8db57f4e0cc44cb8c459b1e82e69da3413
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2014-11-27 09:03:02 +01:00
Shawn Rutledge
b9d98c10bd Deprecate implementations of functions deprecated in headers
If you build with configure -DQT_NO_DEPRECATED this will avoid some
build errors.

Change-Id: If2b2e57b6919091f3f077ebc2aeca0c3fd2421aa
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-11-27 04:16:22 +01:00
Nico Vertriest
5ed2f422fc Doc: corrected autolink errors corelib/io
Task-number: QTBUG-40362
Change-Id: I1cdbde1f6b003556ba4b5e97a49c6d918518da0d
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-11-26 10:47:46 +01:00
Giuseppe D'Angelo
dd97634f80 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>
2014-11-26 09:59:31 +01:00
Olivier Goffart
e41713b21d 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>
2014-11-26 09:09:38 +01:00
Olivier Goffart
1217504a60 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>
2014-11-26 09:09:25 +01:00
Olivier Goffart
94e11a9f0c 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>
2014-11-26 09:09:14 +01:00
Olivier Goffart
f0694236f6 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>
2014-11-26 09:09:08 +01:00
Olivier Goffart
9bdcd4485a 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>
2014-11-26 09:08:47 +01:00
Alex Trotsenko
ae9ee18cad 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>
2014-11-26 07:21:14 +01:00
Friedemann Kleint
13b139d028 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>
2014-11-26 06:32:20 +01:00
Drew Parsons
9a565f8fe4 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>
2014-11-26 01:43:10 +01:00
Frederik Gladhorn
34aba4724f Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/io/qiodevice.cpp
	src/plugins/bearer/linux_common/qofonoservice_linux.cpp
	src/plugins/bearer/linux_common/qofonoservice_linux_p.h
	src/plugins/platforms/android/qandroidplatformtheme.cpp
	src/tools/bootstrap/bootstrap.pro
	src/widgets/styles/qmacstyle_mac.mm

Change-Id: Ia02aab6c4598ce74e9c30bb4666d5e2ef000f99b
2014-11-24 13:39:13 +01:00
David Faure
b13aa15e10 QAbstractItemView: call canDropMimeData, as one would expect.
The virtual method was added for 5.0 but never called.

The old code (only checking mimetypes) is now the default implementation
for canDropMimeData. Model subclasses can now refine this by having
index-specific logic instead, or in order to inspect the dropped data
(e.g. to accept files and refuse directories, which are all text/uri-list).

[ChangeLog][QtWidgets][QAbstractItemView] now calls canDropMimeData in
order to decide whether or not to accept the drop.

Task-number: QTBUG-30534
Change-Id: Ied3aa964b4025bae6a1a26df89a681bfe61c3faa
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2014-11-24 08:05:51 +01:00
David Faure
736ac19156 QAbstractProxyModel: fix canDropMimeData/dropMimeData implementations
The code in 4696e9dbaa was incorrect. It is perfectly valid to call
these methods with row=-1 column=1 parent=some_index, this is exactly
what happens in QListView and QTableView. Child row/column is only for
trees.

Move the coordinate mapping from QSortFilterProxyModel into a new
mapDropCoordinatesToSource internal method, used by QAbstractProxyModel.

Task-number: QTBUG-39549
Change-Id: I3312210473d84b639cbe4c01f70ea36437db3e91
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2014-11-24 08:05:43 +01:00
Samuel Gaist
5f6284a98b Implement Download folder path retrieval on OS X
The current implementation returns the DocumentLocation folder.
Since now only cocoa is supported, we can use NSFileManager to get the
correct path.

[ChangeLog][QtCore][OS X] Now QStandardPaths returns the correct path
for the DownloadLocation.

Change-Id: Ic0ea3ebf8585a1e34a7b43c734df78fd3949d4d4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-24 00:33:20 +01:00
Thiago Macieira
def272750c Put parentheses around "min" to prevent expansion as macro
If you write xxxx::min(), min() might be expanded as a macro on silly
environments that follow that poor practice (read: inclusion of
<windows.h> without NOMINMAX). However, if you write (min)() or
(xxx::min)(), it means the same but prevents the expansion as macro.

Task-number: QTBUG-42767
Task-number: QTBUG-31469
Change-Id: If3c93aafd4d0bf63ca15f3d01c2297d58d00f6bc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-21 20:37:39 +01:00
Thiago Macieira
9bb64bff61 Fix coding style in QtCore
Never start a line with a comma.

Change-Id: Idce1766f2661aa97fd163c02436ef315999985ec
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-21 20:37:38 +01:00
Christian Strømme
f9408cc81c Android: protect global jni cache.
This fixes a issue that has been neglected for a while, namely, that
the access to the global jni caches where not sufficiently protected
for concurrent usage. This change also fixes an issue with the
thread-name storage.

Task-number: QTBUG-42755
Change-Id: I22f95ae7f44d1f6a13e289e52b050d98ccb9fb28
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-21 16:48:02 +01:00
Thiago Macieira
bb07737614 Fix the %{time} printing to *not* default to the process's time
The default should be the actual time of day. Showing the process's time
is the optional case. In the future, we'll provide a way to showing the
monotonic reference time ("boot") and we should improve the detection of
actual application runtime.

Change-Id: I41936d77ab9fad2073dc0ce1c97cabe57ec39f16
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-11-21 16:47:35 +01:00
Frederik Gladhorn
245acbf6e8 Merge remote-tracking branch 'origin/5.4.0' into 5.4
Change-Id: I95f235a66ce2e9b1fa435c0f911c6f7e811755f0
2014-11-21 13:44:26 +01:00
Friedemann Kleint
94e40c7c78 Observe QLocale::RejectGroupSeparator in QInt/DoubleValidator.
Pass it as additional boolean parameter to QLocaleData::validateChars().

Task-number: QTBUG-42522
Change-Id: I4b2367f4e2fdcbd17e343d215edad57e6687697a
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-11-20 16:38:23 +01:00
Kai Koehne
aef2ed9108 Pick up QT_LOGGING_RULES also for bootstrapped tools
Pick up logging rules set by QT_LOGGING_CONF, QT_LOGGING_RULES,
and qtlogging.ini file also for bootstrapped tools. This helps e.g.
in the case of winrtrunner, which uses categorized logging.

Change-Id: I47d392137e17a59cb57b5c0226f282b0ccf29961
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2014-11-20 16:32:57 +01:00
Kai Koehne
087aa1f3cb Windows: Prevent registration of timers in shutdown phase
Do not register new timers after closingDown() has been called. They
might call back into QEventDispatcherWin32 after the object has been
destructed, leading to crashes on exit.

registerSocketNotifier has a similar protection using
QCoreApplication::closingDown(). This however does not work in all cases,
because QEventDispatcher::closingDown() is called in
~QGuiApplication(), while QCoreApplication::is_app_closing is set
in ~QCoreApplication(). In between qt_call_post_routines() is called,
which might trigger new timers to be registered.

Task-number: QTBUG-42772
Change-Id: I91325fb10e38c117c1cbedfee272d0ab6a5ca8fa
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-20 16:14:46 +01:00
Nico Vertriest
34985d676a Doc: Corrected autolink errors corelib
Task-number: QTBUG-40362
Change-Id: I551c2af94bb61fcc2494792761dab92d537e5068
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-20 16:14:23 +01:00
Nico Vertriest
fbfc2b8e0b Doc: corrected autolink issues itemmodels
Task-number: QTBUG-40362
Change-Id: I8423643e47d27358dbbce58009cc9039aecb74cf
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-20 16:14:06 +01:00
Alex Trotsenko
6bded1695b Fix QString::section() behavior on negative and out-of-range indexes
Change-Id: I3bff6ba73b15ee810bb11b2902d11244c3205b2a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-20 15:37:18 +01:00
Giuseppe D'Angelo
bec1854cc0 QSortFilterProxyModel: keep the sorting on unrelated changes
Whenever the source model of a QSortFilterProxyModel changes, and
the changes involve the sorted column, the implementation removes
the changed rows from the mapping, sorts them, and inserts them back;
in case of identical items, the rows are inserted at the end of the
block of equal rows.

The problem is that if the change doesn't actually happen on the roles
that are used for sorting, then we shuffle the rows, terribly confusing
the user. The typical case is a model with identical checkable rows:
(un)checking one row will move it at the end.

So, instead of trying to be smart with the removal/sort/insert sorted,
simply resort everything under the changed parent index. Since the
sorting used is stable, this keeps the items in the same positions.

Task-number: QTBUG-1548
Change-Id: Id0e61bd49da53b0a3e8aefa6b6893ac41179dc6f
Reviewed-by: David Faure <david.faure@kdab.com>
2014-11-20 14:58:26 +01:00
Thiago Macieira
b86b2a742a QVariant: Fix qIsNumericType(SChar)
signed char is a numeric type

Change-Id: I5cf9ed63cb7a2ba56c08119c77bcac0f9369b5df
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-11-20 05:46:42 +01:00
Thiago Macieira
849604e2f9 Fix asymmetry in QVariant::cmp when A converts to B but not the opposite
This would result in (a == b) != (b == a). The == operation should be
commutative as much as possible.

Now, there's still an asymmetry in that b is forced to a type and the
conversion may fail. QVariant should have an idea of what conversions
are "promotion" and which ones are "demotion" (subject to loss of data
and/or can fail), so it can do the promotion first

Task-number: QTBUG-42254
Change-Id: I9fa4496bbbf0f8719ff8456cc24247290beac608
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-11-20 05:46:40 +01:00
Thiago Macieira
8153386397 Enhance precision of the FP conversion to strings in QVariant
This now guarantees that doing a round-trip from an FP number to string
and back to number results in the same number. This change is required
because DBL_DIG and FLT_DIG don't have the meaning that we were
expecting them to, here: they mean the minimum number of digits of
precision in decimal (i.e., changing the last decimal will always cause
the FP number to change). We need the maximum number: there is one
change in the last decimal place that causes the FP number to change.

IEEE 754 single-precision has 24 binary digits and double precision has
53 binary digits in their mantissa. To convert that to decimal, multiply
by the number of decimal digits a binary digit represents (log2(10) =
0.3), then add one for the rounding and one more digit for the actual
precision we want. That is, for floats we now ask for 9 digits and for
double, 17 decimal digits.

Task-number: QTBUG-42574
Change-Id: Ic78beb60a218f75322f832d33d63fd84e7a65b65
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-11-20 05:46:18 +01:00
Tor Arne Vestbø
8ed994f7ac iOS: Make sure QStandardPaths::displayName() is defined
The file qstandardpaths_ios.mm doesn't have an implementation for
this function, only (the wrongly named) qstandardpaths_mac.cpp
does. There's no Foundation API to get the directory name, so
we fall back to the hard-coded strings like all other platforms.

Change-Id: I6dcfeb6a0e5860dd0d4e9a0cd334b2c2181a0004
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2014-11-19 13:59:59 +01:00
Nico Vertriest
19a920c460 Doc: correct autolink issues corelib/mimetype
Task-number: QTBUG-40362
Change-Id: I852151fdbbe0cbc7ba88066984fc7bf83547b215
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-19 13:01:54 +01:00
Nico Vertriest
52ea96db06 Doc: Added brief statement to group definition
Groups: richtext and sharing.
Task-number: QTBUG-42682
Change-Id: I46bd7e5bba0f665519ee4f3c033b971f0836e314
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-19 13:00:44 +01:00
Nico Vertriest
a1d61e70ca Doc: added NoGesture to GestureState enum
Task-number: QTBUG-39988
Change-Id: I5481dfec75c90267a3a9be0d212df7384016e69d
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-19 11:58:00 +01:00
hjk
72155f4eb4 Make QSysInfo enum types available cross-platform
This makes the WinVersion and MacVersion enums accessible in platform
indepedent code to avoid the need to use #ifdef Q_OS_* chains in
user code, leading to fewer platform-dependent code paths and better
maintainability.

To indicate "this is not a Windows based OS" a enum value
QSysInfo::WV_None (with value 0x0000) in QSysInfo::WinVersion
is introduced. This keeps the WV_*_based masks usable.

To indicate "this is not a Darwin based OS" a enum values
QSysInfo::MV_None (with value 0xffff) in QSysInfo::MacVersion
is introduced. 0x0000 might have been preferable for (not so
important "consitency" with QSysInfo::WV_None), but is already
taken by QSysInfo::MV_Unknown with a different meaning.

Change-Id: Ib395e0efba58558f31f4e0806f7333165aa90aa5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-19 11:05:29 +01:00
Jędrzej Nowacki
164a3017e6 Remove unused private api
Change-Id: Iffe5a33b8a1f134d722371a9e92ba9c9d13c51f8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-19 10:16:20 +01:00
Thiago Macieira
9990e47f04 Fix build
Caused by qstringlist.h no longer including qdatastream.h.

Change-Id: I4dee5565ebaa1c8593633a6ad27f142e4424c5c9
Reviewed-by: David Faure <david.faure@kdab.com>
2014-11-18 22:11:19 +01:00
Friedemann Kleint
6f66205bac Add Windows-specific notation for WebDAV to QUrl.
Convert a Windows-specific WebDAV specification
"//host@SSL/path" into URL's with scheme set to
"webdavs" and back to local file (Windows only).

Task-number: QTBUG-42346
Change-Id: I12663243848ea7b2d3f208743e837e9de14a93eb
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-17 21:47:29 +01:00
Friedemann Kleint
34cab65e8d Add debug output for QPlatformSurfaceEvent.
[ChangeLog][QtGui][QPlatformSurfaceEvent] Added event class
QPlatformSurfaceEvent, which is sent to QWindow and QOffscreenSurface
when native surface is created or about to be destroyed.

Task-number: QTBUG-42476
Task-number: QTBUG-42483
Change-Id: If62e2c2a1f2a94fd310bbf7cf22b94c70125ba7a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-11-17 21:47:20 +01:00
Laszlo Agocs
41f8d1f393 Fix wrong qversionnumber header name in tools.pri
Change-Id: Ie571ca0dc1720bcd04e492697e93f866b1877a5b
Reviewed-by: Keith Gardner <kreios4004@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-17 20:04:11 +01:00
Laszlo Agocs
24d06c8c3c Fix missing docs for QByteArrayList
The public is needed for qdoc which sees class, not struct.

Task-number: QTBUG-42689
Change-Id: I28298b5fd13c6841838634a440bb2f726ddbe7be
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-11-17 14:53:00 +01:00
Sean Harmer
c5ecabb70c Send events when platform surfaces are created/about to be destroyed
These synchronously delivered events allow applications to correctly
and conveniently handle native platform surfaces being destroyed. This
is particularly useful when doing rendering on a non-gui thread as it
allows to shutdown rendering before the native surface gets destroyed
from under us.

Task-number: QTBUG-42476
Task-number: QTBUG-42483
Change-Id: I63f41bbdb32f281d0f3b8ec2537eb2b0361f3bb3
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-11-17 10:38:22 +01:00
Jędrzej Nowacki
3d575d4845 Reduce code bloat, by cleaning up QMetaTypeFunctionHelper
Create and Delete wrappers are not necessary, because they can be
easily simulated with Construct and Destruct. This change removes
redundant function wrappers and a bit of over-optimized code. Gain is
quite big:

Before:
   text    data     bss     dec     hex filename
5366008   47460   14904 5428372  52d494 libQt5Core.so.5.5.0
 505578    7060    2124  514762   7daca libQt5DBus.so.5.5.0
5591079  134656    6728 5732463  57786f libQt5Gui.so.5.5.0
1398785   31676    2576 1433037  15ddcd libQt5Network.so.5.5.0
6642431  220952    2536 6865919  68c3ff libQt5Widgets.so.5.5.0

After:
   text    data     bss     dec     hex filename
5342559   47460   14904 5404923  5278fb libQt5Core.so.5.5.0
 496025    7068    2124  505217   7b581 libQt5DBus.so.5.5.0
5579291  134272    6728 5720291  5748e3 libQt5Gui.so.5.5.0
1389461   31676    2576 1423713  15b961 libQt5Network.so.5.5.0
6637139  220952    2536 6860627  68af53 libQt5Widgets.so.5.5.0

Cost of the change, is moved to CPU while calling QMetaType create()
and destroy(), these two functions became a bit slower. The cost should
not be visible, because they call operator new anyway.

Change-Id: I34fd410343377d9c29925675d7da8172bfda9ce6
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-11-17 10:18:43 +01:00
Olivier Goffart
78e0e72eb5 Let QMetaType know which types are Q_GADGET
This is required so we can take a QVariant and detect that it contains a
Q_GADGET and then use method like QMetaType::metaObject and QMetaProperty::write
with the QVariant::data

Change-Id: I3603692e4e84426e10bf59949e3def3ea4947bec
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-11-16 13:37:58 +01:00
Nico Vertriest
f44eb5c57f Doc: Solved link and autolink errs qnamespace.qdoc
Task-number: QTBUG-40362
Change-Id: I81166dc3a54427e2d2d81f640162f6c338947849
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-15 14:45:07 +01:00
Nico Vertriest
c8751b3d84 Doc: Corrected brief statement for overview page
Task-number: QTBUG-42682
Change-Id: I28afbb8b09d5568f3fae29fdfc5a3d15376b72de
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-14 19:03:22 +01:00
Thiago Macieira
adf1b30934 Make QVersionNumber private
We're not ready.

[ChangeLog][EDITORIAL] Remove all mentions of QVersionNumber.

Change-Id: I03ad95992982eb3177f982c1eeddb6a6bc29336c
Reviewed-by: Keith Gardner <kreios4004@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-13 20:04:44 +01:00
Nico Vertriest
74ae86a660 Doc: corrected autolink issue json
Task-number: QTBUG-40362
Change-Id: I851670eea6af80b0bb463f00b147d7a6ef289046
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-11-13 20:03:56 +01:00
Giuseppe D'Angelo
eb05bda4f2 QJsonArray::(const_)iterator: add the typedef for the pointer type
Mandatory as per the standard iterator requirements, was causing
compilation errors in the STL algorithms.

Task-number: QTBUG-41628
Change-Id: Iee12a3b822383f63c07e270244fd0e145a486b95
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-13 20:02:23 +01:00
David Faure
efbc538587 qwindowsmime.cpp: support dropping multiple mail attachments
Only the data for the first file could be reached with the mimetype
application/x-qt-windows-mime;value="FileContents"

To get the data for the other files, setting the lindex field of
the FORMATETC struct is necessary. Provide support for that by
appending ;index=N to the mimetype string.

The Windows API provides no generic way to find out how many of these
are available (the app has to find out by looking into the FILEGROUPDESCRIPTORW
structure, for this particular use case), so these additional mimetypes
are not listed in QMimeData::formats(). However this patch extends
the documentation to mention the feature.

[ChangeLog][Platform Specific Changes][Windows][QMimeData] Add support
for handling dropping of multiple mail attachments, adding ;index=N to
the mimetype string application/x-qt-windows-mime;value="FileContents"

Task-number: QTBUG-17373
Change-Id: I031e477d2357b4e5135d2dcd3e3cf991025715a5
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-13 19:21:06 +01:00
David Faure
4c1ea8f72c QIdentityProxyModel: add missing default value, compared to base class.
Change-Id: I8e3ff4923834c87a0a8d289e5445346a87542a80
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-13 19:20:49 +01:00
Oswald Buddenhagen
0d02a06517 Merge remote-tracking branch 'origin/5.4' into 5.4.0
Change-Id: I85e3dfa62f217b76447276dd7cce6b9eac3a144e
2014-11-10 11:45:49 +01:00
Oswald Buddenhagen
d7a5dc0cfd Merge remote-tracking branch 'origin/5.3' into 5.4.0
Conflicts:
	src/plugins/platforms/xcb/qxcbwindow.cpp

Change-Id: Iad9ef6bf7d6111efba8232a7d9b46bb9974912f5
2014-11-10 11:39:35 +01:00
Thiago Macieira
5d99beb14e Place the Qt plugin metadata in a PE-COFF section with MinGW too
Commit ec360d7ad9 made it work for ELF
platforms, Apple platforms and for MSVC, but we apparently forgot it for
MinGW. This patch corrects that mistake.

We won't have the PE-COFF section parser until 5.5, but this will at
least making Qt 5.4-built plugins work on the faster case.

Change-Id: I51b06837dc321eaa4724c9598293cf85570f67fc
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-11-08 11:14:01 +01:00
Matt Fischer
82c2118cba Improve QElapsedTimer resolution on QNX
The standard POSIX clock functions are present on QNX, but only
return timing information with millisecond accuracy.  To get
accuracy beyond that, platform-specific functions must be used.

Change-Id: I54a0550f1865dbea3c60a86ecd8ad99df3fe42b4
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-11-07 22:59:43 +01:00
Andrew Knight
3d70925ee5 direct2d: Use simple event posting to avoid event queue lock up
In rare cases, the Windows event loop can be spinning inside the inner
loop and the message hook is never called. This can be triggered on the
Direct2D platform by opening 32+ window handles.

The issue can be worked around by using the same approach Windows CE uses:
don't rely on the message hook to inform the event loop that the post
message has been delivered. Instead, uninstall the hook and let it be
called directly by the event loop.

Task-number: QTBUG-42428
Change-Id: I10280126dd50729bc260aa5f7029549e2e061c01
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2014-11-07 14:54:08 +01:00
Nico Vertriest
9c8943a862 Doc: updated documentation QString::toDouble
Task-number: QTBUG-35543
Change-Id: I60d5cc253e6d6a24e9b031758e16a547a9a07443
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-11-06 12:10:54 +01:00
Christian Strømme
df106921b2 Android: Fix for build issue on x86
In the toolchain for x86 the va_list type is defined as char *, which
in itself isn't strange, but it was somewhat unexpected as it differs
from the arm toolchains. Either way we should not make assumption about
the va_list type as there is no guarantee it won't cause conflicts when
overloading. This fix simply renames the private overloads.

Change-Id: I7808619d0fa3ca63b75796308cfdff6aa41a7fd0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-06 12:10:12 +01:00
hjk
d3f3e1218c Add a inline QVector::append(const QVector &) overload
This is present in QList already and its lack is a nuisance when
switching from QList based code to QVector (which makes sense e.g.
if the item size exceeds sizeof(void*))

Also, albeit operator+=() and operator<<() exist, some people
simply prefer functions with real function names.

[ChangeLog][QtCore][QVector] Added QVector::append(const QVector &) overload

Change-Id: I9aae8223b086765625f2f3071fab5da0780f8a43
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-11-06 11:33:52 +01:00
David Faure
1031ad8761 QAbstractProxyModel: add missing default value, compared to base class.
Change-Id: I1077fde359afc057f4587902d27d64cbffab1ef5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-11-06 07:48:50 +01:00
Kai Koehne
54d4fb4f50 Fix QString::sprintf documentation
QString::sprintf does actually support all length modifiers, including
%lld. The format string is also parsed as UTF-8.

What's worthwile to mention, though, is that %lc and %ls is at odds
with the standard, since wchar_t isn't necessarily 16 bits wide.

Change-Id: I30cd22ec5b42035824dd98e3cdcc79d7adcc953a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-05 10:46:01 +01:00
Aki Koskinen
8545821bf8 Fix incorrect documentation from QTranslator::load
Task-number: QTBUG-27506
Change-Id: I1b2d4ed2242efd52258c7f587c2121f9dde18a0d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-05 08:43:04 +01:00
Thiago Macieira
ffcad3244f Define the Intel compiler and Microsoft C++ versions in the Q_CC_ macros
This is for completeness, since we've done the same for Q_CC_GNU and
Q_CC_CLANG. We won't really use the macros like this because both
__INTEL_COMPILER and _MSC_VER are readily usable.

Change-Id: I669c60166fa4839d43f84f339e6896321d62817f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-05 07:30:45 +01:00
Thiago Macieira
729541f7ca Store the GCC version number in Q_CC_GNU
The sequence of (__GNUC__ * 100 + __GNUC_MINOR__) was used in quite a
few places. Simplify it to make the code more readable.

This follows the change done for Clang, which was quite necessary since
Apple's version of Clang has different build numbers.

Change-Id: I886271a5a5f21ae59485ecf8d140527723345a46
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-11-05 07:30:40 +01:00
Tor Arne Vestbø
85a7138114 Define Q_CC_CLANG to be the version of upstream Clang that's in use
We map the Apple Clang versions to upstream, so that we have one
define to compare against.

Fixes build break on iOS due to qbasicatomic.h not defining
QT_BASIC_ATOMIC_HAS_CONSTRUCTORS on Apple Clang versions, which
is needed after 1e9db9f5e1

Change-Id: I17493c0187c20abc5d22e71944d62bfd16afbad2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-05 07:30:32 +01:00
Jonathan Liu
51ddaabb81 QElapsedTimer/Unix: Improve accuracy for millisecond values
Task-number: QTBUG-42365
Change-Id: Iee390bc0014e32b3bc5ef144ea9e1c677ab66278
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-04 22:50:45 +01:00
Tor Arne Vestbø
0d67926117 Use __aarch64__ instead of __arm64__ to detect AArch64
The latter name was used by Apple in their internal AArch64 LLVM backend,
but has since been merged into LLVM upstream and renamed to AArch64.

https://github.com/llvm-mirror/llvm/commit/29f94c72014eaa5d0d3b920686e68

Change-Id: I319f42f07c95dfbcd121134fbe6e554e2d36453d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-04 10:06:14 +01:00
Kai Koehne
e8f1b99170 Don't delete QLibrarySettings configuration in ~QCoreApplication
Do not clear the QLibrarySettings configuration information already
in ~QCoreApplication (via qAddPostRoutine). This fixes issues where
multiple QCoreApplication objects are created over time (in plugins).

Task-number: QTBUG-34290
Change-Id: Ib5c58f825619ede484492e057e08d73b2b4c6101
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-11-04 09:00:23 +01:00
Giuseppe D'Angelo
eab4bd5cee Fix a fatal Clang warning on Linux
Two fromstrerror_helper overloads are defined, to manage the fact that
strerror_r returns an int or a char* depending on the system. The problem
is that then only one overload used (again, depending on the actual
stderror_r return type), leading to one of the two overload to be unused
and thus triggering the unused function warning.

kernel/qsystemerror.cpp:64:27: error: unused function 'fromstrerror_helper' [-Werror,-Wunused-function]
    static inline QString fromstrerror_helper(int, const QByteArray &buf)

Change-Id: I6a1c8e1a4b7d14068b682db26002ff68ad36167c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-11-03 19:13:54 +01:00
Christian Strømme
7a3a3a5694 Android: Add runOnUiThread() function
Enables QRunnables to be run on the UI thread. For now this function
is only intended for internal consumption.

Change-Id: I5e2abb06104219a9dd55b3308113056e4da5fa07
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2014-11-03 18:24:56 +01:00
Nico Vertriest
9571e0b6cd Doc: corrected autolink issue animation
Task-number: QTBUG-40362
Change-Id: If89a8ae6aeecd4060a34f987baaf55c12439e7ea
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2014-11-03 16:54:56 +01:00
Olivier Goffart
3ad7742b28 Fix QMetaType::metaObjectForType for QtGui and QtWidgets types
Follow the same convention as other functions using the QMetaTypeSwitcher

It was not a problem since none of the built-ins type in QtWidgets
or QtGui were pointer and could not have a QMetaObject. But since
we want to register the metaobject for Q_GADGET, it would fail compilation
as types like QFont are not defined in QtCore.

Change-Id: I6307bf6f25439ed48355ef7ecfa60575de318a25
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-11-03 10:55:13 +01:00
Thiago Macieira
294c914eb6 Add rvalue-ref qualified {QString,QByteArray}::{simplified,trimmed}
Of the const overloads that return a QString or a QByteArray, this is
one that gains the most benefit. It happens often in constructs like:

    QByteArray s = x.readLine().trimmed();

After this change, 41 out of 103 calls to trimmed become rvalue in Qt
and 272 out of 441 in Qt Creator. For simplified, the numbers are 27 out
of 69 in Qt and 10 out of 19 in Qt Creator.

Other candidates are left, right, and mid, but there are exactly zero
uses of left, right and mid on an xvalue QString or QByteArray in Qt.

I'm being lazy and using qstring_compat.cpp to store the QByteArray
compat methods.

Change-Id: I4e410fc1adc4c761bb07cc3d43b348a65befa9f6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-11-02 20:51:57 +01:00
Thiago Macieira
ebef2ad136 Make the empty Q_ASSERT still check its argument for validity
With the side-effect that variables and functions in the argument are
now "used". This means we don't need to #ifndef functions only used in
assertions: the compiler will eliminate them by dead code elimination.
Due to the mandatory short-circuiting of the condition, no functions
will ever be called and this expands to no more code than before.

On the negative side, because we won't get warnings for unused variables
initialized outside the Q_ASSERT, non-inlineable calls will not be
elminated by dead code elimination, so they will remain in release code
without warnings.

Because of the expanded code now in Q_ASSERT, the Intel compiler's
optimizer gets thrown: it complains that the non-void function is
failing to return anything, so I had to add two return statements.

Change-Id: I1bb79c9637a2771ef1ec093f901b8d2443788bd6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-11-01 00:30:37 +01:00
Thiago Macieira
1e9db9f5e1 Enable C++11 atomics with Clang
I don't know why it was an #if 0. The __has_feature has been there for a
while. But, just to be sure, we check the presence of the header too.

Change-Id: I36e34c9e8fd4ce55c98966d2fad246b77eb16597
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-31 22:21:15 +01:00
Thiago Macieira
1b961e8b5d Fix compilation of <atomic> with ICC and libc++
The libc++ header does this:

 #if !__has_feature(cxx_atomic)
 #error <atomic> is not implemented

So we can't enable the feature until the compiler reports true for that
test.

Change-Id: I96f1c7eea8b93d93bd721fe5a85fa987339d091f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-31 22:20:53 +01:00
Olivier Goffart
08b1afc8f4 Mark QMetaMethod and related constructor as constepxr
qtdelcarative's qquickaccessibleattached.cpp contains now some static
instance of QMetaMethod.  Marking the constructor as constexpr,
let GCC to remove call to the constructor at load time.

Change-Id: Ic5ab7db0d06caa08f15d65d3bb5f22a34a111fee
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-10-31 14:14:27 +01:00
Jędrzej Nowacki
f0b7abf2ef Lower QVariant::userType call count
We know that type id can't be changed, let pass this information to the
compiler.

Change-Id: I105b460417288b84250a954571c247608976f8f7
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2014-10-31 13:39:33 +01:00
Allan Sandfeld Jensen
7245599a8c Handle mounts under /run
We shouldn't excluded all volumes under /run since some distos will
mount filesystems there. Instead we should exclude all filesystems with
the type "tmpfs" that /run has, and rpc_pipefs that is mounted below
/run. Tmpfs" is excluded for all UNIX systems since the BSDs have
a similarly named filesystem.

Change-Id: I03fdac515c0bfb1b824b2e3eae1022dd699c0998
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-31 13:26:27 +01:00
Kent Hansen
0678d7c43c Add QMetaType::type(QByteArray) function
QMetaType::type(const char *) requires that the string argument is
0-terminated. This new overload makes it possible to query the type
of a string with an explicit length.

In particular, QByteArrays constructed by QByteArray::fromRawData(),
for example from a substring of a normalized method signature (the
"int" part of "mySlot(int"), can now be queried without making a copy
of the string.

Also, Qt5 meta-objects represent type names as QByteArray literals,
which can be fed directly to this new QMetaType::type() overload (no
need to call strlen).

Change-Id: I60d35aa6bdc0f77e0997f98b0e30e12fd3d5e100
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-31 12:17:57 +01:00
David Faure
3de0f442b5 QIdentityProxyModel: remove slow bounds-checking, for more performance
If we're called out of bounds, sourceModel()->index() will take care of
returning an invalid model index anyway. So calling rowCount+columnCount
every time index() is called can be avoided. These calls can be particularly
slow when sitting on top of a stack of proxymodels. And index() itself is called
very often, i.e. when a proxymodel on top of us is used by a delegate
which calls data() for many different roles.

Change-Id: I45ad6249ea6c6c719a28d25a03b6e5003f4e49ee
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-10-31 10:38:23 +01:00
Olivier Goffart
6700fb0bf0 Use Q_DECL_RELAXED_CONSTEXPR in QFlags
Change-Id: I91073f4bb71e554402fc13cbd0e9ba5b5b95bce0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-31 09:54:15 +01:00
Thiago Macieira
c28045b118 Fix warnings about size conversion in QList
Because difference_type is 64-bit on 64-bit systems, there's a
downconversion warning from MSVC and possibly other compilers when it
gets passed to functions taking simply int.

Task-number: QTBUG-41092
Change-Id: I46a710810f4a57b8b84c4933f419a1f1fdf6bb5a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-31 03:57:30 +01:00
Thiago Macieira
d0ed6dc146 Report the system error on why chmod(2) failed in XDG_RUNTIME_DIR
This is a very rare occurrence: if the user is the owner of the
directory, the user can chmod(2), and we already checked that the user
is the owner. However, chmod(2) can still fail on read-only fs and on
hardened systems.

Task-number: QTBUG-41735
Change-Id: I8f8bac763bf5a6e575ed59dac55bd265e5b66271
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-10-31 03:57:19 +01:00
Thiago Macieira
fc2fcacfcc Don't always chmod the XDG_RUNTIME_DIR
Since the current user is the owner of the dir, we'll get 0x7700 as
permissions, not just 0x700. With the wrong check, we were always doing
an unnecessary chmod.

Task-number: QTBUG-41735
Change-Id: Ib1fc258fef4bf526baa9c71201f9b78d36f5454f
Reviewed-by: David Faure <david.faure@kdab.com>
2014-10-31 03:57:02 +01:00
Thiago Macieira
85da1625e4 Attempt to make QFile I/O 64-bit safe
Use qint64 wherever possible. The linear buffer is never requested to
allocate that much memory (always limited), but at least we ensure we're
not dropping bits where we shouldn't.

Windows's POSIX compatibility layer is never largefile enabled, so it is
always necessary to chunk large reads and writes. On Unix, this will
be rare, unless someone passed -no-largefile to configure, for some
weird reason.

Unfortunately, this is not testable, unless we can allocate a buffer
with 4 GB or more in size. The test for this would be to open a file we
know to be small, then try to read 4 GB + 1 byte. If everything works
correctly, we'll read the full file; if there was a truncation, we'd
read one byte.

Change-Id: If3ee511bf1de17e0123c85bbcaa463b9972746ce
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-31 03:56:11 +01:00
Olivier Goffart
8c77a7f77a Make Q_INVOKABLE work on Q_GADGET
Methods can be invoked with QMetaMethod::invokeOnGadget

Change-Id: Id734868bb530b02587daf0f62bce01798ade2ac2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-30 13:29:15 +01:00
Olivier Goffart
d9e8571f4d Be able to read and write properties to Q_GADGET
Change-Id: Ic12f465d31459748ca08ac8c457fd61a5773e2e2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-30 13:29:10 +01:00
Allan Sandfeld Jensen
ae981f224d Add conversion between QVariantHash and QJsonObject
Adds automatic conversion from QVariants with a QVariantHash to
QJsonValue and explicit methods for conversion between QVariantHash
and QJsonObject.

[ChangeLog][QtCore][QJsonObject] Added conversion to and from QVariantHash

Change-Id: I140ef881463acabaab2648e28209487d8ad18e0d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-30 12:14:42 +01:00
Kai Koehne
51ec20d93e Load default codecs even if custom QTextCodec has been registered
Task-number: QTBUG-40378
Change-Id: I33f1e92127972e1346993aa4e07731bf4b697667
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-30 10:52:11 +01:00