Q_STATIC_ASSERT gives better error with C++11 enabled.
Aslo the qt_check_for_QOBJECT_macro had warning on some compiler since
it used null reference
Change-Id: Ic6115da800064b00c50a5762f0b79f5f656bf750
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make sure we don't modify the lhs. Instead copy it and advance the
copy.
Change-Id: I3440e8e175bfc299f8f83b816faca54fa3f79e43
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Probably added by a1898f4466.
qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>' is not defined [-Werror,-Wundefined-inline]
qmetatype.h:1363:30: note: used here
const int toId = qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>();
qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>' is not defined [-Werror,-Wundefined-inline]
qmetatype.h:1386:30: note: used here
const int toId = qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>();
Change-Id: I9afe1a3d50ab23eb701797e28b259966dc95a147
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Any known smart pointer in a QVariant can be handled in this way. The
metatype system can be informed of new smart pointer types using an
existing macro which is now documented.
This is very similar to the existing infrastructure
for containers.
Change-Id: Iac4f9fabbc5a0626c04e1185d51d720b8b54603d
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-DKEY="VALUE" was correctly turned into -DKEY=VALUE,
but -DKEY=\"VALUE\" was turned into -DKEY=\VALUE"
due to the erroneous check ('quote' is still 0 when
encountering the first '\' character).
This fixes QCoreApplication::arguments() as used by
moc.exe after porting to QCommandLineParser.
Further investigation shows that double-quotes and single-quotes
are handled differently. The tests now ensure that this parser
respects what Windows sends in argv, and in particular that
QTBUG-15379 doesn't regress, as well as fixing QTBUG-30628.
Task-number: QTBUG-15379, QTBUG-30628
Change-Id: I95062c9a6022632b321b2f6fae3089f07be7b5c6
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Replace that need with a macro so that registration of the
container helper conversions is done at the time of registration
of the container (usually when it is put into a QVariant).
Change-Id: I823fb3fdbce306ebc9f146675ac43724cec678d5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
The old code used to check for usingWinMain, which is not set when
Qt is used within a DLL. Try to check for presence of stderr
by checking for a console window or a redirected stderr-handle.
Task-number: QTBUG-32044
Change-Id: I87893c3438f5e92d73488e9c25b95cbfeaacc1f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
To be consistent with signals which are public since Qt5.
Change-Id: I633077e37d0851b118c22da0681e8b8b1892ddbb
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
'T' is a fairly common name for template parameter. So if we use it in
Q_OBJECT, it means you cannot use it as a template parameter name of the
object itself (otherwise it does not compile as it shadow a template
parameter)
Use a more explicit name instead
Change-Id: Id317c5b11d87f370eed6d1dc0b0142c9eb4994db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Before this patch,
qRegisterMetaType<QSharedPointer<double> >("QSharedPointer<double>")
without a metatype declaration fails to compile, whereas it works
with Qt 5.1 (ie, before commit e9a69c3ba9)
Change-Id: I9408f711c9df810ff29b879b7696dab81c1160f1
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The destructor of the ConverterFunctor calls unregisterConverter. If
the instance is static (as it is in qmetatype.h), then this method
can be called after the QGlobalStatic has already been destroyed.
Change-Id: I33b70734cbe09dfa888e887280c349e43ad1b855
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Don't use ## concatenation to create an identifier. That won't
work for types in namespaces:
Q_DECLARE_SMART_POINTER_METATYPE(QtPrivate::FutureSmartPointer)
Change-Id: I876ea93d817724005efc28413f09c01623c2a7a1
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Clang doesn't like forward-declared inline functions.
qmetatype.h:70:29: error: inline function
'qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>' is not defined [-Werror,-Wundefined-inline]
inline Q_DECL_CONSTEXPR int qMetaTypeId();
^
qmetatype.h:1463:30: note: used here
const int toId = qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>();
^
Change-Id: I1454af5cce56512f0b3d63cfaf51a536207fc511
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Added Q_DECL_UNUSED for the function used in Q_ASSERT; removed the
functions that really weren't used and added the #ifdef for the
function that was only used under #ifdef.
qmetaobjectbuilder.cpp(93): warning #177: function "priv" was declared but never referenced
qobject.cpp(2349): warning #177: function "check_and_warn_compat" was declared but never referenced
qpathsimplifier.cpp(141): error #177: function "<unnamed>::Rational::isValid" was declared but never referenced
qtextengine.cpp(2584): error #177: function "<unnamed>::QScriptItemComparator::operator()(const QScriptItem &, const QScriptItem &)" was declared but never referenced
Change-Id: I89a140d59211f10ecd88d751f0bcc0ea2fedff7f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Since Qt5, the QMetaObject do not contains the string name of the
builtin types, but only the QMetaType id. QMetaMethod::typeName
convert back from the id to the string. But if the type is aliased,
the string of the main type is returned.
This was the case for example for qint64 which is transformed to
"qlonglong".
This causes a regression in QMetaType::invoke when trying to invoke a
method which return an aliased type, since the string comparison would
fail.
Fix the problem by also comparing the metatype id.
Changelog: QMetaMethod::invoke: Fix return of aliased meta type
Task-number: QTBUG-33222
Change-Id: Iec7b99dcbf7b23eb818de74f413e4451ce510ac4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
The QCommandLineParser class provides a means for handling the command line options.
QCoreApplication provides the command-line arguments as a simple list of strings.
QCommandLineParser provides the ability to define a set of options, parse the
command-line arguments, and store which options have actually been used, as
well as option values.
Done-with: Laszlo Papp <lpapp@kde.org>
Change-Id: Ic7bebc10b3f8d8dd06ad0f4bb897c51d566e3b7c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This reverts commit aa1b4c0943.
It turns out that the bug is caused by a different mask constant
in Windows 8 which should not take effect in pre-Windows 8.
Change-Id: I1ad502262dae42856c07d48ee3bc9dc032ab379b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
C99 defines the "I" macro in complex.h. qobjectdefs_impl.h can be
indirectly included in user code, which raises the possibility of a name
clash if the user's compiler supports C99 and the user includes
complex.h
Change-Id: Ie79ec7baf2d49a34b66a01556c7e57324303dc04
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Disable the code path which queries /proc/<pid>/exe for the
current executable path, as from a Q_OS_ANDROID perspective,
this executable will be the Dalvik binary. Instead we
get the application directory via the fallback, by
looking in argv[0], since this is set to the location of the
application binary.
Task-number: QTBUG-32852
Change-Id: Ib93050f41cbd47aaf71284e8bfa6a3247131d978
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This prevents deadlocks in case the destructor re-enters.
(Example: a functor containing a QSharedPointer of a QObject)
This also fixes a leaked slot object in disconnectHelper.
Change-Id: Ia939790e3b54e64067b99540974306b4808a77f2
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
QMetaMethod::invoke(..) takes fixed number of arguments for execution.
Adding preprocessor macros which literaly equals this number would be
useful for writing some generic code.
Task-number: QTBUG-31821
Change-Id: Ia2faf291f3f7df44a47c3cf18f5cd587d37d7d2e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QCoreApplication::argv() method was obsolete in Qt4.8
and removed in Qt5.0.
Change-Id: I217402f774f5509c8ca317a35c831ffa5ac2af06
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We prefer to use the monotonic clock because it's never affected by time
jumps (such as the user changing the date, or the system adjusting for
any other reasons, including automatic leap seconds). But if a system
doesn't have a monotonic clock, we simply accept the regular, real time
clock and hope it doesn't jump.
This is better than the current code that never restarts a call. The
side-effect is that a 30-second select may become a 3630-second select
if someone sets the clock back one hour.
Task-number: QTBUG-22301
Change-Id: Ia5a3bb453cd475f45b03637e2549165589fd2524
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The deadlock is caused because the QEvent is destroyed while holding the
event list mutex. And the QEvent may have a custom destructor that will
re-enter the event handlng code.
The QScopedPointer that should destroy the event must be created after
the MutexUnlocker.
Regression introduced by commit f9035587b9
Task-number: QTBUG-31606
Change-Id: I6b2cbc2656eacdec61b641886953f00bf5b3ff36
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In the qobject.html page, the description of the syntax of Q_PROPERTY
does not include the MEMBER keyword added in Qt 5.1.
But it was well documented in the documentation of the property system.
Merge the two code snipppets.
Task-number: QTBUG-32211
Change-Id: I7b57329c201b6f3bc812155f21dbfb2c6423494e
Reviewed-by: Martin Smith <martin.smith@digia.com>
Instead of storing the application type as a uint, we use the enum provided
by QCoreApplicationPrivate. The former resulted in a few cases of wrong
logic where the values got mixed up, such as always printing the QtCore
console warning, even for GUI applications.
The qt_eval_is_supported function has been refactored to return enums instead
of magic values, to make the logic easier to read.
The same goes for qt_eval_days_left, which now only concerns itself with
the number of days left. qt_eval_is_expired() has been added to use for
easy checking of expiration date.
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: Ia0e85b2103f790a7e02e0d6e567a477b3145fcb9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
warning C4267: 'argument' : conversion from 'size_t' to ' int', possible
loss of data.
Change-Id: I8d1ca27d4d66a9ce0deb70766446e780308bba33
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This is needed, because bps_get_event can also invoke callbacks.
Deferred deletions in such a callback are not executed for instance,
because the loop level might already be at its minimum.
Change-Id: I8a1b3a3f92de139575654de011352f8abc6c3c1a
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Jeff Kehres <jkehres@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
qvariant_p.h(226): error: name followed by "::" must be a class or namespace name
template<class C> static Yes test(char (*)[(&C::isNull == 0) + 1]);
^
Change-Id: I42eef44d46ca0fb7aac8f82150e917c4fb912b15
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Flip !Q_OS_IOS conditions to Q_OS_MACX where it seems appropriate,
remove a redundant condition in qtextcodec_p.h.
Change-Id: I21c8c0c490f1eb4a9337a7f2f3e907c125489438
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
It is deprecated and clang is starting to warn about it.
Patch mostly generated by clang itself, with some careful grep
and sed for the platform-specific parts.
Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There is a mismatch how QML and C++ converts QJsonValue. This patch
unifies conversions by adding QJsonValue support in QVariant::convert().
Change-Id: I8a1db3d77c517945ef48064b4b66ba03aa4f2fd0
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
warning C4267: 'argument' : conversion from 'size_t' to ' int', possible
loss of data.
Change-Id: I79af7497420d468b5bc7c48c9ae21b86117519a9
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
In QML it is common to connect signals to slots that are implemented as
JavaScript functions. QML used to maintain separate data structures that
mirrored the QObject connection list and kept references to the JavaScript
objects necessary to perform the call on signal activation.
The recent addition of functor based QObject::connect makes it possible
to store this information in QSlotObjectBase sub-class instead, which
eliminates any extra bookkeeping.
This patch adds internal connect and disconnect overloads to QObjectPrivate
that allow for connecting QObject *sender, int signalIndex to a given
QSlotObjectBase and similar for disconnect.
Change-Id: I90f43d13eb95bd884d752484cf4faacc446f4d6a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
This was introduced by 7ed15da3 (Core: QDebug and comparison operator
support metatypes,, 2013-03-20).
Change-Id: Id89aaffeee8d519ca73f0b52b1ac8b9d233cb5f1
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Empty arguments list could lead to crash, due to access of first element.
Besides, empty application file path will be cached now universally.
Change-Id: Ibe1a668da364d87d8431567dfc999cb394686081
Reviewed-by: Sérgio Martins <sergio.martins.qnx@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Precision timers can cause the event loop to lock up
when running MSVC2012 code on pre-Windows 8.
Task-number: QTBUG-27266
Change-Id: Idd73731e82843d0d140859bab825bc1a54eccf1a
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This patch adds a way to enable operator<, operator== and operator<<
into QDebug for QVariants with custom types.
Change-Id: I3d12d891bd7252ad2b8f1de69bced354800a1f29
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Change-Id: Ia00d0f32e7d552421cc230ffca25085ab0a3a31e
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Destroying the instances is a problem because the instances might
have been created in a plugin. In that case, the destructor of
the instance will be implemented in the plugin. As the instance
destruction code is run very late, the plugin might have already
been unloaded by the time an attempt is made to destroy the
instance.
The workaround is to create static instances on the stack.
Task-number: QTBUG-31142
Change-Id: Ic2632c3548a734b742da46d90249916c35705d46
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Objective-C++ does not support namespaces. In order to make this work,
we decorate each symbol with suffix using the macro QT_MANGLE_NAMESPACE.
However, with such a technic each public symbol needs to be explicitly exported through
this macro. The use of @compatibility_alias allows to define alias to use it
automatically and transparently.
Task-number: QTBUG-23946
Change-Id: Id521b8160bab126fda40a9d960277b1c04cc8b66
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Added an upper bound check for socket notifier file descriptors. Too
high FDs have been a real source of failure.
Added compiler hints to allow error-free code path run faster (errors
are highly unlikely) and adjusted warning messages (some were misleading
and too long).
Change-Id: I1c9c41f5d006ca9d3a28214c3a464555b8a1c71f
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Fix connection to pointer to member signal that belongs to the base
class, but whose type is a pointer to a member of the derived class.
The current code only use the QMetaObject of the type coming from the
function type to look up the signal id. But if the signal was casted
to a pointer to member function of a derived type, then we also need to
look in the base classes
Change-Id: Ib98fc38f63942946acb34d9f83c100991d58e4e5
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
A new set of classes is introduced for iterating over the contents
of a container within a QVariant without knowing the exact type of
the container, but with the guarantee that the element type within
the container is a metatype.
The implementation of the iterable interface uses
the stl-compatible container API so that we can also iterate over stl
containers, or any other container which also conforms to stl norms.
This enables the functionality in the bug report.
Task-number: QTBUG-23566
Change-Id: I92a2f3458516de201b8f0e470982c4d030e8ac8b
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
This patchs allows the user to convert defined QMetaType types like
MyType to be converted by using e.g. QVariant::toString(), mapping to
MyType::toString(). Also all the other QVariant::toXYZ() methods are
supported so far.
The patch adds static methods QMetaType::registerConverter supporting:
- implicit convertion
- conversion using member method of source type
- conversion using unary functor
Change-Id: I4f1db83d9c78bcc9df5c42f82f95cce0480cdcc3
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
We know the size of constructed list, so it may be worth to reserve
memory space for it.
Change-Id: Idad061bc1dbf5acecaec48d2e00ca3504b9db8b8
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The evaluation message box caused the QtWebProcess
to quit due to the fact that the process has no other
windows and EvalMessageBox was both set to be closed
on quit and ended up being the last window in the process.
Change-Id: Iad6461d014258fdc5fade7dafe48da33903377bb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
This change amends my earlier change to make
the function reference relevant to the example
being discussed.
Task-number: QTBUG-28204
Change-Id: I841a561ba117f83a96b8b4a3661cea2a7a3e47da
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
This patch will follow up on e27ca37 (add more state to
QT::ApplicationState), and add a new event class
QApplicationStateChangeEvent with type Qt::ApplicationStateChange.
Change-Id: Idee724f181f1fbb2321ddad7e0df00c88b3488b1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Task-number: QTBUG-30134
Restore the lines in qcoreapplication.cpp removed by commit
950b35cf97 to ensure QThreadData and
QAdoptedThread object of main thread is destroyed at application exit.
We don't set QCoreApplicationPriavte::theMainThread to 0 as before since
it will be set to zero in QThreadData::~QThreadData()
Change-Id: I8ee56aff5a933ce1d812b07fb00a29ed0839ab6e
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There is potential trouble and no point in registering a QSocketNotifier
on an invalid file descriptor. This is prevented now in addition to the
existing warning.
Change-Id: I6fc3c639b167ea98d09a2738986360cc4b3fc210
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Since 34a3b63dc7 (Qt 5.0), moc expands
macros to their defined values. This broke the example of tagging a
method: in Qt 4, it never expanded anything, so the tag was always
visible and extracted. Now it's necessary to avoid defining it to empty
when moc is run.
Change-Id: I89967f7f993cf8e14119b086f4dd5573b348646d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Previously it was only mentioned in properties.qdoc
Task-number: QTBUG-18802
Change-Id: Iab23128c1567974154cdcce7412b2e1468bb846a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This change makes the function reference more
relevant to the example being discussed.
Task-number: QTBUG-28204
Change-Id: I50bea45f1e11d7e1eef4bc6726ebb329151fbc3d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
So far, type-name strings for class template instantiations were constructed
in QMetaTypeId::qt_metatype_id() by concatenating various bits and pieces
into a QVarLengthArray<char>, presumably to avoid the dynamic memory
allocation for small strings.
Yet, when passing the result to qRegisterNormalisedMetaType, which takes
a QByteArray, the QVarLengthArray was copied from, not by
QByteArray::fromRawData(), but by QByteArray(const char*,int), which
unconditionally results in a dynamic memory allocation after all.
What's worse: the characters are copied twice: First into the QVarLengthArray,
and then into the QByteArray.
Remove the first of these copies by using QByteArray+reserve() to copy
directly into the final QByteArray.
Change-Id: Id915798a318fe97279a7cc0aca176544f99c7e86
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Apple Clang 4.2 has a new warning, letting you know when a private
member isn't used by any member function (and, I guess, if the class
has no friends):
private field 'd' is not used [-Werror,-Wunused-private-field]
Qt has a few of those for future expansion. It's not an error for us.
Change-Id: Id2edb1159589572f97a07f93181c9c96c5dd983c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: David Faure <david.faure@kdab.com>
This is inconsistent (e.g. the glib event dispatcher doesn't do this) and
unnecessary (already done by QThreadPrivate::finish before deleting the
event dispatcher, and by the QCoreApplication destructor).
Change-Id: Ib98147953a5e71ec87aab0ec7ef5063bb7d80134
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
postEvent() accesses it with the postEventList mutex locked, but
processEvent() was checking it without any mutex locked.
Change-Id: I31bbb50f7a1c337067b8e3de16ee7cd11400b517
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It's read and written by different threads, so this was a race.
Change-Id: Ieffaa169eb67f40dc935291b3994f9ff1c7e05f0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
... when the compiler do not support variadic template
Change-Id: Iec84cad8ece2fc28b0c224872fdd90d30ae60fc9
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When variadic templates and decltype are supported, detect the best
overload of operator() to call.
Currently, the code takes the type of the operator(), which requires that
the functor only has one, and that it has no template parameter.
This feature is required if we want to connect to c++1y generic lambda
(N3418)
Change-Id: Ifa957da6955ea39ab804b58f320da9f98ff47d63
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Else, the operator,(T, ApplyReturnType<void>) is sometimes chosen if a
pointer is passed, and that is breaking some decltype expressions.
(such as the one in ComputeFunctorArgumentCount in the next patch)
Change-Id: Ic203bbb1a8f5abbebb3b11786454807aa20be5fd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but
it's a good idea even in private headers, in case someone includes
that header first somewhere. In particular, all platformsupport API is
private.
Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Remove all trailing whitespace from the following list of files:
*.cpp *.h *.conf *.qdoc *.pro *.pri *.mm *.rc *.pl *.qps *.xpm *.txt *README
excluding 3rdparty, test-data and auto generated code.
Note A): the only non 3rdparty c++-files that still
have trailing whitespace after this change are:
* src/corelib/codecs/cp949codetbl_p.h
* src/corelib/codecs/qjpunicode.cpp
* src/corelib/codecs/qbig5codec.cpp
* src/corelib/xml/qxmlstream_p.h
* src/tools/qdoc/qmlparser/qqmljsgrammar.cpp
* src/tools/uic/ui4.cpp
* tests/auto/other/qtokenautomaton/tokenizers/*
* tests/benchmarks/corelib/tools/qstring/data.cpp
* util/lexgen/tokenizer.cpp
Note B): in about 30 files some overlapping 'leading tab' and
'TAB character in non-leading whitespace' issues have been fixed
to make the sanity bot happy. Plus some general ws-fixes here
and there as asked for during review.
Change-Id: Ia713113c34d82442d6ce4d93d8b1cf545075d11d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
this required making it compile with QT_NO_QOBJECT. of course this
disables anything related to threading and event processing.
needed for bootstrapping qmldevtools (qmlmin, lupdate)
Change-Id: I6f8bd3996ac7b6eee49a5b8a55143d358abe35ee
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
don't test for building specific tools when we actually only want to
know whether we are bootstrapping. so far, this was only redundant; with
the upcoming change of not bootstrapping unnecessarily it would be
outright broken.
Change-Id: I7600d8ebb14a4194640c50035e35a04263f2ccce
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Currently, QCoreApplication::startingUp() returns true even after
a QCoreApplication has been constructed. This patch makes it return
false after it has been constructed and adds checks to QApplication
and QGuiApplication to ensure that it returns true within the
constructor of these classes.
Task-number: QTBUG-2591
Change-Id: Ie511522d35b5658c20be43dd112eae18c205277f
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
While adding a test case for the new behavior, two issues
with the connectSlotsByName implementation came up:
1. for auto-connected slots that don't exactly match a signal,
a 'compatible' one is searched. There might be more than
one of those. The implementation randomly picks any.
2. The "No matching signal for %s" warning gets printed even for
slots that can never be connected via connectSlotsMyName
anyway (e.g. "on_something"). This is inconsistent.
This fixed both: an explicit warning is printed if more than one
'compatible' signal is found and the "No matching signal for %s"
warning is only printed if the slot adheres to the full
"on_child_signal()" naming convention.
In the process I added comments and changed the code slightly to
make it more readable and explicitly hint at non-obvious behavior.
Change-Id: Icc8e3b9936188d2da8dfff9f0373c8e5c776eb14
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Since glib 2.32 this function is just an empty body.
Fix the warning and don't try to call it. There seems
to be no way to disable threading in glib.
Change-Id: Id30e606d341bd6ef871737275336f6c6b3b2559b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
QMetaObject::connectSlotsByName(QObject* o) creates a list of all
children to look for signals that match slots of o. This changeset
simply adds the object o itself to that list.
The motivation is to finally fix the long standing QtCreator bug
QTCREATORBUG-6494. Where executing 'Go to slot...' and choosing
'accepted()' for a simple QDialog named 'MyDialog' will add a
on_MyDialog_accepted() slot to MyDialog. That slot never gets
connected. More details may be found in the linked QTBUG-7595.
Task-number: QTBUG-7595
Task-number: QTCREATORBUG-6494
Change-Id: I35f52761791af697eabb569adb5faee6fae50638
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This avoids crashes accessing deleted memory when creating a QObject
after the last QObject had been deleted, like a qDebug() in global
destructors.
==41000== Invalid read of size 4
==41000== at 0x5F01ED5: bool QBasicAtomicOps<4>::ref<int>(int&) (qatomic_x86.h:208)
==41000== by 0x5F01309: QBasicAtomicInteger<int>::ref() (qbasicatomic.h:147)
==41000== by 0x5F24051: QThreadData::ref() (qthread.cpp:100)
==41000== by 0x614A984: QObject::QObject(QObject*) (qobject.cpp:681)
==41000== Address 0x6ee73f0 is 0 bytes inside a block of size 152 free'd
==41000== at 0x4A0736C: operator delete(void*) (vg_replace_malloc.c:480)
==41000== by 0x5F240BF: QThreadData::deref() (qthread.cpp:109)
==41000== by 0x6113F6B: QCoreApplicationData::~QCoreApplicationData() (qcoreapplication.cpp:268)
The comment right above the change in qthread.cpp looks eerily similar
to the problem I'm trying to fix. However, the actual change that
introduced the change is not in the Qt public history, so we can't
know for sure what the problem was then.
Change-Id: I0dba895b041fe6cf81e6f8939ca85035cd00aad1
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Based on the Necessitas project by Bogdan Vatra.
Contributors to the Qt5 project:
BogDan Vatra <bogdan@kde.org>
Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
hjk <hjk121@nokiamail.com>
Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Paul Olav Tvete <paul.tvete@digia.com>
Robin Burchell <robin+qt@viroteck.net>
Samuel Rødal <samuel.rodal@digia.com>
Yoann Lopes <yoann.lopes@digia.com>
The full history of the Qt5 port can be found in refs/old-heads/android,
SHA-1 249ca9ca2c7d876b91b31df9434dde47f9065d0d
Change-Id: Iff1a7b2dbb707c986f2639e65e39ed8f22430120
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QtCore has a few headers that, though public, aren't meant to be
included directly. Those are the atomic headers, the three _impl.h
headers and qt_windows.h.
QtGui includes two OpenGL headers that don't compile on their own.
Other libraries should not have headers like that (but they do,
something we need to fix eventually).
Change-Id: I55e4eb057748f47df927ee618f9409acbc189cc1
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The various string properties are good candidates for exposure to QML.
While QCoreApplication itself is unlikely to be exposed to QML directly,
a wrapper exposure also needs these signals in order to react to changes
from QCoreApplication.
Change-Id: I266da6010f1c9300de4bb5e7775a0bdacab7f26c
Reviewed-by: Richard J. Moore <rich@kde.org>
We treat iOS as a variant of Mac OS, so for iOS both Q_OS_MAC and
Q_OS_IOS will be defined. This matches what Apple assumes in the
header file TargetConditionals.h
Change-Id: I55cc851401b748297478e4c32e84e0f6e1fdfc28
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This decouples it from qAbs which is declared as a constexpr under
certain compilation flags and enables for qtbase to be compiled with
GCC 4.8
Change-Id: I78e02256ffc8b460ca74ae5241e77dfac4e09ba9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We might need more robust code in the future. But at least for this case
it looks like a CFStringRef is also a possibility.
Task-number: QTBUG-29776
Change-Id: Iaf50835122fcbb7e6e9c7fbf65e31e6143b2bc54
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Denis Dzyubenko <denis@ddenis.info>
This fixes QMetaType detection of const reference arguments in signals
while connecting using the new syntax and Qt::QueuedConnection
const references should have the same QMetaType as non references.
That means we need to remove the const reference while getting the
QMetaType.
Change-Id: I9b2688da7fb9ae985aec0d8fa62a1165357ffe71
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Qt5 requires Mac OS 10.6, so we can remove checks such as
if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
Change-Id: Iea21727a277291148704ecf9677ed0b68c24920f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is possible with QWeakPointer, so allow it for migrating
code too.
In the process, replace the QPointerBase with a member variable for
simplicity. The functionality of the QPointerBase is replaced
by a TypeSelector template.
Change-Id: I3b4c77bdeda2b863cc33e84a3da8a25bae928c8c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Vxworks DKM mode does not have rand_r function, use function
implementation from qfunctions_vxworks.h/cpp instead.
Change-Id: I8f23c3453ab9f31280eb90f66dd83d7a64ee98c9
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
The compilers checked here are not supported in Qt 5. Additionally,
the QSharedPointer implementation has similar operators without such
guards, so in reality these compilers may not have worked
with Qt 4.6+ either.
Change-Id: I208f3cde7c689770ae15245a555e3a58b749a8a3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It was there because of MSVC6 compatibility.
It is not removed, because some code used to do
qMetaTypeId(&myVariable);
This was not a documented feature anyway, so it should not be user
visible.
Change-Id: I55327d7e73e67a6bb741817741d530d5a650291a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
That resulted in error such as:
qobject_impl.h(82) : error C2078: too many initializers
This should have been tested by tst_QObject::connectManyArguments, but
the test did not work because the detection of defined QMetaType was broken
for const references. That will be fixed in a latter commit.
Task-number: QTBUG-29130
Change-Id: I78514c251358c0e8adf33af724d87ab114230cd3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The new QThread documentation now really discourage to reimplement
QThread. But in fact, there are many cases where it is perfectly fine.
And the example given is even a case where using worker object is wrong.
The examle even contains a leak since the thread will never stop and
will even leak.
This changes put back some sentences from before commit
d4ad9dbbf9.
The sample code has been re-writen. Notice how reimpementing run takes
less lines of code, less runtime overhead, no leaks, and also is more
complete than the previous example.
Change-Id: I6cb80826e917dd5ce442ccad2572ec692ccb25ab
Reviewed-by: Andre Somers <andre@familiesomers.nl>
Reviewed-by: Geir Vattekar <geir.vattekar@digia.com>
Reviewed-by: Debao Zhang <hello@debao.me>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QtTestLib and QTestLib don't exist. The proper name is "QtTest" (code)
or "Qt Test" (English)
http://qt-project.org/wiki/Spelling_Module_Names_in_Qt_Documentationhttp://lists.qt-project.org/pipermail/interest/2012-December/005221.html
Files paths in qttestlib.qdocconf can't be changed easily however, as it
breaks things. So, they're left as they are.
Change-Id: Ifbc44ea858c453bedad8cd7723f847e67fc7a85a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
The macro was made empty in ba3dc5f3b5
and is no longer necessary or used.
Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html
Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
Fix 19 counts of "Can't link to 'default-constructed value'"
warnings.
There was only one link to "default-constructed values", so the
cleanest solution was to change the keyword.
Also included a related typo fix.
Change-Id: I84b47743ecb72a1b2731ef65080fa1e630d478a4
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This avoids an extra division by 1000 when getting the current time.
This can't overflow, under normal circumstances, even on 32-bit: when
adding two values less than 1 billion, the result is less than 2
billion, which is less than 2^31.
Change-Id: I6f8e1aadfe2fcf6ac8da584eab4c1e61aee51cbb
Reviewed-by: David Faure (KDE) <faure@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We don't need to stat(2) the file to check if it exists before
creating it. We're about to open(2) with O_CREAT|O_EXCL, which will
not recreate it if it existed.
Change-Id: I2d2176054e7776a32a4520832ee104b9c4ccf748
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
VxWorks has defined variables with same name as in Qt's headers.
Undefine those variables to avoid naming conflict.
Change-Id: Ia8ca04a66acece683cd6c7f71df7e5a2800ec98d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
In VxWorks qfunctions_vxworks.h file includes correct time
related headers and it is included already at file
qplatformdefs.h for all mkspecs targets.
Change-Id: I8677eef8c79cebb445d89203284f3af27abbdd7f
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
The uniprocessor taskIdCurrent global variable (declared in taskLib.h)
does not exist in VxWorks SMP, because of concurrent execution on
multiple CPUs. Any uniprocessor code that reads taskIdCurrent should
make calls to taskIdSelf() instead.
Change-Id: I4e0efef32297f339d6121c7d4bca3820e0fc9294
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
VxWorks don't have gettimeofday function so we always use the one
implemented in Qt. VxWorks DIAB compiler is not supported building Qt
for VxWorks 6.9.2. Anyone using older VxWorks should also not be
affected so use new defines VXWORKS_DKM and VXWORKS_RTP for VxWorks
version 6.9.2 onward.
Change-Id: I2e9546a101256ea0557b65163b40cd0f28be8519
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
This is necessary for initializing things in a library, which require
a QCoreApplication instance (unlike Q_CONSTRUCTOR_FUNCTION, which runs
before that). Example use cases: KCrash (segv handler), and KCheckAccelerators
(debugging tool triggered by magic key combination).
Change-Id: I5f4c4699dd4d21aea72b007989ba57467e86ed10
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Drop the read and write permissions for group and other users in the
system.
Change-Id: I8fc753f09126651af3fb82df3049050f0b14e876
Reviewed-by: Richard J. Moore <rich@kde.org>
eventfd(7) uses less resources than a pipe, as it only needs to store a
single 64-bit integer, as opposed to a full buffer.
It was introduced first on Linux version 2.6.22 and glibc 2.7. However,
both the configure-time test and the runtime usage require the use of
EFD_CLOEXEC for thread-safety, so this code will be enabled only for
Linux 2.6.27 and up as well as glibc 2.9 and up.
Change-Id: Ic7e10b28d7b1d4ca24be614ed84055c4429a68e4
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Nobody should break ODR, but we were living with apps breaking it
for at least 8 years. Sure it is an undefined behavior but in many
cases it works. I do not think that Qt should enforce usage of
a proper C++, it is role of a tool chain. Qt can only indicate that
something is going terribly wrong.
Make message a bit more verbose. Sometimes the ODR violation is not
that easy to fix, therefore a hint is a nice addition.
Update documentation of qRegisterMetaType.
Change-Id: I61dcccc840eec80a4ed5b8a212a912807d239d8c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Both qdoc and Q_QDOC are used in source code, which looks not good.
Change-Id: I4f3a71670278b0758d92bfa5db086a07e1b1acfd
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
QRegExp and QRegularExpression are totally independent, therefore
using two different defines is the right thing to do.
Also, document the new define in qfeatures.{txt,h}.
Change-Id: Ice4826ea543f4b22f1cc27bf31ed6e043d0c43b0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
In the event dispatcher the timer list has to be reevaluated after
each call to filterEvent, because timers could be started in event
filters.
Change-Id: I1a275845fb74c63441f2301555f3459f8295af27
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Omit its value in the documentation.
Change-Id: I474faefde23b0e2e0a77a9e6391fd556a6523128
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
For qwineventnotifier.h, just wrap the code around #ifdef Q_OS_WIN. This
has the added benefit of fixing the current qt_no_master_include problem
(that is, even if you #include <QtCore> on Windows, you wouldn't get
it).
For qtypetraits.h, it requires qglobal.h first.
Change-Id: If1ba09a0a29de429a5b87e9878c8ac6a62a443c4
Reviewed-by: Laszlo Papp <lpapp@kde.org>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
When disconnect()ing through a QMetaObject::Connection, if the
QObjectPrivate::Connection contains a slot object, deref it, so
that it will be destroyed before the next run of cleanConnectionList.
Previously, a copy of the functor passed to connect() was kept until
QObjectPrivate::cleanConnectionLists was called (by adding a new signal,
or the sender was destroyed), even after a successful call to
disconnect(). That is, we were keeping that copy allocated without
any good reason.
Change-Id: Ie6074ea797df1611cb995dec07c5b5a742360833
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
The QObjectPrivate::Connection refcount was not decreased
when disconnect()ing, therefore it was kept alive by the
owning QMetaObject::Connection object.
This removes a leak in case the QMetaObject::Connection
survives the sender object, after a successful disconnect().
Change-Id: Ie2ea59b269a0e589ae23c1457df7533be77c0797
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
There are two ways to register a type: using Q_DECLARE_METATYPE(T) and
using qRegisterMetaType<T>("T"). Doing one thing in one translation
unit and another thing in another TU constitutes an ODR violation,
because the value of QMetaTypeId<T>::Defined will differ in the two
TUs.
By adding the information whether a type was declared with
Q_DECLARE_METATYPE to the typeFlags(), such a use will trigger
the existing binary-incompatibility failure that checks for
equality of the incoming type flags with the stored ones (if any).
I had to encode the type as a defaulted function argument in order
to avoid the linker merging instantiations of the function templates
and therefore rendering the detection moot.
Change-Id: I82017caf300458b411cc8ac2f6653536fac64117
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Because the linguist examples are moved to qttools module, a link
to the hellotr example broke.
Change-Id: I2aeefc143578618396f5be38ed1d52afdd1f7436
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
This change makes it possible to use the QML JS debugger with KDE
applications.
Change-Id: Id5838fa34dcb8b54127abc6da6fe7c2e9a5a1c2e
Reviewed-by: David Faure (KDE) <faure@kde.org>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
There is currently a symbol clash with a duplicated
isBuiltinType() in ActiveQt's dumpcpp-tool, which breaks static
building. Reuse the function.
Task-number: QTBUG-28131
Change-Id: I4985e8405924754aa613311ca3f06d6ba29758b8
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
These Qt3 legacy application types do not match the application types
available in Qt5. Thus, the decision was to kill the confusing and
mostly useless type enum. Use for example qobject_cast instead to find
out the application type.
Task-number: QTBUG-28093
Change-Id: Ia8cf7c3ea98a3cea27f74760d62e519ea10bce9f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make sure we always emit the destroyed() signal before
we delete our children. This wasn't working correctly
for QWidget based classes, as the QWidget destructor
deletes all children itself.
Task-number: QTBUG-24672
Change-Id: Iecdff3489196271177edfeba1c4a2c5800e255af
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Since it is declared in qglobal.h, we do not need to re-implement the
hack here.
QTOSTRING was only defined if QT_NO_META_MACROS was defined, so
practically not safe to use in other places.
Change-Id: Ie5b07d0fa7537ba79380b882a4c822583ee5635e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This change ensures that BPS events are delivered to the proper
channel even if the application code would change the channel.
Change-Id: Id44efbdd99350c639e391161dd89b8d422c4b330
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Jeff Kehres <jkehres@rim.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Enter handling requires knowledge of the mouse
position. Extend the enter handling of
QWindowSystemInterface to receive the position
(implemented for Windows, XCB and Mac), passing it
on to QEnterEvent. Dispatch QEnterEvent from
widgets code.
Change-Id: I49c07d2b1f46310c877017dd55d4cd7d636bdbce
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Remove watchUnixSignal(), unixSignal() and associated code. These are relics
which were being used by QWS to detect virtual console switching. Currently
they are not being used at all. The recommended way to watch for Unix signals
in Qt is http://doc-snapshot.qt-project.org/5.0/unix-signals.html.
Change-Id: Id34207cb8853442302a45b2816356da0f973ebb1
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>