Commit Graph

26543 Commits

Author SHA1 Message Date
Marc Mutz
5feebcc973 QMimeDatabase: replace a QStack<QString> with std::stack<QString, QStringList>
A QStringList is almost as efficient as a QVector<QString>.
More importantly, the QStringList case can share code with
the myriad of other QStringList users, in particular
because std::stack is but the thinnest of wrappers around
its underlying container.

Saves 1400b in text size on optimized GCC 4.9 Linux AMD64
builds.

Change-Id: If37ed55802aa8a529ca772df465990ded0aaba7f
Reviewed-by: David Faure <david.faure@kdab.com>
2016-01-04 20:35:33 +00:00
Marc Mutz
cc2ea22a30 QMimeAllGlobPatterns: optimize string handling in matchingGlobs()
... by not re-creating the same string in every loop iteration.

Change-Id: If17c5980bec8276b531267b309578dac8901c93e
Reviewed-by: David Faure <david.faure@kdab.com>
2016-01-04 20:35:28 +00:00
Mauro Persano
0cee94017f QOpenGLTexture: fix target for compressed textures
Trying to set data for a compressed cubemap texture face fails, because
the code incorrectly tries to bind to a cubemap face target.

This was already fixed for uncompressed textures. Instead of duplicating
the code, moved the texture binding/unbinding code to a RAII class.

Change-Id: I8f1cb7fc661b919200f85c3465d6e6e3c22d0871
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-01-04 19:49:34 +00:00
Sebastian Lösch
73ad2bf32f Make ephemeral server key available
When using cipher algorithms with forward secrecy an ephemeral key is
used to generate the symmetric session key. Beside the SSL certificate's
key, this ephemeral key is of cryptographic interest.

The ephemeral key is chosen by the server side - currently statically in
the Qt implementation - so it is only of interest on the client side to
check it. Therefore the ephemeral key is the null key if the connection
is set up in server mode or a cipher without forward secrecy is used.

Change-Id: If241247dbb8490a91233ae47f2b38952c6591bf4
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
2016-01-04 18:10:14 +00:00
Friedemann Kleint
0c60dda872 QWindowsTheme: Fix return type of helper dWordSystemParametersInfo().
QApplication::wheelScrollLines() was always 1 due it being a bool.

Task-number: QTBUG-49561
Change-Id: I83e97da3507c31dfd024db7bf543c4e6a3b4a98b
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-01-04 16:28:31 +00:00
Mitch Curtis
c19216cbea Fix QPainter::rotate() documentation
Change-Id: I5d11f84181cad9be644e850c83459b47ec2f2f15
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-01-04 16:25:58 +00:00
Edward Welbourne
374d35d5ba Make use of preprocessor easier to understand.
The #if had a condition that was needlessly hard to understand;
and was widely separated from its #else clause.

Change-Id: I43f4282993f4f2e8c4b5ad07dc2c2e06a6b95aa9
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-01-04 13:59:14 +00:00
Alex Trotsenko
a9e1fc29ca Remove Windows-specific handling of the write notifiers on sockets
There is no need in special OS dependent code now, because the
socket notifiers got the identical behavior on all platforms.

Change-Id: I53ee51cd5eeff328e0b73f7325d2c9e883c5b213
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2016-01-04 13:43:01 +00:00
André Klitzing
0cd73f23f2 Print correct OS name if it is a server version
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx

Change-Id: I7ee4c78959696ee2b662899a6a1408cfd1ebcacd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-01-04 13:29:31 +00:00
André Klitzing
a862474839 Print out "Service Pack" version of underlying Windows
Change-Id: I1f7dbf8f1244e8b7bf2f459fdce381838d776dbe
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-01-04 13:29:26 +00:00
Błażej Szczygieł
eaa3a9d010 Fix crash because of NULL screen in QXcbWindow
Change-Id: If7bbe3ad1656dadcb098bcd3ece2e7b064eeb44d
Task-number: QTBUG-50081
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-01-04 13:22:39 +00:00
Samuel Nevala
7fdfaad43f Fix deadlock when setting environment variables.
Qt uses QHash as the container for faking environment variables on
Windows Runtime and CE. Environment variable manipulation functions are
protected by mutex. Accessing the QT_HASH_SEED environment variable
inside QHash can lead to situation where qputenv() call leads to
qgetenv() call and that leads to a deadlock. Change the container
from QHash to QVector to avoid deadlock.

