Commit Graph

6123 Commits (78b8f7803bb662e3e73daa796d61baae84cd6ea9)

Author SHA1 Message Date
Peter Kümmel ab8cc8387f Add qOverload to select overloaded functions
[ChangeLog][QtCore][Global] qOverload added to select
overloaded functions.

Change-Id: I7c9b1b054e6631eca0b5594db59e1202ef552c33
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-15 12:33:24 +00:00
Sérgio Martins 6139fbeb5f Introduce QHash::equal_range()
Similar to QMap::equal_range().
Will allow to easily fix inefficient code such as:

    foreach (auto value, hash.values(key)) { ... }

[ChangeLog][QtCore][QHash] Added QHash::equal_range()

Change-Id: I6e19e25de632e897ad83d3141d9d07f0313f7200
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-14 06:43:52 +00:00
Marc Mutz 8ce34c2e81 QRect(F): add transposed()
I didn't add a transpose(), because r = r.transposed() is
perfectly capable of filling that role, and just as
efficient. Existing API mistakes are no excuse to create
more of them.

[ChangeLog][QtCore][QRect/QRectF] Added transposed().

Change-Id: Ic38721e9028496fc9b50f4d4cef2e7a60532eed8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-02-13 18:18:48 +00:00
Andre Somers 0df5c366e5 Use QFlags::setFlag where prudent in qtbase
QFlags::setFlag is most useful to replace explicit constructs like

if (condition) {
   someFlags |= TheConditionFlag;
} else {
   someFlags &= ~TheConditionFlag;
}

with

someFlags.setFlag(TheConditionFlag, condition);

Change-Id: Ie4586681c83e0af812d5bbf14965aad51941a960
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-12 19:32:05 +00:00
Paolo Angelelli c5d4972577 Fix for deferredDelete() bug when calling the glib loop directly
This patch makes sure that all events posted using Qt on top of the
GLib event loop have the loopLevel counter incremented.
This is done since Qt depends on the fact that all deleteLater() calls
are issued within the scope of some signal handler (in other words,
triggered by the chain sendEvent() -> notifyInternal2()).
There is a side effect though: in the conditions affected by this
patch, that is deleteLater()s issued within a glib event handler for
example, manually calling processEvents() or sendPostedEvents() with
or without the QEvent::DeferredDelete flag has the same effect, and
deferred deleted events are always processed.
While this is not a currently working feature which the patch breaks,
this side effect seems to be difficult to avoid without separating
sendPostedEvents() and processEvents() into a public and a private
method, in order to detect when they are manually called.
Such change could perhaps be done for Qt6.
An autotest for QTBUG-36434 is also included.
Autotesting for QTBUG-32859 seems to be more challenging in this
respect, due to its dependency on GLib.

Task-number: QTBUG-18434
Task-number: QTBUG-32859
Task-number: QTBUG-36434
Change-Id: Ib89175aa27c9e38bca68ae254d182b2cd21cf7e9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-12 19:06:11 +00:00
Marc Mutz 6ffb0bdf60 QXmlStream*: make nothrow move assignable and -constructible
Unfortunately, we cannot rely on Q_DECL_EQ_DEFAULT, so I
needed to code the special member functions by hand.

The 'reserved' field is pretty useless, since the
existing ctors didn't initialize it, but just in
case someone finds a way how to store information
in there, deal with the field in the usual way:
set to nullptr in the move ctor and swap in the
move assignment operator.

Also schedule all this for removal again come Qt 6
(then without the reserved field).

This amends a83be780ae,
which only dealt with QXmlStreamAttribute.

Change-Id: I6898e5d0423c9519f7c07d23e2c6d2700508151e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-02-12 18:29:50 +00:00
Anton Kudryavtsev 94f5ed11a1 QStringListModel: optimize container usage.
- don't call QList::removeAt() in loop. Just call erase() with two iterators.
- don't re-evaluate QList::count() because of result is already cached.

Change-Id: I4b3596df4a388f1d39b523c27decad612044cec6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-12 14:15:10 +00:00
J-P Nurmi 5be4f95d95 Fix QFileSelectorPrivate::addStatics()
It must clear the previously cached sharedData->staticSelectors,
or else QFileSelectorPrivate::updateSelectors() does nothing and
the newly added static selectors end up being ignored.

Change-Id: If6997664629199be9f00de64c5dd01de2bf0a044
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
2016-02-12 14:10:29 +00:00
Liang Qi 321658d288 Merge "Merge remote-tracking branch 'origin/5.6' into dev" into refs/staging/dev 2016-02-11 12:57:10 +00:00
Andreas Holzammer 7e85e7ced7 Add initial clang-cl support to Qt
This adds the functionality to build Qt with clang under Windows against
the Microsoft Visual Studio 2015 runtime.

