Commit Graph

19892 Commits

Author SHA1 Message Date
Liang Qi
d3e6e732c7 Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	config.tests/unix/compile.test
	src/plugins/platforms/cocoa/qcocoahelpers.mm
	src/tools/qlalr/cppgenerator.cpp

Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
2016-02-02 15:57:44 +01:00
Marc Mutz
fdfd63053a QtBase: avoid uses of Java-style iterators [QHash, QMap]
Java-style iterators are slower than STL-style ones, so
they should not be used in library code.

Replaced them with C++11 range-for, STL iterators or, in
one case, qDeleteAll().

In one case, avoid a double hash lookup by using erase(it)
instead of remove(it.key()), which we can now do without
detaching, due to the new erase() taking const_iterator.

Change-Id: I96174657fed70f76120b2c9d8190b4e70d5d8179
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-02-02 10:20:00 +00:00
Frederik Gladhorn
ba8d343002 Remove warning about being unable to instantiate accessibility interface
This warning was a good idea when the plugins were needed to give a hint
where to start debugging. Now the a11y plugins were merged into
qtwidgets/qtquick, so there is no more need for this warning which may
pop up on custom widgets e.g. inheriting QWindow.

Task-number: QTBUG-50215
Change-Id: Ic5efbb3dfbd07a7139884126a2604b54c99005e4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-02-02 08:20:35 +00:00
Andy Shaw
0c019d7bd2 QDockWidget: Restore using setGeometry since the geometry is used for the state
This solves an instance where restoreState() was used when the
dockwidget was already floating and the saved state was also for
a floating dockwidget.

Change-Id: I1fe764ae2a6b0351ae26e33ffec682ad37c944d7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-02 07:43:13 +00:00
Dmitry Shachnev
b84c61b088 Stop Q_AUTOTEST_EXPORTing QKeyBinding and QKeySequencePrivate
The QKeySequence test no longer uses private members (since commit
725bdc3fd2), so that is no longer needed.

Also, remove the unused include from the test.

Change-Id: I4d252bb3efd7282f74c44e48444c23ab51d48ea5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-02 05:57:08 +00:00
Tor Arne Vestbø
d10bfff89a Revert "QWindow::destroy(): only reset QGuiApp::focus_window and friends as a last resort"
This reverts commit 4c71db7567.

It's too risky for 5.6, we should let it cook in dev for a while
and backport when ready.

Change-Id: I91e677e65d967f29c84a254cd3dffc8bb847b263
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-02-02 02:12:26 +00:00
Alex Trotsenko
57ca755d2e QRingBuffer: add append(const char *, qint64) function
This allows to remove a code duplication in several places.

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

Change-Id: I766fc08d0d7e48bf7dc2371309f6644c37c3b68b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-01 16:39:35 +00:00
Gatis Paeglis
ed2e157803 xcb: Ignore Mouse Enter:ungrab, Leave:grab events.
These are "special" XCB_NOTIFY_MODE_(UN)GRAB
Enter/Leave events and we do not have handlers for
them in Qt, so lets just ignore events with this mode.

Patch fixes Qt+ArchLinux+Awesome WM issues, where Qt
applications were receiving Enter/Leave events for
mouse clicks in the application window.

This patch does not affect "normal" XCB_NOTIFY_MODE_NORMAL
Enter/Leave event handling.

Task-number: QTBUG-45818
Change-Id: Ib70fdd9ed9200364a9753904f8e63d1ed9e2072f
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-02-01 14:39:36 +00:00
Jędrzej Nowacki
ad77422e82 Fix memory leak if QMetaType::create is called for an unknown type
The memory should be allocated only if we operates on a valid type,
It is a regression introduced by 3d575d4845

Change-Id: Ia31bccd5b41fe090c29df1aeaa69efb706cd25bb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-01 07:35:16 +00:00
Dmitry Shachnev
1e370a45bf dbusmenu: Make D-Bus menus and menu items enabled by default
There is no reason why they should be disabled, and also the current behavior
breaks the D-Bus platform menu bar implementation.

