summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* doc: Fix some ref qualifier documentation errorsMartin Smith2017-12-021-3/+8
| | | | | | | | | | Some member functions of QImage were upgraded to use ref qualifiers, but the documentation wasn't updated correctly to account for this. This change update the documentation for those member functions to show the ref qualifiers in the documentation. Change-Id: I0ff4011e9d0251062d5616d69e9dda6bdbc1c136 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Don't let qdoc see some defines that cause troubleMartin Smith2017-12-022-1/+3
| | | | | | | | | | | This update surrounds some #defines with #ifndef Q_CLANG_QDOC because they define some names that conflict with formal parameter names. Otherwise, clang starts replacing formal parameter names with $27 etc, when qdoc runs, and that causes trouble for qdoc. The change also replaces one use of Q_QDOC with Q_CLANG_QDOC. Change-Id: I6e93bf1e0d30d7590280b6f18f0e694556050685 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Correct a few minor qdoc errorsMartin Smith2017-12-023-6/+6
| | | | | | | | | A use of Q_QDOC is changed to Q_CLANG_QDOC. A misspelled std type name is corrected. A few extraneous ';' are removed. Change-Id: Ic49f64a3b97f645268a8ecbbca5f0eef0456bb33 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Correct all remaining clangqdoc warnings in qpointer.cppMartin Smith2017-12-021-22/+22
| | | | | | | | This update corrects many qdoc warnings in qpointer.cpp caused by incomplete \fn commands. Template stuff was added to the \fn commands. Change-Id: I39bcd5db1cb4257d574918155dc49414a8b00c3d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Correct all remaining clangqdoc warnings in qdebug.cppMartin Smith2017-12-021-59/+64
| | | | | | | | | | | This update corrects many qdoc warnings in qdebug.cpp caused by incomplete \fn commands. It also corrects many undocumented parameter errors caused by clang's requirement that the formal parameter names be the same in both the declaration in the include file and the \fn command. The name changes don't seem to be objectionable in this file. Change-Id: I0630a0e05e651b58608b2f2116df70dcf0e83a45 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Add missing template text and parametersMartin Smith2017-12-024-104/+109
| | | | | | | | | This update corrects many qdoc warnings in the documentation for the QFuture classes caused by incomplete \fn commands. Template text and parameters was added. Change-Id: I360c9db191230b19a9b174a43468d3de1eb24549 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* doc: Fix qdoc errors for \fn commands in algorithm functionsMartin Smith2017-12-021-29/+29
| | | | | | | | | This change updates the \fn commands in qalgorithms.qdoc. clangqdoc now parses these \fn commands and expects to see all the template stuff in the signatures. Change-Id: Id9492bf80eca494eb2b5b8d7364b8485ed1a047e Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Add template text to \fn commands in QPairMartin Smith2017-12-021-17/+17
| | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. Change-Id: I49302d0792c8a4c5a36c671142796a48d384b548 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Add template text to \fn commands in cache classesMartin Smith2017-12-012-54/+54
| | | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. Removes about 150 qdoc warnings. Change-Id: I63c6cae5613f0bb23527607230b6edf7fac33740 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Add template text to \fn commands in QVarLengthArrayMartin Smith2017-12-011-75/+75
| | | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. This change eliminates about 150 qdoc warnings. Change-Id: I23632e739b529cd56a6cae1a29df2e7131a05292 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Revert "QApp: Method to check for native style usage."Alexander Volkov2017-12-012-28/+0
| | | | | | | | | | | | | | | | | This reverts commit 958a4c9087e03502d0173735df4611a7f96a0463. QApplicationPrivate::usesNativeStyle() introduced by that commit was never used. We have an untested method that is furthermore may return wrong results because it relies on the comparison 'app_style->objectName() != QApplicationPrivate::desktopStyleKey()', but not all styles set their object names. Conflicts: src/widgets/kernel/qapplication.cpp src/widgets/kernel/qapplication_p.h Change-Id: I48d221f9387381db9ed51a7a068bfd0a0c2ed58d Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
* Disable some implicit conversions with QT_RESTRICTED_CAST_FROM_ASCIIAlexander Volkov2017-12-011-0/+4
| | | | | | | | | | Non-const arrays are not literals, so their encoding may be not defined at compile-time and they should be converted explicitly. Change-Id: I2a65e095224f48efafeaa97fd85134697a1e5bf0 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMetaObject::Connection: mark move ctors Q_DECL_NOTHROWMarc Mutz2017-12-011-4/+2
| | | | | | | Drop the #ifdef Q_COMPILER_RVALUE_REFS - we require that since Qt 5.7. Change-Id: Ib4c6f559b014915f43875ec6791bfda3f24a109b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QImage: Output some bytes of first scanline on verbose debug streamsFriedemann Kleint2017-12-011-2/+9
| | | | | Change-Id: I1003c2b4109112fb2d2733a156120a041d7bd695 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Copy the numericalPrecisionPolicy when copying the QSqlDatabaseAndy Shaw2017-12-011-0/+4
| | | | | | | | | | As the numercialPrecisionPolicy can be set and subsequently retrieved from the QSqlDatabase's driver, then when copying the QSqlDatabase, we need to set that appropriately too. Task-number: QTBUG-10452 Change-Id: I2c63748365ab4e9fbc29d8d460d80d2e2a0ee385 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Remove code that refers to PostgreSQL 7.2 or olderAndy Shaw2017-12-011-148/+54
| | | | | | | | | | We haven't had support for anything older than 7.3 for a long time, so this removes the code to save having to maintain it any further. Task-number: QTBUG-644 Change-Id: If0635f3bef5138a00a0e77011a70f23d0bffda32 Reviewed-by: Robert Szefner <robertsz27@interia.pl> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Add template text to \fn commands in container classesMartin Smith2017-12-016-761/+882
| | | | | | | | | | The \fn commands were not recognized by clang-qdoc because the template stuff was missing from the \fn commands. This update adds the correct template text and parameters. It eliminates nearly 2000 qdoc warnings. Change-Id: Ibe047424396a8f99f8bd64efea1b0d8cc7c7527d Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* macx-clang: Opt-in xcb QPA support with XQuartzGabriel de Dietrich2017-12-016-19/+29
| | | | | | | | | | | | | | | | | | | | | | | | Enable xcb QPA plugin when XQuartz is available. This is done in a single build, alongside the Cocoa version. We delegate part of the configuration stage to pkg-config, so this becomes a requirement. Ensure that PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:/opt/X11/share/pkgconfig is in your environment, or pkg-config is properly set up. Tested with the following configure options: configure \ -pkg-config \ -fontconfig -system-freetype \ -system-xcb -xkb -no-opengl \ -qt-xkbcommon -qt-xkbcommon-x11 Change-Id: I2eb5a0491172368afc4c629c540cbef08580348d Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* QtServiceSupport: Remove redundant conditionGabriel de Dietrich2017-12-011-2/+1
| | | | | | | | | | | | | The condition for the 'services' sub-project in platformsupport.pro was identical to the one guarding genericunix.pri in services.pro. We can't remove the condition in platformsupport.pro because that would result on an empty static library, which is not supported on some platforms, like macOS. Change-Id: I5c80737d9527bdd75dde44e33e5063f3d7aeecb7 Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Simplify date-time formatting in textForRole()Edward Welbourne2017-11-301-6/+3
| | | | | | | | | | | | | | | | | QAbstractItemDelegatePrivate::textForRole() was formatting date and time separately, then gluing the parts back together with space. QLocale can do that just fine itself (it has a toString() overload that handles a QDateTime) and might even (some day) do it better. To my mild surprise, this proved sufficient to fix a problem with date-time display in tool-tips, when the date-time includes a zone. Extracted the date-time part of an existing selftest into a test of its own and extended it to test times of each spec-type; verified that the non-local spec cases of this all failed before this fix. Task-number: QTBUG-61069 Change-Id: I6d6be0c27be9a557d8afc3ced200a10b2aaff816 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Clean up in TZP-Win's calculateTransitionLocalDate()Edward Welbourne2017-11-301-19/+28
| | | | | | | | | | | | | | It's decoding a SYSTEMTIME in the slightly quirky manner of MS's timezone APIs (year 0 means annual, with wDay as 1 through 4 for the first through fourth, or 5 for the last, of a specified week-day within a month) and the calculations to go with it were a little opaque. So clean it up, document what it's doing (and why) and assert some things that should be true. Also, only copy one int, instead of a whole structure, to change from their day-numbering to ours. Expand on a related TODO comment in its caller, at the same time. Change-Id: Iffd95c094c37fc1081b73b2a267cfdcd29aeb4ae Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Pull several structs and static functions into an anonymous namespaceEdward Welbourne2017-11-301-22/+24
| | | | | | | | | | The implementation of QWinTimeZonePrivate used many static functions and at least one struct; to which I've added. Put these all into an anonymous namespace (thereby keeping the struct types out of the linker's sight): make them local the C++ way, rather than the C way. Change-Id: Ibdce0865234b5d4ebbdc90628cc4d9e790ed6321 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fake a "first transition" at the start of timeEdward Welbourne2017-11-301-0/+9
| | | | | | | | | | | | | | QTimeZonePrivate::dataForLocalTime() needs a transition before the time it starts at; MS's time-zone data tends to omit old zones (before 2007, in the case of Win7 for Casablanca - which had interesting transitions before that), so all we can do is extrapolate backwards from there; but a first rule is indeed apt to be a no-transition rule, describing the zone's status up to the first known transition. So fake a "start of time" transition to return for this case, that describes this prefix of history. Change-Id: Iaf178cbebc3b1e599cbde3437a0af75d9f6ca432 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid underflow on arithmetic with possibly-first transition timesEdward Welbourne2017-11-301-2/+2
| | | | | | | | | | A transition time may represent the beginning of time; as such, arithmetic on it might underflow, e.g. on adding a negative zone offset to compare with a given time. So move the arithmetic to the other side of the comparison in such cases. Change-Id: I1697a03ebf74679ff86059664dd2b173b9c4c367 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Take account of single-transition hacks in MS time-zone APIsEdward Welbourne2017-11-302-17/+106
| | | | | | | | | | | | When a year contains a real change of standard time without any DST, MS's APIs still claim to have both a DST start and a DST end; one of them is bogus and positioned on the start (or end) of the year, producing no change in offset from the end of the previous (or into the start of the next) year. So code round that. Task-number: QTBUG-42021 Change-Id: Ieb6161cfb77db8a57dc181097f117316f9d1c13c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QWinTimeZonePrivate: make transition searches more efficientEdward Welbourne2017-11-301-125/+83
| | | | | | | | | | Iterate rules (now that there's fewer of them than years) with only a secondary iteration on years (when needed - in which case it should never need more than two iterations). In particular, avoid iterating years to the MIN_YEAR and MAX_YEAR extremes on failure; fail faster ! Change-Id: I354af8e0cb1e484c8abda279991e6e1824f9f7d4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Refine handling of wMonth checks in QWinTimeZonePrivateEdward Welbourne2017-11-301-6/+28
| | | | | | | | | | | | | | | | | The MS API documents that the two TIME_ZONE_INFORMATION date fields either both have wMonth clear (when there is no DST) or both have it set (for each part of a DST pair). This rule is followed even when there's a standard time change without DST, with perverse results I'll deal with in a later commit. Add code in init() to verify the rule is followed and qWarning() if not. A year with no transitions doesn't imply no earlier or later year has transitions, so don't give up on searches for transitions because of it. Also fix a potential uninitialized variable bug, related to data() breaking out of a loop on such a year. Change-Id: I1ad86c07e54b2eb835a2e02d18dc64022f52a0d9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tidy up QDateTimeParser code to make it easier to reason aboutEdward Welbourne2017-11-301-9/+10
| | | | | | | | | | Note that the relevant cases are all numeric, eliminate a redundant variable (the min of two others, one of which was provably <= the other), invert and rename a boolean (that was always used negated), eliminate a case that couldn't arise (and assert this). Change-Id: I9ef9cedbeb608c7cd56ddc618ddfb921966edfbf Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTimeParser: reject all short values in fixed-width fieldsEdward Welbourne2017-11-301-1/+2
| | | | | | | | | | | | | | | | | | | | Previously, a 1, 2 or 3 for "dd" would be rejected because 10, 20 or 30 would fit in the field and be valid; but 4 or more was accepted, even though it was too short for the field, because no suffix could make it valid within the field-width. [ChangeLog][QtCore][QDateTime] When parsing dates and times from strings, fixed-width date-time fields, such as a "dd" for day, QDateTime now rejects all values that should be padded, rather than only doing so when the value is a prefix of some value that would fill the field-width. Use a single letter for the field, e.g. "d" for day, if you want to accept short values. (QDateTimeEdit is not affected.) Task-number: QTBUG-63072 Change-Id: I22d223c50057c3edab4ef7f01d9ed0f58e9139c1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Raise the upper bound on years to 9999Edward Welbourne2017-11-304-6/+6
| | | | | | | | | | | | | | | | | Test-case taken from bug-report; fits in as an easy row in an existing data-driven test. Add similar tests for date-time and time; and an isValid test on the end of year 9999. The date-time parser was using the end of year 7999 as maximum value for dates and date-times; extend this to year 9999, as I can see no reason not to. [ChangeLog][QtCore][QDateTime] Years up to 9999 can now be parsed without error (previously 8000 and beyond were treated as invalid) in all formats (not only in ISO format). Widgets handling dates now support dates to 9999, likewise. Task-number: QTBUG-64401 Change-Id: I518cfa6c2cb4ecc5a85b896dc9e56b4fdd8a8bb1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Mutex-lock QLocale's update of its globalLocaleDataEdward Welbourne2017-11-301-6/+17
| | | | | | | | | For want of this, nothing that used QLocale::system(), inter alia, could be thread-safe or re-entrant. Task-number: QTBUG-49473 Change-Id: I3e017aa7d59c4c39828bb5cdc7ff0780ea66bafe Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Optimize QThread::isInterruptionRequested()Marc Mutz2017-11-302-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To signal a thread to cancel, nothing more than a std::atomic_flag is needed, but the implementation actually used mutexes, and weird run-state introspection, so we can't just swap it out for a std::atomic_flag. Instead, we retain the principal logic, however weird it is, and just optimize the common case where isInterruptionRequested() is called from the secondary thread, repeatedly. We add a fast-path that just checks that d->interruptionRequested is not set. That requires nothing more than a relaxed atomic load, because there's no new value read that could be used as a signal to the secondary thread that some condition changed. "What signal?", you may ask. Well, one can think of users doing this: void cancel() { m_why = tr("&Canceled"); requestIterruption(); } void run() override { while (!isInterruptionRequested()) { doWork(); } emit progress(100, 100, m_why); } We need to keep this code working, at least until Qt 6. But the code can already now only rely on synchronization if isInterruptionRequested() returns true. If it returns false, then requestInterruption() has not been called, yet, and any modifications done prior to the requestInterruption() call are not visible in the secondary thead. So we still lock the mutex, and in general don't change the semantics of the functions, except that we don't lock the mutex in the case where the flag wasn't set in the first place. This makes calling isInterruptionRequested() as cheap as it can get, assuming a lock-free implementation, of course. I opted to use a std::atomic<bool> instead of QAtomicInt, as the latter does not have loadRelaxed()/storeRelaxed(), and because it future-proofs the code. Change-Id: I67faf36b8de73d2723f9cdd66c416010d0873d98 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QSortFilterProxyModel: Clear persistent indexes on source model changeChristian Ehrlicher2017-11-301-1/+4
| | | | | | | | | | | When a new source model was set to QSortFilterProxyModel, the model tried to remap the persistent indexes to the new model which was wrong. The correct solution is to clear the persistent indexes with _q_sourceModelDestroyed() since the old source model went away. Task-number: QTBUG-44962 Change-Id: Id39e9ac83324250e8bfa434aae467a9206d2590e Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* QItemSelectionRange: speedup intersects() in negative caseChristian Ehrlicher2017-11-301-4/+6
| | | | | | | | | | | | | | QItemSelectionRange::intersects() needs to check if the parent of both QItemSelectionRanges is the same. This is a very expensive operation which should be done last. Same goes for isValid() which itself calls parent() for two indexes. This rearrangement speeds up some worst-case usecases by at least 30% as shown in the bug report. Task-number: QTBUG-60940 Change-Id: If6111a73cb8b97a8a0d0640527b34448d21f3143 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Replace qrand() engine with C++11 <random> LCG and deprecateThiago Macieira2017-11-301-83/+59
| | | | | | | | | | | | | | | | Instead of trying to adapt to whatever the C library may have and using QThreadLocalStorage, let's use a simple linear congruential generator engine from <random>. We can't use a single instance because qsrand() is documented to work per thread. I thought of using QRandomEngine, but had to make the choice between growing the QtCore code size and growing the per-thread data size. Code is sharable and is actually smaller than the sizeof(QRandomEngine), which is over 2500 bytes. sizeof(std::minstd_rand) is just sizeof(uint_fast32_t). Change-Id: I0a103569c81b4711a649fffd14ec8e641d02bf20 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* qtest_gui.h: remove incorrect #ifdefGatis Paeglis2017-11-301-3/+0
| | | | | | | Originated from 6c06e14a49773ce5572935864ed6b9be219c610 Change-Id: Id93f33c8a00850c7b41593c85521d75e5293b36b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qtestmouse: do not qWait for mocked events on macOSGatis Paeglis2017-11-302-15/+7
| | | | | | | | | | | | | | | | | | | | This logic initially was copied from QTest::mouse* widget overload (by d130382776e8b9db491385a0db45a3daaa79890c) which uses QCursor::setPos() to generate mouse move events via the windowing system. The QCursor API was later removed by 1762bf3394219db3a7a9cc99306f4111e6cb8492, but now the redundant qWait logic remained. Later this stray qWait was incorrectly moved to apply for all mouse event types (by 268f41ec70fd70d4aa44a5043d1a4e678df4c5b5), when originally it was needed (arguably) only for mouse move events due to usage of QCursor. This patch also removes the waitForEvents() function as it is not a documented qtestlib API (in qtestlib only the documented functions should be considered public API, no matter what you can find in the header files). Removal does not affect binary compatibility as this is not an exported symbol. And if somebody has used this non public API, updating code is trivial. Change-Id: Id1dec10f5cf276cee1ac0e8c8f8ba2edc493b667 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Create a QNX version of calculateUnixPriorityJames McDonnell2017-11-301-0/+54
| | | | | | | | | | | | | | | The standard calculateUnixPriority provides values that are almost invariably inappropriate with even LowestPriority mapping to something higher than the priority of any other thread on the system. [ChangeLog][QtCore][QThread] Changed how Qt thread priorities are mapped to QNX system thread priorities. Task-number: QTBUG-53357 Change-Id: I205035c4ca7dcafabda7a9a9b06cc52c67c6d2b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Mark some functions as coldMarc Mutz2017-11-303-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | Add Q_DECL_COLD_FUNCTION (__attribute__((cold))) to tell the compiler that the following functions are not usually executed in normal programs: - qWarning/qCritical/qFatal - qTerminate - assertion failure - qBadAlloc The effect of the attribute is that 1. These functions get put into their own section, .text.unlikely, and will be optimized for size, not speed. 2. Conditions that lead to one of these functions are automatically marked as unlikely (something we have done manually in the past) 3. (anecdotal) the compiler is less likely to inline these functions Text size effect of this change over all of QtBase: ~27KiB text size saved, of which 11KiB in QtCore alone. Change-Id: If308d4a4b9ff8f7934316c54b161a78ebe3f4205 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QThread::requestInterruption(): move qWarning() out of critical sectionMarc Mutz2017-11-301-4/+4
| | | | | | | | | | | | | We do not touch anything mutex-protected in the path towards the qWarning(), so the mutex lock is not needed. It may actually be harmful, since a message handler may check isInterruptionRequested(), which would then deadlock. Otherwise, we're just decreasing the size of the critical section — always a worthwhile goal. Change-Id: I26aa7e3dc087ff7efaccff1d4dc788ba00ba183f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* doc: document the anonymous enum type correctlyMartin Smith2017-11-301-12/+78
| | | | | | | | | | | clangqdoc now accepts an unnamed enum type, calls it "anonymous" and allows it to be documented as a named enum type. In this update, several instances appear in subclasses of QGraphicsItem. This update documents them correctly. Change-Id: Ide8026801269154a37e7677a1ce62e0cb392efea Reviewed-by: Topi Reiniö <topi.reinio@qt.io> Reviewed-by: Martin Smith <martin.smith@qt.io>
* QTreeWidget::setHeaderItem: fix off-by-one in signal emissionsGiuseppe D'Angelo2017-11-301-4/+4
| | | | | | | | | | | | | | | | | | | When setting a header item (that is, the item that provides the QTreeWidget's column) the widget needs to manipulate the underlying tree model and add or remove columns. This requires calling the right QAbstractItemModel APIs for structural model changes. The calculations done resulted in a off-by-one error: * if the model had N columns and needs to grow to M(>N), then one needs to begin insertion from N to M-1 (and not M); * if the model had N columns and needs to shrink to L(<N), then one needs to begin removal from L to N-1 (and not N). Add the -1s needed. Change-Id: Ic669788825a1c480376a08df0d7c9c10f91552ef Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* QTreeWidgetItem::insertChildren: ignore out of bounds indexesGiuseppe D'Angelo2017-11-301-0/+3
| | | | | | | | | | | | | | | | QTreeWidgetItem::insertChildren should behave like a more-optimized QTreeWidgetItem::insertChild. Unlike the latter, the former lacks out-of-bounds checks, resulting in successful insertions even when using an invalid index (say, bigger than the row/column count). Reintroduce some sanity checks instead. This allows to fix a "fixme" left in the autotest. [ChangeLog][QtWidgets][QTreeWidgetItem] QTreeWidgetItem::insertChildren now ignores insertions happening at invalid indices, for consistency with QTreeWidgetItem::insertChild. Change-Id: I1532597768cc6aff96a6e8f356bc6075b582801d Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Liang Qi2017-11-3039-313/+338
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-3039-313/+338
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/thread/qsemaphore.cpp tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp Change-Id: Id35b535e88df63fdfe4007ea92ed4a39c4b6d707
| | * Correct \since value for QIODevice::skipAndy Shaw2017-11-291-1/+1
| | | | | | | | | | | | | | | | | | Change-Id: I9a2f18263a8bc0a0de8978792dbb1f285acc0ccd Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * iOS: Don't set background color when debugging window managementTor Arne Vestbø2017-11-291-1/+0
| | | | | | | | | | | | | | | | | | | | | It will fill the view in some cases, obscuring what Qt draws. Change-Id: I9ca00dddd829a28fb2cb3b009bfd3223f85ef7cb Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | * iOS: Use environment variables for debug flags instead of QObject propertiesTor Arne Vestbø2017-11-284-21/+2
| | | | | | | | | | | | | | | | | | | | | | | | The former is more idiomatic in Qt, and doesn't require as much boilerplate to set up. Change-Id: Idf03af4018611c8eb3b31af90da72f9d85617b2c Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-11-288-168/+172
| | |\ | | | | | | | | | | | | Change-Id: Iede384644c3df5ee01b701806dfdb586dd6bb138
| | | * QUdpSocket: Work around WSARecvMsg quirk relating to no control blockThiago Macieira2017-11-251-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WSARecvMsg does not return the sender in WSAMSG::name if WSAMSG::Control isn't set. This makes no sense, so I'm assuming it's an API quirk we need to work around. [ChangeLog][QtNetwork][QUdpSocket] Fixed a regression from Qt 5.9.3 caused by an apparent Win32 API quirk we triggered when using readDatagram(), resulting in an invalid QHostAddress sender address. receiveDatagram() was not affected. Task-number: QTBUG-64718 Change-Id: I71488efd29b645f7b228fffd14f9d84cc205c4b3 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>