Commit Graph

5332 Commits (5ab74ffca1733c679bc020e80984e864d1b2ef4c)

Author SHA1 Message Date
Konstantin Ritt 7946b83ace [QLocaleData] Extract defaultContent locales
This adds some locales missing in the common/main/ directory, namely:
  bss_CM, cch_NG, dv_MV, gaa_GH, gez_ET, ha_Arab_NG, iu_Cans_CA, kaj_NG,
  kcg_NG, kpe_LR, ku_Latn_TR, mi_NZ, ms_Arab_MY, mn_Mong_CN, nds_DE,
  ny_MW, oc_FR, sa_IN, sid_ET, tk_Latn_TM, trv_TW, tt_RU, ug_Arab_CN,
  wa_BE, wo_Latn_SN

See http://www.unicode.org/reports/tr35/tr35-info.html#Default_Content
for more info.

Change-Id: I6b3082d370a21da64fbd5e72ab6344e1d7a6a3c9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-27 16:40:13 +00:00
Konstantin Ritt f50841cc8b Re-generate Unicode data tables
Change-Id: I289537377f37c36f88de9662bbb7ad108bdc9383
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-27 16:40:10 +00:00
Konstantin Ritt dec451cf67 Update Unicode data up to v7.0
* Two newly adopted currency symbols:
  the Azerbaijan manat and the Russia ruble
* Pictographic symbols (including many emoji), geometric symbols,
  arrows, and ornaments originating from the Wingdings and Webdings sets
* Twenty-three new lesser-used and historic scripts
  extending support for written languages of North America, China, India,
  other Asian countries, and Africa
* Letters used in Teuthonista and other transcriptional systems,
  and a new notational set, Duployan

For more details, see http://www.unicode.org/versions/Unicode7.0.0/

The Properties struct's .*Diff members were narrowed down
to signed 15 bits and the unicodeVersion has been expanded to 8 bits.

[ChangeLog][QtCore] Unicode data updated to v.7.0

Change-Id: I93ab6f79fa3b05f61abc7279f1d046834c1c1a0b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-27 16:40:06 +00:00
Marc Mutz 1b109967c5 QUuid: add missing relational operators
QUuid has ==, !=, <, and >. Add <= and =>, too.

Change-Id: I11a0b8028be766e2d48dc7664d935df4d327b3d3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-04 06:40:27 +00:00
Marc Mutz 09c1bd2eb0 QUuid: add some noexcept
Change-Id: I43647e558a761ff6e7a275e30382919ba038f467
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-04 06:40:00 +00:00
Tor Arne Vestbø 013afc77f0 Add Qt::WindowFlag to signal that maximizing should cover full screen geometry
Normally when maximizing a window it will cover the available geometry
of the screen, as represented by QScreen::availableGeometry(), which
typically excludes status/menu bars and application launchers.

On some platforms it may still be possible to place windows in the areas
of the screen that are outside of the available geometry, but this will
result in the window being partially covered by (possibly) transparent
system UIs. The new flag allows the user to specify that when maximizing
the window it should try to cover as much as possible of the screen
geometry (in contrast to going full screen, which would typically
hide any system UIs).

For iOS this is a common use-case, as the status bar is transparent,
and the user-interface guidelines for iOS7 and up recommend taking
advantage of the full screen space, while keeping any user-interaction
elements still inside the available geometry of the screen.

Change-Id: I86d7fc937916d9cae245f7a3f9ae46abd92cdd29
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-03-27 10:24:17 +00:00
Marc Mutz 552d97ffcb QDateTime: remove unused parameter from localMSecsToEpochMSecs()
...a namespace-level static function. The ok parameter was never
set by any caller.

Change-Id: I668f78fe198f09fb0a9a52c10c8dea2fab070653
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-26 23:21:36 +00:00
Marc Mutz e9bd162b72 QDate: further optimize toString()
Factor the TextDate and ISODate legs into separate functions
and replace a chain of QString::arg() with QStringBuilder.

Saves 76B in text size.

More importantly, restores (N)RVO for these code paths.

Change-Id: I8b99bb672f5a4b5506d53487eca189d48b4025e9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-26 23:21:31 +00:00
Marc Mutz 2b3d3cabe1 QUuid: properly scope macros
Limit scope and undef after last use.

Change-Id: I94f0adb2b9fc3ec65dd7a3b5e6f03685bc226d3d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-03 19:44:08 +00:00
Marc Mutz 650de56c7f QUuid: implement op> in terms of op<
More maintainable, and less code.

Change-Id: Ia99e5deefe4c510fe870076a03ec243ba631a7a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-03 19:43:59 +00:00
Friedemann Kleint 06671a3cbd Windows: Use FORMAT_MESSAGE_IGNORE_INSERTS for qt_error_string().
This will cause FormatMessage() to return messages with placeholders
as well even though we do not pass the message parameters (for
example: "The operating system cannot run %1." for ERROR_INVALID_ORDINAL).

Task-number: QTBUG-43164
Change-Id: Ib95c1c0fabb543bbe4e8ab2bd8f244f73dff5fa4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-04-01 14:26:43 +00:00
Olivier Goffart 5322200076 Silence clang warnings in C++03 mode
C++03 forbid the use of local or unnamed type as template parameter.
But in C++11 that is allowed, and clang accept them even in C++03
mode, but with a warning.

The Warning happen for example with this code:

  enum { Foo = 3 };
  int x = 3 << Foo;

Then the compiler issues warnings:

metatype.h:1379:31: warning: template argument uses local type [-Wlocal-type-template-args]
        enum { Value = sizeof(qt_getEnumMetaObject(declval())) == sizeof(QMetaObject*) };
                              ^~~~~~~~~~~~~~~~~~~~
qdebug.h:269:42: note: in instantiation of template class 'QtPrivate::IsQEnumHelper<(anonymous enum)>' requested here
typename QtPrivate::QEnableIf<QtPrivate::IsQEnumHelper<T>::Value, QDebug>::Type operator<<(QDebug dbg, T value)

Normaly the compiler should not even try to instantiate the operator<<
with such types in C++03 mode.

Change-Id: I48c7d5d1836fd87986835fe15c7e0b1beb73c728
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-01 14:20:50 +00:00
Olivier Goffart 8cec5e9a34 Update a few doc regarding Q_FLAG
Change-Id: Ic26b3d64c9a5d5109bd8a0b359f063529d0181fc
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-04-01 14:20:28 +00:00
Andrew Knight 4a6ba203b5 winrt: Fix non-PCH build
This cpp file did not include its header.

Change-Id: Ib68f4a1470c1dc213add5e8825ef972c07ee57df
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-01 14:13:30 +00:00
Thiago Macieira 49f4458a18 Remove extra semi-colons: clang doesn't like it
qdebug.h:373:81: error: extra ';' outside of a function is a C++11 extension [-Werror,-Wc++11-extra-semi]

Change-Id: Iee8cbc07c4434ce9b560ffff13cb759805b64dfc
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-03-26 06:11:20 +00:00
Thiago Macieira e1c99e15b6 Update strtoll and strtoull from upstream FreeBSD
There appears to be at least one fix, related to sign- or zero-extension
in the call to isspace(). So it's a good idea to update again. This also
brings the behavior to match strtoll and strtoull on Linux, including
the fact that strtoull will parse negative numbers. For that reason,
qstrtoll and qstrtoull are now wrappers that try and keep the behavior
that we used to have.

This update also changes the code from a 4-clause BSD license (bad) to a
3-clause BSD license (good).

Change-Id: I73b01b02ebd1551bf924599d52284ad25cc1def0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-26 06:11:14 +00:00
Kai Koehne cbf28577ef Force length of prefix path to be calculated at runtime
Prevent compilers from calculating strlen at compile time
by using a volatile pointer. This corrupted paths if the
installation path is patched for the binary SDK installer.

Task-number: QTBUG-45307
Change-Id: I624b0409e8b27299475a88eb1cbf03ffef9589c6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-04-01 11:32:28 +00:00
Liang Qi 26a9783d55 Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5 2015-04-01 11:27:03 +00:00
Friedemann Kleint f53621af05 Update documentation snippets related to QDebug.
Use QDebugStateSaver to store the formatting state and fix the return
statement to return the unmodified stream.

Change-Id: I476d13c5487a89f263dcc11334fc67c85d9433f5
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-04-01 04:28:08 +00:00
Friedemann Kleint 7c2360b762 Split out some inline qdebug formatting helpers to qdebug_p.h.
Extract helpers to be able to format classes without type names
and use those for formatting QEvents to reduce clutter.

For example:

QWidgetWindow/"MainWindowClassWindow" QMouseEvent(QEvent::Type(MouseMove), buttons=QFlags<Qt::MouseButtons>(LeftButton), localPos=QPointF(50,116), screenPos=QPointF(948,652))
QWidget/"qt_scrollarea_viewport" QMouseEvent(QEvent::Type(MouseMove), buttons=QFlags<Qt::MouseButtons>(LeftButton), localPos=QPointF(45,32), screenPos=QPointF(948,652))

becomes

QWidgetWindow/"MainWindowClassWindow" QMouseEvent(MouseMove, LeftButton, localPos=50,116, screenPos=948,652)
QWidget/"qt_scrollarea_viewport" QMouseEvent(MouseMove, LeftButton, localPos=45,32, screenPos=948,652)

Change-Id: Ie5441d922962a05caed6b7079a74ea8a2b8a64fb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-04-01 04:26:50 +00:00
Liang Qi ce9519593a Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	mkspecs/android-g++/qmake.conf
	qmake/generators/unix/unixmake2.cpp
	src/gui/image/qimage_conversions.cpp

Change-Id: Ib76264b8c2d29a0228438ec02bd97d4b97545be0
2015-03-31 10:03:31 +02:00
Stephen Kelly 0809a922a0 Make QAbstractProxyModel API invokable.
With reasoning similar to commit v5.5.0-alpha1~123 (Make some
QAbstractItemModel API invokable, 2015-02-25)

Change-Id: If0bf3a756ab1031f906c5bf9c823aafae4c3873c
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2015-03-25 10:41:18 +00:00
Stephen Kelly 93305f3af3 QAbstractItemModel: Make the match() method Q_INVOKABLE
With reasoning similar to commit v5.5.0-alpha1~123 (Make some
QAbstractItemModel API invokable, 2015-02-25)

Change-Id: I77c72f7bb856a1eee966b45950384fe03a8eaac6
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2015-03-25 10:41:10 +00:00
Marc Mutz dec7e3ebb7 QDateTimePrivate: replace out parameters with return-by-value in getDateTime()
Compilers don't like out parameters.

Effects on Linux GCC 4.9 stripped release builds:
 text   -584B
 data    +-0B
 relocs  +-0

Change-Id: Ie00c89b9edaced3a6adeb2707734c8f5238e67c1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:51 +00:00
Marc Mutz 2450a66001 QDateTime: prevent aggressive inlining
The function getDateFromJulianDay() is simple arithmetic, but still
~400 bytes in executable size.

Yet GCC inlines this everywhere I looked, which makes some sense,
as different users of the class only use parts of the return
value and the optimizer has a field day removing all that dead
code.

However, that function has only one conditional, so presumably it
executes at full pipeline speed and it doesn't matter that it
calculates too much in some cases. More important is to use the
I-cache more conservatively.

That's what not inlining the function achieves.

The function returns its result in registers and doesn't spill
registers when called (at least on AMD64), so the effect on
runtime should be negligible.

Effects on Linux GCC 4.9 stripped release builds:
 text  -1536B
 data    +-0B
 relocs  +-0

Change-Id: Ia16838102d29ad67ee5efdc8b7b0a26f2f921df1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:44 +00:00
Marc Mutz aab749487f QTime: optimize toString()
Instead of using a QString::arg() cascade, which creates tons of
temporaries, use good 'ol sprintf().

Effects on Linux GCC 4.9 stripped release builds:
 text   -308B
 data    +-0B
 relocs  +-0

Change-Id: I348577491d1399b5040f7ed9e9f6b111a9528e5d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:35 +00:00
Marc Mutz 1e824bb9c4 Micro-optimize QDate::{long,short}{Day,Month}Name()
Save one return statement per function. I don't see why the compiler
can't fuse these itself, but apparently it cannot, since this
transformation saves 72B in text size.

Change-Id: I3a661456554bf451ed53110ad546946ff7b84ec5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:30 +00:00
Marc Mutz 613449a58d QDate: don't spend code size covering the impossible case
All other similar functions in QDate just return an empty string
in case none of the switch labels would trigger (which would now
cause a compiler warning, after removing the default case label),
so do that here, too.