Task-number: QTBUG-49529
Change-Id: I550ead4ab12e7abebc044f52339063a44fcf0170
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-01-04 13:12:19 +00:00
Timur Pocheptsov
b12e876efc tst_qwindow::isExposed - fix failing test on OS X
Change-Id: Ice25c8ffaaa4662b679ee829dc0a38834e3258b7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-01-04 13:03:03 +00:00
Marc Mutz
5d849880f4 QNetworkReplyHttpImpl: convert another QDateTime::currentDateTime() to currentDateTimeUtc()
The latter is much faster as it doesn't have to deal with
time zones.

This change is safe because QNetworkHeadersPrivate::fromHttpDate(),
used as the QDateTime source in other, nearby, code paths, also
returns only UTC date-times. So not only is this change faster at
the call site, it also avoids inconsistent-timespec comparisons
down the line.

Credits to Milian Wolff, from whose QtWS15 talk this advice is
taken.

Change-Id: I26d308a2763cc45d28bc96871e651f30b17a6b85
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2016-01-04 12:58:41 +00:00
Marc Mutz
194e158beb QtCore: eradicate all Q_FOREACH loops [io]
Saves more than 1KiB in text size on optimized GCC 4.9 Linux
AMD64 builds.

Change-Id: I1a974e903bc8352af800fa26edae0194c1e51705
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-04 12:22:55 +00:00
Marc Mutz
5170c0416b QWindowsFileSystemWatcher: increase concurrency when canceling threads
The old code asked each thread to stop, and then waited for
that one thread to finish before deleting it and turning
to the next thread in line.

Split the three actions, ie. first ask all threads to stop,
then wait for all threads to finish, and only then delete
all of them.

Apart from being more icache-friendly, this enables more
concurrency, as stopped threads' cleanup work can overlap
with other's, thus reducing the wait() time per thread to
potentially zero.

Did not replicate the inefficient foreach loop, but went
with C++11 range-fors directly.

Change-Id: I53e598e31999a772c0f81ff5885490216e13d492
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-04 12:22:50 +00:00
Marc Mutz
90484f3901 QtCore: eradicate all Q_FOREACH loops [itemmodels]
Saves more than 4KiB in text size on optimized GCC 4.9 Linux
AMD64 builds.

Change-Id: Ice3fe915622a399d1ed10e0ce364cf54b4b835fe
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-04 12:22:45 +00:00
Marc Mutz
2d2d44a3d1 QtCore: eradicate all Q_FOREACH loops [statemachine]
Saves a bit over 2.5KiB in text size on optimized GCC 4.9 Linux
AMD64 builds.

Change-Id: I18a635d65a3c20c4bf5ec2cbfa4ed81a8153cab3
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-04 12:22:39 +00:00
Marc Mutz
8faf51429e QtCore: eradicate all Q_FOREACH loops [threads, plugins]
Saves just shy of 4KiB in text size on optimized GCC 4.9 Linux
AMD64 builds, iow: ~0.07% of the total QtCore library size.

Change-Id: I87fdcc8ee25c6bb5dabddb9a694ab4496b1538fa
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-04 12:22:34 +00:00
Marc Mutz
0ff221f522 QtCore: eradicate all Q_FOREACH loops [mimetypes]
Saves just shy of 6KiB in text size on optimized GCC 4.9 Linux
AMD64 builds, iow: ~0.1% of the total QtCore library size.

