Commit Graph

26847 Commits

Author SHA1 Message Date
Anton Kudryavtsev
e2e190fd69 QNonContiguousByteDevice: mark atEnd(), size(), pos() methods as const.
These methods do not modify the object.

Change-Id: I9ab9a17fa24f5a608943ec263913df14218214a8
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-08 19:36:38 +00:00
Ulf Hermann
4fb7eb0da7 Drop most "#ifndef QT_NO_LIBRARY"
As we can load plugins without QLibrary now, we don't have to #ifdef
out the code that does so anymore.

Change-Id: I1dc20216830a882dbd5a1b431183407e6b19c837
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-08 10:40:33 +00:00
Andre Somers
21861e6fd1 Add setFlag method to QFlags
This makes implementing class methods that enable or disable a feature
stored in a QFlags<> member easier.

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

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

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

A move is always just re-seating a pointer.

Change-Id: Icff7415dd0ce44df0602273ff42370b26d831b85
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-08 10:21:55 +00:00
Marc Mutz
24c0ba13fd QStandardItemModel: avoid premature pessimization
- don't re-evaluate QMap::end() all the time
- don't copy QVariant more than needed
- pass temporary to QVector::append (enabling moves)
- swap instead of copy-assign a vector into place

Change-Id: I7549812dfbb2dbc9a919fa9565397d50141fc2ca
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-08 10:21:51 +00:00
Marc Mutz
3d9ccce7d5 uic: eradicate all Q_FOREACH loops [non-generated code]
... by replacing them with C++11 range-for loops, or, in one case,
qDeleteAll().

Change-Id: If6980f6c12ac1d359a1f0e062dcc2a86e9685d1e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-02-08 01:22:03 +00:00
Frank Richter
bc9645064a QWindowsTheme: Provide SHGetStockIconInfo()-related constants on CE
Change-Id: I3d0cb8bff811ffbdb8e787b02896717316a4a405
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-02-07 02:39:58 +00:00
Marc Mutz
15238e91eb QList: don't lose reserved capacity in op+= with empty LHS
It is very rare that operator+= is used as operator=.
Most of the time, one op+= is followed by more op+=s.

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

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

Change-Id: Iff28e496cf24cc93f248449d74012c4f3a87253e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-02-06 20:06:55 +00:00
Andy Maloney
e13544f186 Doc: Fix grammar in QOpenGLContext::openGLModuleType() docs
Change-Id: I4eb0361940bad8b0b0726fc3a584062d297f3164
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2016-02-06 15:14:26 +00:00
Jake Petroules
c4ecb81d6d Fix shared library framework builds of Qt with a platform suffix.
This is necessary for combined device and simulator builds on Apple
platforms (iOS, tvOS, watchOS) to link properly.

Change-Id: I21e70806643b10f429945d3020995dc94fa5c612
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-06 03:18:45 +00:00
Lars Knoll
b64a94516b Get rid of the QRegExp dependency in qxmlutils.
This makes the XML parser 100% independent of having regexp
support enabled.

Change-Id: I73004b0fb71e8086618995c71a985a86c292df3d
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 17:34:00 +00:00
Giuseppe D'Angelo
0b8ff1cc99 QTabBar: remove dead code
Change-Id: Iaad0ef8fe66e925f9dcbc94693d078612a92969f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-05 15:36:54 +00:00
Louai Al-Khanji
58bd015ddf QProcess: Remove dead code
These functions appear to have been dead code always - even in the
earliest Qt4 releases!

Change-Id: Ie2a458092b45113782284cf8ed3aa11a018b60d4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 06:59:05 +00:00
Louai Al-Khanji
3b73ee0fb5 Remove qt_safe_select and qt_select_msecs
Change-Id: If46228dc750554b65acd23e48410ec541fc33714
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-05 06:58:42 +00:00
Louai Al-Khanji
417586875f QLocalSocket: Use poll instead of select on Unix
Change-Id: I5399623d284ccd804bd1638da143ccdb973af9e2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-04 22:35:19 +00:00
Louai Al-Khanji
180b60cc89 QFusionStyle: Fix subtle groove painting
While investigating an unrelated rendering bug I noticed that the call
to drawRect here is essentially dead code. However, the original intent
seems to have been to draw a very subtle shadow within the scrollbar
groove, so let's re-enable it. Subjectively, it does add a nice touch,
especially with higher dpi screens.

Change-Id: Iebffe69ecf9c26be617f7e85bd95f85ed7b0fafe
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com>
2016-02-04 22:34:54 +00:00
Louai Al-Khanji
bb747268ed Clean up new poll code slightly
Change-Id: I046126ff69a77a50e79efb1b6ebb0fffef67ac8e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-04 22:34:38 +00:00
Louai Al-Khanji
e9802a1073 tst_qeventloop: replace select with poll
Change-Id: Ib2b71696e24249b0b13bb925a7bb627ef09f2dff
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-04 22:33:51 +00:00
BogDan Vatra
4bf741066d Android: Add runOnAndroidThreadSync
This is a convenient function which waits (timoutMS) for the runnable to be executed.

