Commit Graph

24475 Commits

Author SHA1 Message Date
Thiago Macieira
db2fc7843c QProcess: make setWorkingDirectory stop launch if the dir doesn't exist
[ChangeLog][QtCore][QProcess] Fixed a bug that caused QProcess to launch
a child process on Unix even if the directory specified with
setWorkingDirectory did not exist.

Task-number: QTBUG-47271
Change-Id: Ib306f8f647014b399b87ffff13f195158b0e52f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-07-20 16:07:46 +00:00
Ulf Hermann
ee0fd87007 Selectively update library paths when creating QCoreApplication
We force a recreation of the library paths with added information on
construction of QCoreApplication. This way we can find plugins in
the application directory which only becomes known when
QCoreApplication is created. When the user changes the library path
we create a new list of the manually modified library paths and
recalculate it from the delta of original vs. modified paths when
QCoreApplication is created.

The upsides of this approach vs. keeping an explicit delta are:

* We don't need to introduce a separate data structure to hold
  the added/removed status for delta items or the information that
  the whole list got replaced.

* The lists never get larger than the the real library paths. An
  explicit delta would have to record all modifications.

* I don't think the delta replay algorithm we would have to do
  anyway could be made much more compact than the one this change
  introduces.

Of course, if the user actually changes anything, the list is
duplicated. Considering that this is a rarely used function and
that we would have to save some extra information anyway, I think
we can live with this.

Task-number: QTBUG-38598
Change-Id: I3bfbbd1be62dd5804dcc7ac808b053428a4e3149
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-20 15:57:07 +00:00
Jeremy Lainé
49fee77ccc ssl: add openssl-based QSslKeyPrivate::encrypt / decrypt
This adds an OpenSSL-based implementation of the QSslKeyPrivate encrypt
and decrypt method. This puts both the OpenSSL-based and non-OpenSSL
backends (WinRT for now) on par.

Change-Id: I18a75ee5f1c223601e51ebf0933f4430e7c5c29b
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-07-20 15:51:02 +00:00
Friedemann Kleint
a92a72dd11 Polish the examples/widgets/dockwidgets example.
- Introduce Qt 5 signals & slot syntax.
- Use QIcon::fromTheme() to obtain system icons and use
  resource icons as fallback.
- Fix minor issues in code, use multi-argument version
  of QString::arg(), QDir::toNativeSeparators() to
  present file paths to the user, static method
  invocations.
- Use QMimeDatabase for file dialog.

Change-Id: Ib7f947aaaa0c8034f0853b1c740ebf195821dae0
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-20 13:25:06 +00:00
Friedemann Kleint
956b7023eb Port examples/widgets/mainwindows/menus to new connection syntax.
Change-Id: Ia7fa905cdda131d7c4a2c8a57557ea694eef3541
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-20 13:24:59 +00:00
Sérgio Martins
dfa78b00da printsupport: Pass large type by const-ref
sizeof() is 144 bytes on x86_64

Change-Id: I11fbb3c37353aafa209cea388cfc505f9645a1bb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-20 10:20:15 +00:00
Marc Mutz
17ce3473db QDirModel: remove pointless user-defined QDirNode destructor
The clearing of 'children' is already performed by the
'children' destructor, and the presence of the user-defined
QDirNode destructor inhibits the move special member functions
for QDirNode.

Change-Id: Ie8025e7a2c4b1a8c0b691deda0e49b517f8a6ed5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-20 10:19:21 +00:00
Thiago Macieira
06bdc79d62 Add name to the cloexec feature test
Also solves a warning printed:

configure: 4200: shift: can't shift that many

Change-Id: Ib306f8f647014b399b87ffff13f295e2cdb7f8d7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-20 07:26:20 +00:00
Marc Mutz
dda4ee46f9 QVectorND: mark as primitive, not just movable
Every bit combination is a valid object, so the
correct type classification is primitive, not
just movable.

This is BC, because it just changes whether
the default ctor and dtor are run or not,
and these types don't care.

Change-Id: Ifbfa83128778744f15a086a65c8be1ce01a58820
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-07-20 07:21:04 +00:00
Kai Uwe Broulik
287e944def qqnxinputcontext: Add support for EnterKeyType
Change-Id: I03b9d70b9bb05cd28fdcbb076764a2e1d9e3e0e3
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-07-19 20:14:19 +00:00
Marc Mutz
49f7281d36 Mark QDBus{ObjectPath,Signature,Variant} shared-come-qt6
The compiler-generated move operations are ok.