Saves 44B in text size.

Change-Id: I80ee4975082706adcd15fe89511d08c67e149324
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:25 +00:00
Marc Mutz 0b77e1b611 QDate: remove some useless default case labels
They're pure whitespace, since in each case there is a fallback
after the switch, anyway, and their presence prevents compiler
warnings about unhandled enumeration values in switch statements,
which is nice-to-have, when adding to the enum, eventually.

No change in executable code size.

Change-Id: I77aecaeff990601f957ec9ee827eff5ead25aaa1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-25 10:18:19 +00:00
Liang Qi 135ebe4f3d Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: If5d2e621c2fa5476c3ab687a3f4620c54fc3b32e
2015-03-24 07:38:02 +01:00
Kai Koehne be3d4ebcbf QVarLengthArray: Do not require operator!= for element comparison
The documentation claims that operator== is needed, not operator!=.
While at it, we can also replace the loop with std::equal, which
might even allow STL implementations to choose a hand-optimized
version of the algorithm for C++ builtin types ...

Change-Id: I988b326d6af3b767526952e303468e18ff6594f9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-03-23 08:13:46 +00:00
Kai Koehne d3659bf88b QVarLengthArray: Add initializer_list constructor
Implement an initializer_list constructor, which was probably
just forgotten so far. Technically this is a SC incompatible change,
since

  QVarLengthArray<int> array = {10};

will now create an array with one element 10, instead of an empty array
with a reserved size of 10. Anyhow, keeping the inconsistency with the
STL / other Qt containers here would certainly do more harm than good
in the long run.

Task-number: QTBUG-45047
Change-Id: I4675880f93e141181250939942fa32300916b0e3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-03-23 08:13:42 +00:00
Konstantin Ritt 31cd326bec Report a correct Unicode version used by Qt
The version bump was forgotten in edfce46a6c

Change-Id: I99501bb314baab68f037417db4b3b14e11f2de02
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-23 07:02:25 +00:00
Konstantin Ritt b5e0e433cc Build bundled PCRE copy as qt_helper_lib
We already have an infrastructure for that.

Change-Id: I9110b74dcf7f93362586687da6f112e72cb663a4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-20 18:12:09 +00:00
Konstantin Ritt 0a27532890 Introduce icu_dependency.pri
Simply to hide the magic bahind the scenes.

Change-Id: I69a159eb14712e68117f10e78745bdfbad46b6f2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-20 18:12:04 +00:00
Andy Shaw ba287c55ef Sort the entries in QDir by using the QDateTime::msecsTo()
By using the QDateTime::msecsTo to do the sorting it means that if
there is support for a precise time on the file system then this
ensures it sorts correctly.

Change-Id: I00528596908bba7b586aeffe5b0aa81019ff5722
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-20 13:51:40 +00:00
Fawzi Mohamed e7feb95628 qstatemachine: add methods detect when a machine has processed an event
currently when adding an event it is not possible to know when processing
it has finished.
In particular if the event is ignored no method is called.
Adding virtual methods to the private implementation (binary compatibility).
These methods allow for extended automatic testing of the state machines.

Change-Id: Ib2d4caccc90ecc126e362d52c3558f5f9f846452
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-03-19 12:46:37 +00:00
Kai Koehne e7b257c39b Doc: Fix QVector constructor documentation
Change-Id: Ib16df599553e482e981573afadf3c3f4e70ed5b1
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
2015-03-19 07:27:22 +00:00
Simon Hausmann dcf0ececbf Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/dev 2015-03-18 22:27:24 +00:00
Lars Knoll 0411240fda Make sure remove() doesn't corrupt the json object
When using non latin keys, remove() could cause corruption
of the json object.

Task-number: QTBUG-42270
Change-Id: I7305e57ebb78630a9bf68bc4f831a6d1646abb79
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:34:59 +00:00
Lars Knoll 124da60c1d Fix support for iso8859-16 when compiling with ICU
ICU doesn't support iso8859-16, so we need to fall back to
the Qt codec for this encoding.

Task-number: QTBUG-45053
Change-Id: I9754cf098c906fe8a75363a3d090029543cd0e35
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:34:55 +00:00
Lars Knoll ba8c34aaf3 Fix QCollator::compare documentation
We don't guarantee -1, 0 and 1, but simply negative 0 or
positive numbers. This is in line with e.g. QString::compare()

Task-number: QTBUG-42860
Change-Id: I6009b2eb732ae3b4726cec06ec0eacc2c46a3c93
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:34:26 +00:00
Lars Knoll 75cb6f59f1 Add QJsonValueRef::toVariant()
to better mirror the API of QJsonValue

Task-number: QTBUG-43686
Change-Id: I83edecf5226d44980a8a442a512a13ab9b2ac6a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:34:21 +00:00
Olivier Goffart 7c77013c7f Fix source incompatibility while connecting signals with forward declared arguments
QObject::connect tries to determine if the arguments are registered
metatypes. This used to work even for arguments that were forward
declared. But now, the metatype system tries to call
QtPrivate::IsQEnumHelper<T>::Value to know if it is registered.
That fails on gcc if T is forward declared.

Apparently gcc needs to know the full type of T to pass it in the
ellipsis function, even within a sizeof expression.

So change the ellipsis expression to a template one.

Task-number: QTBUG-44496
Change-Id: I7fa07bd3cde470b134c2ec53b0d581333d16a6f1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:33:19 +00:00
Olivier Goffart 59c4024171 QDebug operator for Q_FLAG when the QFlags itself is registered
Currently, IsQEnumHelper<T> returns true also if QFlags<T> is registered
as a Q_FLAG. But this is going to be changed in the next commit.
For the QDebug operator to continue to work even when the QFlags<T> is
registered and not the T, we need to take it into account in the
QEnableIf condition

Change-Id: If1fcffd133aa20ba95a07e2bfaaa308896ab01b0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-18 07:31:39 +00:00
Peter Rustler 88e448a90b Added new private API for Android and onPause/onResume
On Android the foreground activity can get onPause/onResume
calls. In Nfc code in android we need to know if we are paused
or resumed. And we need to make sure to call disableForegroundDispatch
inside the onPause call and in the main Ui thread. The current
implementiton of applicationStateChanged was not sufficient to
acomplish that.

This patch adds a way to receive those onPause/onResume calls in Qt
with proper timing.

Change-Id: I3a8cec093fc02ec42cc8677dfe2d0d4f8a227f8b
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2015-03-17 09:09:46 +00:00
Andy Shaw bb5d287cc3 Windows: Don't cause a malloc before calling GetLastError()
When creating a string it would cause a malloc which would reset
GetLastError() so we need to ensure that GetLastError() is the first thing
it calls if a Windows API call fails.

Task-number: QTBUG-27765
Change-Id: I5cc4ce59aa1f03a0ec978fe54949a7931a225d52
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-16 18:13:24 +00:00
Simon Hausmann 198606f6db Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	src/plugins/platforms/xcb/qxcbnativeinterface.cpp
	src/plugins/platforms/xcb/qxcbnativeinterface.h

Change-Id: I31b38ba439b9341d51a01c0fd54bea33f7410076
2015-03-16 10:31:07 +01:00
David Faure 88851fb3b0 QLockFile: use QCoreApplication::applicationName.
Unlike qAppName, it doesn't require a QCoreApplication instance,
making QLockFile usable in destructors of global statics.
This also uses the value passed to setApplicationName if called
rather than always argv[0].

Change-Id: I40446aba410db42d7cfe6b4408878faf435246f7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-16 08:38:32 +00:00
Alex Richardson eea7791fd4 Fix build of forkfd_qt.cpp on FreeBSD
It no longer compiled after 614f37c8b5 due to
the following:
- forkfd_qt.cpp set _XOPEN_SOURCE to 500
- It then includes qatomic.h which include sys/cdefs.h (the FreeBSD header
  that parses and sets _POSIX_C_SOURCE, _XOPEN_SOURCE and other macros)
- sys/cdefs.h redefines _POSIX_C_SOURCE to 199506 due to _XOPEN_SOURCE's
  value
- Several libc symbols expected to exist by libc++ are hidden due to
  _POSIX_C_SOURCE's value and the build fails

Setting _XOPEN_SOURCE to 700 ensures that _POSIX_C_SOURCE is set to
200809 which is required for libc++ to work correctly

Task-number: QTBUG-45006
Change-Id: Iac93220d19ca5ab9ba8ac61a79748252283c3c47
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-15 22:26:40 +00:00
Thiago Macieira cd1e045b3b QString: Don't force unrolling of the tail loop if optimizing for size
This is quite good if space isn't a constraint: the unrolling ensures
faster execution and limits the number of iterations. But it's long.

Both Clang and GCC set the predefined macro __OPTIMIZE_SIZE__ if -Os is
in effect. ICC does not; MSVC is untested but there are no macros for
this effect listed in its documentation.

Change-Id: I1a800c709d3543699131ffff13c48919a9a79ec3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-15 19:00:38 +00:00
Marc Mutz fd76e02e95 QString: further optimize multiArg
This improves the previous algorithm in two aspects:

1. It parses the format string in a single pass instead of
   two, as was previously the case, storing all the
   information the result construction pass needs in a
   pair<QStringRef, int>.

This alone would slow the algorithm down, but without it, it's
hard to make the following work:

2. It avoids reallocations by calculating the size of the
   result and using the Qt::Uninitialized QString ctor.

This speeds up the following test case

    QString str("%1 %2 %3 %4 %5 %6 %7 %8 %9 foo %10 %11 bar"); // not timed
    // (arguments converted to QString outside loop)
    str = str.arg("one", "2", "3", "4", "5", "6", "7", "8", "9");
    str = str.arg("ahoy", "there");

from tst_qstring, which heavily favors the previous result
construction loop due to the tiny (but non-zero) amount of
verbatim text in between placeholders, by 25%:

  Qt 5.4:      1.50µs
  no map:      0.77µs (7b5ba56b0a)
  this change: 0.58µs

Change-Id: I41ec86b7a21b4b25b3bc669ff2e3b2cc73513597
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-14 20:31:53 +00:00
Thiago Macieira 614f37c8b5 forkfd: make only one of forkfd or spawnfd be compiled
We only ever use one, never both.

Change-Id: Iee8cbc07c4434ce9b560ffff13caf94c05dba338
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-14 02:17:36 +00:00
Friedemann Kleint 3994ea1979 Add a verbosity setting to QDebug.
Add setters for an int verbosity to QDebug. The streaming operators
can check on the setting and output more information accordingly.

[ChangeLog][QtCore][QDebug] How verbose a single debug output should be
can now be fine-tuned by setting a verbosity on the debug stream.

Change-Id: I77001fcf1ef090a580d1a137bb5a667fc1bf1e1b
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-13 13:24:36 +00:00
Marc Mutz d2f418e98f QVector: remove brittle c2m() function
The c2m() function converts a const_iterator into an iterator, but
is a broken concept for an implicitly shared container such as
QVector, because the act of calling begin() as the starting point
already detaches and invalidates the c2m argument.

This could be fixed in c2m, but it's too easy for a caller to
cause iterator invalidation even before calling c2m, as QTBUG-44592
showed, so remove the function completely.

Task-number: QTBUG-44592
Change-Id: Ibde8cd1d78a412cc9fb621f743e52f74291aff4f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-13 11:37:36 +00:00
Gabriel de Dietrich dde8c6f77e QVariant: Fix wrong return type in toPersistentModelIndex()
Change-Id: I53afa712d38ec6a41fce77474acccf9c587ea6a8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2015-03-12 21:33:55 +00:00
Rainer Keller 8c9d6a334c Doc: Change Q_CHECK_PTR documentation to match implementation
Task-number: QTBUG-9134
Change-Id: I417be34f5682fa23b7b76131f5713b0917dfae6d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-12 12:45:01 +00:00
Sergio Ahumada 3cadc688f8 Doc: Fix qmath documentation
qmath.qdoc:206: warning: No such parameter 'radians' in qNextPowerOfTwo()
 qmath.qdoc:206: warning: No such parameter 'value' in qRadiansToDegrees()

Change-Id: Ia1556a98801ab694716235cc50edcc9e7d2f33f0
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-03-12 12:36:56 +00:00
Lars Knoll 58b4cf8722 Fix quadratic behavior when parsing very large objects
QVarlengthArray is not a good data structure when you need
to dynamically append to it without knowing its size in advance,
as it reallocates on every append. Use a QVector instead.