In order to replicate this, a Clang 3.8 build with Visual Studio 2015
Update 1 is needed.

Adds compiler detection to Qt to distinguish correctly the clang compiler
and Windows with Visual Studio.

Clang has some built-in numeric functions, there is no need to use the
Microsoft versions, which also conflict here.

Task-number: QTBUG-50804
Change-Id: Ia4b267a298310ac7d73edf473b12792991249d8a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-02-11 12:54:06 +00:00
Liang Qi d456f87ece Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	src/corelib/io/qfilesystemwatcher_win.cpp
	src/corelib/plugin/plugin.pri
	src/plugins/platforms/cocoa/qcocoaaccessibility.mm
	tests/auto/corelib/tools/qlocale/tst_qlocale.cpp

Change-Id: Id6824631252609a75eff8b68792e4d10095c8fc1
2016-02-11 08:25:04 +01:00
Sérgio Martins 4fc070a419 QLocale: Use QVariant::toStringList() instead of template instantiation
Avoids (binary) code duplication.

Change-Id: I57a23e2f6e151963163d8073b309b3562f8e8684
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-10 20:36:05 +00:00
Sérgio Martins 2c9f6b1a18 Fix usage of QMutexLocker, destroy it only at end of scope
Change-Id: I87f2c433c987b5f7b4680639cae51cdf6ce9ddc6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-02-10 20:35:52 +00:00
Marc Mutz 3e63a58a96 Mark QHash/QMap as relocatable and movable-come-Qt 6
They were forgotten from the movable containers for Qt 5.0.
Make sure we don't forget for 6.0, either.

Until then, mark with new Q_RELOCATABLE_TYPE.

Change-Id: I279a96c02a718a1432040303bb0d001739f59a17
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-09 18:19:55 +00:00
Edward Welbourne 22c262d2d7 Readability fix for MS isRelative, isAbsolute.
The layout and phrasing of these two QFileSystemEntry methods was such
as to obscure what they actually test.  (Overlong lines, extraneous
parentheses, spurious conditions and poor line-breaking.)  Rewrote to
make both clearer; and, in particular, to make it obvious that they
are *not* mutually complementary.  Behavior is not changed.

Change-Id: If748e48d41fe3a76bab3a1f840c7b7ca62442f8f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-09 16:12:12 +00:00
Anton Kudryavtsev e2e190fd69 QNonContiguousByteDevice: mark atEnd(), size(), pos() methods as const.
These methods do not modify the object.

Change-Id: I9ab9a17fa24f5a608943ec263913df14218214a8
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-08 19:36:38 +00:00
Andre Somers 21861e6fd1 Add setFlag method to QFlags
This makes implementing class methods that enable or disable a feature
stored in a QFlags<> member easier.

[ChangeLog][QtCore][QFlags] Added setFlag method to set or unset a flag

Task-number: QTBUG-27100
Change-Id: Ic602abbbf3100df78f21b7918573744d1bbd18c1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-08 10:25:09 +00:00
Marc Mutz 74adb1900a QEasingCurve: add some strategic std::move()
Move instead of copy the bezierCurves and tcbPoints
containers when updating 'config' in setType_helper().

In Qt 5, we still have the unsharable container
issue which causes code for deep copies to be
emitted for most copy operations.

A move is always just re-seating a pointer.

Change-Id: Icff7415dd0ce44df0602273ff42370b26d831b85
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-08 10:21:55 +00:00
Sérgio Martins 01859cc121 Reduce allocations by using reserve()
Change-Id: If34fa53402985f6b3c5e7217bce4a1177af835b6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-07 16:50:26 +00:00
Marc Mutz 15238e91eb QList: don't lose reserved capacity in op+= with empty LHS
It is very rare that operator+= is used as operator=.
Most of the time, one op+= is followed by more op+=s.

The old code checked whether *this was empty, and simply
shallow-copied the RHS into the LHS in that case. This
has one severe drawback: a reserve() on the LHS is lost.

Fix by not checking for isEmpty() but for d == &shared_null.

Change-Id: Iff28e496cf24cc93f248449d74012c4f3a87253e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-06 20:06:55 +00:00
Lars Knoll b64a94516b Get rid of the QRegExp dependency in qxmlutils.
This makes the XML parser 100% independent of having regexp
support enabled.