Change-Id: I087e1e34a64944affb1211e16371e314012c4b2c
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-04 12:22:29 +00:00
Marc Mutz
fd7861ac4b QtOpenGL: eradicate all remaining Q_FOREACH loops
Not many left. Still 344b saved in text size on optimized
GCC 4.9 Linux AMD64 builds.

Change-Id: I51ba49fe065854f84e26d25d7da5e26427ea2c0b
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-01-04 12:22:23 +00:00
Marc Mutz
41ca17fa97 QLineEdit: de-inline effective*TextMargin()
Saves 327b in text size, but done mainly because such
functions shouldn't be inline in the first place.

Change-Id: Ieea97f13620e4411dc01cb0d390bd668c13cfa7a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-04 12:22:16 +00:00
Marc Mutz
264c72837d Add qAsConst
...to turn mutable lvalues into const lvalues.

Like the proposed std::as_const, it should not apply to
rvalues to avoid lifetime issues in code like

     for (auto x : qAsConst(someFunc()))
         // dangling

At a more basic level, qAsConst isn't useful for rvalues,
because one can always store them in an lvalue first, with
no loss in performance (the object is created by the
compiler silently anyway). So the correct way to write the
above is:

    const auto funcResult = someFunc();
    for (auto e : funcResult)

To fail compilation when passing rvalues, I used the
const-&& pattern also employed by std::cref(), and the
proposed std::as_const.

Intended as internal API, but not put into the QtPrivate
namespace to make it simpler to use.

We could wait for std::as_const, but that is far, far
away (just entered the current C++17 draft as of this
writing), and the Qt containers with their tendency to
detach are a problem _now_.

Change-Id: I8824a59d2274de5c5cd642f117212322e4648025
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-04 12:22:12 +00:00
Giuseppe D'Angelo
3880f41e68 Update PCRE to SVN r1622 (8.38 + patches)
In preparation for the 5.6 release.

Upstream changelog: http://vcs.pcre.org/pcre/code/trunk/ChangeLog?revision=1622&view=markup&pathrev=1622
Upstream changes: http://vcs.pcre.org/pcre/code/trunk/?pathrev=1622

Change-Id: I97fb23f6b42f4871f05daa726c2edfc691a16d8e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-01-04 08:56:28 +00:00
Olivier Goffart
c7ab816af1 qmutex_unix: use a semaphore when available
It makes tst_QMutex::contendedQMutex with no msleep 8 times faster

Change-Id: Ic300e7618b4467e4e08b30f0213bd23c06d4d90a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-04 08:40:18 +00:00
Marc Mutz
e0c8316e17 QUrlQuery: remove misleading comment
The 'itemList' is a QList and is not maintained in sorted order.

Change-Id: I8f221281803ff0e9caa054007bee3058214f2f30
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-04 06:10:51 +00:00
Marc Mutz
b20de8a23d QTranslator: Extract Method is_readable_file from find_translation()
The old code re-used a QFileInfo object, repeatedly
setting new file names with QFileInfo::setFile(QString).

But QFileInfo::setFile() simply assigns itself a
new QFileInfo object:
    *this = QFileInfo(...)
so it's just as efficient to re-create a new QFIleInfo
object for every file name under test.

To avoid extra {} for object lifetime scoping, factor
the repeated evaluation of isReadable() && isFile()
into a small helper function, which also creates and
destroys the QFileInfo object.

The deeper significance of this change is that it
avoids implicit sharing of 'realname', which is
permanently modified. A later patch will make
changes that make 'realname' re-use its capacity
through the lifetime of the find_translation()
function, and sharing the variable implicitly will
nip any auch attempts in the bud.

Force the compiler to not inline the new function.
There's really no point in spending ~0.5KiB in text
size on inlining the code; the miniscule speed
improvement is dwarfed by the memory allocation of
the QFileInfo ctor, anyway.

As a consequence, this change even saves 96b in text
size on optimized GCC 4.9 Linux AMD64 builds, even
though that wasn't even the goal.