Task-number: QTBUG-44737
Change-Id: I68eab11eacd8368e94943511874aead823a149ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-12 07:21:21 +00:00
Andy Shaw 5f324097f2 Add missing \since tag for the documentation for loopLevel()
Change-Id: Ib5e23c40d9258db7986ddb892def207808ac89c7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-03-12 06:50:28 +00:00
Alex Trotsenko 9dd0bb851b Make QRingBuffer a 64-bit safe
According to I/O API, QIODevice and its inherited classes should be
able to process a full 64-bit offsets and lengths. This requires
64-bit parameters in operations with internal buffers. Rework
QRingBuffer to avoid implicit truncation of numbers and fix some
64-bit issues in code.

Change-Id: Iadd6fd5fefd2d64e6c084e2feebb4dc2d6df66de
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-12 05:33:20 +00:00
Friedemann Kleint 5930a2d314 Track modifications of white space in QString::simplified().
The existing check fails to detect the case where white space characters
other than the space character are replaced by space characters
without the length actually changing and returns the original string.

Task-number: QTBUG-44936
Change-Id: Ice6faa975f8b41f185c76f6d0d4ff81603e25eb3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-12 05:32:41 +00:00
Thiago Macieira 6025c36d01 Make Q_ASSERT_X also check its argument for validity
Commit ebef2ad136 did it for Q_ASSERT, but
I somehow forgot to do it for Q_ASSERT_X. Do it now.

This includes the fix from 9a3d7adaad to
silence a Clang warning.

Change-Id: Iee8cbc07c4434ce9b560ffff13ca066a5b5ab5d4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-12 04:23:45 +00:00
Liang Qi 8f06183699 Core: fix crash in QCollator if ucol_open() failed
If ucol_open() failed, call back to QString::compare() implementation.

Task-number: QTBUG-44796
Change-Id: I03446e5227e1dedac6c5f824ac6d74a494fc0ace
Reviewed-by: Gergely Nagy <ngg@tresorit.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-11 15:30:16 +00:00
Paul Olav Tvete a31fd4fb96 Clarify InputMethodHint documentation
The description of ImhHiddenText made it sound like it would change
the echoMode of the input field.

Task-number: QTBUG-38080
Change-Id: I379015b95e43b6eff181d51444c7e069728504ad
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-03-11 15:07:07 +00:00
Andy Shaw afd2246de2 Windows Embedded: GetTickCount64 won't be available so just remove it
Since GetTickCount64 still relies on the usage of kernel32, then it will
not find the function anyway as the library does not exist for Windows
Embedded. Therefore it is best to remove it altogether to save time trying
to locate something we know is not there.

Change-Id: Id879382fdd0692fb9443231a405c0e28d9bcc328
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-11 14:53:09 +00:00
Nico Vertriest 6ef8387e42 Doc: Json classes added to list of implic.shared classes
Task-number: QTBUG-44053
Change-Id: I52a1b6c413aaa594bfee9bf7484c3d0ce7e9c9fa
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-03-11 14:09:26 +00:00
Ulf Hermann a3aaabc646 Clarify limitations of QCoreApplication::libraryPaths()
If you call libraryPaths() before constructing a QCoreApplication,
intersting things may happen.

Task-number: QTBUG-38598
Change-Id: I2861746277e391ede9e921e4a8ad825007e25fa0
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-03-11 14:08:24 +00:00
Ulf Hermann aad3c08902 Clean up QLibraryInfoPrivate::findConfiguration()
The QFile::exists() check in the end was redundant if one of the
!QFile::exists() had returned false before. By always doing the
positive check we can get rid of it and also avoid excessive
nesting.

Also, on OSX the isEmpty() clause probably never evaluated
to true, with the effect that qt.conf in an applicationDirPath was
never found.

Change-Id: I750735741b707d3e98c4bf6c6b9558618e1fcc59
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-11 09:10:18 +00:00
Nico Vertriest 8eaddf8343 Doc: corrected snippet issue in Defining Plugins doc
Task-number: QTBUG-44629
Change-Id: I70e20209b6b33f7adcbcafc6b7d959660cdc2e87
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-03-11 09:01:46 +00:00
Nico Vertriest 3128df99d6 Doc: QDataStream Serializing doc error
Task-number: QTBUG-44707
Change-Id: I0ccfb47fe0b2464c5b7331040ea658ace3442366
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-03-11 09:00:53 +00:00
André Klitzing cacae82a70 CMake: Fix regression with quoted OPTIONS parameter
If a parameter contains quotes the check for "-binary" fails.

Change-Id: I27148b590d85291a93f1992dfd277fb857bec6e2
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2015-03-11 07:31:33 +00:00
Thiago Macieira 3b36a550b0 QDateTime: ensure we always use the daylight status if known
Refactor the code so that the localMSecsToEpochMSecs function always
gets the daylight status as input. The calculation can be very wrong if
we forget to set it.

Change-Id: I39e2a3fa6dc7c4a417f23288f10b303e450b8b98
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-03-11 06:56:54 +00:00
Frederik Gladhorn 3dbb526329 Fix regression in time zone handling
In QtScript we use the msecs since epoch conversion (JS date is based on
the concept). After a8c74ddcf7 the date
conversion test in qtscript started to fail. Instead of relying on the
code working by chance, simply update the date when setting it with
setMSecsSinceEpoch.

Task-number: QTBUG-44885
Change-Id: I9f95c9cdccea52e7d1f808f3cb9e18570ef0df13
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-11 01:50:08 +00:00
Lars Knoll a29b7635bd Simplify calculation of week number
This also removes a dependency to 3rd party licensed code.

Change-Id: Ia4818a5cf306501bdb7192265edc4bcba8e597d8
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-03-10 13:36:49 +00:00
Eike Ziller 416438c2f3 QMimeDatabase: Fix magic rules with \t
\t was not interpreted as a tab character.

Task-number: QTBUG-44884
Change-Id: I3c733e227fba7e5fd5153df0ae4d0431903bb104
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2015-03-10 12:17:32 +00:00
Ulf Hermann 1fc6056ff5 Detect qt.conf in bundle on OSX without QCoreApplication
On OSX we don't need the applicationDirPath to find a qt.conf
located in the application bundle. Let's take advantage of this and
allow findConfiguration to use it.

Task-number: QTBUG-24541
Change-Id: I38c349a3bcd140fcf91352c88c24ca662e6e6f2e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-10 11:56:53 +00:00
Ulf Hermann d96c29a5d1 Reload QLibraryInfo's settings when QCoreApplication becomes available
Some of the paths may only be resolvable if the application path is
known. On some platforms we can only figure out the application path
if argv[0] is known. Thus, if the paths have been queried before the
QCoreApplication is created, the cached settings may be wrong. We have
to reload them after creating the QCoreApplication.

Task-number: QTBUG-38598
Change-Id: Idf5822be87aa0872b099480040acd7b49939a22c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-10 11:48:24 +00:00
Alex Trotsenko 35ee5349f2 QIODevice: Fix some 64-bit issues
Change-Id: I77354a3069b256135c5792975a1445bcbe816e20
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-10 11:45:41 +00:00
Daniel Teske ed0c0070f9 Introduce qt_subtract_from_timeout to reduce code duplication.
The same qt_timeout_value function was copied 5 times in qtbase's code,
so provide a common implementation in QIoDevice that can be used by
everyone.

This commit also corrects the remaining time calculation in
QProcess::waitForBytesWritten and QProcess::waitForFinished by using
this new function.

For QProcess::waitForFinished, if the process started within almost exactly
the timeout time passed to waitForFinished, msecs - stopWatch.elapsed() would
be -1, which is a special value.

Change-Id: I7b76ee6bae695eafdd02e3db03e2ff1e23a7f40c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-09 17:11:54 +00:00
Andy Shaw 72ef272733 (Re)introduce loopLevel into QThread
This function used to reside in QEventLoop in Qt 3 and was deprecated in
Qt 4. However this is useful for those who want to know how many event
loops are running within the thread so we just make it possible to get at
the already available variable.

Change-Id: Ia6a7d94ff443a1d1577633363694bc2fa8eca7e4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-03-09 12:29:43 +00:00
Nico Vertriest 162c116948 Doc: corrected doc QString::operator[]
Task-number: QTBUG-43337
Change-Id: I379dfe3f6909de5a63a67261834ea0edff875f9d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-03-09 10:37:40 +00:00
Frederik Gladhorn 6cef72d0b4 Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: I9d10911c51700965f2cf0e3173b88fd9116bd3ee
2015-03-09 10:23:15 +01:00
Thiago Macieira 53ce0d1a31 QStringAlgorithms::simplified_helper: add missing check for detached
Otherwise, we modify shared strings that happened to be rvalues.

Task-number: QTBUG-44706
Change-Id: Ia0aac2f09e9245339951ffff13c85bfc912f03d1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-07 19:36:24 +00:00
Thiago Macieira a8c74ddcf7 Fix race condition in QDateTime::timeZone() and other methods
When timezone support for QDateTime was added, we decided it was a good
idea to delay creating the QTimeZone object and checking that the time
is valid in that timezone (including for local time) until the user
requested that information. Unfortunately, QExplicitlySharedDataPointer
returns a non-const T* in operator->(), which meant we were accidentally
modifying the d pointer's contents in const methods, which in turn means
those const methods were not thread-safe when operating on the same
object.

This commit changes the d pointer to QSharedDataPointer, which is safer
in this regard and pointed out where the issues with constness were
located. Since we can't lazily calculate QTimeZone anymore, we need to
do it whenever the date, time or offset changes.

Task-number: QTBUG-43703
Change-Id: Ic5d393bfd36e48a193fcffff13b9686ef4ef1454
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-07 19:22:21 +00:00
Thiago Macieira 84b9d07163 Silence bogus MSVC warning about variable not used
The compiler is wrong: the variable was used in the previous line.
However, the line had no effect for a type T that has a trivial
destructor, so the optimizer must have discarded the line and the
reference to the variable before the checker for used variables.

qsharedpointer_impl.h(247) : warning C4189: 'that' : local variable is initialized but not referenced

Change-Id: Ia0aac2f09e9245339951ffff13c8bde02bb46816
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-07 19:21:51 +00:00
Shawn Rutledge 8b0fcd8718 xcb: implement and deprecate QWidget::setWindowIconText()
This is a little-used feature which only affects how minimized icons
are displayed on certain older window managers, and is not necessary
even then.  It has not been implemented in Qt 5 until now.

Task-number: QTBUG-44659
Change-Id: Ie6ead7a6f922878b349a096d905bf7f675dc2f31
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-03-06 19:54:57 +00:00
Tor Arne Vestbø b0182069e5 iOS: Define QT_NO_PROCESS, as the platform doesn't allow fork/exec
Change-Id: I0928c4aaa0c308ee86b9611beeba3937b61e226c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-03-06 19:01:38 +00:00
David Faure 74117b5100 QCommandLineParser: add parsing mode for options after arguments
The new mode, ParseAsPositionalArguments, allows to interpret
"application argument --opt" as having two positional arguments,
"argument" and "--opt".
This mode is useful for executables that aim to launch other executables
(e.g. wrappers, debugging tools, etc.) or who support internal commands
followed by options for the command. "argument" is the name of the command,
and all options occurring after it can be collected and parsed by another
command line parser, possibly in another executable.

[ChangeLog][QtCore][QCommandLineParser] Add parsing mode for options
after arguments, to allow treating them as more arguments.

Change-Id: I48d5fcf90f2f59deda8422538b8ebf2680fae828
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-06 09:09:31 +00:00
Gabriel de Dietrich 374c60e046 Make QPersistentModelIndex an internal meta-type
It was already a user meta-type, so it only gets
promoted to internal.

[ChangeLog][QtCore] QPersistentModel index becomes an built-in
meta-type, including QVariant support.

Change-Id: I63d733d1eb66aa61691e7afce27fe7372a83ac00
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-06 07:07:39 +00:00
Thiago Macieira 9a3d7adaad Fix -Wunreachable-code warning from clang in preprocessed Q_ASSERT
Q_ASSERT expands to:
 do {} while (false && (<your condition>))

Which is fine for Clang as long as it's a macro. However, when you
compile as a preprocessed source, the macro is gone and Clang prints the
warning:

 warning: code will never be executed [-Wunreachable-code]
 do {} while (false && (f()));
                        ^
 note: silence by adding parentheses to mark code as explicitly dead

So add the parentheses that it's asking about.

The changelog refers to the full Q_ASSERT change from
ebef2ad136.

[ChangeLog][Important Behavior Changes] Q_ASSERT will now expand the
condition even in release mode when asserts are disabled, albeit in an
unreachable code path. This solves compiler warnings about variables and
functions that were unused in release mode because they were only used
in assertions. Unfortunately, codebases that hid those functions and
variables via #ifndef will need to remove the conditionals to compile
with Qt 5.5.