Change-Id: I73004b0fb71e8086618995c71a985a86c292df3d
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 17:34:00 +00:00
Lada Trimasova f669ea0d54 Link with -ldl option only when it is supported
-ldl option was used unconditionally while libdl is not supported
when libc is static.
Add build test to configure which checks if libdl is supported.
QMAKE_LIBS_DYNLOAD in "src/corelib/plugin/plugin.pri" is now used only
if libdl is available.
qt_linux_find_symbol_sys from qlibrary_unix is now used only if
QT_NO_DYNAMIC_LIBRARY is not defined.

Initially reported by Buildroot autobuilder here:
http://autobuild.buildroot.net/results/a85/a85a1839a45fb6102e53131ecc8f6dadf92bcdc2

Change-Id: I0397472456efdc4f3ab5f24d01253bee8048a9d1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-05 16:29:09 +00:00
Gabriel Pannwitz ce29de5c33 Doc: correct minor typo
Change-Id: If19900309bbef8b65d3dbda4f7795113bfe0678f
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
2016-02-05 13:33:52 +00:00
Nico Vertriest 918b8d4e9e Doc: corrected minor link issues
Task-number: QTBUG-43810
Change-Id: I98eafe0c7ed55f309640e8495c83ffcef355aa08
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-02-05 13:01:16 +00:00
Louai Al-Khanji 58bd015ddf QProcess: Remove dead code
These functions appear to have been dead code always - even in the
earliest Qt4 releases!

Change-Id: Ie2a458092b45113782284cf8ed3aa11a018b60d4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 06:59:05 +00:00
Louai Al-Khanji 3b73ee0fb5 Remove qt_safe_select and qt_select_msecs
Change-Id: If46228dc750554b65acd23e48410ec541fc33714
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 06:58:42 +00:00
Louai Al-Khanji bb747268ed Clean up new poll code slightly
Change-Id: I046126ff69a77a50e79efb1b6ebb0fffef67ac8e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-04 22:34:38 +00:00
BogDan Vatra 4bf741066d Android: Add runOnAndroidThreadSync
This is a convenient function which waits (timoutMS) for the runnable to be executed.

Change-Id: I2c0f262d3795c29961e8182b7ffc35a2c6f8a1f6
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2016-02-04 17:53:40 +00:00
Edward Welbourne f432d64019 Make findAmPm actually return the relevant enum, instead of int.
The enum needed a name to make that possible, of course.
The one overt int return -1 needed to be made explicitly Neither, too.

Change-Id: I3930bf03a7ee5e1619a1c74f9ca54faf6a6c5b2f
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-02-04 09:14:02 +00:00
Edward Welbourne a054349be3 Removed redundant and distracting test from conditional.
If argumentTypes is NULL then it is indeed not equal to the address of
a local static variable, so there is no need to follow the NULL-check
with a check that it's not equal to that non-NULL address.

Change-Id: I62362db747c0620b2195f7997368f026f535d57c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-02-04 10:37:33 +00:00
Tobias Koenig 20a2ba6d74 Add qstrntod as qstrtod overload, which takes a len parameter
Add qstrntod as an overload for qstrtod, which takes a len parameter,
so one can pass character arrays which are not null-terminated.

Change-Id: I8c1c6c3627043c1d6ec6eb712efa3abc9e5e9e00
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2016-02-03 22:19:06 +00:00
Sérgio Martins 5b75a16e8f Don't use Q_GLOBAL_STATIC for trivial type QLocaleData
Change-Id: I9435295a753d7dabea202fde876786d876a295fa
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-03 15:53:11 +00:00
Louai Al-Khanji 24642df23c QProcess: Use poll instead of select on Unix platforms
Change-Id: I3386ef228ce95209f6f221e18293d991b24a7b2e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-03 10:25:21 +00:00
Edward Welbourne 72b57a5dfa Disintermediate QDateTimeParser::SectionNode operations.
The name, format and maxChange of a Section depend only on the
section, not on the details of the currently parsed text it matches;
so we don't need the parser object's list of all sections to work them
out.  Move these methods to the SectionNode and act directly on that
instead of going via the section list.

Make the name take a Section enum instead of an int.
Likewise, make stateName take a State enum instead of an int.

Change-Id: Ie340d042ab95aec517013c4dcc30901d40305c78
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-02-02 16:28:48 +00:00
Edward Welbourne a965d505a0 Make interleaving of QDateTimeParser::Section values evident.
The actual section members grew up to the internal value, leading to
interleaving of subsequently-added values.  Change existing enum
values to make this go away (class is private, so no BC constraint
forbids this).