Change-Id: I08c5cbb7b6f1ba59440a1597e28d962ce63a7c65
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-04 06:10:45 +00:00
Thiago Macieira
b08d84d39e Autotest: Make sure that we can place calls with disabled delivery
This often happens in applications. Besides, we are expecting at least a
call to RequestName to happen.

Change-Id: Ifd2454ffba454fd591d0ffff1425a84563267d19
Reviewed-by: David Faure <david.faure@kdab.com>
2016-01-03 19:16:33 +00:00
Marc Mutz
5f542f3cca QDBusArgument: remove useless op<< overloads
... and remove misleading comments (these are overloads, not specializations).

The QList overloads do nothing different from the generic container
overloads. Remove them.

Only leave the QVariantList overload, because that converts to
QDBusVariant before serializing. Which means that this should
probably be templated on the container type, otherwise you get
different behavior for QList<QVariant> and, say, QVector<QVariant>,
which is surely wrong.

Change-Id: I215ba9891235b51304c2ed4041d3dbd003d69581
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-01-03 18:46:27 +00:00
Dmitry Shachnev
7e132066c1 QNativeSocketEngine: fix undefined variable on FreeBSD
Change-Id: I192e20eef4db27fc19ec9a6e517ae5c8cb88897c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-01-02 14:56:15 +00:00
Marc Mutz
04e76ec857 QUnixPrintWidget: fix some poor uses of the QComboBox API
- populate the widget with addItems(QStringList) instead of
  looping over addItem(QString)
- Use findText() instead of looping over itemText(int).
  QComboBox::findText() delegates searching to the model
  (via QAbstractItemModel::match()), so is potentially
  much faster. I say potentially, because match() isn't
  properly reimplemented in most models, yet. But that is
  something to fix in the models.

Change-Id: I6e52cf5af810ab7869c0270504a241868a5ca281
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-02 10:44:23 +00:00
Thiago Macieira
0828d4e8ea Autotest: test both libdbus-1 load failure and connection failure
Change-Id: I39cc61d0d59846ab8c23ffff14242294649c1a45
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2016-01-02 02:06:10 +00:00
Thiago Macieira
9510d99f08 Autotest: Mark D-Bus tests that don't connect to the bus as parallel
There's no problem running them in parallel.

Change-Id: I39cc61d0d59846ab8c23ffff142420a127ab6968
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2016-01-02 02:05:52 +00:00
Thiago Macieira
1f6fa1f37a Suspend processing of some messages in the default busses by default
To retain a bit compatibility with applications developed in the last 9
years that expect that QDBusConnections won't process their events until
the event loop runs, we now suspend the handling of incoming messages
in the two default buses (and only in them) and resume when the event
loop starts. This is required because the new threaded QtDBus would
otherwise process incoming messages that the application didn't expect
it to.

For example, if the application first acquires names on the bus and only
after that registers objects with QtDBus, there's a small window in
which the name is acquired and visible to other applications, but no
objects are registered yet. Calls to those objects may be received,
would then be processed in the QDBusConnectionManager thread and fail.

The work around is to disable the actual handling of method calls and
signals in QDBusConnectionPrivate::handleMessage. Instead, those
messages are queued until later.

Due to the way that libdbus-1 works, outgoing method calls that are
waiting for replies are not affected, since their processing does not
happen in handleMessage().

[ChangeLog][Important Behavior Changes] QtDBus now uses threads to
implement processing of incoming and outgoing messages. This solves a
number of thread safety issues and fixes an architectural problem that
would cause all processing to stop if a particular thread (usually the
main thread) were blocked in any operation. On the flip side, application
developers need to know that modifications to a QDBusConnection may be
visible immediately on the connection, so they should be done in an
order that won't allow for incomplete states to be observed (for
example, first register all objects, then acquire service names).

Change-Id: I39cc61d0d59846ab8c23ffff1423c6d555f6ee0a
Reviewed-by: David Faure <david.faure@kdab.com>
2016-01-02 02:05:45 +00:00
Thiago Macieira
8d195c0d57 Add a default argument to QDBusPendingCallWatcher::finished signal
So we can do
  connect(&watcher, SIGNAL(finished()), receiver, SLOT(foo()));