Change-Id: Ia0aac2f09e9245339951ffff13c8aa70229254d0
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-06 06:19:47 +00:00
David Faure 6c973dee2c Make QCoreApplication::applicationName available after app destruction.
Calling applicationName() in the destructor of a global static (e.g.
via QLockFile) was working when calling setApplicationName explicitly
but otherwise it would suddenly return an empty string.
This led to inconsistencies, the application name switching from
non-empty to empty at saving-on-destruction time.

There was already a global static, used when setting the app name
explicitly before construction. Use it now to store the app name
in all cases (explicitly set, or fallback).

Change-Id: I71d3a0c40158f8bfd022c385b198346a2594b1cb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-05 10:29:27 +00:00
hjk dd06d03661 QLockFile: Avoid zero-sized lock file on write error
Failure to write into a successfully opened lock file left the
lock file with size 0 in the filesystem.

Task-number: QTBUG-44771
Change-Id: I561bf629b9f160174d658bf105be828f71d78ff9
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-05 09:38:51 +00:00
Thiago Macieira 212285639d Add missing fetchAndXxx methods to atomic classes based on std::atomic
And add tests for the GCC intrinsics and for std::atomic.

Task-number: QTBUG-43794
Change-Id: Ic5d393bfd36e48a193fcffff13b9b2dbaee80469
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-03-05 00:05:00 +00:00
Stephen Kelly 1a0dfd93bb Make some QAbstractItemModel API invokable
As QAIM and related classes are becoming more useful in the QML
environment, it makes sense to make these invokable.

Make the access API and the setData method scriptable.  Avoid
making the structure changing APIs scriptable now to be conservative.

Export the ItemDataRole enum through the staticQtMetaObject to make
built-in roles available.

Change-Id: I47b1682e6fa8ba32c7314c73fc10a7bbaa6d1f98
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2015-03-04 22:39:05 +00:00
Stephen Kelly 196fde2ac7 Make the QItemSelectionModel::selection a property.
QML code like this should be possible:

 Text {
     text: selModel.selection.contains(modelIndex) ? "blue" : "yellow"
 }

If the selection is just a Q_INVOKABLE method, then all consumers need
to set up

 Connections {
    target: selModel
    selectionChanged: foo()
 }

That is obviously not the API we want (made more clear by the fact that
the signal is already perfectly named) because it is not declarative but
it can be.  So, make it declarative by making selection a property.

Change-Id: Id1a05ae9b91e45e6d462bea4272b8740571e9fc3
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-03-04 22:38:55 +00:00
Oswald Buddenhagen 38b5e9f8ba Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: Idd21ab419588ee8b893649e3227d41c46a32e519
2015-03-04 16:49:00 +01:00
Andy Shaw 227bb20ded Call MoveFile() anyway if the delete failed because it did not exist
Since the new filename might not yet exist and DeleteFile() will fail if the
new file does not exist then MoveFile() should still be called.

Change-Id: Id4576ade079ad8593f824b7100bb0d94aec1fa0a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-04 10:00:34 +00:00
Olivier Goffart bfb92c03e0 Document Q_ENUM and Q_FLAG
[ChangeLog][QtCore] Q_ENUMS and Q_FLAGS have been deprecated, and replaced
by Q_ENUM and Q_FLAG macros. These two new macros automatically register the
enum with the Qt metatype system, allowing automatic conversion to or from
string in QVariant, or to show the strings by QDebug operators. They also
enable the new QMetaEnum::fromType function.

Change-Id: I80cccd7ad3fc46b11aee2fe50681a8126debf972
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-03 13:31:44 +00:00
Shawn Rutledge 3b6d2575ae QEvent types: use Q_ENUM qDebug support instead of custom formatters
Change-Id: I10886de57b3ba24dddfcd4b78e1a32c470ac1889
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-03 13:30:45 +00:00
Oswald Buddenhagen c0a5e8c9d7 Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	src/plugins/platforms/xcb/qxcbscreen.cpp

Change-Id: Ie42931791a849b34b63d814d2eb5ac653986d868
2015-03-03 13:37:38 +01:00
Oswald Buddenhagen 2b5982aac8 Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I95b3a87c5068c6b8068b30a35655b4c2419e7f9e
2015-03-02 09:23:07 +01:00
Eskil Abrahamsen Blomfeldt 4e966497ce Android: Fix compilation for x86
Bionic on x86 does not have an implementation of ffs(),
for some reason. The declaration is available in
strings.h, but causes a linker error. The toolchain has
a builtin version though, which can be used instead.

Change-Id: Iaf4c27542c1aabe88713842303251db44ae6ba86
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-27 05:54:36 +00:00
Andy Shaw a782369071 Delete the file that we will move to not the new file before moving
In the case of Windows Embedded Compact we need to delete the destination
file before doing the move if DeleteAndRenameFile has failed since
MoveFile will fail if the destination file exists.

Change-Id: I29d04c147bf8b6b5de850fd7da7bb3dc6a827f1d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-26 20:16:05 +00:00
Andy Shaw 4054f8a5ad Specific the correct mibEnum value for the 'macintosh' codec
Change-Id: Ib57dd3c98a2ae3994898d7ea40baa0fed482c99a
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-26 17:30:14 +00:00
Alex Richardson 3146dadb42 Allow passing absolute paths without file extension to QPluginLoader
Previously QPluginLoader("/foo/bar/plugin").fileName() would return an
empty string even if /foo/bar/plugin.so existed, now we correctly find
that file.

Change-Id: Ibf6ba329e92956de45f695be65773caacf14050a
Reviewed-by: David Faure <david.faure@kdab.com>
2015-02-26 13:31:47 +00:00
Christian Strømme c8d64cbcc6 Android: Add scoped local ref. handler.
Adds an internal class for handling local jni references. When calling
raw jni functions the returned object is usually a local reference, to
avoid overflowing the local reference table we need to free any local
ref. as soon as we're done with them. The class QJNIScopedLocalRef,
a QScopedPointer, makes this process a lot easier.

Change-Id: I093e5671f0dcd254d5c2c7985c8c0f625d5592a4
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-26 13:02:27 +00:00
Friedemann Kleint cd46d94906 Output registered enums in qDebug operator for QFlags.
Change-Id: Ia424df234fbd333782c10f0a4422875bb1bfc1f5
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-26 12:16:51 +00:00
Erik Verbruggen 9608629d7e OSX: fix leaks due to missing NSAutoreleasePool
env OBJC_DEBUG_MISSING_POOLS=YES qtcreator

Change-Id: Ibbe5f42af5b94a439be3f0dd0f2b6e34bb1afd3f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-02-26 12:11:33 +00:00
Friedemann Kleint 05e0dfa006 Reverse iteration in QMetaEnum::valueToKeys().
Otherwise, values that are composed of others are not handled
correctly. For example,
Qt::Dialog|Qt::FramelessWindowHint (Qt::Dialog=0x2|Qt::Window)
is currently output as
"Window|FramelessWindowHint" since
Qt::Window matches first and its bits are removed from the flag value
so that Qt::Dialog in the next iteration no longer matches.

Change-Id: I67db5c977c75f887392aa8f345c5e6e9d82c5c26
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-26 09:49:10 +00:00
Oswald Buddenhagen a659b4e56b fix default of SettingsPath when qt.conf is present
it's documented to fall back to Prefix if qt.conf is present but
Settings is not specified.

Task-number: QTBUG-44644
Change-Id: I8ef6659cbdad51b2fb3c1075ea6f0af4997117ed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-25 19:14:50 +00:00
Thiago Macieira 41ef1965c5 QSysInfo: expand Linux distribution detection to /etc/lsb-release
Some older (or weird) Linux distributions don't have /etc/os-release, so
let's try to read /etc/lsb-release instead. If we find a file called
/etc/<distronamelowercase>-release and it's bigger than the pretty name
we read from /etc/lsb-release, use that.

Because the order of the keys changes between the two *-release files,
we can't do a sorted search anymore.

Change-Id: I1a800c709d3543699131ffff13c48532d5074f3c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Dirk Hohndel <dirk@hohndel.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-25 15:49:20 +00:00
Friedemann Kleint 28fedba03b Fix various qdoc-warnings.
qtbase/src/corelib/itemmodels/qitemselectionmodel.cpp:1199: warning: Undocumented parameter 'model' in QItemSelectionModel::modelChanged()
qtbase/src/corelib/plugin/qpluginloader.cpp:420: warning: Can't link to 'staticPlugin()'
qtbase/src/gui/text/qtextdocument.cpp:1452: warning: No such parameter 'from' in QTextDocument::find()
qtbase/src/testlib/qtestcase.cpp:2770: warning: No documentation for 'QTest::qExtractTestData()'

Change-Id: I76758dbdf3ad7b0ae1f14de0407a6fde523827d0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-25 15:26:04 +00:00
Olivier Goffart be4f5d55fc QVariant: fix converting enum to string
Use QMetaEnum::valueToKey instead of valueToKeys.

Change-Id: I270f0820a03aaebde94c37c011c5e9b81421b50f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-25 15:24:40 +00:00
Sergio Ahumada 18ab75be81 Doc: Fix typos
Change-Id: Id7ecc747545f9675b84c3a8c284a52e72a584135
Reviewed-by: Sune Vuorela <sune@vuorela.dk>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2015-02-25 15:13:44 +00:00
Oswald Buddenhagen 4f39e8b9f7 Bump version
Change-Id: If80b63cf61bc3fd15ff6020fa5e35ec0316bdadc
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2015-02-25 13:20:40 +00:00
Pasi Petäjäjärvi 059a570b8a Fix QT_POSIX_IPC support
On platforms which does not have at all sysv support, all
posix ipc tests and compilation failed because sysv
specific header files were included unconditionally.

Change-Id: I5713ace6daeb6e79f8794ce42b2b3dfa1b95ab2d
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-25 11:42:36 +00:00
Friedemann Kleint 691198eaf2 Fix various qdoc-warnings.
qtbase/src/corelib/doc/src/containers.qdoc:28: warning: Can't link to 'QList:end()'
qtbase/src/corelib/kernel/qmetaobject.cpp:2680: warning: Cannot find 'fromType(...)' in '\fn' QMetaEnum QMetaEnum::fromType() const
qtbase/src/corelib/kernel/qmetatype.cpp:1117: warning: Cannot find 'qMetaTypeTypeImpl(...)' in '\fn' int qMetaTypeTypeImpl(const char *typeName)
qtbase/src/corelib/plugin/qplugin.qdoc:48: warning: Cannot find file to quote from: 'plugins/interfaces.h'

Change-Id: Ie613253211e16ec616ccb70c24c625a9d5352d1b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-25 11:36:51 +00:00
Frederik Gladhorn 709e40093e Merge remote-tracking branch 'origin/5.5' into dev
Change-Id: Ie709286a14b452dae7abb59830f584bb33f1ccf5
2015-02-25 12:23:22 +01:00
Frederik Gladhorn 34b14a8472 Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	examples/xml/htmlinfo/simpleexample.html
	examples/xml/rsslisting/rsslisting.cpp
	qmake/generators/win32/msbuild_objectmodel.cpp
	src/3rdparty/harfbuzz-ng/src/hb-private.hh
	src/corelib/global/qlogging.cpp
	src/corelib/io/qstorageinfo_unix.cpp
	src/corelib/thread/qwaitcondition_unix.cpp
	src/gui/kernel/qguiapplication.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	src/testlib/doc/src/qt-webpages.qdoc
	tests/auto/other/qaccessibility/tst_qaccessibility.cpp

Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
2015-02-24 21:02:08 +01:00
David Faure 989cd600bc QCommandLineOption: fix wrong version number in \since tag
Change-Id: I45249cb07c6d53c82a26e68026ea5c1bb3ec57dc
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-24 14:36:46 +00:00
Nico Vertriest 1afe110b8f Doc: corrected link/autolink issues in corelib
Task-number: QTBUG-43115
Change-Id: I31da92e3a7c4dd7b75ee283dbfecd77e284978ca
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-24 08:44:13 +00:00
David Faure 4415fefcda QCommandLineParser: add support for hiding options from --help.
[ChangeLog][QtCore][QCommandLineParser] Added support for hiding options
from the --help output, with QCommandLineOption::setHidden(true).

