Commit Graph

4954 Commits

Author SHA1 Message Date
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
Albert Astals Cid
a860500f8e Adapt the names in the documentation to the names used in the header
This is needed since the names of the header are the ones you have to use in the QML signal handlers to access the variables

Change-Id: I507e2ccc05a1fd2c5efd0bf4bef92ed33a186d95
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-30 09:52:04 +01:00
Samuel Gaist
6ee73677b2 Correct QStandardPaths::DataLocation return value for iOS
Currently DataLocation returns the same value as DocumentsLocation which
doesn't fit the purpose for what should go in this directory. This patch
aims to correct that. On a side note, it will also be more inline with
OS X current behavior

[ChangeLog][QtCore][iOS] Fixed path to QStandardPaths::DataLocation.
Until now DataLocation was pointing to the Document directory. With this
patch, it will return the more accurate Library/Application Support.
Application making use of DataLocation should move these data to the new
location. This can be done using the path provided by DocumentLocation as
source path.

Task-number: QTBUG-42276
Change-Id: I35415643cf8cc7a60528f9b0fb5028ada5deace0
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-10-30 09:38:23 +01:00
Kai Koehne
c99b93e55c QTextCodec: Fix source code indentation
Change-Id: Ia9a79e659e028eb6173a7adef12d4973f78c32e9
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
2014-10-29 16:09:34 +01:00
Oswald Buddenhagen
4b491334cf Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-10-29 10:55:33 +01:00
Bjoern Breitmeyer
7ebc151bcf Fix X86 Wince builds.
Windows CE does not have all _BitScanReverse
intrinsics, so disable those for Q_OS_WINCE.

Change-Id: I34a3c02c6ffdfff2a209b2c9c1b80bef4566ee39
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-29 09:26:37 +01:00
Lars Knoll
38c2e3d104 Properly detect UTF-8 BOM markers in ini files
If we detect a utf8 BOM mark at the beginning of the .ini
file, skip the marker and set the iniCodec to utf8.

Task-number: QTBUG-23381
Change-Id: I1b37fc4f1638a48e4f3ee71ab165e2989bc592f1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-10-29 08:58:31 +01:00
Oswald Buddenhagen
8613b64f53 Merge remote-tracking branch 'origin/5.3' into 5.4
Change-Id: I224e44a9df314b9a99d33148b6cf400fcbc9de8e
2014-10-28 18:21:45 +01:00
Olivier Goffart
4ed39bed4e moc: Move the property access code to the qt_static_metacall
That way we will be able to access property of objects that are not QObject
(Q_GADGET)

Change-Id: Ib8ef6e52fc621e0b0d6530f82b1aa205f1ed5fd9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-28 16:16:35 +01:00
Volker Krause
fe7c5feb0d Add missing newline in fallback debug output.
This is hit in case of a recursion in the message handler, and message
hasn't gone through qMessageFormatString at this point and thus lacks
the newline.

Change-Id: Ia098b6ccbcc1aff22a4695865f39143ba0152d9c
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-28 14:04:34 +01:00
Nico Vertriest
070b183dbc Doc: removed reference to obsolete classes
QSocket and QSocketDevice are not part of Qt 5.4

Task-number: QTBUG-40362
Change-Id: Ieffd992c203af94cac0eb21a630b6ac98754f358
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-10-28 13:08:29 +01:00
Friedemann Kleint
1abcc1cd3d Hardcode UTF-8 for "unicode" in QTextCodec::codecForHtml().
ICU would return a utf-16 (endian dependent) codec for unicode
which is very rarely what people want. In most cases, unicode is
encoded in utf8 these days, so return a utf8 codec for it.

Task-number: QTBUG-41998
Change-Id: I51ee758d520702b263a8b2011787eb1f3455ed96
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-28 12:17:13 +01:00
Olivier Goffart
d49e7acc2b moc: Have a staticMetaCall in the Q_GADGET metaobject
This provides a way to invoke Q_INVOKABLE method

Change-Id: I301cec2a21c2889fb9dde0b1eb6e92d0bd561bd7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-28 10:12:52 +01:00
Nico Vertriest
cc1435952d Doc: link to MIBenum
Task-number: QTBUG- 40362
Change-Id: I0261117d8aef8383ef77887a201d61ed0bd0ba52
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-10-27 14:26:36 +01:00
Nico Vertriest
366faaafff Doc: Corrected identifiers for QByteArray::toBase64 in snippet
Task-number: QTBUG-40944
Change-Id: I31fc23739b3e145b3668b10fdf4465c19d2fdb01
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-10-27 14:26:24 +01:00
Nico Vertriest
10800a3b4c Doc: Corrected autolink errors qtbase
Task-number: QTBUG-40362
Change-Id: I054a4713bdd83280be51697689e0c3c3409b9601
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-10-27 14:26:02 +01:00
Frederik Gladhorn
2eb26c1709 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/gui/text/qfontdatabase.cpp