Change-Id: I8a8b5b6a66e40f1f1a25394dc87ac2178c7907fa
Reviewed-by: Martin Klapetek <mklapetek@kde.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-01-31 09:00:40 +00:00
Michal Policht
c7c7a22bb4 Fix flickering status tips in submenus.
Changed setCurrentAction() function so that it reselects parent menu
action only if mouse is over a menu and parent menu is not already
selected.

Task-number: QTBUG-47987
Change-Id: Id077d6ce1de1335ba2709180c8480af5d1720de0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Michal Policht <michpolicht@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-01-30 20:14:13 +00:00
Friedemann Kleint
14efcaa392 Windows QPA: Improve handling of windows of type Qt::ForeignWindow.
Extract a base class QWindowsBaseWindow from QWindowsWindow that provides
_sys() getters for geometry and margin calculation and implements
QPlatformWindow::geometry()/ frameMargins() to be calculated from the
HWND.

Implement a QWindowsDesktopWindow class directly inheriting
QWindowsBaseWindow which does not allow any manipulation.

Add a thin QWindowsForeignWindow class that wraps a foreign window id and
always returns correct geometry/margin information when queried. Simple
reparenting and manipulation of geometry for child windows is also implemented,
allowing for embedding foreign windows into Qt. When calling other setters on
it, the unimplemented warnings of QPlatformWindow will trigger.

Remove the special casing for foreign/desktop window from QWindowsWindow.
The existing mechanism to cache the geometry/margin values in QWindowsWindow
remains as is.

Rename the existing QWindowsWindow::baseWindowOf() and add checks there.

Task-number: QTBUG-50206
Task-number: QTBUG-41186
Change-Id: Ib57cb87e3981312d32920fe3e49f0b1c4ad516a3
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-30 16:08:14 +00:00
Thiago Macieira
157445e64a Fix GCC 6 valid warnings about misleading indendations
It's currently producing a lot of false positives, but a few are
actually valid.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69029,
 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69122 and some others.

Change-Id: I24a735698d3c4a719fc9ffff1425f29d7b5a3458
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-30 07:38:15 +00:00
Thiago Macieira
ded11c503f QtDBus: Remove unnecessary #ifndef for QT_NO_PROPERTIES
qfeatures.txt says that it depends on PROPERTIES, so this condition will
never happen.

Change-Id: I42e7ef1a481840699a8dffff1409e2e63c6857fa
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2016-01-30 03:21:12 +00:00
Timur Pocheptsov
6b285de8ec Fix QSocketEngineBackend::nativeBytesAvaible for UDP sockets
On OS X ioctl(... FIONREAD) on UDP socket returns more than expected:

"SO_NREAD returns the amount of data in the input buffer that is available to be received
 For datagram oriented sockets, SO_NREAD returns the size of the first packet -- this dif-
 fers from the ioctl() command FIONREAD that returns the total amount of data available."
(man getsockopt). On OS X bytesAvailable for UDP socket seems to include some headers also:
for a datagram of size 1 - bytesAvailable == 17, 2 - bytesAvailable == 18 etc.
Found in a broken tst_qudpsocket test.

Change-Id: I88be827c66208835ed10b010f13d9dc70576fea4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 23:07:09 +00:00
Tor Arne Vestbø
4c71db7567 QWindow::destroy(): only reset QGuiApp::focus_window and friends as a last resort
Resetting focus_window and other internal QGuiApplication variables before
calling setVisible(false) and destroying the platform window means that the
platform window can't reason about whether or not it was the focus window
unless it can resolve that using native APIs. We should let the platform
window take care of resetting the focus window and related states, and
only execute our fallback logic if the plugin doesn't do the right
thing.

We also use QPA to update the state instead of modifying the internal
QGuiApplication variables directly, so that events and signals are
emitted as a result of the reset.

The QLineEdit test gets two added calls to processEvents(), since
assuming that activateWindow() is synchronous is not correct, and
would result in the QMenu resetting the focus window to 0 on destroy.

Task-number: QTBUG-46414
Change-Id: I562788393ed0ffd77d7a4be2279862322f721c1a
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-29 19:29:14 +00:00
Tor Arne Vestbø
164c631d80 Move Cocoa key code helper functions to QtCore
Can be useful for e.g. testlib for handling native key events.