Change-Id: I39cc61d0d59846ab8c23ffff14241d33fecf2d53
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2016-01-02 02:05:07 +00:00
Thiago Macieira
fd3ea7004d Remove unused member variable QDBusConnectionPrivate::timeoutsPendingAdd
They're never pending, since we add them immediately since commit
186d881440.

Change-Id: I39cc61d0d59846ab8c23ffff14241be6785ad5a0
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2016-01-02 02:05:01 +00:00
Marc Mutz
be94e009ae QFileDialog: optimize string handling in qt_tildeExpansion
- Instead of QString::split()-ing the path, just to inspect the
  first item in the list returned, simply find the location of
  the first separator and work with that.
  -> saves creating a QList, and its QString elements
  -> saves attempted detaches of that list when calling
     first()
- When extracting the user name, don't do it in a QString, do
  it in a QStringRef.
- When constructing the result, don't use QString::replace(),
  use QStringBuilder with a QStringRef into the original string.
- Eradicate the out parameter, it is easily calculated from the
  return value.
- Don't calculate userName on VXWORKS and INTEGRITY, where it
  is not used. Requires a different #ifdef sequence. Fixed
  preprocessor directives' indention as a drive-by.

Costs 84b in text size on optimized GCC 4.9 Linux AMD64 builds.

Change-Id: I61f1e8d558db7fb0c5c1170bdfd6f5ac1f1a9e62
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-01-01 23:32:13 +00:00
Thorbjørn Martsum
024a52d0d1 QHeaderView - fix broken stretchLastSection
In setStretchLastSection we restore a default section size
if we no longer use stretch. That size was however not
sufficient - we should restore the actual size.

Furthermore we should also always stretch the last section
(last visible index) - and not leave a section with a
huge size and stretch another.

This patch refactors stretch handling and keeps track
of the last section and its size in eg. moveSection,
swapSection, hideSection, showSection etc.

There is an auto test showing and guarding its behavior.

[ChangeLog][QtWidgets][QHeaderView] Fixed some issues
(e.g QTBUG-39010) with restoring of section size after
a section is no longer the last visible section
(in stretchLastSection mode).

Task-number: QTBUG-39010
Change-Id: Id47075b5a9dfeb250027374ecbd10eb8babbf9ef
Reviewed-by: David Faure <david.faure@kdab.com>
2016-01-01 12:56:29 +00:00
Frank Meerkoetter
1568b09f1c Correctly flag WinPhone
Fixes coverity CID21703.

Change-Id: If9587c7cc49768066273a97fc56c3a662104f439
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-01-01 12:46:11 +00:00
Marc Mutz
9059931cd2 QStateMachine: replace a Q_FOREACH with QSet::op-=
Both 'configuration' and 'pendingErrorStates' are
QSet<QAbstractState*>, so we can use QSet::operator-=
to subtract one from the other. No need to loop
over QSet::remove() here.

Nevermind that QSet::operator-= is really poorly
implemented atm. That needs to be fixed in QSet.

Change-Id: I3f3172ce9a485c4c2abf7d19b831fb0dc1ea61b1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-31 18:44:53 +00:00
Marc Mutz
eb9fdf7c07 QAbstractModelPrivate: de-inline functions
These functions have no business being inline.

Change-Id: Ib565fb4870f886be133e9360155bd514935e5e72
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-31 18:44:49 +00:00
Marc Mutz
e9ec0ff4bb QTimeZone: replace a Q_FOREACH loop with QList::op+=
Change-Id: I6d2cede8126346f7cd4425dafc07c794c2a7bc1d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-31 18:44:45 +00:00
Frank Richter
50a8fdfd73 QPlatformTheme: Resync StandardPixmap with QStyle::StandardPixmap
Change-Id: I17a91c378175dbbe8066bccb94cc93f0a1fd3d71
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-12-31 18:03:42 +00:00
Marc Mutz
1f7dcbfd7d QtXml: replace a QStack<QString> with std::stack<QString, QStringList>
A QStringList is almost as efficient as a QVector<QString>.
More importantly, the QStringList case can share code with
the myriad of other QStringList users, in particular
because std::stack is but the thinnest of wrappers around
its underlying container.