Change-Id: I6ac1f55faa22b8e7b591386fb67f0333d0ea443d
2014-10-27 13:00:36 +01:00
Christian Kandeler
bd94a46f61 QSettings: Fix handling of long long ints with CFPreferences back-end.
The CFNumberGetValue() function does not work as advertised: For some
(but not all) CFNumbers containing a long long value outside the range
of int, it returns true when asked to convert to an int, so the wrong
value is extracted from the CFNumber.
As a workaround, use CFNumberGetType() to find out whether the value
is actually an int.

Task-number: QTBUG-42017
Change-Id: Ib95395491d0db61d2bdc0f058a6a2f6be05da432
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2014-10-27 09:52:30 +01:00
Daniel Molkentin
631a55ccf4 QStorageInfo: include qt_windows.h instead of Windows.h
This fixes a compilation issue with X-MinGW builds and
is more appropriate here.

Change-Id: Id97e387c6e22a2c09d2f4dda35ce1bed2831fffe
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-27 09:03:05 +01:00
Kai Koehne
5bfe794aaa Remove trailing '\n' in qFormatLogMessage output
Do not automatically add a \n to all messages formatted by
qFormatLogMessage. Some backends require a final newline,
some don't, so it's best to only append it where it's actually needed.

The returned string will be null if the pattern is empty. This allows
to differentiate between the case that the pattern just didn't apply
(empty line is printed), and the case that qSetMessagePattern(QString())
have been called (nothing is printed).