Task-number: QTBUG-44298
Change-Id: I62cc2a55428365c0bcc79d2e47c72c0c92104e74
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-23 14:32:42 +00:00
Oswald Buddenhagen d34353a065 Merge dev into 5.5
Change-Id: Id6dbbbfc542c214fe695c6795c6aaf23aedc1cd1
2015-02-23 11:24:07 +01:00
Thiago Macieira 402f994f12 Timezones: Fix handling of offset-from-UTC QTimeZones
Those QTimeZones failed to convert to other timezones because the data()
virtual function was never overridden and reimplemented. That meant all
QUtcTimeZonePrivate objects were *really* UTC, with no offset.

Task-number: QTBUG-44600
Change-Id: Ia0aac2f09e9245339951ffff13c5294bb783c674
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-23 03:55:04 +00:00
Marc Mutz 6716fe8cfd QVector: fix use of invalid iterators in removeAll()
The c2m() function which converts a const_iterator into an iterator
is a broken concept for an implicitly shared container such as
QVector, because the act of calling begin() as the starting
point already detaches and invalidates the c2m argument.

This could be fixed in c2m, but the bug wasn't even in c2m,
but in removeAll(), which called end() before c2m, so the c2m
argument was already invalidated when entering c2m.

The solution is to store the positions as indices instead of
iterators before calling the first detaching function.

Task-number: QTBUG-44592
Change-Id: I66cf4f1277e71148a4d5b5bbfb6a3369ad02db68
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-22 13:45:50 +00:00
Marc Mutz 878cbbcb65 QDateTime: cache the result of date.timeSpec() in QDebug op<<
Saves a couple dozen bytes in text size on optimized AMD64 builds.

Change-Id: Iefd9ca05a7b27f240836c1e1e00df569742fcd7f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-21 16:58:46 +00:00
Marc Mutz de8a34b9bd QDateTime: drop quotes in QDebug output
As requested in review of 1d2efe1f27.
I didn't add a comma in front of the timeSpec() as the other fields
aren't separated by commas, either.

Change-Id: I54d74b7199ca7e46e28d2ceca22b02205e318c90
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-21 16:58:39 +00:00
Bjoern Thiel 9a950655fe Fixing Qt5CoreConfigExtras.cmake.in
The property INTERFACE_LINK_LIBRARIES has a single value
and is configuration independent.

Change-Id: I9130b1d0444563335825e3806f693a39f65ca67d
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2015-02-20 23:58:29 +00:00
Dmitry Shachnev 6f87e1b526 qstorageinfo_unix.cpp: Fix build on Solaris
Task-number: QTBUG-44556
Change-Id: I22d791011866175ca88de88c0b1a7c4d9d397d8f
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-20 18:06:29 +00:00
Tobias Koenig f7716a0899 Haiku: Extend QStorageInfo implementation
Provide the file system type, the name (label) of
the volume and the path to the associated device
(if available).

Change-Id: I7dd0d314d3f757e0f57c8f82beaf8ee21da86167
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-20 18:05:20 +00:00
Tobias Koenig 04ec8134e8 Haiku: Use 'unknown' as QSysInfo::productType()
There are no actual products of Haiku, so using
'unknown' (the default) is fine, otherwise the
file platform selector would be '+unix/+haiku/+haiku'
instead of '+unix/+haiku'.

Change-Id: Id7653098e20374885a50c09e2aaac9e6fcfc6efb
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-20 18:04:41 +00:00
Rafael Roquetto 7e2ef1fd21 Remove BlackBerry PlayBook support.
Reasons:
    - the PlayBook NDK is old and its compiler does not keep up with newest
      C++11 improvements inside Qt code.
    - the PlayBook NDK diverges considerably from the standard BB10 NDK,
      making it non-trivial to keep a common codebase.
    - It's a defunct platform.
    - Maintenance time is limited.

[ChangeLog][Platform Specific Changes] Removed BlackBerry PlayBook support.

Change-Id: Ia338aff55f4e4b747ebdecb0e1463a369a656c03
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Bernd Weimer <bernd.weimer@pelagicore.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-20 14:55:54 +00:00
Lisandro Damián Nicanor Pérez Meyer bc20d794cf Fix typo: properly write endianness.
Change-Id: I5240f6eef0eef85cbc6a9107f047f36e97b9a060
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
2015-02-20 11:45:29 +00:00
Michal Klocek edb2ad9117 Fix compilation on Android
Commit 81a45e1f13 replaced QSets with
QLists in QTimeZone, but forgot to adapt the Android code.

This commit fixes it.

Change-Id: I8704a39c44a9dc74147a4bb99a6f5d1bea53afa1
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-02-20 09:36:13 +00:00
Sean Harmer c38b6a3fde Disable constexpr support for QNX
Even though the compiler on QNX supports C++11, the stdlib it ships
with is missing constexpr on many important functions. This is required
to make qtbase compile on QNX 6.6.

Change-Id: I59a4263483b1d94b9d2dceb947876e445f9662af
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-20 09:11:54 +00:00
Thiago Macieira 4e40b19526 Remove __cdecl from Windows desktop atomics
winbase.h defines them without __cdecl, so we shouldn't add them
ourselves to our forward declaration. Doing so results in errors if the
user changed the default calling convention when compiling Qt:

qatomic_msvc.h(126): error C2373: '_InterlockedIncrement' : redefinition; different type modifiers
          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\intrin.h(242) : see declaration of '_InterlockedIncrement'

Task-number: QTBUG-44028
Change-Id: I1a800c709d3543699131ffff13c3d09fe53ba28b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-20 06:20:06 +00:00
Friedemann Kleint 8fbde82686 Fix MSVC 2013/64bit warnings about conversion from 'size_t' to 'int'.
tools\qstring.cpp(243) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
io\qdebug.cpp(287) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
io\qdebug.cpp(292) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
io\qdebug.cpp(305) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
io\qdebug.cpp(312) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

Change-Id: I20b92b0783f4859e9da83364b4ec86dd8bbd1c4c
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-02-18 11:01:24 +00:00
Alexander Volkov 72d5c84407 Doc: Fix QTextStream::readLine() snippet
The old snippet is incomplete because it misses an extra check
in the loop body that the line is not null.
Use the new readLine() overload to keep it simple.

Change-Id: Ie9f13291ca6ff6f546b81f100ce58d747f0dd12f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-18 08:54:27 +00:00
Marc Mutz 3769f7c974 QDate/QTime: mark some functions constexpr
Change-Id: Icbac388337d561f61a9a53163c3ddfc748935a2f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 19:58:32 +00:00
Jani Heikkinen cb95fff1c7 Fixed license headers
Change-Id: Ibebe1318d1c2de97601aa07269705c87737083ee
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-17 18:46:09 +00:00
Marc Mutz 1649b973fd QPair: add noexcept to ctors and assignment operators
Change-Id: Id201d1f1e7a087083ca6c13ab31c721e672ef566
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:05:40 +00:00
Marc Mutz ddd61b4aec QList: share implementation of operator== with QVector where possible
Same change as was already applied for count() and contains().

Change-Id: Ibd62e4b36e03741993ba33e730c9449ef19bff5f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:05:23 +00:00
Marc Mutz 18885297de QList: share the implementations of contains()/count() with QVector where possible
If QList data-layout-compatible with QVector and a C array, implement count()
via std::count() and contains() via std::find() and use const_pointer
instead of const_iterator as the iterators. This essentially makes
the QVector and QList implementations identical to each other, at least for
important cases such as QString.

To switch between the different implementations, use tag dispatching instead
of the previously used technique "use 'if' as if it were 'static if'", which
imposes accidental requirements on the element types (something that esp.
QVector is plagued with).

Change-Id: I6caf74442a22059676b5bf115a6089768f3a0952
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:05:15 +00:00
Marc Mutz 40d6e8adf5 QList: prepare for tag dispatching based on memory layout
Add one tag class for each of QList's three different memory layouts
to QListData, and inherit QList<T>::MemoryLayout from exactly one of
them.

To simplify overloading, added tag classes that express the negation
of the two extreme poles of memory layout (C-compatible and heap),
too. The "missing" one could be added when needed, too.

Change-Id: I45ea603731499fd3fdfb37d60a0a98fb22ac15ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:05:07 +00:00
Marc Mutz 647ad3fe25 QDate: optimize QDate::toString()
Instead of using a QString::arg() cascade, which creates tons of
temporaries, use good 'ol sprintf().

Effects on Linux GCC 4.9 stripped release builds:
 text   -216B
 data    +-0B
 relocs  +-0

Change-Id: I6ff551cb9f42e0c05a64f03a8e177fb527915481
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:04:36 +00:00
Marc Mutz 8f553484fa QDateTime: optimize toOffsetString()
Instead of using a QString::arg() cascade, which creates tons of
temporaries, use good 'ol sprintf(). As a consequence, this
function is now inlined into all four callers and the total
executable size _still_ goes down:

Effects on Linux GCC 4.9 stripped release builds:
 text   -420B
 data    +-0B
 relocs  +-0

Change-Id: I10d6abd94b489db7c2f01dc5424f30a798602522
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:04:24 +00:00
Marc Mutz 5b7729ae79 QDateTimePrivate: make bit manipulation code more readable
...by using var op= ... instead of var = var op ...

No change in executable code size.

Change-Id: I1c29ff6700f0f21be07768af8d002f0823c89fbd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-17 15:04:13 +00:00
Marc Mutz 94078f8645 QDateTimePrivate: remove pointless comparisons
For any 1-bit flag:
   bool(var & flag) <=> (var & flag) == flag
but gcc didn't seem to get it:

(Surprising) effects on Linux GCC 4.9 stripped release builds:
 text  -4936B (!!)
 data    +-0B
 relocs  +-0

It seems this enables some dead code detection, but
I must confess I don't quite understand how such a
small change can have such a dramatic effect on the
executable size, even after diffing the assembler
output.

Change-Id: Ia307fde0de16160ea51bbb3ed6c1ff203d4f9091
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:04:01 +00:00
Marc Mutz df0d933db5 QDateTimePrivate: remove pointless copy ctor
The compiler-generated one is just as fine, more maintainable,
and doesn't inhibit moves (which probably doesn't matter here).

No change in executable code size.

Change-Id: Ideee493a5911808430d3e09e6eb07e91d7a19b12
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:03:47 +00:00
Marc Mutz 70bfc75d18 QDateTime: replace out parameters with return-by-value in rfcDateImpl()
Compilers *really* don't like out parameters.

(Impressive) effects on Linux GCC 4.9 stripped release builds:
 text  -2512B
 data    +-0B
 relocs  +-0

Change-Id: I0fe370a438f7b82aaa9cc04ddd56e45a5969e7a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:03:34 +00:00
Marc Mutz d8d114989a QDateTime: optimize rfcDateImpl()
Get the captured texts once and use indexing into the QStringList
instead of repeatedly calling QRegExp::cap(n).

(Impressive) effects on Linux GCC 4.9 stripped release builds:
 text  -2876B
 data    +-0B
 relocs  +-0

Change-Id: I3a02eab1a691f31c30654cd89a0c030414b40de0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:03:18 +00:00
Marc Mutz 62475eb8b0 QDateTime: change an instance of out parameters to return-by-value
Compilers don't like out parameters.

Effects on Linux GCC 4.9 stripped release builds:
 text   -528B
 data    +-0B
 relocs  +-0

Change-Id: I32ee1a6c4388900bacfc6eb20feb4b81d71cb1f2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:03:08 +00:00
Marc Mutz 81a45e1f13 QTimeZone: don't use QSet, use sorted QList
QSet, as a node-based container, requires one memory allocation per element
inserted. QList, as a contiguous-memory container (at least in the case of
a QByteArray payload), requires one memory allocation per container.

The higher lookup speed might still speak for using QSet, but there are only
two uses of the sets:

1. Checking for existence (or lack thereof) of timezone names.
   For this, first generating a container full of data just to check for
   existence of one item of data is extremely wasteful. The QTZPrivate
   API should be extended to allow said lookup to be performed on the
   native data store instead.

That leaves

2. Returning a sorted(!) list(!) from the public QTimeZone API.
   There is no reason why, during the construction of those sorted
   lists, the data should be held in a set. Instead, the well-known
   technique of first cramming everything into a result container,
   which is subsequently sorted and has its duplicates removed,
   can be used here.

Saves more than 8K of text size on AMD64 stripped release builds.

Change-Id: I71c2298e94e02d55b0c9fb6f7ebeaed79a1fe2db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-17 15:02:45 +00:00
Christian Strømme 02c5657a7d Android: Fix local ref handling.
We where allowing conversion from jobject to QJNIObject without taking
ownership of the jobject. Since we are managing the JNI environment we
should not allow conversions without having the option of taking
ownership of the local ref. This is now done by making the conversions
explicit, i.e., local refs are converted through
QJNIObjectPrivate::fromLocalRef() and global refs through the
QJNIObjectPrivate's jobject constructor.