Change-Id: I2c0f262d3795c29961e8182b7ffc35a2c6f8a1f6
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2016-02-04 17:53:40 +00:00
BogDan Vatra
7696ff89c9 Android: Fix crash, don't add null visible menus to pendingContextMenus
Regression introduced in e3689949ba

Change-Id: I9d3e37733d933e037f04d3a6efaf05607e16d9c5
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2016-02-04 16:04:33 +00:00
Anton Kudryavtsev
69ab280315 qmake: optimize container usage in the json handling.
Iterate only once over QJsonObject, create key list by
existing loop instead of create by QJsonObject::keys(),
which contains internal loop.
In common case if loop's statement is lightweight,
then effect of optimization is significant, and vice versa.
Also make addJsonArray() and addJsonObject() functions
more homogeneous.

Use reserve to optimize memory allocation.

Change-Id: Id122cd1becfd34bb06640876b1c79e1d396d2a6b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-04 15:11:05 +00:00
Tobias Koenig
20a2ba6d74 Add qstrntod as qstrtod overload, which takes a len parameter
Add qstrntod as an overload for qstrtod, which takes a len parameter,
so one can pass character arrays which are not null-terminated.

Change-Id: I8c1c6c3627043c1d6ec6eb712efa3abc9e5e9e00
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2016-02-03 22:19:06 +00:00
Alex Trotsenko
29af35f352 Simplify QAbstractSocket::readData()
It needed refactoring after prior changes (bf6897edb0,
1ce203d05a, 48a4a67e8d).

Change-Id: I06ee3f4f70db2a71acfc8e9c1da5b4ad7524179d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-03 16:08:52 +00:00
Sérgio Martins
5b75a16e8f Don't use Q_GLOBAL_STATIC for trivial type QLocaleData
Change-Id: I9435295a753d7dabea202fde876786d876a295fa
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-02-03 15:53:11 +00:00
Louai Al-Khanji
24642df23c QProcess: Use poll instead of select on Unix platforms
Change-Id: I3386ef228ce95209f6f221e18293d991b24a7b2e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-03 10:25:21 +00:00
Louai Al-Khanji
a0f9ee5dca Unix platforms: Use qt_safe_poll in QLocalServer
Change-Id: If9f0c1a0089b16729c20c0e05feca58a514d3e25
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-03 03:04:40 +00:00
Louai Al-Khanji
d28bb50b25 Unix platforms: Use poll in native socket engine instead of select
Change-Id: I10fde9f446ee17c921ce9cf356a27daac396321d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-02-03 03:04:37 +00:00
Liang Qi
d3e6e732c7 Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	config.tests/unix/compile.test
	src/plugins/platforms/cocoa/qcocoahelpers.mm
	src/tools/qlalr/cppgenerator.cpp

Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
2016-02-02 15:57:44 +01:00
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
Anton Kudryavtsev
1d3503b8f3 qmake: use reserve to optimize memory allocation.
Change-Id: I6ace338512c24fd9dc11c767a28f0a63454076fa
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-01 20:57:59 +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
Alex Trotsenko
599dbc5e43 Stabilize tst_QProcess::softExitInSlots()
After the commit 7ff655360f, case 4 in SoftExitProcess class relates
to a channelReadyRead() signal instead of stateChanged(). Accordingly,
terminateSlot() is fixed to handle a special case when process is not
running.

Change-Id: Ie0d3284f5d264037d00e4ad6d927c0766be562b0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-02-01 16:39:23 +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
Marc Mutz
5af12dae41 qmake: replace a QLinkedList with QVector
In VcprojGenerator::collectDependencies(), a temporary QLinkedList
is created, then iterated over. There's no reason to use a node-
based container here: no references are taken, no erases happen,
esp. not in the middle...

Port to QVector instead and reserve it, since the maximum size is
known ahead of time, and the lifetime of the container is very
short.

Since the loop iterating over the linked list needed touching
anyway, port directly to C++11 range-for.

Change-Id: Ic5dfeebcd9da37c214f54abc6025a0a2b8fa3b5d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-02-01 14:12:19 +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
Tor Arne Vestbø
f576f438bf Add basic QKeyEvent auto-test
Change-Id: I732723389edf0970e9688966407c728d38538d0a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2016-01-30 05:13:21 +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
Thiago Macieira
0ad153b76e Autotest: rename the test class so it's different in this test
Change-Id: I3d11545be52c43119f0fffff142b0e5e91b1e878
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-30 03:20:54 +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