Change-Id: I6560c6e28799e25eb3bdcaa0f2ca3c17644c62db
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-29 16:32:21 +00:00
Friedemann Kleint
ae572a9808 Windows QPA: Clear maximized state before setting the normal geometry.
A sequence of state changes fullscreen, maximized and back can leave the
window in a maximized state after setting the top level style. It needs to
be cleared before applying the normal geometry, otherwise, the window ends
up with a maximized button and normal geometry. Amends change
e3288f246b.

Task-number: QTBUG-49709
Change-Id: I0bb4ac1d60693e25d5ee74e763d293405636bb13
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-29 15:16:44 +00:00
Friedemann Kleint
50489f2e41 Windows QPA: Fix drag cursor and hotspot for pixmaps with DPR.
Introduce separate scale factors for hot spot and pixmap and
set the devicePixelRatio of the scaled pixmap to 1 matching that
of the target pixmap which will be converted to a Windows cursor.

Change-Id: I0b0f6c6a79589ec954b5a1a09a86b87c91b5147d
Task-number: QTBUG-46068
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Alexandru Croitor <alexandru.croitor@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-01-29 14:16:09 +00:00
Friedemann Kleint
3cd69671db Windows QPA: Fix position of the fake touch drag cursor window for HighDPI.
Use QCursor::pos() to obtain the position in device independent pixels.

Change-Id: Ia54701c556188f40ba678341125114d113ffe8c7
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-29 14:15:43 +00:00
Sze Howe Koh
6dafafeff1 Doc: Properly document old platform-specific functions
qt_mac_set_dock_menu() needs a \relates command to show up properly.
"\since 5.2" produces "This function was introduced in Qt 5.2", which is
wrong; the function existed in Qt 4.

qt_set_sequence_auto_mnemonic() is referenced by the QShortcut class
ref, but the page that hosted it in qtdoc.git is being removed. Thus,
its description is now transferred here.

Change-Id: If009a45f1d04541787925cf230ed7b59c7db0b39
Reviewed-by: Alejandro Exojo Piqueras <suy@badopi.org>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-01-29 13:43:59 +00:00
Kai Koehne
7c797b4905 Bump copyright year to 2016
Bump copyright year in tool output and user visible strings to 2016.

Task-number: QTBUG-50578
Change-Id: I2f4aa9089c6672726f554cba7e6009b425d27683
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-01-29 13:30:04 +00:00
Tor Arne Vestbø
98dedefd0c Don't send regular key press event if it matched a shortcut
Regression after ee9621b9dc.

Change-Id: If4a5595d7f191563d0636ccee20cf0ac8c7c0f1f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-29 12:55:41 +00:00
Konstantin Ritt
293731cd4b QWindowsFontEngine: Get rid of some dead code
Q_DEAD_CODE_FROM_QT4_WINCE was never defined anywhere and there are
no other engines that do similar trick; so remove the code at all.
Consider this "feature" lost in WinCE history ;)

Change-Id: I99183a07ccb45b6b970cd33414708288bd0d7efa
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-01-29 11:25:03 +00:00
Konstantin Ritt
3e5719ae7b QFont: Fix possible cache misses due to misprepared cache key
Parse the requested family before we're looking/saving into the cache,
thus hitting the cached EngineData for:
* quoted family names (eg. QFont("'Arial'"))
* non-simplified family names (eg. QFont(" Arial  "))
* substituted family names (\sa QFont::insertSubstitution())
* explicit fallback list, where possible (eg. QFont("Tahoma, Arial"))

This also improves the cache hitting for the font engines in some cases.

Change-Id: I18cdc3e8d669cccec961f84e9b27329402e2b7ed
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-01-29 11:24:49 +00:00
Liang Qi
270cc073b7 Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6 2016-01-29 12:55:06 +00:00
Joerg Bornemann
0ec1e13234 Do not build QWindowsPipeWriter on Windows CE
QWindowsPipeWriter is not used in the Windows CE port.