This change breaks SC, but the API is private and no usage have been
found outside QtBase.

Change-Id: I3175f171699ec3f8e65144aaebc6246bc6e5bb4d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-17 14:30:32 +00:00
Yoann Lopes 921dd85c7a Android: fix timed QWaitCondition::wait() on Android >= 5.0.
wait() was always returning immediately, regardless of the timeout
value, due to a timespec comparison from different clock types.
On Android 5.0, qt_gettime() uses the monotonic clock but the wait
condition was using the real time clock.

__pthread_cond_timedwait_relative() is not exported anymore in
Android 5.0, we therefore fall back to pthread_cond_timedwait().
Since the monotonic clock is now available, qt_gettime returns
a time based on it. The wait condition consequently needs
to use the monotonic clock.

Change-Id: Ie7cf909b81107edd7207c3c039b3ec1f5422303f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-17 13:56:49 +00:00
Joerg Bornemann 732c994876 work around MSVC level 4 warning
Change-Id: Ide3541a8a1a16a1f9b6b01f54d5b2f6ab178c3ac
Task-number: QTBUG-7233
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-02-17 13:44:10 +00:00
Frederik Gladhorn 393fc2d4f5 Merge remote-tracking branch 'origin/dev' into 5.5
Needed due to license header patch.

Change-Id: Id7e30490132a7c487687a0a376419e9f9b97ea41
2015-02-17 12:35:29 +01:00
Olivier Goffart 50e2bc2aa0 Fix QDebug cumulating operator<< with many Q_ENUM
The problem is that the operator<< was taking a non-const reference to the QDebug
object. This causes a problem as all other operator<< return a temporary.
Since every other roperator<< takes the QDebug by value, we should also take it by value
in this case.

Move the operator<< in qdebug.h because i don't want to #include qdebug.h from qobject.h
And move the qt_QMetaEnum_debugOperator to be in the corresponding .cpp

Task-number: QTBUG-44462
Change-Id: Ia01629224c58930c2997e767efc43de90d6309e2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-17 06:17:59 +00:00
Thiago Macieira b584648df1 Use Clang 3.6's __builtin_assume in Q_ASSUME
It's more efficient than the current implementation. Example:

int f(int i)
{
    Q_ASSUME(i < 8);
    return i < 8;
}

Before:
        cmpl    $8, %edi
        setl    %al
        movzbl  %al, %eax
        retq

After:
        movl    $1, %eax
        retq

Change-Id: I1a800c709d3543699131ffff13c1c50713a8da2c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:42:04 +00:00
Thiago Macieira 738e9b185c Fix Intel compiler warning about change of sign
The variable c is unsigned, so the second operand is unsigned,
constraing the -1 to be unsigned too and causing a change of sign.
Instead, cast the middle operations to int, as that's the return value
anyway.

error #68: integer conversion resulted in a change of sign

Change-Id: I1a800c709d3543699131ffff13c2fd79f14f8b43
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-17 00:42:00 +00:00
Sérgio Martins fbeeaf23fe Introduce QT_NO_MIMETYPE
The mime type stuff generates one of the biggest translation units in QtCore
due to the compressed 1.7MB freedesktop.org.xml resource.

With QT_NO_MIMETYPE, libQt5Core.so is almost 400Kb smaller
(4.8MB->4.4MB gcc 4.9 stripped release build)

Change-Id: I5339090994034355724ff4deddb64720e81baeaf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-17 00:06:47 +00:00
Allan Sandfeld Jensen 515e802ae2 Use C++ <cmath> instead of <math.h>
Including math.h can pollute the default namespace, and break
some compilers if cmath versions of the method are declared as using.

Switching to C++ math functions also greatly simplifies handling of
float qreal as C++ automatically chooses the right method.

[ChangeLog][QtCore][QtMath] qmath.h no longer includes math.h, so any
sources depending on that indirect inclusion may fail to build.

Change-Id: I4d0e331dafba354ec05dc5052e61ef4ff8d387fe
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-02-16 16:21:15 +00:00
BogDan Vatra 3d835eb62e Android: Fix compile on arm64-v8a
Android arm64-v8a redefines _POSIX_C_SOURCE to 199506 if _XOPEN_SOURCE is defined.

Change-Id: I04ff616eaac6e08094fc1f58f49bc5a2c31733f0
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-16 16:05:29 +00:00
Florian Bruhin 6aac5c5cf3 Fix links in plural words.
In some documents, "{QObject}s" was used which didn't show up as link. This is
fixed by using "\l{QObject}s" instead.

Change-Id: I90dbd543790842b242a11f3f94a32d4273ebb38d
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-16 08:58:34 +00:00
Thiago Macieira afb52763aa Doc: clarify what QUrl::topLevelDomain actually does
Task-number: QTBUG-44390
Change-Id: I1a800c709d3543699131ffff13c19789a12dac0b
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-16 05:31:17 +00:00
Marc Mutz 1d2efe1f27 QDateTime: micro-optimize QDebug op<<
Instead of constructing a QString that describes the QDateTime
instance, stream the constituents of the string into QDebug
directly, using op<< for Q_ENUM, now that it's available.

Adapt test to new format of enums.

Effects on Linux GCC 4.9 stripped release builds:
 text  -1068B
 data    +-0B
 relocs  +-0

Change-Id: I1a5ce28904edd7d0f6c8d982fd41c52e3536e036
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 19:38:59 +00:00
Allan Sandfeld Jensen 839f38bcfa Remove support for some very old compilers
Remove code supporting gcc 4.0 and earlier, and MSVC 2005 and earlier.

Change-Id: I3304e11bb38c101f113c124e8e533c5578badf34
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-15 12:39:29 +00:00
Richard Moe Gustavsen f9bb92df24 qstandardpaths_ios: add system path for PicturesLocation
For PicturesLocation we add a second path pointing to
system assets. This url is understood by both QFile (using
a dedicated file engine), and QFileDialog, such that if
you point the dialog to the url, it will show a native
image picker dialog.

Change-Id: Ic79393440ab399ed4802cc6d84ec7ad36cbb9369
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-02-15 11:12:12 +00:00
Olivier Goffart 0b7ec36816 Add conversion between Q_ENUMs and strings in QVariant
Change-Id: I9264a68d162cf20db0167dd3f976a007477786d1
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-15 08:48:01 +00:00
Jani Heikkinen 2b75c156b6 Updated BSD licensed file headers
Change-Id: I6441ff931dbd33b698d762e6f6784898f3f60fe7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-15 07:41:17 +00:00
Thiago Macieira 8d9d2a7b85 Optimize the Latin1 conversion code in the JSON parser with SSE2
This also reduces the number of variables modified in each loop from two
(l and i) to one (just i) and avoids calling str.length() all the
time. Those should be no-op changes, but why not help the optimizer?

Change-Id: I8895c35f84d545dba45bffff13bc4147ae53eaab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-15 06:35:38 +00:00
Thiago Macieira a945124a42 Make the detection of the number of cores on Unix prettier
This is a no-op change. It doesn't improve or worsen the code at all.

Change-Id: Ifd5273842370ca9bce0ed74f2f2d54d453797948
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-15 01:30:53 +00:00
Thiago Macieira 0fa7374f1d Ensure that the binary JSON objects are actually sorted
QJsonObject requires that, since it does binary searches for the keys.

Change-Id: I8a7a116f51864cecb52fffff13bc24660c1cc1ac
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-15 01:22:59 +00:00
Olivier Goffart 2be0d3088f qFormatLogMessage: optimize %{backtrace}
backtrace_symbols is very slow because it tries to find the function
name from the address. In order to do that it needs to do a linear search
over all symbols. (Because the hash table goes the other way to find the
address from the symbol name)

The code is going to skip a few frames from QtCore. Since we cannot know
how many, we take a few more than necessary.
This patch changes the additional number of frames from 15 to 7
(Usually, there are about 5 suppressed frames).

We call backtrace_symbols several times for only one frame at the time.
So we are not looking up addresses we don't need after we printed the
right number of frames.

Calling many times backtrace_symbols means we do more malloc, but that's
negligible compared to the time we save. We anyway do a lot of other
allocations because of the regexp operations and such

So this patch is then saving about 10 frames lookups which allow to print
about 6 qDebug per miliseconds instead of only 2 when using %{backtrace depth=2}

Change-Id: Ic6ece2145d53dc570c80fcb0e4455dcef6bc40cb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-02-14 18:43:35 +00:00
Friedemann Kleint e812358ba8 Animation classes: micro-optimize loops.
Don't use index-based iteration, but use iterators assigning
end() to a variable.

Change-Id: Ia87532349855fa3baa748b62224fc8adf3395dc0
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-14 16:24:40 +00:00
Marc Mutz 1c4e2b02aa QDateTime: make qt_monthNumberFromShortName() static
It wasn't Q_DECL_EXPORT'ed, and there is no other user in QtCore.

Effects on Linux GCC 4.9 stripped release builds:
 text   -344B
 data    +-0B
 relocs  +-0

Change-Id: Iea0577d58057a145f87a00ec33995d03bacd4f88
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-14 08:13:51 +00:00
Marc Mutz 4fbd6ee52e QDateTime: use existing functions for short month name parsing
...instead of rolling a new one on each use.

Effects on Linux GCC 4.9 stripped release builds:
 text   -156B
 data    +-0B
 relocs  +-0

Change-Id: I49e20ea859928d010990fc7a22545dbc1ef106ec
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-14 08:13:45 +00:00
Marc Mutz db569428c6 QDateTimePrivate: enable read caching on m_status in setDateTime()
Help the compiler by building the new status flags in a local
instead of a member variable. Enables value tracking for that
piece of data across several non-inline function calls, leading
to less redundant reads through this->.

Effects on Linux GCC 4.9 stripped release builds:
 text   -248B
 data    +-0B
 relocs  +-0

Change-Id: I2db21439464ad0fff8163a908de3b15df7c4ab6d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-14 08:13:38 +00:00
Marc Mutz 9a34fed728 QDateTime: pass explicit length to QLatin1String ctor
Apparently, determining that constant at compile time is a bit too much
work for GCC.

Effects on Linux GCC 4.9 stripped release builds:
 text   -276B
 data    +-0B
 relocs  +-0

Change-Id: I23144e64d57e3a2e1061e69b20f2b72575c273d8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-14 08:13:29 +00:00
Marc Mutz 0d0812db55 QDateTime: avoid relocations
The short month names all have length 3, so store them in a multi-
dimensional const char array instead of as a pointer table.

Effects on Linux GCC 4.9 stripped release builds:
 text   -196B
 data    -64B
 relocs  -12 (est., somehow relinfo.pl reports nonsense on QtCore)

Change-Id: If5f83e4f1eb5ba0b0f54b4144abec8b88fb8529f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-14 08:13:21 +00:00
Tobias Koenig e731a96ac1 Haiku: Implement QStorageInfo for Haiku
Use Haiku's BVolumeRoster API to provide information
about available mount points in QStorageInfo.

Change-Id: I058bbb5f3f33372edc55d3e51079d3e16815f29f
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-14 08:12:15 +00:00
Olivier Goffart 2ad8c14d38 QMetaType: improve docs and comments
Change-Id: I7bcc8cec95eb5abda75d936732b1113b943622dc
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-14 00:25:01 +00:00
Olivier Goffart 2f38c3fa04 Document Q_GADGET
[ChangeLog][QtCore] Classes with the Q_GADGET function can now have properties and
invokable methods. QMetaMethod and QMetaProperty have new overloads that can be used with
a pointer to a gadget. The QMetaType system also gained knowledge of types with the
Q_GADGET macro

Change-Id: I017475f3809181c64fdd66f899e461ad27f5ae47
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-02-13 20:42:00 +00:00
Konstantin Ritt 9b67d89c24 Pass params of shareable type by const-ref rather than by value
...where passing them by value was not intentional.

Change-Id: Ifd5036d57b41fddeeacfbd3f5890881605b80647
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-13 16:29:16 +00:00
Peter Hartmann e9f30968ad QUrl effective TLDs: update table
There are more than 1000 new entries since the table has been
generated the last time.
Some auto tests needed to be adjusted, because some entries in
the TLD table were removed while others were added.

Change-Id: I4ceec392836d2031dfef49a0c5a857c31b36bb4c
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-02-13 07:28:17 +00:00
Allan Sandfeld Jensen 20598f53df Improve conversion of QVariants with QJsonValues
Adds conversion from QJsonArray and QJsonObject, and report missing
conversion failures for other QJsonValues.

