summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* Support 31 mouse buttons (with platform plugins xcb and xlib).Rick Stockton2011-11-141-1/+30
| | | | | | | | | | | | | This commit includes changes for mouse button support within the XCB and XLIB platform plugins. Support in other platform plugins will be added in the future. The namespace update is prerequisite to compile the the Plugins, and the update in qguiapplication.cpp is required for the enhancements to actually work. Task-number: QTBUG-22642 Change-Id: Ie18fca3b9c86d0b6abbf2103a4f8582e6ce83e7d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* moc: support mapping pointers to member functions to indexesOlivier Goffart2011-11-141-1/+2
| | | | | | | | | | | | | This change adds QMetaObject::IndexOfMethod as a parameter to the qt_static_metacall function. It lets the moc generated code return the index of a signal or slot given its pointer to member function This is required to support the new connection syntax Change-Id: I39198c6699b5aa3599d3d282f7ac79b1e3684d33 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't use deprecated functions on Mac OS XBradley T. Hughes2011-11-142-7/+7
| | | | | | | | | | | | | | | | io/qfilesystemwatcher_fsevents.cpp:346:15: warning: 'stat64' is deprecated [-Wdeprecated-declarations] if (::stat64(it->absolutePath, &newInfo) == 0) { ^ According to 'man 2 stat' on Mac OS X, the stat64() function is deprecated in 10.6 and above. Instead, we are supposed to define the _DARWIN_USE_64_BIT_INODE which enables the 64-bit ino_t member in the stat struct and uses function symbol suffixes to call the correct version of stat with 64-bit inode support. Change-Id: I697374186c7f4d69df783f06962ca5644222194d Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Add a -force-asserts option to configureHarald Fernengel2011-11-111-3/+3
| | | | | | | | | | | We have the following scenario: Either you build a release package without asserts, or a debug package with asserts. However, in embedded development, we need asserts also in release packages. This flag allows you to build a release package, but Q_ASSERTs still fire. Change-Id: Icd1dd4dd63c3cafecf515b40741263d902ad42d1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Prefer organizationDomain or CFBundleIdentifier for settings fileChris Meyer2011-11-111-0/+44
| | | | | | | | | | | | | Watch for attempts to write to "Trolltech" preferences and use QCoreApplication::organizationDomain() instead. If that doesn't exist, then fall back to CFBundleIdentifier if possible. If that doesn't exist, then follow the old code path and use the hardcoded string. This change eliminates extra files being created which helps Mac app store acceptance. Change-Id: I1ba3984b46cf3888f371d87f6ad8ea6c2f26d2ec Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* avoid type aliasingThomas Hartmann2011-11-111-9/+30
| | | | | | | | | | | | | | | | | For -O2 gcc activates -fstrict-aliasing. As a result the compiler is allowed to assume that pt[1]=px[1]/3+B1 does not affect t. Therefore the result of _fast_cbrt() was always 0. Using a union for casting avoids this issue. For more details see: http://labs.qt.nokia.com/2011/06/10/type-punning-and-strict-aliasing Also the updated code respect endianness. Change-Id: Id4bed16efac52e494e7357dc2f23f94e8c525df1 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Removed include to qdatastream.h from qmetatype.hOlivier Goffart2011-11-101-4/+2
| | | | | | | | | | | | | | | Added forward reference to QDataStream instead In the new connection syntax, I want to include qmetatype.h from qobject.h, in order to handle metatype for queued connection. So qdatastream cannot be included here (as it inherit qobject) else it would lead to circular inclusion. QDataStream is only used in templated code that is dependent on the template parametter so it is fine to have it forward declared. Change-Id: I08ea479f481262a80451a277ee29533c42cb9f89 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Fix Q_STATIC_ASSERT on MacJoão Abecasis2011-11-101-1/+1
| | | | | | | | | | | gcc 4.2.1 complains about the use of C++-style cast in the macro. error: template argument 1 is invalid . Changing the bool-cast to a C-style cast makes the test compile. Change-Id: Ie9082a3adbfd53147bfd0bfe36dd9e7328e01ee8 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Updated Qt::InputMethodQuery documentationPekka Vuorela2011-11-101-7/+22
| | | | | Change-Id: Ibd27231366e4af2780bfe2f8f735da74dc04a1cf Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Add isDebugBuild() query function to QLibraryInfoaavit2011-11-102-16/+21
| | | | | | | | Also cleaned up the doc, removing references to the buildkey() function that has been removed. Change-Id: I2cb403f93d93c0b2f71c8502818d669f7bfbfbec Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
* Correctly normalize timevals before calling select()Bradley T. Hughes2011-11-092-9/+5
| | | | | | | | | | | | | | | | When normalizing timevals, we need to bound the tv_usec member to 0-999999 inclusive, otherwise select() may return EINVAL. When rounding timevals to the nearest millisecond in the UNIX event dispatcher, pass the timeval through normalizeTimeval() when returning. As discovered on Mac OS X with tst_QFutureWatcher, starting a 10 second timer would end up calling select() with timeval = { 9l, 1000000 }, resulting in numerous "select: Invalid argument" warnings being printed to the console. Change-Id: Ic539e935bf847e0d4c22a73ad203e3a7a81d0690 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QVariant: Fix MSVC compiler warning about unused variable null.Friedemann Kleint2011-11-091-2/+1
| | | | | | | | | Use static method isnull(). Introduced by ca26fefc0624264262a2abe630568271cefa2753. Change-Id: I752f8d8a5ec473dcc5f50fbda47d061b8d3a7e13 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* [optimization] QVariants comparisonJędrzej Nowacki2011-11-091-2/+2
| | | | | | | | | | | QMetaType::isRegistered and QMetaType::typeName are quite expensive. To compare two custom objects we need to have their type name (for dereferenced comparison). If the name exist we know for sure that the type is registered and we do not have to call QMetaType::isRegistered anymore. Change-Id: Iba631e012504c8633868a902880fa30d38afb917 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add QPolygonF to metatype system.Jędrzej Nowacki2011-11-093-2/+8
| | | | | | | | That was strange that QPolygon was know to QMetaType class but QPolygonF not. Change-Id: I67bb99644b8b1d0fe1aec730619d8048cb78219b Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Make usage of internal QVariant space.Jędrzej Nowacki2011-11-093-413/+345
| | | | | | | | | | | | | | | | | | | | | | Each QVariant instance has internal storage which may be used for well-know basic types. This patch changes the behavior by delegating type dependent operation to QMetaType class which knows more types than QVariant itself. The patch significantly reduce amount of code in QVariant implementation. There are few side effects of this patch: - better performance: * for Core types when using Gui (QGuiVariant is able to construct Core types) * for small custom types (QVariant::Private::Data is used for all types that has size small enough) - comparing two QVariants can give different result for small custom types (binary comparison instead of pointer comparison) Change-Id: Ic17fa500d6a882110bfba896fd456c8e6c7a63a9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Implement QMetaTypeSwitcher.Jędrzej Nowacki2011-11-092-1/+103
| | | | | | | | | | | | | | | | | | | Currently one of the most common coding pattern, when working with QMetaType types, is to switch over all types ids to convert a given type id to a real c++ type. The pattern is not perfect, because of: - code duplication - to convert type id to a real type a user has to write own switch case - maintenance - adding new type to QMetaType::Types doesn't propagate to other parts of code. Proposed type switcher can solve the issue by switching type id and delegating found c++ type. The class is created for internal use only and was created to simplify common problems in QtDeclarative, QtScript and QVariant. Change-Id: I0567ef908024b3b05ee18126f98a73a74748fbd2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add QTypeModuleInfo template classJędrzej Nowacki2011-11-092-1/+118
| | | | | | | | | | | From time to time it is necessary to know from which module a type comes from. This information couldn't be part of QTypeInfo as id doesn't work for forward declared types. QTypeModuleInfo should stay for Qt internal usage only. Change-Id: Ia53747c88293fc0cdaffef919b94c653412779d3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Refactor QMetaType types.Jędrzej Nowacki2011-11-093-163/+155
| | | | | | | | | | | | | | | | QMetaType::Type enum is the main source of type ids. Currently there are many tasks that can be replaced by a smart macro that can iterate over all types. The patch introduces series of FOR_EACH_ macros that may be used for code generation. As the first step the macro was used for Q_DECLARE_BUILTIN_METATYPE to make sure that no type was forgotten. Second step was to use created macros in autotest to improve tests coverage. Change-Id: I34e9ad7bacf02b44b028bc1aad20b1241aacebd3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QGlobal: Define a default message handlerAurindam Jana2011-11-081-16/+26
| | | | | | | | | | | | | Currently, qInstallMsgHandler() does not return the handle to the default message handler. This patch defines a default message handler. This is returned by qInstallMsgHandler() when called for the first time. A call to qInstallMsgHandler(0) will restore the default message handler as was the case previously. Change-Id: I42f06654d45fb0e633f3c6d912fc8f05c23249aa Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add Q_DECLARE_PRIVATE equivalent for QDir, to be able to subclass itDavid Faure2011-11-084-15/+33
| | | | | | | | Apply the same solution to QFileInfo (no public detach(), but a non-inline d_func instead). Change-Id: I31c4c759f44a0649b97f7884b078b174c9c00f22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Bump QCoreApplicationPrivate::app_compile_version to 0x050000Bradley T. Hughes2011-11-071-1/+4
| | | | | | | | | The minimum compile version is 0x050000 now, it cannot be less. Remove checks for 0x040200 in the widget code, which provided compatibility in the 4.x series for binaries compiled with 4.0 and 4.1. Change-Id: Ia01da90de26dca6aeeb79d29c754cbeeecf809af Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* symbian epoc root code removedJoerg Bornemann2011-11-072-18/+0
| | | | | | | Change-Id: Ibc9f5e42c534a09a8a44a0c95789f467970d38a2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Reinstate and deprecate the two argument QMetaType::constructKevin Simons2011-11-051-0/+4
| | | | | | Change-Id: Id291f00ba13a39b4af022b75fd428b876d6dd9b0 Reviewed-by: Kent Hansen <kent.hansen@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix usage of QtConcurrent headers with -Wshadow -WerrorDavid Faure2011-11-041-2/+2
| | | | | Change-Id: I172888518a3db01f89e61061eccf85f7f3387d07 Reviewed-by: Olivier Goffart <ogoffart@kde.org>
* Revert "Use standard spelling for two languages"Lars Knoll2011-11-042-49/+49
| | | | | | | | | | | This reverts commit 9358f7eaa4b773bdbfa45b08ab92a89096954881. The change is source incompatible and hasn't been agreed upon. Revert it even though it's correct in principle. It's simple to keep the old enums around for compatibility. Change-Id: I8d9d33868e44d0299a3f081833b06cedf0ed4345 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QStandardPaths: add DownloadLocation.David Faure2011-11-045-3/+13
| | | | | | | | | Only properly implemented on unix (XDG), falls back to Document location on Mac and Windows, because not easily available with the current API being used by either one. Change-Id: Id269f0e3c4e3a68e19205de96c0b39980fde80ff Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use standard spelling for two languagesJiang Jiang2011-11-042-49/+49
| | | | | | | | Singhalese -> Sinhalese Divehi -> Dhivehi Change-Id: I3faa7163202a4a9be14e3cf857da60aa4dd3196f Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* QThread::isFinished should return true from finished()Olivier Goffart2011-11-031-2/+2
| | | | | | | | | | | | | | | | | | | and isRunning() should return false. This restore the Qt 4.7 behaviour In Qt 4.7, the finished() was called with the thread's intenal mutex locked. Which mean that: - Call to isRunning or isFinished called from a slot connected to finish within the thread would deadlock. (Hence no compatibility to keep here) - Call to isRunning or isFinished from a slot connected with QueuedConnection in another thread would lock the mutex until the destructors are finished. and then return as if the thread have finished. Change-Id: I963eccae8f7634aff90cc4bbab6ca886a78e35eb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Enable deprecated feature for nowOlivier Goffart2011-11-031-2/+3
| | | | | | | | | | | | | | | Rationale is that it makes it possible to deprecate functions without breaking other modules. After the feature freeze, this should be reset to 5 Notice that QT_DEPRECATED is not defined while bootstrapping Qt (QT_NO_DEPRECATED defined) This also means that compilation is tested Change-Id: I85f0e65ac3a160e9aba3833787ded3f94304cb90 Reviewed-by: David Faure <faure@kde.org>
* QStandardPaths: fix encoding of XDG_CONFIG_HOME env varDavid Faure2011-11-021-1/+1
| | | | | Change-Id: Ibb89f204fc93aed5a669f8f9efc7859845e6d493 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Adding custom bezier easing curves to QEasingCurveThomas Hartmann2011-11-022-6/+541
| | | | | | | | | | | | | | | | | | | | | | | | | I added the possibilty to define Bezier/TCB splines and use them as custom easing curves. Note: Splines have a parametric definition. This means we have a function/polynom of t that evalutes to x and y. x/y = f(t). For our purpose we actually need the function y = f(x). So as a first step we have to solve the solution x = f(t) for a given t and then in a second step we evaluate y = f(t). f(t) is a cubic polynom so we use cardanos formula to solve this equation directly. For the casus irreducibilis we need 3 functions that are a combination of arcos and cos. Instead of evaluating arcos and cos we approximate these functions directly. TCB splines are converted into the corresponding cubic bezier spline. Change-Id: Id2afc15efac92e494d6358dc2e11f94e8c524da1 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Use C++11 static_assertOlivier Goffart2011-11-021-0/+10
| | | | | | | Change-Id: I75aa2bc209cdc8869e7daa9fd0dd865ccf65a68e Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@kde.org>
* Fix broken build.Jędrzej Nowacki2011-11-011-2/+2
| | | | | | | Variadic macros are not supported by C++98 standard. Change-Id: Ib520297e43b654b46925f3ee2735a975ebbe8e35 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tentatively keep operator=(const QAtomic* &other)Bradley T. Hughes2011-11-011-2/+0
| | | | | | | | | | QAtomic* has a copy constructor, so it may make sense to allow assignment of one atomic variable to another. Change-Id: Ic754d13765080e2fcd13dc583940e354ad4404cd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qeventdispatcher_win: Fix warnings about QAtomicInt.Friedemann Kleint2011-11-011-2/+2
| | | | | Change-Id: I2639fcee046ad3cc5de9c2635fdb6de4b757fc27 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Use QAtomicInt::store() instead of operator=(int)Bradley T. Hughes2011-11-011-2/+2
| | | | | | | ... since the latter is now deprecated and will be removed. Change-Id: I456c1bf93ebf119c028bc4a63f1f8a31f069b83b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove S60/symbian specific code in corelib/archLiang Qi2011-11-0114-7469/+1
| | | | | | | | | Clean up and remove Symbian specific code and data. Change-Id: I41794085fd5122310b1fdf4c524c6e77d22e8500 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update enums in documentation.Casper van Donderen2011-10-311-1/+2
| | | | | Change-Id: Ic48051cc832dc8bc06df2e82c54388df60208e39 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QRecursiveMutexPrivate should not inherit from QMutexPrivateOlivier Goffart2011-10-317-49/+55
| | | | | | | | QMutexPrivate takes more memory than necessary, and also initialize platform specific ressources. Change-Id: I70be1b89b1c21499645785ae47693a6b2514e28b Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Rename QBasicMutex::d to QBasicMutex::d_ptrOlivier Goffart2011-10-313-26/+26
| | | | | | | | | Because we use d as a local variable. We used this->d to refer it, but this can be confusing to have twice the same name Change-Id: I570aa5f444ada358eb456d6b3d9b8bfa60b10bbf Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Fix most warnings about assignments of QAtomicInt.Friedemann Kleint2011-10-314-20/+13
| | | | | Change-Id: Ide409d72d2637b68ec2a85aaca4bc783a7e911e7 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Remove symbian threading primitive.Olivier Goffart2011-10-286-928/+3
| | | | | | | | | | | Those are already outdated and do not compile anymore (QMutex has changed too much) Better to remove that dead code so it do not show up in grep anymore Change-Id: I096e7a73e23cbb77050843c2e1c10929086fdb8f Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Mark QAtomic* implicit cast and other operators as deprecatedBradley T. Hughes2011-10-281-0/+13
| | | | | | | | | | | | Add Q_DECL_DEPRECATED to all methods that are pending removal once http://codereview.qt-project.org/#change,6243 is merged. This is necessary to give people time to react to the source incompatible change. Change-Id: Ia72f184d630d593f96dd1d95ad6cd0d3bd5d811c Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Replace implicit QAtomic* casts with explicit load()/store()Bradley T. Hughes2011-10-2718-56/+55
| | | | | Change-Id: Ia7ef1a8e01001f203e409c710c977d6f4686342e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix compiler warnings.Friedemann Kleint2011-10-273-4/+4
| | | | | | | | - Fix gcc 4.6.X warnings about assigned but unused variables - Remove trailing ';' from inline functions (Clang) Change-Id: I8670afd6b149748a740f22c65de137762e9f18e1 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Use load() instead of implicit cast when using QueuedConnectionBradley T. Hughes2011-10-271-12/+15
| | | | | | | | | | | queued_activate() sets the argumentTypes atomic pointer on first use, which mixes a load, memory initialization, test-and-set-ordered, and another load. The explicit memory ordering is necessary to ensure that the memory stores happen in program order. Change-Id: Id1f8641f9cd081ce81aa8e830692f7af8261e84b Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Move the implementation of normalizeTypeInternal()Bradley T. Hughes2011-10-274-152/+211
| | | | | | | | | | | | | | | | | | | | | This function is only used in src/tools/moc/moc.cpp and src/corelib/kernel/qmetaobject.cpp. We don't need to include the static, non-inline declaration and definition every time qmetaobject_p.h is included. This also silences the related warning from clang: ../../../include/QtCore/5.0.0/QtCore/private/../../../../../src/corelib/kernel/qmetaobject_p.h:171:19: error: function 'normalizeTypeInternal' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration] static QByteArray normalizeTypeInternal(const char *t, const char *e, ... ^ Change-Id: I6dfb2cb4d9d82a2ae7795f91169aa62f9a5f2c2f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Add QDataStream operators to QMargins, so it can be streamedSteven Ceuppens2011-10-272-0/+49
| | | | | | | | | | * QDataStream format documented * Added Unit test for QDataStream operators * Updated Unit test Change-Id: Idbcfcb0b927e6369e8d31b57693c7aa0d1a154e7 Reviewed-by: Olivier Goffart <ogoffart@kde.org>
* Use load() when constructing QSimpleCodec's reverse mapBradley T. Hughes2011-10-271-7/+10
| | | | | | | | | | The implicit casting results in unnecessary volatile loads. The test-and-set-ordered doesn't need full ordering, test-and-set-release is enough to ensure that the memory initialization done by buildReverseMap() and test-and-set happen in program order. Change-Id: I168b504271aeba050d6b8396becbdeb3ef938213 Reviewed-by: Olivier Goffart <ogoffart@kde.org>
* Unix (non-Glib) event dispatcher: round sleep to millisecond boundary.Thiago Macieira2011-10-271-1/+15
| | | | | | | | | | | | If we have two timers running in an application with the same timeout and started almost at the same time by the code, they would trigger two sleeps, the second of which very short (under a millisecond). This causes us to match the Glib and Windows event loops, which round all timers to millisecond anyway. Change-Id: I7eb531e02dadf75925c01192b0f33ef3641ae1ea Reviewed-by: Olivier Goffart <ogoffart@kde.org>