Change-Id: Ida994b52e3ee6ce75afd50133e61488b94464eee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 18:13:37 +00:00
Marc Mutz
b8970e3e81 platformsupport/dbustray: mark some types as movable
At least on is already held in QVector.

Change-Id: Ifa29d924315a9d397bd591ae548f199dcefa03a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 18:13:26 +00:00
Marc Mutz
9d250d7be8 platformsupport/dbusmenu: fix uses of inefficient QLists
These types are larger than a void*, so holding them in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.

Fix by marking them movable, and holding in a QVector instead.

Change-Id: I74b2ce327d6aee60e2cc3463ce09453a4305bba7
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 18:13:20 +00:00
Marc Mutz
4ea3c0ba80 QVector: add an rvalue overload of push_back/append
This is low-hanging fruit, for two reasons:
1. The implementation is dead-simple (unlike, say, in QList).
2. It's completely transparent to the QVector user (unlike,
   say, emplace_back, which can only be used inside an ifdef).

Change-Id: Iaf750100cf61ced77aa452f0e4e3c4ec36b29639
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-19 18:09:27 +00:00
Marc Mutz
8d1d12a328 QVector: in append(), if we take a copy, then move, not copy from the copy
Replaces one copy ctor / assignment with a move ctor / assignment.

Change-Id: I56768db9904283a9be7c87f624a557a64557bc8f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-19 16:00:12 +00:00
Marc Mutz
4d8a83f2cb QIconLoader: don't make QIconDirInfo::type a bit-field
It doesn't save any space, is not required for ABI compat
(because it's private API), generates more code to extract
the field, and triggers a bug in older GCCs when synthesizing
a move constructor for this type:

  src/gui/image/qiconloader_p.h:64:8: error: invalid conversion from 'unsigned char:4' to 'QIconDirInfo::Type' [-fpermissive]
  src/corelib/tools/qvector.h:641:13: note: synthesized method 'QIconDirInfo& QIconDirInfo::operator=(QIconDirInfo&&)' first required here

Change-Id: I61e886566b67c7a18a318a3d026dc762600f8ab4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-19 15:59:49 +00:00
Sérgio Martins
1236b1827c QtGui: Pass types with copy-ctor or dtor by const-ref
... except if the function is a ctor, callers pass rvalues,
and the type has a fast move ctor. In that case, keep passing
by-value and qMove() into place.

Change-Id: I2c0be7d4436327834ddee0531c51c5af352ac74c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-19 10:46:53 +00:00
Marc Mutz
aa2efdfa97 QZip*: return FileInfo by value
Makes for much more readable callers, and, d/t NRVO, isn't less efficient
than the old code, either. Transparently enables moves when QVector should
get them, at some point, too.

Change-Id: I77327cf665272b80277deaaa6dd2ee9c00806464
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-19 10:35:51 +00:00
Marc Mutz
0abd207052 QZip*: don't hold QZipReader::FileInfo in QList
FileInfo is larger than a void*, so holding them in a QList is needlessly
inefficient. Worse, the code could come to depend on the fragile property
of (inefficient) QLists that references to elements therein never are
invalidated.

Change-Id: I772177c5ac544a5fecce2368f628148308ef260f
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:35:41 +00:00
Marc Mutz
78bba7b002 Clean up QZipReader::FileInfo
- don't define special member functions if the compiler-generated
  ones are just fine (inhibits move semantics)
- implement all remaining methods inline
- unexport
- remove unused (and, to add insult to injury, never init'ed)
  d-pointer. This is private API. No need for a d-pointer,
  much less an unused one.

Change-Id: I6979cb5103a361c0313c252d3bf7073a3c47addd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-07-19 10:35:26 +00:00
Marc Mutz
74a658599f QArrayDataPointer: make move semantics consistent with other containers
That is:
- nothrow default constructor
- nothrow move constructor
- nothrow move assignment operator
- nothrow swap
- as a generic container, destroy lhs contents immediately
  on move-assignment.

Change-Id: I6ec2b9451d3a0ddb63a97ea84504bc7f87d8d34d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:59 +00:00
Marc Mutz
5c44232122 QSet/QQueue/QStack: use compiler-generated special member functions
They do the right thing (except move special member functions
on MSVC, but that's MSVC's problem).

Change-Id: I699e1be83c0568821f8c6b84394a2713bb22e8e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:55 +00:00
Marc Mutz
46c5b86612 QSharedPointer: add move construction, assignment from compatible shared pointers
Change-Id: I772c568055c9bed6eb627ad35dba300925fc0fde
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:50 +00:00
Marc Mutz
a1ef018d9c QDBusVariant: add ctor taking QVariant&&
Change-Id: Ia25c4bd6294955b0e8ea5ecc0c62719423542e84
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:43 +00:00
Marc Mutz
27ba0b8f88 Containers: destroy previous state on move-assignment immediately
[ChangeLog][QtCore] All generic containers (with the exception of
QVarLengthArray, but including QSharedPointer) destroy the
previous state as part of a move-assignment now. Previously, they
would dump it into the right-hand-side object. Note that this is
only true for the generic containers. Other implicitly-shared
types, as well as the non-generic containers QString, QByteArray,
etc. still just swap the contents with the right-hand-side object
when move-assigned into, and, for performance reasons, this will
not change in the forseeable future.

Change-Id: I1f1c684e85400b77bd2e7fba65bde2dce6c1bdde
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:39 +00:00
Marc Mutz
8ab2d86d05 QSharedPointer: mark some internal API nothrow
Change-Id: I871c86406b2c25df9a7834a997caf8a792d353a0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:34 +00:00
Marc Mutz
d945345af1 QList: mark const variants of begin()/end() noexcept
Plus some other trivial functions.

Drive-by change: 0 -> Q_NULLPTR (public header)

Change-Id: Ic3fca2950e4c5143eb90bd119da113fe64e48032
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:28 +00:00
Marc Mutz
94c24fad59 QDBusConnection: declare as shared-come-Qt6
Requires adding member-swap and (at least in my copy) move operations.

Change-Id: I1b638a81e4a41f467e69e352806524039e7b9f27
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:23 +00:00
Marc Mutz
f79dee6844 Add missing Q_DECLARE_OPERATORS_FOR_FLAGS(QDBusConnection::ConnectionCapabilities)
Change-Id: I659ccc00129d20bbae08b277a291d81c6ede80be
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:18 +00:00
Marc Mutz
c27d4981e9 Fix nullptr literal 0s which would look odd as nullptr
These all invoke the QFlags<>(Zero *) ctor, which is designed to
accept a 0, but no other int. But in doing so, it requires passing
a nullptr literal, and 0 is not a nullptr literal accepted under
-Wzero-as-null-pointer-constant or similar warnings.

Fix by using the QFlags::QFlags() ctor instead.

Task-number: QTBUG-45291
Change-Id: I73f9c9f4de11eeb1ba04ace6c7121d17510ea29f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:33:12 +00:00
Marc Mutz
efeab107bf QtPrintSupport: Use Q_NULLPTR instead of 0 in all public headers
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.

Task-number: QTBUG-45291
Change-Id: I6f591a42a8e8ea471d27666eb1cbc77b572b3e0d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:32:58 +00:00
Marc Mutz
a767014167 QtGui: Use Q_NULLPTR instead of 0 in all public headers
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.

Task-number: QTBUG-45291
Change-Id: I72ab40b21a9499b53a639564fa45884de17b6c98
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:32:55 +00:00
Marc Mutz
08f6b38ec7 QtNetwork: Use Q_NULLPTR instead of 0 in all public headers
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.

Task-number: QTBUG-45291
Change-Id: I9a05d375d2d9d3ed56079ad024c89a08a290619b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-19 10:32:50 +00:00
Marc Mutz
7c8b0c098a QFileSystemModel: reserve() a QList
Change-Id: I136c24382a869ef92446dbe79bfd6a64273e55c6
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-19 10:00:55 +00:00
Friedemann Kleint
57ae1b15b6 Testlib: Remove overload qCompare(bool, int, ...).
It was added for NokiaX86 / RVCT compilers and may
produce unexpected results with g++, where it matches
for qCompare(int, enum).

Task-number: QTBUG-47260
Change-Id: Ia29b9ae289c6df579a923aef6eb67e46db0b1120
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2015-07-19 08:19:31 +00:00
Marc Mutz
15a5035671 QDBusMessage: declare as shared-come-Qt6
Requires adding member-swap and (at least in my copy) move assignment.

Since the type does not contain a d == nullptr state,
a move constructor isn't yet possible.

Change-Id: Iad6939fa30f214591eab1fdf30a2cf1423ffb32a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 13:33:04 +00:00
Marc Mutz
84769bbbce QDBusError: declare as shared-come-Qt6
Requires adding member-swap and (at least in my copy) move operations.

Change-Id: I4284484b1f520eb2d9036b993a5b5b70aaea0af9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 13:32:59 +00:00
Marc Mutz
188a8a7f1d QDBusArgument: declare as shared-come-Qt6
Requires adding member-swap and (at least in my copy) move operations.

Change-Id: I0b32c387809c972203c94677616fe0a52143ec3b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 13:32:53 +00:00
Marc Mutz
9ed9787b7e QItemSelection: declare as shared-come-Qt6
Change-Id: I07fe36777f8e64c4551243b5dfc3273f1783e954
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 13:32:48 +00:00
Marc Mutz
b172e8e785 Mark QPixmapCache::Key as shared for Qt 6.
Change-Id: I37819cfd8a56d364336640146dbead2e1a454787
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 13:32:43 +00:00
Marc Mutz
648a496e5e QFileSystemModel: avoid sibling() calls
...by allowing to pass the column to the Private::index() overloads.

Because Private::index() always returns an index in column 0,
callers that needed a different column used QModelIndex::sibling()
to adjust the column of the returned index. But that calls
QAIM::sibling(), which calls both QFSM::index() and ::parent().

Simply allowing to pass the column number instead of hard-coding
0 avoids that heavy detour.

Change-Id: I8895b3d102d576ba291333cf61075b7263f96b9d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2015-07-18 13:32:31 +00:00
Friedemann Kleint
ce7fb157f0 Tests: Do not rely on qCompare(bool, int,...).
The overload was added for NokiaX86 and RVCT and is bound for
removal.

Task-number: QTBUG-47260
Change-Id: Ic67cee8769847956e16cd0470ebcd663a9e98a40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 10:36:17 +00:00
Alex Trotsenko
524ae251bb QIODevice: remove superfluous member
In current implementation, d->firstRead doesn't provide any
performance improvement.

Change-Id: I5d6e765a7d49cb546998b2c3e908e3c5600e70b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 09:05:55 +00:00
Marc Mutz
075769ca83 Introduce Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6
... with classical semantics, meaning movable-come-Qt6,
and complex-until-then.

Whether or not we want a new flag for movable-except-
in-QList is an orthogonal question, and should not hold
back the slew of commits that introduce use of this
macro.

Change-Id: I3a6be08c314fcd7f3315af138625c38196debda5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:34 +00:00
Marc Mutz
cdd2f8eb34 QtCore: Use Q_NULLPTR instead of 0 in smart pointer headers
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.

Not caught by the headersclean check, because they are in template code.

Task-number: QTBUG-45291
Change-Id: I7294404225a19a1c58f91e6e47a9d650179ea83c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:23 +00:00
Marc Mutz
0aa5092576 QByteArray: document {const_,}{reverse_,}iterator
The reverse_ ones were missing, and the non-reverse ones
were marked \internal. But why should they not be documented?

Change-Id: I5ffbfc1def8dcac3f4a771883152ffbcca3d745d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:17 +00:00
Marc Mutz
d660c4c8bf QDBusObjectPath: add ctor taking QString&&
The new constructor cannot be marked nothrow, because it calls
non-nothrow doCheck();

Change-Id: I4e5b33c58125091644573ed84e715c7fa946ae09
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:10 +00:00
Marc Mutz
1251273232 QDBusSignature: add ctor taking QString&&
The new constructor cannot be marked nothrow, because it calls
non-nothrow doCheck();

Change-Id: I732fac7a07d46a3ff3be0e4e56de72dd19090737
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:05 +00:00
Marc Mutz
3a961702f0 Mark some QCUPSSupport enums as primitive
They are held in QVariants. No need to allocate
them on the heap.

Change-Id: I7829acbed94fd5b37079df670b0aa2d09613c73c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:20:01 +00:00
Marc Mutz
98eef668e6 Mark QDBusSlotCache{,::Data} shared
The compiler-generated move operations are ok.

Change-Id: Iec0fed49d52ace5ca7dae2c7ee53d717a283f15a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-18 06:19:54 +00:00