Change-Id: Ic0c3a952657912401db877b068f7fcc3c08c94c2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 20:21:11 +00:00
Friedemann Kleint 1d38ecf542 QTextCodec: micro-optimize loops.
Don't use index-based iteration, but use iterators.

Change-Id: If8dabd56ff880191bb53861e31bfa6a007802c9c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:42:24 +00:00
Marc Mutz c94d41d903 QDateTime: prepare for constexpr'ification
Make sure from{JulianDay,MSecsSinceStartOfDay}() are in a constexpr'able form
by introducing new private ctors that allow formulating these functions as
single expressions.

Change-Id: Iee98edb74e63c32e98781b885bbb2c5ef5867fd9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:40:14 +00:00
Marc Mutz 05c38a9111 QtCore: assorted migrations to QString::asprintf
Change-Id: Ie99d3eeeced89dd8336717954fd5ca7117bb20b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:40:04 +00:00
Marc Mutz abcb5471b7 QCoreApplication (Windows): migrate to QString::(v)asprintf
Change-Id: I9628a96eee9b6afd7532ac65d61054d1117335ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:40:00 +00:00
Marc Mutz dee800e9e9 QLogging: use return-by-value in qt_message
This also enables NRVO in almost all callers (a macro
prevents it in one case), saving one default construction
and one (move) assignment per call.

Effects on Linux GCC 4.9 stripped release builds:
 text   -896B
 data    +-0B
 relocs  +-0

Change-Id: Id3cde01057baaa408c4cbf95d8d15eaeeeec1604
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 19:39:35 +00:00
Marc Mutz 2cb7f28ec9 QtMiscUtils: make toHex*() constexpr
Bring them into a constexpr'able form, by indexing into the
string literal directly instead of into a static const char[],
which is a declaration not allowed in a C++11 constexpr
function, then mark the functions constexpr.

Change-Id: I6b32a55bf24f85caeb980c0c855b8db0952f914c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-12 19:39:26 +00:00
Sune Vuorela db631a88a0 Avoid hardcoding build date in qtcore and tools
To ensure QtCore can be rebuilt and get the exact same results,
it is undesirable to hardcode the build date into the library

Also deprecate QLibrayInfo::buildDate since it is relies on the build
date. QLibraryInfo::buildDate was originally meant for evaluation
licenses and such, but isn't used for that any longer.

Change-Id: I98e91ca3e55f877e6ac0e02de289dc29422fc9da
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-12 18:34:23 +00:00
Tobias Koenig 25d2e1232b Haiku: Enable usage of realpath implementation
Haiku supports the realpath implementation, but failed the
original #if check because of the wrong _POSIX_VERSION.

Change-Id: Ibad12de3bf7c1031b2dff3026b5c61e5afd3f3e6
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 17:51:48 +00:00
Tobias Koenig 7b9b54b114 Haiku: Use setenv and unsetenv POSIX functions
The _POSIX_VERSION declared in Haiku is 199009L, so we have
to enable support for setenv/unsetenv explicitly until
Haiku POSIX version is updated.

Change-Id: Ic22374253b0512a6a816257db83b0c649be0585d
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 17:51:15 +00:00
Liang Qi ce10188aa9 Expose TabFocusBehavior in QStyleHints
TabAllWidgets in QPlatformTheme is replaced by TabFocusBehavior.

[ChangeLog][QtGui] Expose TabFocusBehavior in QStyleHints

Change-Id: Iafaad7c6a5c6bc888d1e124e6ddcdbdc46f37b1c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-02-12 13:30:01 +00:00
Marc Mutz f8dd268e50 qtimezone.h: include correct header
QSharedDataPointer is declared in qshareddata.h, not qsharedpointer.h

Change-Id: I4702f346ae01a8de07a6a9b50f951d2d4a89e1fb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 12:55:54 +00:00
Rafael Roquetto 86c6804a41 QNX: fix compiler detection.
Short version: fix build on QNX 6.5.0.

C++11 has been included on QNX 6.6.0's libcpp (Dinkum C++11 libs), while
continuing to be unsupported by the older QNX 6.5.0 toolchain.

This patch updates the mechanism for detecting the QNX's libcpp that is being
used during compile time, and also updates the list of C++11 features to be
disabled when QNX C++11 support is not present by adding
Q_COMPILER_UNICODE_STRINGS and Q_COMPILER_NOEXCEPT to it.

Change-Id: Iddb3626206a0d97d7103c1ff17ba0ae953e9a4b9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-12 10:09:37 +00:00
Marc Mutz bdf43cac03 QProcess: remove a use of QString::sprintf()
Instead of using QString::sprintf() (and converting the result back to QByteArray),
simply do the conversion from uchar to octal digits ourselves, using QtMiscTools.

Change-Id: I452c085b717c71609cd1a9465e31d90e6a0ba54b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:49 +00:00
Marc Mutz 9400295a7c QTzTimeZonePrivate: replace an inefficient QList with QVector (IV)
The QTimeZonePrivate::Data type is larger than void*,
so holding them in QLists is horribly inefficient.

In addition, this type is held elsewhere in QVector,
so do that here, too.

As well as being faster, also saves 1.3K of text size on
optimized AMD64 builds.

Change-Id: I1ecf3ee0d955f6b19d2269204e2febc2ba2a9d9d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:45 +00:00
Marc Mutz a1036990ff QTzTimeZonePrivate: replace an inefficient QList with QVector (III)
The implementation-private QTzType type is larger than void*,
so holding them in QLists is horribly inefficient.

Fix by  holding it in QVector instead (it was already marked
as a primitive type before).

Text size grows by ca. 0.5K, but of course we got rid of all
those pesky heap allocations.

Change-Id: I3b70ed36fa9947b695ffc87c6f6199daa13cb7cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:42 +00:00
Marc Mutz ad67867d49 QTzTimeZonePrivate: replace an inefficient QList with QVector (II)
The implementation-private QTzTransition type is larger than void*,
so holding them in QLists is horribly inefficient.

Fix by declaring it as a primitive types (it just contains
various integers) and holding it in QVector instead.

Also optimize parseTzTransitions() by preallocating the expected
number of transitions and streaming directly into the container,
resizing to the number of successful read items on error.

Saves roughly 0.5K in text size, too.

Change-Id: Iadec7a7b0721893e477e1778c9fb54afd6e49544
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:38 +00:00
Marc Mutz ddbf5f3c33 QTzTimeZonePrivate: replace some inefficient QLists with QVectors (I)
Both QTzTransitionTime and QTzTransitionRule are larger than void*,
so holding them in QLists is horribly inefficient.

Fix by declaring them as primitive types (they just contains
various integers) and holding them in QVector instead.

While we're at it, make the equality operator for QTzTransitionRule
a constexpr, noexcept non-member, and provide the inequality operator,
too.

As well as being faster, this also saves 1.5K of text size on optimized
AMD64 builds.

Change-Id: I37100522f19556101c334625818dcf8c9a712dd9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-12 09:58:35 +00:00
Marc Mutz 1355ac5b05 Add Q_DECL_CONST_FUNCTION and Q_DECL_NOTHROW to qPopulationCount
Change-Id: I7602936b7064d6a87cd9fbfc4ab22a8fc881b9e9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-12 09:58:29 +00:00
Marc Mutz 08ab00e749 QString: optimize number() and setNum()
Previously, number() was implemented in terms of setNum().

That makes no sense whatsoever. It creates a temporary
value which requires the function to have an exception
table and an unwinding trampoline. It also introduces
a default constructor (in number()) and a copy assignment
(in setNum()), which breaks the chain of RVOs originating
in the QLocaleData functions.

Instead, implement setNum() in terms of number().

This makes setNum() such a premature pessimisation that
it's probably best to deprecate it in the near future.
There are not many users of it in qtbase left, and it
just pollutes the QString interface.

Effects on Linux GCC 4.9 stripped release builds:
 text   -708B
 data    +-0B
 relocs  +-0

Change-Id: I015c9ddb1ba9c98c2c55e38e54ef7894954ac4ca
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-12 09:58:17 +00:00
Marc Mutz 10d3f603f0 QLogging: prevent qt_message from being inlined into each of 14 callers
Effects on Linux GCC 4.9 stripped release builds:
 text  -2024B
 data    +-0B
 relocs  +-0

Change-Id: I1a315eb0f94ade2b40be62770c6ddcfc56da9ec0
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:13 +00:00
Marc Mutz bcfb535e82 QLogging: avoid a needless check
QString::vasprintf() deals just fine with a nullptr format string,
so don't check manually.

The main advantage of dropping the check is that in two of three
cases, we can replace assignment with initialization, thus saving
one default ctor and one (move) assignment.

Change-Id: I08dd24111cd0b92f21ef9f1c3e352ede0f66afe0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:10 +00:00
Marc Mutz 4b9a0c0a7c QLogging: migrate to QString::(v)asprintf
Change-Id: I63141c258c9409b03ce23cd77b90c4e4bc3487ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:06 +00:00
Marc Mutz d251cae7b7 Long live QString::asprintf()!
asprintf() is a GNU extension that prints into a string it
allocates internally. Arguably, that's a better name for
QString::sprintf() since it also allocates memory internally.

The main problem with QString::sprintf() isn't that it's
dangerous to use (it is), but that it's not static. It also
returns a reference instead of by-value, breaking RVO.