Change-Id: I17fde997a4074f58f82de6dea129948155c322d6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-10-27 08:59:02 +01:00
Rainer Keller
1ffe1a9a7c Allow hostname from lock files to be empty
The common format for lock files is to only contain the PID.
(See http://www.pathname.com/fhs/2.2/fhs-5.9.html)
Qt includes some extra information but we can not expect this
information to be present. Otherwise lock files created by other
(non-Qt) processes are not handled correctly.

Change-Id: Ib9be3c9f07eb8e87193f56d96f5559bbdd5180b8
Reviewed-by: David Faure <david.faure@kdab.com>
2014-10-27 08:47:55 +01:00
Alexander Volkov
3903aee91b Fix doc about the list of supported codecs
Replace "Apple Roman" by "Macintosh" which is registered by IANA:
http://tools.ietf.org/html/rfc1345.
Replace unsupported "GB18030-0" by "GB18030".
Remove "JIS X 0201" and "JIS X 0208" as they are supported as parts of
other Japanese encodings but not directly.
Add "HP-ROMAN8" which is supported by both Qt and ICU.
Also clean the codecs test.

Change-Id: Iaf8e8ff1900d3f92ea0e0df75c60fe1534de23ac
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-24 22:23:58 +02:00
Alexander Volkov
7645b64d89 Add support for "Apple Roman" encoding
Substitute this encoding by "macintosh" when Qt is built with ICU.
It is for compatibility with Qt 4.x.

Change-Id: I70c51cba7d473ac81e25862736cb71a2f6894055
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-24 22:23:50 +02:00
Olivier Goffart
eaa4496efa Add Q_DECL_RELAXED_CONSTEXPR macro
Expands to constexpr if C++14 relaxed constepxr are supported by the compiler

[ChangeLog][QtCore] Added Q_DECL_RELAXED_CONSTEXPR for the corresponding C++14 feature

Change-Id: Id6b56b3a17da2ff838c80795e528e1247dc13f63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-24 22:22:09 +02:00
Jędrzej Nowacki
8c4deff51c Fix QVariant associative container conversion from built-in types.
Task-number: QTBUG-41403
Change-Id: I9dab0f9450cac11678eb6d20abd2dd08e86e0900
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2014-10-24 16:27:42 +02:00
Olivier Goffart
6e1718987e QObject: use QDebugStateSaver in the QDebug operator<<
Also remove the ending space if the object is null

Change-Id: Ieb2bb903de35b4e339c812cd07555b5d108d118b
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-24 16:17:58 +02:00
Leena Miettinen
88e7a4f661 Doc: QFileDevice and QFile::setPermissions do not manipulate ACLs
Task-number: QTBUG-41271
Change-Id: Id97add8a6fdb7ce59020e833f6dc11744c9aaa7e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-10-24 12:00:37 +02:00
Laszlo Agocs
feaa1e6373 Add missing since info to ShareOpenGLContexts docs
Change-Id: I5e42cfd520ab65f7dbeecf152861f977011fe6f9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-23 18:11:03 +02:00
Laszlo Agocs
0b0746355c Fix software OpenGL DLL name in the enum docs
Change-Id: I85c664914a391002afbda0fe203c90397b0bb5c2
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-10-23 18:10:59 +02:00
Kai Koehne
15377a6927 Doc: Fix description of QTranslator::translate()
If the translations are incomplete it's actually not ensured that a
translation without disambiguation is used: lrelease will drop the
disambiguation from one of the identical messages if there is no message
which actually has no disambiguation ...

Task-number: QTBUG-30471
Change-Id: I1787f5c401a7afb964acbf8a8609ba328c8140a9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-10-23 17:12:54 +02:00
Marc Mutz
c399e4b7ea Q{Sequential,Associative}Iterable: fix const_iterator assignment
The code didn't properly clean up the current state before
assigning the new state.

Change-Id: If56cf43bace976203ff186759b2a81705b2b22d2
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-10-23 08:28:00 +02:00
Jeff Tranter
4c144d006d Fix spelling errors in method names in QStorageInfo.
The methods retreiveVolumeInfo() and retreiveDiskFreeSpace() should be
retrieveVolumeInfo() and retrieveDiskFreeSpace().

Task-number: QTBUG-42068
Change-Id: I86137fbff26c42c8cc8bad366a4733118d6ca292
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-10-22 14:29:12 +02:00
Mitch Curtis
d0402bed6f Improve QLoggingCategory's detailed description.
Change-Id: I40527890fb752c3a1c0f8d8a8fa4ca2b19e4fc08
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2014-10-22 08:32:40 +02:00
Laszlo Agocs
f4144034af Fix badly laid out docs for AA_UseHighDpiPixmaps
Leaving an empty line causes the last sentence go outside the table,
causing a break before the subsequent enum values.

Change-Id: I7477010a259497f8063997d2122a954d1799c1ee
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2014-10-22 07:43:12 +02:00
Frederik Gladhorn
3361fcbc28 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: If7e51514ed6832750e3ad967e4d322ccf920d2bb
2014-10-20 19:12:25 +02:00
Tor Arne Vestbø
ae89aa330f logging: Fix qCleanupFuncinfo to not mangle Objective-C message names
Change-Id: I823566ba72668c611d225aa92c4d09a53cabe8fc
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-10-20 13:34:37 +02:00
hjk
0c71cbea54 Add a hint on application window positioning with QProcess::start
Task-number: QTBUG-30999
Change-Id: I65c80917c9bad067bb7d8e69e2431dd1c4886b08
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2014-10-20 12:47:25 +02:00
Leena Miettinen
9dc246c5cc Doc: removed unnecessary text
Added some commas.

Task-number: QTBUG-41928
Change-Id: I52ad75f895f41b109f0496863930ffaa1650447c
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Nico Vertriest <nico.vertriest@digia.com>
2014-10-20 11:45:12 +02:00
Marc Mutz
9dcc38b566 QEasingCurve: fix mem leak in operator>>
The code ignored that the QEasingCurve passed in to op>>
might already have a QEasingCurveFunction set, overwriting
it with a new pointer without deleting the old.

Change-Id: Ic14cf7e4b97c7c8c7edb64cde08fbf22c07ac8f3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-19 13:18:18 +02:00
Marc Mutz
ef1027b824 qdatetime.h: include correct header
QExplicitlySharedDataPointer is defined in qshareddata.h, not qsharedpointer.h.

Change-Id: If81f6615681068a8e8c38817044ea3a0433c42ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-19 13:17:24 +02:00
Gabriel de Dietrich
59ebcdc540 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-10-18 13:24:33 +02:00
Mitch Curtis
06e706bdbb Fix QAbstractListModel's detailed description.
Change-Id: I3f3e6b9d4e021620505c03458e78856326dcd859
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-17 22:14:00 +02:00
Christian Strømme
3d94a564f4 Android: Improve cache logic in findClass()
This change adds guards to ensure that we only do a class
look-up once when calling QJNIEnvironmentPrivate::findClass().
IF someone calls findClass() with an environment that does not contain
a "valid" class loader, we should fallback to loadClass(),
but only once.

Change-Id: If5fc82956db889f3269bb33c98a16c49cae55def
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
2014-10-17 14:58:23 +02:00
Topi Reinio
cf8f369f85 Move Qt Core examples under a common subdirectory
Qt Core examples were scattered into several subdirectories under
qtbase/examples. This caused an issue with the example manifest
file generated by QDoc; it expects to find all examples under a
common directory in order to produde correct paths to the example
.pro files. Qt Creator will not find the examples without a valid
manifest file.

This change moves the examples and edits the documentation files
accordingly.

Task-number: QTBUG-41963
Change-Id: I51d86782e0ba21c5c9bae5f15401ec774abe5cf8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2014-10-17 14:57:13 +02:00
Marc Mutz
45485d9eb4 Fix undefined behavior in QLoggingRegistry::defaultCategoryFilter()
Report by asan:

  READ of size 2 at 0x00000041dd40 thread T0
    #0 0x2af097b84da6 in QLoggingRegistry::defaultCategoryFilter(QLoggingCategory*) (lib/libQt5Core.so.5+0x566da6)
    #1 0x2af097b8387b in QLoggingRegistry::registerCategory(QLoggingCategory*, QtMsgType) (lib/libQt5Core.so.5+0x56587b)
    #2 0x4067f7 in tst_QLogging::QLoggingCategory_categoryName() tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp:238
    <snip>

  0x00000041dd41 is located 0 bytes to the right of global variable '*.LC115' defined in 'tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp' (0x41dd40) of size 1
    '*.LC115' is ascii string ''

At face value, memcmp("", "qt", 2) should not return 0, but since
the code invokes undefined behavior, the compiler can do whatever
it wants, including returning 0 here, further proving the fact
that there are *no* benign cases of undefined behavior.

Change-Id: I0c38622c47d1dcea450ea549370be1673b47b18d
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-17 14:56:07 +02:00
Kai Koehne
16df1ad322 Export QFSFileEngine symbols
Although it's private API the symbols are used e.g. in the
Qt Installer Framework.

Change-Id: I557d3b86dbf87cb1b712bae09c3e8fecf6f15e67
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-10-17 14:55:59 +02:00
Friedemann Kleint
0368b24a7f QSettings: Prevent assert when passing empty keys.
[ChangeLog][Important behavior changes][QSettings]
QSettings::value() now returns an invalid QVariant
when passing an empty key. The code path ran into
an assert, which was only noticeable in debug
builds.

Task-number: QTBUG-41812
Change-Id: I5cc32be3aa267a132e9d6639ecd6cb0bbafc15b0
Reviewed-by: Stéphane Fabry, Cutesoft <stephane.fabry@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-17 14:55:45 +02:00
Ulf Hermann
880986be23 Check for integer overflows in places where qAllocMore is used
Task-number: QTBUG-41230
Change-Id: I5e932c2540c0bd67f13fab3ae20975d459f82c08
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-17 10:09:18 +02:00
Ulf Hermann
9eb2b25300 Don't dereference pointers on QArrayData deallocation
If the allocation fails the pointer will be 0. That is OK for free(),
but we shouldn't try to check for static data then.

Change-Id: I0a8860c9e04833e3be79f7a8a39bdaffeb488f35
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-17 10:00:42 +02:00
Ulf Hermann
9d44645eae Do Q_CHECK_PTR on all results of QArrayData::allocate()
QArrayData::allocate() uses malloc() which can return 0. We need to
check for that when using it inside other containers. The containers
might otherwise return a seemingly valid result from some allocating
operation which is actually corrupt.

Task-number: QTBUG-41231
Change-Id: I16cc6035e4f495f519bd38bf29cee080ee0637f6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-17 09:58:56 +02:00
Friedemann Kleint
a4ac4b3263 QWindowsGuiEventDispatcher: Register timers in constructor.
Port change 3716a76704273fdbe5ad4ec978438daeda606c26 (Qt 4)
to Qt 5. Enforce the creation of the internal window
and registering of timers in the event dispatcher constructor
for GUI applications instead of delaying it to processEvents()
is called. Move the call to virtual wakeUp() out of
createInternalHwnd().

Task-number: QTBUG-40881
Change-Id: I82a4748897da140a39feff882c75ad5ac6155148
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-10-15 15:16:38 +02:00
Oswald Buddenhagen
29ad07d0a4 Avoid sleeping 100ms in QProcessPrivate::drainOutputPipes()
There is no point in waiting 100 milliseconds after each iteration, as
all data that we may possibly read will be already in the pipe. We only
need to give the notifier thread a chance to inform us, which is best
achieved with a yield.

Task-number: QTBUG-41282
Change-Id: Id654b688246508494a5549c11900f9ad2957f192
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-10-15 13:44:17 +02:00
Frederik Gladhorn
b55a688b61 Merge remote-tracking branch 'origin/5.3' into 5.4
Change-Id: Ic01820f2390e419a5b286643e7351e85ae032473
2014-10-14 13:54:50 +02:00
Eskil Abrahamsen Blomfeldt
4bf0660ae4 Make QStringRef::right() consistent with QString::right()
The implementation was inconsistent with QString::right(),
and did not return the N rightmost characters but actually did
the same as QString::mid(N) (returning the rightmost size - N
characters.)

Since this function is fairly recent (Qt 5.2), is documented to
behave the same as QString::right(), and since these APIs are
meant to be interchangeable, this needs to be fixed, even though
it changes behavior.

[ChangeLog][Important Behavior Changes] Changed QStringRef::right()
to be consistent with QString::right(). The function now returns
the N right-most characters, like the documentation already claimed.

Change-Id: I2d1cd6d958dfa9354aa09f16bd27b1ed209c2d11
Task-number: QTBUG-41858
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-10-14 11:32:55 +02:00
Alex Trotsenko
350ab22885 Make QRingBuffer::ungetChar() not leave empty array in buffer list
Change-Id: Ic692693132f0c316ad068cad5423ca8fd32bd40d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2014-10-13 18:06:33 +02:00
Giuseppe D'Angelo
26fbeecfa5 Initialize QFileSystemMetaData::size_ data member
There's a code path which reads that member before it got anything
assigned to it, triggering undefined behavior.

The code path goes as follows:

1. an instance is created in QFSFileEngineIterator::advance
2. the instance is passed to QFileSystemIterator::advance, which fills in
   only some members (not size_)
3. the instance is passed to QFileInfoPrivate which does a deep copy,
   reading an uninitialized size_

Change-Id: I6835ee701a83b63ca4bad6235feeb6a23566fcd3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-13 13:53:17 +02:00
David Faure
955c9562bd QSettings: undo unintentional change of config dir on non-XDG platforms.
c99dfd8f63 only meant to be able to switch to the test mode of
QStandardPaths, not to move the default dir on OS X, iOS, BB10 and Android.
So this commit restores it to the previous behavior, to avoid migration issues.
The use of XDG_CONFIG_HOME, defaulting to ~/.config, on OS X, is even documented
in the current QSettings documentation, even though these paths are non-standard
on OS X (granted, the use of ini-style config files isn't either).

Task-number: QTBUG-41461
Change-Id: I5eb610ff7ccbdaf6f955ef7f8f7c2658cbecbb86
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-12 10:37:45 +02:00
Kai Koehne
01f5ba006e Fix patching of installation date
Marking qt_eval_expiry_date alone as volatile apparently didn't stop
the compiler from optimizing away the calculation of the expiry date.

Task-number: QTBUG-41612
Change-Id: Ia51fb83f03250346952a76c8a1a641096b4ff9e7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Kalle Viironen <kalle.viironen@digia.com>
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-10-10 14:29:52 +02:00
Eskil Abrahamsen Blomfeldt
aa00020578 Android: Support QSysInfo::productVersion()
Gets the user-readable string for the current running Android
version.

Task-number: QTBUG-41764
Change-Id: Iefea4a4f5291bfddc99bbf901676ccd33fbc23d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2014-10-10 13:37:44 +02:00
Tomasz Olszak
8ddaf5c741 Gcc 4.5.* build fix.
Q_COMPILER_DEFAULT_MEMBERS and Q_COMPILER_DELETE_MEMBERS are now set
starting from gcc 4.6. Pre-4.6 compilers implement a non-final snapshot
of N2346, hence default and delete functions are supported only if they
are public. Starting from 4.6, GCC handles final version - the access
modifier is not relevant. Compiler error:

  qsharedpointer_impl.h:717:31: error:
  'QEnableSharedFromThis<T>::QEnableSharedFromThis()' declared with non-public access cannot be defaulted in the class body

Change-Id: If1d3d4696f91912a09ca72bd4aa1fb07f491a0cb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-10 13:20:30 +02:00
Frederik Gladhorn
881ceeff42 Merge remote-tracking branch 'origin/5.4' into dev
Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
2014-10-09 17:56:52 +02:00
Alessandro Portale
106487387d Removing a few unneeded "? true : false"
Change-Id: Ib13f0ddd65fe78f5559f343f2fc30756b1d3ef76
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-10-09 09:43:26 +02:00
Marc Mutz
e5f528fb0e Don't stream QStringLiterals into QDebug
Normal (C) string literals do just as well and use more than twice
less space in the DATA section.

Change-Id: Iafb0682a362c41dfd5b4d8b9137d88014d7992a2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:27 +02:00
Marc Mutz
a5b647804b QFactoryLoader: de-duplicate two QStringLiterals
When seemingly identical QStringLiterals are used in different
functions, due to the use of lambdas and scoping, they produce
different lambda types and thus duplicated QStringLiteral data.

Fix by moving the QStringLiterals into inline functions and
calling those instead.

Change-Id: Ifaa124ec74e201ccc63fd9afce042f8b2ff22b9e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:17 +02:00
Marc Mutz
1cc06b2e94 Don't use QStringLiteral in startsWith/endsWidth
For QLatin1String, startsWith/endsWith is overloaded, so comparing to
a latin-1 (C) string literal is efficient, since strlen() is
comparatively fast.

OTOH, QStringLiteral, when not using RVO, litters the code with
QString dtor calls, which are not inline. Worse, absent lambdas,
it even allocates memory.

So, just use QLatin1String instead.

Change-Id: I7eaf464c67b55116f970fe7f58a85f19ce4d254e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:11 +02:00
Marc Mutz
1a5c0b26d0 Don't use QStringLiteral in comparisons
For QLatin1String, operator== is overloaded, so comparing to a latin-1
(C) string literal is efficient, since strlen() is comparatively fast.

OTOH, QStringLiteral, when not using RVO, litters the code with
QString dtor calls, which are not inline. Worse, absent lambdas,
it even allocates memory.

So, just compare using QLatin1String instead.

Change-Id: I7af3bf3a67c55dae33ffaf9922d004fa168a3f9c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-09 09:42:00 +02:00
Thiago Macieira
50430a8392 Fix compilation of MIPS with Clang
Clang always sets __mips to 1, unlike GCC. To detect a higher MIPS arch,
we need to rely on the _MIPS_ARCH_MIPSxxx macros being defined -- or, in
this case, _MIPS_ARCH_MIPS1 not being defined.

Change-Id: Ib6846a6892a4c1e17e595a69305b7e46a5303ee7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Adrian Perez de Castro <aperez@igalia.com>
2014-10-07 22:30:21 +02:00
Jake Petroules
1cc079c29b Add Objective-C specific type converters to QDateTime
This patch adds the Objective-C NSDate/CDateRef converters to
QDateTime

[ChangeLog][QtCore][Objective-C] Added NSDate/CDateRef converters for
QDateTime

Task-number: QTBUG-37116
Change-Id: I937ea927083a2767b5b17f10a48bf453c9ff8b01
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-10-07 18:54:21 +02:00
Friedemann Kleint
a4aea7b578 MSVC: Restore 'public' accessibility of QVariant member functions.
The were made 'protected' 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.

Task-number: QTBUG-41810
Change-Id: I5ce4c7010673c06d5b75219c89c7ebd337bac6c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-07 14:33:40 +02:00
Oswald Buddenhagen
a1d66c9aee Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-10-07 13:31:20 +02:00
Nico Vertriest
ded6514de8 Doc: deletion plugin-howtos.qdoc
Document is moved to qtdoc/doc/src/howtos
Including snippet files.

Task-number: QTBUG-38412
Change-Id: Iba15689ad63e17c370c21c9ee5a1fff40c79fcec
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-10-07 13:26:28 +02:00
Alex Trotsenko
06632928af QIODevice: Improve read buffer use
Change buffer fill strategy to have more cached data for next read call.
This avoids unnecessarily many small reads from device implementation layer.

Change-Id: If1a039524afc03c02d2299babbfccef09f3f1cf0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-10-06 17:22:39 +02:00
Oswald Buddenhagen
f49d5b578c Merge remote-tracking branch 'origin/5.3' into 5.4
Change-Id: I132bb6cce68e9f8413200f7ee75586bd1cada38c
2014-10-06 11:59:47 +02:00
Topi Reinio
0edf68120b Doc: Clarify QBitArray::fill() documentation
Fix a minor mistake in the the function parameter documentation,
and add a code snippet.

Task-number: QTBUG-39782
Change-Id: Ia5d88a983ad683ae5bde9f332d51adc4afda77a8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-10-03 13:32:58 +02:00
Marc Mutz
c6752c5aa1 Prepare QVector::operator==() for sharing with QList::operator==()
...by implementing it via std::equal().

This might also enable STL implementations to choose a
hand-optimized version of the algorithm for C++ builtin types.

Change-Id: I1347a7f365b3d2947f19a81b95aa8d89b8ad303d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-03 13:31:38 +02:00
Marc Mutz
023e6bd937 Prepare QVector::contains() for sharing with QList::contains()
...by implementing it via std::find().

This might also enable STL implementations to choose a
hand-optimized version of the algorithm for C++ builtin types.

Change-Id: I86e94d63ff58332f2fa6eafb3c1baccd125a6f34
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-03 13:31:28 +02:00
hjk
7dd394a16c Add a macro to disable only some 8 bit/16 bit string conversions
This is an opt-in trade-off between type safety and user
code convenience.

QT_NO_CAST_FROM_ASCII is highly beneficial to avoid unintended
conversions from 8 bit data with potentially "unsuitable"
encodings to QString. However, it has the undesirable side-effect
to require user code to wrap character and string literals
in QLatin1Char(...) and QLatin1String(...) or use similar
construction, cluttering the code significantly.

This patch introduces a QT_RESTRICTED_CAST_FROM_ASCII macro
that works almost as QT_NO_CAST_FROM_ASCII, except that it
enables the QChar(char) constructor and adds an additional
QString(const char (&ch)[N]) constructor that matches
C++ string literals, but no arbitrary character pointers.
This avoids a significant share of the need to clutter the
user code by only a slight relaxation of the type-safety.

[ChangeLog][QtCore][QString] Added QT_RESTRICTED_CAST_FROM_ASCII
macro as less intrusive alternative to QT_NO_CAST_FROM_ASCII.

Change-Id: Iac72f1f90f81fbcae9bfb1fe68b0fec6ffb36c50
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-10-02 16:26:14 +02:00
Alex Blasche
9c464c3bf4 Update the signal and slots docs
This lifts the documentation into a more recent context. One might
argue that Qt is a little bit older too.

Change-Id: I3e85f21bbad1179136629c2025e3499481fc8334
Task-number: QTBUG-16809
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-10-02 12:03:26 +02:00
Marc Mutz
f17e0b5893 QList: iterate forward in contains()
After much head-scratching, we found no reason for the backwards iteration.
Indeed, forward iteration should be slightly faster than backwards, because
it operates in the direction in which cache-lines are filled, usually.

This is in preparation of using std algorithms instead of hand-written
loops. It avoids having to use std::reverse_iterator.

Change-Id: Id2388eab2339c24deb93095495d87056a9c57133
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-01 18:25:57 +02:00
Marc Mutz
db1db22818 QVector: iterate forward in operator==
After much head-scratching, we found no reason for the backwards iteration.
Indeed, forward iteration should be slightly faster than backwards, because
it operates in the direction in which cache-lines are filled, usually.

This is in preparation of using std algorithms instead of hand-written
loops. It avoids having to use std::reverse_iterator.

Change-Id: I180c52e0bb90e823216b77d3f49f2a3fd395567d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-01 18:25:52 +02:00
Marc Mutz
5e01d3f642 QList: iterate forward in count()/contains()
After much head-scratching, we found no reason for the backwards iteration.
Indeed, forward iteration should be slightly faster than backwards, because
it operates in the direction in which cache-lines are filled, usually.

This is in preparation of using std algorithms instead of hand-written
loops. It avoids having to use std::reverse_iterator.

Change-Id: Ib62cf0a6f2a33d186cb174b23b0d6bb2891b6c63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-01 18:25:47 +02:00
Marc Mutz
b1482795ee QList: iterate forward in operator==
After much head-scratching, we found no reason for the backwards iteration.
Indeed, forward iteration should be slightly faster than backwards, because
it operates in the direction in which cache-lines are filled, usually.

This is in preparation of using std algorithms instead of hand-written
loops. It avoids having to use std::reverse_iterator.

Change-Id: I31be6ad2b6d78ccce7e8a8f8f8b9e0af62f7471b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-01 18:25:41 +02:00
Kai Koehne
7ca54ce5d9 Avoid naming clashes with QStringLiteral local variable
MSVC 2013 complains about the use of 's' if a variable 's' is already
defined in the context:

error C2373: 's' : redefinition; different type modifiers
error C3493: 's' cannot be implicitly captured because no default capture
mode has been specified

This looks like a compiler bug. Anyhow, it's easy to avoid the clash in
most cases by using a more distinctive name ...

Task-number: QTBUG-41706
Change-Id: Iaff1b6d37897fa8cf9e4913effa0498f9fd7bb07
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-10-01 17:06:02 +02:00
Gabriel de Dietrich
8ee9774e67 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-10-01 16:21:12 +02:00
Kai Koehne
d78fb442d7 Logging: Disable tracking of debug source info for release builds
Tracking the file, line, function means the information has to be stored
in the binaries, enlarging the size. It also might be a surprise to some
commercial customers that their internal file & function names are
'leaked'. Therefore we enable it for debug builds only.

[ChangeLog][QtCore][Logging] File, line, function information are not
recorded anymore for logging statements in release builds. Set
QT_MESSAGELOGCONTEXT explicitly to enable recording in all configurations.

Change-Id: I454bdb42bcf5b5a8de6507f29f2a61109dca9b91
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-10-01 16:06:27 +02:00
Joerg Bornemann
377ef06aef Doc: fix misleading documentation of QProcess::set[Process]Environment
The example suggested that QProcess searches the PATH variable to find
the executable for the child process. That's not true. The environment
that's passed with setProcessEnvironment is just passed to the child
process. Removed the misleading example and fixed the function's
description.

Task-number: QTBUG-7321
Change-Id: I8ac4b6b02002eb0a99686f09bcf45f9bc677c8e2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2014-10-01 15:31:45 +02:00
Leonard Lee
f5f300ba82 Fix hangs on QFileSystemWatcher.
QFileSystemWatcher hangs at a mutex or semaphore when adding network
paths on OS X system.

There is an else block that does not increment the 'it' iterator
with ++it; inside the QFseventsFileSystemWatcherEngine::checkDir() call.

Change-Id: I6c250c7f3d25399c3a0a58ce864e9466320b166b
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2014-09-30 21:55:18 +02:00
Daniel Teske
ed3fc4ea47 QObject: Actually check unnormalized method signature
This was broken in f95181c7bb,
and has been broken in all released versions of Qt5.

Change-Id: Ia75ab602be4904cc6ab19471f909716538af8746
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-09-30 15:24:36 +02:00
Nico Vertriest
54853c5f66 Doc: Use title case in section1 titles
Using Python script title-cased.py

Task-number: QTBUG-41250
Change-Id: I00d3d7a0b30db7304a7904efd6d63abd9a7b493b
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-09-30 13:52:51 +02:00
Thiago Macieira
cc50651cce Update the detection of when to log to stderr
On Windows, the detection changes only by inserting the use of the
environment variable before the existing tests and removing the check on
stderr.

This commit adds logic similar to Windows's: if the application has a
controlling TTY, we'll use stderr. Otherwise, we'll use the system log.
This is technically a change in behavior: previously, we would always
use the system log, unless the environment variable told us not to.

In practice, the behavior doesn't really change: Android and BlackBerry
and systemd-spawned applications are launched with no controlling TTY,
so logging will go to their logging systems.

[ChangeLog][Important behavior changes][Logging (including qDebug and
qWarning)] Log output will now go to the system log (if support for it
was compiled into Qt) if the application has no controlling terminal or
console window. Set QT_LOGGING_TO_CONSOLE to 1 to force logging to go to
stderr.

Task-number: QTCREATORBUG-12564
Change-Id: I043c5c4f47c15f26d4f4a5cf43df466ea38cdbc7
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-29 17:42:25 +02:00
hjk
1e1f5833b1 Do not use Q_COMPILER_CLASS_ENUM for gcc 4.4
It breaks the compiler self-test:

tst_compiler.cpp:754: error: no matching function for call to ‘qCompare(tst_Compiler::cxx11_class_enum()::X&, tst_Compiler::cxx11_class_enum()::X, const char [2], const char [13], const char [17], int)’

We not should assume it is safe to use, see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37946.

Change-Id: I72c9c56e3e4f62bdfdfa133b6b0a2e610b5331c8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-09-29 15:14:04 +02:00
Oswald Buddenhagen
189dc655bb Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/tools/qbytearray.cpp
	src/gui/image/qimage.cpp
	src/gui/image/qppmhandler.cpp
	src/gui/kernel/qguiapplication.cpp
	src/gui/painting/qpaintengine_raster.cpp

Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
2014-09-29 14:08:49 +02:00
Gabriel de Dietrich
8ab25620d3 Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts:
	src/network/socket/qnativesocketengine_unix.cpp
	src/widgets/kernel/qwidget_qpa.cpp

Change-Id: I6f1aa320d5ca66cd92d601a95885aeaab0abb191
2014-09-29 13:38:11 +02:00
Thiago Macieira
fa91bb9a02 Don't check for EINTR after calling QT_READ / QT_WRITE
On Unix, those functions are already #define'd to qt_safe_read and
qt_safe_write, which do the necessary EINTR handling. On Windows, EINTR
cannot happen.

Change-Id: I50c46472c04bd90a0bac51c725cc86311ae905c8
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-09-28 01:28:52 +02:00
Thiago Macieira
0c32af08a6 Fix handling of IPv6 addresses in QUrl::fromUserInput
IPv6 addresses can start with ":", for which QDir::isAbsolute() would
always return true (QResourceFileEngine::isRelativePath() returns
constant false) and would trip the calculation for local files.

Similarly, IPv6 addresses can start with strings that look like Windows
drives: "a:", "b:", "c:", "d:", "e:" and "f:" (though not today, as
those address blocks are unassigned). Since a valid IPv6 address will
definitely require at least one more colon and Windows file names cannot
contain ':', there's no ambiguity: a valid IPv6 address is never a valid
file on Windows.

This resolves the ambiguity in favor of IPv6 for Unix filenames (which
can contain a colon) and in case of an URL containing scheme, relative
path and no authority ("dead:beef::" for example could have been parsed
as scheme() == "dead" and path() == "beef::").

Task-number: QTBUG-41089
Change-Id: Id9119af1acf8a75a786519af3b48b4ca3dbf3719
Reviewed-by: David Faure <david.faure@kdab.com>
2014-09-28 01:28:29 +02:00
Christian Strømme
afece6e496 Android: Add findClass() function to the QJNIEnvironmentPrivate class.
The static QJNIEnvironmentPrivate::findClass() function exposes the
cache and the class finding code in qjni.

Change-Id: I42043dc993cf9cace042faf763f2a647ba79d97f
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-09-26 23:45:00 +02:00
Sze Howe Koh
a72d585f9b Doc: Restructure "Signal & Slots" article
Put sections with similar content together:
- Put "A Small Example" next to "A Real Example".
- Put "Signals and Slots", "Signals", and "Slots" together. Altogether,
  these 3 sections contain lots of repeated content and should be
  consolidated in a future commit.

This patch only moves content around without adding, removing, or
modifying content.

Change-Id: Ic6bf6a8b51f4785a8bbe6d230c2934f2c952104d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-09-25 16:50:45 +02:00
Sze Howe Koh
f5d58c0442 Doc: Remove irrelevant sections from "Signals & Slots"
- This article is not the right place to describe the low-level
  mechanisms of moc and qmake, or to discuss QMetaObject features that
  are unrelated to signals and slots.
- Most users never need to run moc directly.
- The current content only mentions qmake for moc automation, but CMake,
  QBS, and the Visual Studio Add-In can also do that.

In light of the above 3 points, let's simply link to the "Meta-Object
System" article for those who are interested in the behind-the-scenes
details.

Most of the content deleted by this patch are already discussed in
detail in the articles "The Meta-Object System" and "Using the Meta-
Object Compiler (moc)" (the former links to the latter). The exception
is Snippet 5 -- this is deleted without replacement because
qobject_cast() is a much safer alternative to QMetaObject::inherits()
with static_cast(), so we should encourage the former.

Change-Id: I638c888cedfcdfb818747edeb806213ebd54dfb6
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-09-25 16:50:41 +02:00
Oliver Wolff
eedefa28bd Refactored qt_normalizePathSegments
There were several use cases that did not work with the old
implementation and it was not really readable.

Task-number: QTBUG-3472
Task-number: QTBUG-40067
Task-number: QTBUG-23892
Change-Id: I1e038792dc54cdc6f8d9bb59d80b11dd3c56fac6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-09-25 16:16:59 +02:00
Nico Vertriest
f1a8d7dc9b Doc: 2 minor corrections in corelib/plugin
Task-number: QTBUG-40362
Change-Id: I4fa4a69c13a60f8c7915b6c9659a4daaae4ecc1a
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-09-25 11:52:38 +02:00
Matti Paaso
974c210835 Update license headers and add new license files
- Renamed LICENSE.LGPL to LICENSE.LGPLv21
- Added LICENSE.LGPLv3
- Removed LICENSE.GPL

Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2
Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
2014-09-24 12:26:19 +02:00