Change-Id: I068dd2408bb21a7e2a86886e0692b1636016ff6a
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
2016-01-29 10:55:04 +00:00
Cédric Bonnier
e536523dbd Doc: Remove Qt3 compatibility functions from QToolButton
QToolButton's detailed description mentioned setToggleButton and
setPopupDelay which have been removed in Qt5.
Removed typo dependant > dependent

Task-number: QTBUG-50761
Change-Id: I9a2ff79a512127982c7961dee79fe2751f12cf43
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-01-29 10:38:40 +00:00
Edward Welbourne
81514c19c1 Revert "Correct floordiv() to cope with implementation-defined division."
This reverts commit cd9625fc3c.
The ambiguity in division, with negative operands, goes away in C++11
(where division is defined to truncate, hence round towards zero), so
we no longer need to be robust against it in 5.7.  Added suitable
commentary to make clear that we are relying on that.

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

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

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

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

Change-Id: Ib419a385b38f98070c06428da246d4580b0a0dbc
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:34:48 +00:00
Edward Welbourne
54ece34283 Avoid shadowing in QDateTimeParser::findAmPm.
A parameter was called index; but an inner block re-used that name.
Rename the parameter.

Change-Id: I2fa18f32aa129c5b1d8de6c4b6571438eeefea14
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-29 10:34:39 +00:00
Liang Qi
a81036c3cc Merge remote-tracking branch 'origin/5.5' into 5.6
Change-Id: I7831f560165fa08882ae54efeaea1f0146c3358c
2016-01-29 11:13:41 +01:00
Alex Trotsenko
7ff655360f Integrate QProcess into QIODevice's multistreaming infrastructure
As a result, this patch eliminates double-buffering in QProcess.

Change-Id: I436faa4a5ffc28ce77f959dd6089bef400ac39f6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-29 09:14:44 +00:00
Alex Trotsenko
8f92baf5c9 Adapt QFileDevice to use QIODevice's write buffer
Also, bump the TypeInformationVersion field in qtHookData, to notify
the Qt Creator developers that the offset of QFilePrivate::fileName
was changed and dumpers should be adapted.

Change-Id: I71bc5f509b733c0ab3430cd47ff08961f0388839
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-01-29 09:14:36 +00:00
Anton Kudryavtsev
f416561702 QNetworkHeadersPrivate: use erase and std::remove_if with QList
... instead of using erase in a loop, with quadratic complexity.

Change-Id: I91053ddb58639615e8864e5be20861e7cceb815e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-29 08:16:00 +00:00
Marc Mutz
49388f3dfd QGraphicsAnchorLayout: return a struct instead of a QList
... of QLists. The returned list was only ever exactly of
size one or two, and two only if a local QList in the
getGraphParts() function was not empty.

Instead of using a QList to return those QLists, use a
small struct of two QLists. This way, we avoid copying,
memory allocations, and the code becomes a lot clearer,
because we can give the members of the struct meaningful
names, instead of at(0) and at(1).

As a consequence, at the call site, the loop over the
result can now be collapsed into an if.

Saves ~1200b in text size on optimized GCC 5.3 Linux
AMD64 builds.

Change-Id: I5c2a3b3be0edcc418b310551abca51c410aca7c8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 06:16:28 +00:00
Marc Mutz
587c183608 QFontComboBox: optimize handling of icons for delegate
Instead of move-assigning a new QIcon to the default-
constructed members, initialize them directly in the
ctor-init-list. Do this for the other data member, too,
for consistency.

Also use QStringLiteral instead of QLatin1String as
the argument to the QIcon ctor. This is correct, since
the string will never be modified, and saves two memory
allocations.

Change-Id: I9398bbe9d0fd63db9b6cf856dd240ab334364518
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2016-01-29 06:16:17 +00:00
Marc Mutz
f2d1f3f1c7 QColor: plaster API with Q_DECL_NOTHROW
This is mostly straight-forward, but some things are worth noting:

1. Yes, this is necessary. The noexcept operator looks for noexcept tagging,
   not at the contents of the function to determine whether to return true.
   The more conditionally-noexcept functions are used, the more important it
   becomes that low-level classes are correctly marked noexcept. In that, it
   is like constexpr.