There is a comment about removing this function completely
in Qt 6.0, but it remains the only printf-style function
in Qt that can allocate the target string, so it's vital
for logging, e.g., and the recommended replacement code
(http://linux.die.net/man/3/vsnprintf) is a nightmare.

So this patch adds static (v)asprintf() methods to replace it.

Further patches will fix up all in-tree callers and finally
deprecate the old (v)sprintf().

Test coverage is provided through the existing tests of
sprintf(), which is implemented in terms of asprintf().

Arguably, the in-tree callers show that QByteArray would
benefit from having an asprintf(), too, as most of the
in-tree code works around its lack with calls
to to{Latin1,Local8Bit}() after using the QString version.

[ChangeLog][QtCore][QString] Added asprintf(), vasprintf().

Change-Id: I8510f8d67c22230653ec0f1c252c01bc95f3c386
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:58:00 +00:00
Marc Mutz 575029f09b QtMiscUtils: add to/fromOct
...mirroring to/fromHex.

Change-Id: Ie06bd3cc636b0afbc97606eadb8980079a7677a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:57:51 +00:00
Marc Mutz 26d94c1ca7 QtMiscUtils: mark hex functions noexcept and fromHex constexpr
Change-Id: Ia5b63afa88a87ec995d76d48ac6c185168773369
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-12 09:57:46 +00:00
Olivier Goffart 9438da35ab Document that some types need not to be registered with Q_DECLARE_METATYPE
Change-Id: I2f9b119ebe72595620ec40c2c9b95b0a9defa848
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-12 07:12:46 +00:00
Olivier Goffart 3cf8e426f4 QMetaType: Automatic registration of Q_GADGET and Q_ENUM types
Change-Id: If43dcc2b77fea5ae3ec40cc847467fc21fbd2c83
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-02-12 07:11:04 +00:00
A. Klitzing 2af1277631 CMake: Introduce qt5_add_binary_resources
Optional parameter DESTINATION to set target rcc file

Example:
qt5_add_binary_resources(GenerateFixture "fixture.qrc")

Task-number: QTBUG-41728
Change-Id: I9dc2fe8e7d5e9ad3873b89f75ab84a2a1b9d1d29
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2015-02-11 20:59:35 +00:00
Mitch Curtis fe1726fd7d Document and further test that QJsonObject::keys() is sorted.
Change-Id: I6b145c1240cce85ad3fea6fb90ddbed629487f83
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-11 09:22:25 +00:00
Jani Heikkinen 83a5694dc2 Update copyright headers
Qt copyrights are now in The Qt Company, so we could update the source
code headers accordingly. In the same go we should also fix the links to
point to qt.io.

Outdated header.LGPL removed (use header.LGPL21 instead)

Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing
combination. New header.LGPL-COMM taken in the use file which were
using old header.LGPL3 (src/plugins/platforms/android/extract.cpp)

Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license
combination

Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe
Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
2015-02-11 06:49:51 +00:00
Friedemann Kleint 29daa7645b Windows: Reintroduce copy of argv.
Since argc/argv is modified by QCoreApplication-derived classes,
a copy of the original arguments is needed for comparison.

This fixes a crash in Qt Quick 2 tests (which use
the -qmljsdebugger=<port> argument) introduced
by dff18b8e80 .

Task-number: QTBUG-30330
Change-Id: Ic145ac923e0a7c504ab16602c8686268e4fd9700
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-02-10 17:00:05 +00:00
Laszlo Agocs 0866680bd9 Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2015-02-10 16:57:11 +00:00
Frederik Gladhorn 51ce5b4829 Merge remote-tracking branch 'origin/5.4.1' into 5.4
Change-Id: I9d668a655b548feab43e9d4b03e2437bdff76437
2015-02-10 09:55:09 +01:00
Frederik Gladhorn fc35f71434 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
	src/gui/image/qimage_conversions.cpp
	src/gui/opengl/qopenglextensions_p.h
	src/gui/text/qtextengine.cpp
	src/network/ssl/qsslsocket_openssl.cpp
	src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
	src/plugins/platforms/eglfs/qeglfsscreen.cpp
	src/plugins/platforms/eglfs/qeglfswindow.cpp
	src/plugins/platforms/windows/qwindowsfontdatabase.cpp
	src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp
	src/plugins/platforms/windows/qwindowsnativeinterface.cpp
	src/plugins/platforms/windows/qwindowsscreen.cpp
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/plugins/platforms/windows/qwindowswindow.h
	src/plugins/platforms/xcb/qxcbdrag.h
	src/widgets/itemviews/qabstractitemview.cpp
	src/widgets/kernel/qwidget.cpp
	src/widgets/util/qsystemtrayicon_p.h
	tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp

Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp
conflicts.

Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
2015-02-10 09:42:25 +01:00
Fatih Aşıcı 51ba25e0fc logging: Check if uClibc has backtrace support
execinfo.h is optional in uClibc. We need to check
__UCLIBC_HAS_BACKTRACE__ if uClibc is used.

Change-Id: Ie28be85b0b70472df1fc4a208581bb66ad34229e
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-09 22:58:29 +00:00
Kai Koehne 868201155f QtCore: Use QDebugStateSaver in (almost) all QDebug operator<<
Unify the behavior of the different operator<< by always using
QDebugStateSaver (appending an optional space at exit), and making
sure that the space(), nospace() setting isn't 'leaked'.

Change-Id: I38e4f82fa6f7419d8b5edfc4dc37495af497e8ac
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-02-09 11:30:02 +00:00
Thiago Macieira 447ff9a9f3 Fix compilation with Apple Clang 425
This version was based on Clang mainline between releases 3.1 and 3.2,
which means it has part of 3.2 features but not all. One of the missing
features is __builtin_bswap16.
Cherry-picked from ec9bc843d8 on 5.4

Change-Id: Ic5d393bfd36e48a193fcffff13b95664c7f664de
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-09 06:55:51 +00:00
Jochen Seemann 5380281fe1 WinRT: fix QLibrary::isLibrary() due to incomplete #if statement
Q_OS_WINRT was missing in the Windows-condition.
Condition was simplified through use of Q_OS_WIN.

Change-Id: I1a49d2d9c413dc2156930b6915e1675abcdde36f
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-07 13:26:37 +00:00
Samuel Gaist dd4b09ae1a Fix QLineF Detailed Description
Currently angle() is used in place of angleTo() to describe the
difference with intersect. This patch fixes that.

Task-number: QTBUG-44309
Change-Id: Idfc521932247f76fe15fd980ff8e87e52feec1f1
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-02-05 23:35:25 +00:00
Marc Mutz f246e380c3 QAbstractTableModel/QAbstractListModel: reimplement sibling()
This basically inlines the call to parent(), which unconditionally
returns QModelIndex().

The change is binary compatible, because even though we newly
override a previously non-overridden virtual method, it doesn't
matter whether old code still calls the base class' method, as
the new implementation is semantically equivalent, at least if
subclasses don't inherit parent() (but why would they).

[ChangeLog][QtCore][Important Behavior Changes] QAbstractTableModel
and QAbstractListModel now reimplement sibling() to avoid calling
parent() (which returns a constant). Subclasses of these models
that override parent(), will likely also need to override sibling()
now.

Change-Id: I9e0cb5622a6d3826e40acaf0e0cd3fdea85cba2d
Reviewed-by: David Faure <david.faure@kdab.com>
2015-02-05 18:31:21 +00:00
Olivier Goffart eb4f183127 Add a qDebug operator overload to handle registered enum
So if you stream enum type into qDebug, it will show the name
of the enum value instead of the int

Change-Id: Iec5e826623353560319890d3e7c4ab97d0645f4a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-05 14:28:27 +00:00
Olivier Goffart 9b72bcfd60 Introduces QMetaEnum::fromType
Change-Id: I1976c1844e52ef8d70a1bbe9945f3299428dbf87
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-05 14:28:18 +00:00
Olivier Goffart d43d03529f QMetatype: Register the QMetaObject of a Q_ENUM or Q_FLAG
Change-Id: Id1343c3fb51d88a43d4d97e8859dbe2b0cfbea34
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-02-05 14:27:59 +00:00
Oswald Buddenhagen 1043bf202b introduce /dev variants of qmake properties
these reflect the on-target paths (unlike /raw, which are host paths, just
without the -sysroot). this is necessary for anything deployment-related,
starting with RPATH.

Change-Id: I13d598995d0e4d6cb0dc1fc7938b8631cf3e3a95
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-05 14:27:06 +00:00
Oswald Buddenhagen 5b27d02c35 write relative paths to qconfig.cpp as far as possible
this cuts down the bloat in the binaries and the binary patching
requirements in the installer.

as a side effect, the sysroot and makespecs are not binary patchable any
more as well, which is ok, as the installer does not do it anyway.

we now also warn if -[host]<foo>dir is not a subdir of -[host]prefix, as
putting things outside the prefix is anti-thetical (the obvious
exception being the (unix-only) -sysconfdir).

Change-Id: I878f0e71a4dfcfd55b2f8b1cf3045b98b502569b
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-05 14:27:04 +00:00
Joerg Bornemann df3ffeec15 QProcess/Win: fix sporadic crash
QProcessPrivate::_q_processDied() was potentially called twice if there
was a slot connected to readyRead() that called processEvents(), because
the processFinishedNotifier was still enabled when readyRead() was
emitted.
This led to a null pointer access in findExitCode.

Change-Id: I4b796b81f050dc46bb9469602984accaa6ebfa28
Task-number: QTBUG-33731
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-05 13:43:57 +00:00
Friedemann Kleint dff18b8e80 Windows: Allow for passing a modified argv to QCoreApplication.
Check by comparing __argc/__argv whether a modified argv was
passed to QCoreApplication. If that is the case, build
QCoreApplication::arguments() from that argv instead of using
the command line.

[ChangeLog][Important Behavior Changes][QCoreApplication]
On Windows, QCoreApplication::arguments() now returns a list built
from argv on Windows as well if a modified argv was passed to the
class' constructor.

Task-number: QTBUG-30330
Task-number: QTSOLBUG-184
Change-Id: I2498bb554130e7bfaeada3aebe786dfdd0eb534d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-05 05:20:20 +00:00
Marc Mutz 83a3292342 QPair: work around std::move not being constexpr in C++11
Use a static_cast instead. This is not 100% equivalent,
since it's missing remove_reference<>, which we don't want
to depend on and whose emulation in qtypetraits.h is missing
rvalue support.

That will be fixed in dev.

Change-Id: Ib03754c81c904932943d3a5415b54ff107f4719d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-04 18:38:52 +00:00
Allan Sandfeld Jensen e1c9315829 Remove unnecessary math.h and limits.h includes
Change-Id: I28c898f869ed3f03b08ff55f2972a38667c755ad
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-04 15:31:41 +00:00
Olivier Goffart 7d6c6bc082 Use Q_ENUM and Q_FLAG for types in QtCore
Change-Id: I33590a9c4c6d87c5bbba1d201e32c6bf1bd3e00b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-04 14:59:35 +00:00
Olivier Goffart d446b1a5ef Use Q_ENUM and Q_FLAG in the Qt namespace
They need a special macro since they have a different metaobject

Change-Id: I2fa50b4b2e45990fb01771378765b42f03139183
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-04 14:59:22 +00:00
Sérgio Martins ad2ea16550 Fix 1700 override warnings [-Winconsistent-missing-override]
Classes should either use or not use override, otherwise it hurts
code readability.

Some inline keywords were removed because of an error with MSVC2010:
error C2216: 'override' cannot be used with 'inline'

Change-Id: I7276d5525a92281bd0d743beb11d0dc73441443b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-03 22:52:14 +00:00
Gabriel de Dietrich 7ab29c4ebb Allow exposing QItemSelectionModel to QML
This requires being able to create a QItemSelectionModel
without specifiying its model, and also setting the model
later. Also, several classes, like QPersistentModelIndex,
need to be declared as meta-type.

Finally, and in order to introduce the 'model' property,
we need to have a type compatible getter. Hence the new,
non-const model() function.

Where needed, meta-type declarations have been removed from
auto-tests.

[ChangeLog][QtCore][Item Models] QItemSelectionModel
can now be created without a model and have one set later.

Change-Id: If49bed061a5d1012331f335ca7f6e3959ecd3f1c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2015-02-03 18:40:19 +00:00
Albert Astals Cid 9718cb330c CMake: Fix QObject::connect failing on ARM
We need PIE, doesn't matter if reduce_relocations is used or not

Change-Id: I9a359b9d4443a6059980cd4c48058132ec4267fe
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-03 08:49:15 +00:00
Marc Mutz 7ee74f870b QTextStream: remove a use of QString::sprintf()
Instead of using QString::sprintf() (and converting the result back to QByteArray),
simply do the conversion from uchar to hex digits ourselves, using QtMiscUtils.

This function is a copy of a similar (but not identical) one
in qprocess_unix.cpp, but it's not clear whether they can or
should be merged (both are only conditionally compiled), so
this patch does not attempt to do so.

Change-Id: I0be87963f78a98e35a54c98c5fb444756c57b672
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-02 22:22:56 +00:00
Marc Mutz 11abc94b04 QTextStream: fix a warning with QTEXTSTREAM_DEBUG defined
The warning was:

   warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long unsigned int’ [-Wformat=]

Change-Id: I37dc13ca864d408e02c69102ba5208f8bfe70980
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-02 22:22:52 +00:00
Marc Mutz df6c4f9a65 QProcess: fix warnings with QPROCESS_DEBUG defined
The warnings were:

    warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long int’ [-Wformat=] (2x)

Change-Id: If8c2e8fab7388cb4aa7d6e7ceb5faee531e16006
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-02 22:22:47 +00:00
Dyami Caliri 2b99491692 Fix leaks in OS X bundle detection
There were several leaked CFStringRefs in the new OS X bundle detection
code that is part of QFileSystemEngine.

Change-Id: Id0817e9692da411c7eb8287b9bf71b99ae28f960
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-02-02 21:38:12 +00:00
Maks Naumov 5be5e8ff3a Call QDir::homePath() only when necessary in QSettings::initDefaultPaths()
Change-Id: I990520917ec65127ae554b5e872791cff78f0b56
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-02 16:15:55 +00:00
Oswald Buddenhagen 6e6b50f541 fix relative path resolution inconsistency in qmake properties
suppose we queried QT_INSTALL_DOCS/get. if no [EffectivePaths] existed,
we'd try [Paths]. if that didn't exist, either, we'd use the built-in,
which is relative. so we'd query QT_INSTALL_PREFIX ... without the /get,
which is technically wrong.

this doesn't currently matter, as all groups have the same built-in
defaults anyway, but it may (hint hint) matter later on.

Change-Id: I5a3746e80ca1bfbf2f37db3604cc351bddeacd94
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-02 11:14:32 +00:00
Oswald Buddenhagen f1836ecaf7 less preprocessor magic relating to qmake build
it's not worth making things more complicated to remove the duplication of
one real LOC.

Change-Id: Iddbd0db7d0f81b80192b3980dbe2316b246a3b57
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-02 11:14:29 +00:00
Oswald Buddenhagen 44fca87241 complete reversal of adding QLibraryInfo to the bootstrap library
amends 684028a64.

Change-Id: I8dcc4b74c4c0328c07711cd7253ff19a74ea2fbf
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-02-02 11:14:25 +00:00
Maurice Kalinowski 8c3ae221e6 WinRT: Gracefully exit an application
While it is not recommended by Microsoft to manually exit an
application, currently applications just hang when exiting main().

Instead when QCoreApplication::exit() is called use the CoreApplication
to properly invoke native Exit() and let the application completely shut
down.

Add a warning to notify developer about this non-standard behavior, as
usually the system is supposed to take care of suspending and closing.

Certification still passes for Windows RT and Windows Phone.

Task-number: QTBUG-43862
Change-Id: Ia34443ea75daaaeca0bee2a0c9fcc568c0659262
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-02 10:26:47 +00:00