Saves more than 1KiB in text size on optimized GCC 4.9
Linux AMD64 builds.

Change-Id: Ia9c1f8b8c6d3b619f587a0cc0f662462d1b6bdc5
Reviewed-by: David Faure <david.faure@kdab.com>
2015-12-31 09:29:53 +00:00
Robin Burchell
cbc4750f52 QSocks5SocketEngine: Always try to connect in connectToHost unless already connecting.
Otherwise, connectInternal becomes a no-op after an initial connection attempt
has been made (making the socket effectively useless if that connection attempt
fails).

A workaround is to close() the socket, which worked by virtue of
QAbstractSocket's close() disconnecting (which ultimately calls
resetSocketLayer, and destroys the socket engine instance) - meaning that the
next connection attempt would have a fresh socks instance to try out the
connection with.

Reported-by: Gabe Edwards <gabe.edwards@me.com>
Change-Id: Iab1e84af6d4248fd75a6dfe5e79a3c73129aae0b
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-12-30 20:14:19 +00:00
Błażej Szczygieł
a6b2a4642f Fix incorrect screen number reported by QDesktopWidget
Screens connected to separate graphics cards are detected as
separate screens which don't have offset. This patch fixes obtaining
the screen number by QWidget: it uses the screen assigned to the root
widget. The patch also assigns a proper QScreen to each QDesktopWidget
screen().

It also fixes closing a popup menu by clicking on another screen.

Task-number: QTBUG-48545
Change-Id: I3d76261c0c067293d39949c4428b2d8dfd085dc7
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-12-30 13:36:39 +00:00
Rolland Dudemaine
79a03c8457 Move the QVariant declaration up in the file.
This is especially necessary for the GHS toolchain which otherwise
chokes on the lack of some local definitions made by the
Q_DECLARE_SHARED macro.

Change-Id: Ie4e355226e4a66e1589e1d422d3a622b11bd9aef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2015-12-30 12:57:20 +00:00
Marc Mutz
96dc9a19ae QUrlQuery: fix a very expensive always-true check
In a non-const function, if (d), d being a QSharedDataPointer,
will resolve to if(d.data()), which detaches and returns a
pointer to an unshared copy of the data. Thus, the test if (d)
is always true.

Fix by explicit use of constData(), as in other QUrlQuery
functions.

Change-Id: Ib926abdcdb069d69e34c3202c4cf451b7fc6a329
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-30 12:05:59 +00:00
Marc Mutz
5c81863019 moc: replace a QStack<QByteArray> with std::stack<QByteArray, QByteArrayList>
A QByteArrayList is almost as efficient as a QVector<QByteArray>.
More importantly, the QByteArrayList case can share code with
the myriad of other QByteArrayList users, in particular
because std::stack is but the thinnest of wrappers around
its underlying container.

For moc, saves almost 1KiB in text size on optimized GCC 4.9
Linux AMD64 builds.

For qdbuscpp2xml, which re-uses moc code, saves ~1.6KiB.

Change-Id: I861e92b3c79e47e0ce892ccf54c9041182aaf212
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-30 12:05:16 +00:00
Marc Mutz
08adcc62a7 QComboBox: use NRVO from QAIM::match() and prevent a detach attempt
Receiving the QStringList return value through RVO instead of
move-assigning it saves 48b in text size on optimized GCC 4.9
Linux AMD 64 builds.

Marking the QStringList const saves another 112b because the
following first() doesn't need to attempt a detach.

Change-Id: If6f25399e80de12114ce41c557bff6ee8c24938b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-12-30 12:05:09 +00:00