2. In accordance with the rules governing noexcept specifications for the
   standard library itself, the get*() functions, as well as any function
   taking (but not returning) channel values as ints or qreals, or taking
   QStrings are not marked as noexcept, since they have preconditions and
   thus a narrow contract. Narrow-contract functions should not be noexcept.
   All other functions have wide contracts (ie. no preconditions).
3. Any function returning QString can throw (bad_alloc).
   Consequently, they, too, are not marked nothrow.

Change-Id: I023356ba1b9a4b057e613cd45380a89b222dc09d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 06:16:13 +00:00
Anton Kudryavtsev
74a7454b37 QNetworkProxyFactory: don't re-call QUrl::scheme() in if-else chain.
... Just cache it.

Change-Id: Iae70e09233b237d904ab100f46f8dc7ab9ac8e04
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 05:31:15 +00:00
Louai Al-Khanji
e65ffae850 QEventDispatcherUNIX: Clean up thread_pipe logic
Change-Id: Ic13ad54a5b3c7bd3e3e5921b3dbbe321690fad21
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-29 03:49:24 +00:00
Mark Brand
dae6445e26 update bundled sqlite to 3.10.0.2
Thanks to gunnar.roth@gmx.net for updating the WinCE patch.

Change-Id: I131e0ee9141efdbd377e096aae0959311a601830
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2016-01-29 00:13:12 +00:00
Shawn Rutledge
8c843712da Doc: a QScreen can be a placeholder if there are no screens attached
As of change a094af0017, X11 now joins
other platforms in having a fake screen if no physical screens are
attached, rather than ever allowing QGuiApplication::screens() to
return an empty list or QGuiApplication::primaryScreen() to return
null.  This is more consistent across platforms and helps to prevent
bugs in applications which want to use QScreen in some context but
fail to check whether it exists.

[ChangeLog][X11] In case there are no physical screens attached,
QGuiApplication::screens() and QGuiApplication::primaryScreen() will
return a placeholder QScreen object.

Task-number: QTBUG-42985
Change-Id: I0f58afbfe2a034fb9e872a5d1dbdabad2c7dbf9e
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2016-01-28 19:17:32 +00:00
Friedemann Kleint
910f719bd1 Refactor QStandardPaths for Desktop Windows.
Replace the large switch in QStandardPaths::writableLocation()
by a function mapping QStandardPaths::StandardLocation
to the int clsid required by SHGetSpecialFolderPath(). Warn if
SHGetSpecialFolderPath() fails for config location and append
prefixes (cache/application name/organization) only on success.

Change the logic in QStandardPaths::standardLocations() to append
the writable location first, avoiding the prepend().

Task-number: QTBUG-50570
Change-Id: I9d80e83d1ca7af3ea8d3ac2c720ee981b1b2c32a
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-28 19:01:20 +00:00
Marc Mutz
7236721bf8 QJsonObject has random-access iterators
... but they were only marked as bidirectional.

Fixed.

This change is slightly BiC, because if some class used tag
dispatching on this iterator type, a recompile might now
pick a different overload, and the old one may not be
available to a user anymore (no longer instantiated).

I do not think Qt uses that technique, yet, though. Not on
iterator categories, at least.

Change-Id: I75fb334af7e191f882d11575dec83c879a6b50ee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-28 18:38:34 +00:00
Konstantin Ritt
5f472cae71 QFontCache: Centralize the engine type safety check
We depend on the assumption QFontCache::findEngine(key) for key.multi=1
returns a font engine of type QFontEngine::Multi;
guarantee that by checking it in a single place.

Change-Id: I287da4fd62deb22fc5520cde5b0505bc44547609
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-01-28 18:24:08 +00:00
Anton Kudryavtsev
0f27d11285 Don't use QStringLiteral in comparisons
For QLatin1String, operator== is overloaded, so comparing to a latin-1
(C) string literal is efficient, since strlen() is comparatively fast.

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

So, just compare using QLatin1String instead.

Change-Id: I761b2b26ab5b416bc695f524a9ee607dacf0a7b2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-28 18:00:47 +00:00