Change-Id: If266b557817eae19d375519bf38268f0f2a0d372
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-02-02 16:28:40 +00:00
Edward Welbourne 2564de7b1e Deconfuse some heavy use of the preprocessor.
One #if...#endif started in one function's body and ended in
another's, which is worth remarking on in comments at both ends.

A later #if...#else... opened blocks in both halves, that were closed
just after their #endif, leading to simplistic brace-matching failure;
so move that closing brace to inside both halves, so each half is
brace-balanced and the function, as a whole, brace-balances simply.

Commented on each #endif that was distant from its #if.

Change-Id: I74d97b6dc4b291ec05053d299077a61cecf41ca1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-02 16:28:24 +00:00
Edward Welbourne 3d64f898d1 Correct usage of Apple-related #if-ery.
As requested by sanity-bot.

Change-Id: I8f6793a26f5cf600d4e6225ca219496cfbb25799
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-02 16:28:18 +00:00
Liang Qi d3e6e732c7 Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	config.tests/unix/compile.test
	src/plugins/platforms/cocoa/qcocoahelpers.mm
	src/tools/qlalr/cppgenerator.cpp

Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
2016-02-02 15:57:44 +01:00
Alex Trotsenko 57ca755d2e QRingBuffer: add append(const char *, qint64) function
This allows to remove a code duplication in several places.

Change-Id: I49f56e951682dbd2968923654a12cba5199a2502
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-01 20:45:21 +00:00
Alex Trotsenko 9fb5ff56c3 Micro-optimize QIODevice::write()
Remove redundant checks.

Change-Id: I766fc08d0d7e48bf7dc2371309f6644c37c3b68b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-01 16:39:35 +00:00
Jędrzej Nowacki ad77422e82 Fix memory leak if QMetaType::create is called for an unknown type
The memory should be allocated only if we operates on a valid type,
It is a regression introduced by 3d575d4845

Change-Id: Ia31bccd5b41fe090c29df1aeaa69efb706cd25bb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-01 07:35:16 +00:00
Tor Arne Vestbø 164c631d80 Move Cocoa key code helper functions to QtCore
Can be useful for e.g. testlib for handling native key events.

Change-Id: I6560c6e28799e25eb3bdcaa0f2ca3c17644c62db
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-29 16:32:21 +00:00
Kai Koehne 7c797b4905 Bump copyright year to 2016
Bump copyright year in tool output and user visible strings to 2016.

Task-number: QTBUG-50578
Change-Id: I2f4aa9089c6672726f554cba7e6009b425d27683
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-01-29 13:30:04 +00:00
Liang Qi 270cc073b7 Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6 2016-01-29 12:55:06 +00:00
Joerg Bornemann 0ec1e13234 Do not build QWindowsPipeWriter on Windows CE
QWindowsPipeWriter is not used in the Windows CE port.

Change-Id: I068dd2408bb21a7e2a86886e0692b1636016ff6a
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
2016-01-29 10:55:04 +00:00
Edward Welbourne 81514c19c1 Revert "Correct floordiv() to cope with implementation-defined division."
This reverts commit cd9625fc3c.
The ambiguity in division, with negative operands, goes away in C++11
(where division is defined to truncate, hence round towards zero), so
we no longer need to be robust against it in 5.7.  Added suitable
commentary to make clear that we are relying on that.

Change-Id: Id2c0d421bad4bcec87de9cc9519cd00df2456930
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 10:35:17 +00:00
Edward Welbourne c459ea84c4 Set correct Section type for QDateTimeParser::last
Setting it to FirstSection was obviously wrong and left LastSection
nowhere set ...

Change-Id: I26260182e9d986b41b5f3a5d6df94540a5fc116a
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:35:09 +00:00
Edward Welbourne 2736d7921d Don't let a good day cause date-time parser to forget a conflict.
Setting conflicts to isSet & DaySection cleared it if we hadn't seen
the day stipulated, even if there had been a conflict (e.g. over year)
before we hit the day-of-week that didn't match the (unset, so
defaulting to) 1st of the month.  Explicitly test for conflict and
only set conflicts (to true) if there is a conflict.  Added regression
test.

Change-Id: I7363eb66a8bb808d341738d14969039834f50db8
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:35:03 +00:00
Edward Welbourne ee6463ffd3 Refactor one QDateTimeParser::sectionText() via the other.
Avoid duplicated code thereby.

Change-Id: Icb4e95887e92e8fe8f172329cc383f9e868874a4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:34:57 +00:00
Edward Welbourne fbe7000ba3 Make initializers into declare-and-initialize.
Eliminates separate declaration line, makes unambiguous that all are
initialized.

Change-Id: Ib419a385b38f98070c06428da246d4580b0a0dbc
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:34:48 +00:00