summaryrefslogtreecommitdiffstats
path: root/tests/auto
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-3115-123/+367
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
| * Revert "tst_qwidget::activation expect fail on Win 10"Joni Jäntti2017-08-301-6/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 85612817685f8b64307276a2ce9ef79d9e048be4. This change needs to be reverted because Windows 10 Creator's Update doesn't fail on this test anymore during CI runs. Reason for this is unknown. Change-Id: Ice250ecedb14ac96fb3693b2d9884ef452a91cc2 Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
| * Revert "tst_qgraphicswidget expect fail on Win 10"Joni Jäntti2017-08-291-7/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 3d5bf00f18b5b9d1f5de4ff610ad15d5d0ed8c3d. This change needs to be reverted because Windows 10 Creator's Update doesn't fail on this test anymore during CI runs. Reason for this is unknown. Change-Id: I9f1c88606c97afc5952af34e04310612b783a9c2 Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
| * Fix resolution of relative symlinks from relative path on unixOrgad Shaneh2017-08-271-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following: /root/target - a file /root/path/link -> ../target /root/path/other/exe - executable Running from /root/path/other. exe is: #include <QDebug> #include <QFileInfo> int main() { qDebug() << QFileInfo("../link").symLinkTarget() return 0; } The link references /root/target, but the current output is /root/path/target. The link doesn't depend on the PWD. It depends on its own directory. Change-Id: I61e95018154a75e0e0d795ee801068e18870a5df Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Adapt qmake's raw-string parser to avoid confusion by macrosEdward Welbourne2017-08-243-2/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A macro name ending in R might expand to a string; if this precedes a string constant, we're juxtaposing the strings. My first parser for raw strings would mistake it for a raw string instead, ignoring the part of the identifier before R. Re-worked the exploration of what came before the string to catch these cases, too. The backwards parsing would also allow any messy jumble of [RLUu8]* as prefix for the string; but in fact R must (if present) be last in the prefix and *it* can have at most one prefix, [LUu] or u8. Anything else is an identifier that happens to precede the string. Reworked the parsing to allow only one prefix and not treat R specially unless it's immediately (modulo BSNL) before the string's open-quotes. Add link to the cppreference page about string literals, on which the grammar now parsed is based. Added a test for the issue this addresses. Verified that this fails on 5.6, dev and 5.9 without the fix. Expanded the existing test to cover R-with-prefix cases. Task-number: QTBUG-55633 Change-Id: I541486c2ec909cfb42050907c84bee83ead4a2f4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Fix invalid placeholder name in tst_qsqlthread.cppSérgio Martins2017-08-231-1/+1
| | | | | | | | | | Change-Id: I88c0c48888b86b58d85223ad1dc4cafdaea01d77 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * QWidget: Call appropriate QWindow method from setGeometry_sys()Gabriel de Dietrich2017-08-231-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling resize() from showEvent(), we'd set the full geometry on the widget's QWindow. This resulted in the top-level window being moved to the top-left corner, even though no other call to move() or setGeometry() had happened before. The solution consists on calling the proper QWindow methods depending on whether setGeometry_sys() is called for a move, a resize or both. Furthermore, this needs QWindow::resize() to set its position policy to frame-exclusive. The documentation states that is already the case and we're setting the full geometry on the platform window, so we need to convey that bit of information. This also solves the age-old conundrum: "### why do we have isMove as a parameter?" Change-Id: I2e00fd632929ade14b35ae5e6495ed1ab176d32f Task-number: QTBUG-56277 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * tst_QPrinter: Share printers in testPageRectAndPaperRect/testMarginFriedemann Kleint2017-08-231-64/+68
| | | | | | | | | | | | | | | | Speeds up testing by a factor of 2. Task-number: QTBUG-61827 Change-Id: I9d6c9d9786d35af3083bc7e98beb9a79dbcc7e11 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * Fix the test for non-English based setupsAndy Shaw2017-08-231-1/+11
| | | | | | | | | | | | | | | | | | Unsetting the SOFTWARE environment variable will force lpstat to use English for the output, so we can ensure that the test will pass regardless of the language used for the machine. Change-Id: Iddf5e8aadaa546ae3e0dd172df84e4e43ee02c2a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * tst_QPrinter: Disambiguate all file namesFriedemann Kleint2017-08-231-38/+25
| | | | | | | | | | | | | | | | | | | | | | Introduce helper function which uses a number to build unique names. Remove helper for deleting files since it now uses a temporary directory. Add a few cases that were overlooked in 88c68f4d9ed649f444bb22c52595da71ce4aac4e. Task-number: QTBUG-61827 Change-Id: I53355f99ffc3bfe6ad6994a5439710c9fa8cdad5 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
| * Fix crash when reading a PKCS12 file with no private keyEdward Welbourne2017-08-173-5/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only reason our code wants PKCS12 files is for a private key, but a valid file needn't contain one; and reading a file without lead to a crash in QSslKeyPrivate::fromEVP_PKEY(). So check for missing key and fail the load, since the file is useless to us. Also ensure the caller's pkey is initialized, as we aren't promised that PKCS12_parse() will set it when there is no private key. Add a test for this case (it crashes without the fix) and update the instructions for how to generate test data to cover it also. (Corrected the wording there, too; at the interactive prompt, "providing no password" really provides an empty password.) Task-number: QTBUG-62335 Change-Id: I617508b903f6d9dee40d539b7136b0be8bc2c747 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
| * Block input to a window shown while an application modal dialog is visibleAndy Shaw2017-08-161-0/+42
| | | | | | | | | | | | | | | | | | | | | | Although the window is refused input for the most part from the system, it does not act like that it is blocked by the application modal dialog. This ensures that it is the case and prevents things like being able to double click on the title bar to maximize the window on Windows. Task-number: QTBUG-49102 Change-Id: If1582819b90cb2ec9d891f664da24f13bfec7103 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Blacklist tst_QFont::DefaultFamily in B2QtTony Sarajärvi2017-08-161-0/+2
| | | | | | | | | | | | | | Task-number: QTBUG-62528 Change-Id: Iadf9a923b2a624c5082fd1bd61691f8100178f94 Reviewed-by: Sami Nurmenniemi <sami.nurmenniemi@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | uic: Use nullptr instead of Q_NULLPTR in generated codeAlexander Volkov2017-08-28102-995/+995
| | | | | | | | | | | | | | | | nullptr can be used directly in the Qt code since Qt 5.7. Use it in generated code for consistency. Change-Id: I249aeaf0a39b46ce1106b29d3ea4569a399908b7 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
* | Testlib: Format QVector2/3/4D in QCOMPAREFriedemann Kleint2017-08-276-2/+119
| | | | | | | | | | Change-Id: Ia0709e598d2fddd6c2f448633b484749146265f7 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* | Introduce QIODevice::skip()Alex Trotsenko2017-08-271-0/+91
| | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QIODevice] Added skip() method to improve performance in read operations. Change-Id: I79068a3e9df108756abe37ba3d431e27e7413621 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | HTTP/2 - implement the proper 'h2c' (protocol upgrade)Timur Pocheptsov2017-08-273-15/+218
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without TLS (and thus ALPN/NPN negotiation) HTTP/2 requires a protocol upgrade procedure, as described in RFC 7540, 3.2. We start as HTTP/1.1 (and thus we create QHttpProtocolHandler first), augmenting the headers we send with 'Upgrade: h2c'. In case we receive HTTP/1.1 response with status code 101 ('Switching Protocols'), we continue as HTTP/2 session, creating QHttp2ProtocolHandler and pretending the first request we sent was HTTP/2 request on a real HTTP/2 stream. If the first response is something different from 101, we continue as HTTP/1.1. This change also required auto-test update: our toy-server now has to respond to the initial HTTP/1.1 request on a platform without ALPN/NPN. As a bonus a subtle flakyness in 'goaway' auto-test went away (well, it was fixed). [ChangeLog][QtNetwork][HTTP/2] In case of clear text HTTP/2 we now initiate a required protocol upgrade procedure instead of 'H2Direct' connection. Task-number: QTBUG-61397 Change-Id: I573fa304fdaf661490159037dc47775d97c8ea5b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | QTemporaryFile: Add support for Linux's O_TMPFILEThiago Macieira2017-08-232-5/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That means a file is never created, unless you ask for the name. There's no chance of left-over temporary files being left behind. QSaveFile also benefits from this, since the save file is not present on disk until commit(). Unfortunately, QSaveFile must go through a temporary name because linkat(2) cannot overwrite -- we need rename(2) for that (for now). [ChangeLog][Important Behavior Changes][QTemporaryFile] On Linux, QTemporaryFile will attempt to create unnamed temporary files. If that succeeds, open() will return true but exists() will be false. If you call fileName() or any function that calls it, QTemporaryFile will give the file a name, so most applications will not see a difference. Change-Id: I1eba2b016de74620bfc8fffd14cc843e5b0919d0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Blacklist tst_QMessageBox::defaultButton on osx ciMorten Johan Sørvig2017-08-221-0/+2
| | | | | | | | | | | | | | Has become flaky on CI. Does not fail locally. Change-Id: I42938849571938db78b16a72c215442a69f7c2d5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Remove timer checks from testQuitLockMorten Johan Sørvig2017-08-221-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test sets up two timers: - a 100ms recurring timer - a series of 10 200ms single-shot timers. After quitLock lets exec() return it then uses a signal spy to check if the 100ms timer fired at least 17/20 of the times it should. However there is no guarantee that the 100ms timer will fire more often than the 200ms timer. If the native timer callbacks happen at 500ms intervals then Qt will fire both timers (once) at that interval. In practice this seems to happen on macOS CI under system load and/or with the test app napping. The primary goal for the test is to verify that exec() returns when it should; we can remove the timer signal spy. Remove testQuitLock from BLACKLIST. Timely timer: 524429311.389913 runLoopTimerCallback 524429311.389979 200ms fire 524429311.389997 100ms fire 524429311.490056 runLoopTimerCallback 524429311.490130 100ms fire 524429311.589752 runLoopTimerCallback 524429311.589929 200ms fire 524429311.589976 100ms fire Delayed timer: 524429428.690887 runLoopTimerCallback 524429428.691002 100ms fire 524429428.691143 200ms fire 524429433.692103 runLoopTimerCallback 524429433.692205 100ms fire 524429433.692331 200ms fire Change-Id: Iff4faaa1de3741cf4e217949d5ed17d4e70c6af2 Task-number: QTBUG-61499 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-1513-3/+96930
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenu.h src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/cocoa/qcocoawindow.mm src/widgets/styles/qstylehelper_p.h Change-Id: I54247c98dd79d2b3826fc062b8b11048c9c7d9bb
| * Update binary compatibility files for Qt 5.9.0 for QtBaseMilla Pohjanheimo2017-08-1411-0/+96911
| | | | | | | | | | | | | | | | | | | | | | Added binary compatibility files for Qt 5.9.0. 'QOpenGLExtraFunctionsPrivate::Functions' and 'QOpenGLExtraFunctionsPrivate' have been blacklisted in qtqa/tests/postbuild/bic/tst_bic.cpp, because those give false positive fail in the binary compatibility tests. Change-Id: I2231daef61a0c4677af36c85575b8dcd81070d44 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Autotest: Fix test when running on a non-Unicode-capable localeThiago Macieira2017-08-121-3/+6
| | | | | | | | | | | | | | Like my default FreeBSD environment. Change-Id: I3868166e5efc45538544fffd14d8a7f2dffa6ac9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Widgets: Fix ImSurroundingText query for a QLineEdit with maskJarkko Koivikko2017-08-111-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QLineEdit with a mask does not return empty fields with the ImSurroundingText query. This is a problem for the input context that is not aware of the mask and relies on the fact that the cursor position never exceeds the boundaries of the surrounding text. This change fixes the issue by returning unmasked text with the ImSurroundingText query. [ChangeLog][QtWidgets][QLineEdit] Fixed behavior of the ImSurroundingText query. Previously, it returned a masked text whose length may be less than the cursor position. Now it returns unmasked text, so the text length is always greater than or equal to the cursor position. Task-number: QTBUG-60319 Change-Id: I1c8009164836a1baa2e3a45958bf1ea5fa9be38d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Autotest: fix blacklisted test about position on non-regular filesThiago Macieira2017-08-082-10/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On BSD systems (tested on macOS and FreeBSD), you *can* lseek(2) or ftell(3) on a pipe and get its current position. But QFile will not get the position when the file is sequential, so we need to return 0. Technically speaking, we ought to do the same for block devices, but if you're redirecting stdin, stdout or stderr in the unit test to or from a block device, you deserve the extra work to add that yourself to the test. Change-Id: I3868166e5efc45538544fffd14d8a74e92963fe7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* | QFileInfo: harmonize QFileInfo() and QFileInfo("")Thiago Macieira2017-08-081-48/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a QFileInfo was constructed with an empty path, which could happen with QFileInfo(QFile()) or via QDir, etc., then it would issue system calls to empty paths and could even produce warnings. This commit makes am empty path name be the same as a default-constructed QFileInfo and corrects the use if 0 for ownerId and groupId to match the documentation. [ChangeLog][Important Behavior Changes] QFileInfo on empty strings now behaves like the default-constructed QFileInfo. Notably, path() will now be the empty string too, instead of ".", which means absoluteFilePath() is no longer the current working directory. Change-Id: I8d96dea9955d4c749b99fffd14ce34968b1d9bbf Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devThiago Macieira2017-08-0840-901/+976
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/kernel/qwidget.cpp This merge also extends the expected output of the pairdiagnostics teamcity output (added in dev in commit c608ffc56ab37f9a9d5b9c34543126adb89e2b08) after the recent addition of the flowId attribute to the teamcity output (commit 8f036562119dd35ce51dc9230304d893b906bd37 in 5.9). Change-Id: I3868166e5efc45538544fffd14d8aba438f9173c
| * Fix failing network cookie jar testsSimon Hausmann2017-08-071-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | The test verifies that a cookie with a date in the future is not "expired" and will be sent to the server. This test started failing on August 7th 2017 when the test case "0003" with it's cookie expiring August 7th 2017 started ... expiring ;-) Bumped all suspicious cookie test cases by a hundred years. Change-Id: I7c09069ec4999e2ea0aae7b2a2819cced0fd6a99 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
| * Revert "Ignore thaiZWJ failure on RHEL 7.2"Simon Hausmann2017-08-071-2/+0
| | | | | | | | | | | | | | | | | | | | | | The blacklisting is not needed anymore as we now use -qt-harfbuzz. This reverts commit b36e5faad49009778cea873ab30906bf212fc8b8. Task-number: QTQAINFRA-1363 Change-Id: I3ae50588204b27e6880416ae2cbc28dda53bb292 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
| * Add flowId to messages when logging in TeamCity formatBorgar Ovsthus2017-08-0431-874/+874
| | | | | | | | | | | | | | | | | | | | | | | | Added flowId='name' to each message when using TeamCity logging format. This is necessary to distinguish separate processes running in parallel. [ChangeLog][QtTest] Added flowId to messages when logging in TeamCity format. FlowId is used to distinguish logging from multiple processes running in parallel. Change-Id: I7f5046c1058ff02770404caa2c9b3a5398f97f6b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Ignore thaiZWJ failure on RHEL 7.2Simon Hausmann2017-08-041-0/+2
| | | | | | | | | | | | | | | | The test fails when the system harfbuzz (version 1.3.2) is installed. Change-Id: Id18a5a3c503f64ef56567d71655e433a46908b3f Task-number: QTQAINFRA-1363 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
| * QAbstractItemView: fix nullptr violationRaschbauer, Reinhard2017-08-041-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If in a slot connected to QAbstractItemView::clicked QAbstractItemView::setModel(nullptr) is called the method QAbstractItemView::mouseReleaseEvent will cause a segmentation fault. The problem is that the method QAbstractItemView::model used in QAbstractItemView::mouseReleaseEvent will return a nullptr if a null model was set. The solution is to used d->model since it is always a valid model. (See line d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel()); in method QAbstractItemView::setModel) Change-Id: I6f01bdeac64495ee4a76adcc7bf8da8a7719ef4d Reviewed-by: David Faure <david.faure@kdab.com>
| * tst_NoQtEventLoop: Pass with High DPI scaling activeFriedemann Kleint2017-08-041-7/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Determine window sizes according to screen size and turn off scrolling. - Center the window to get it out of the way of taskbars. - Make the window top-most. - Turn off scaling so that coordinates passed to the QWindow child match device coordinates and the child is positioned correctly. - Make the child window a yellow raster window for easier debugging. Task-number: QTBUG-45956 Change-Id: I05864770f8ed638d0a36f3e3f2afed73d2952436 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * tst_qwidget::activation expect fail on Win 10Joni Jäntti2017-08-031-0/+6
| | | | | | | | | | | | | | This test fails on Windows 10 x64 Creators Update CI builds for unknown reasons. Change-Id: I766bccfd4dea9ea195c68403018b419e800a7b3b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * tst_qgraphicswidget expect fail on Win 10Joni Jäntti2017-08-031-0/+7
| | | | | | | | | | | | | | | | | | tst_qgraphicswidget::checkReason_ActiveWindow fails on Windows 10 Creators Update. Added expect fail for Windows platform. Task-number: QTBUG-62244 Change-Id: I71868a496659e7136af9a5b74684ba39edaf03ae Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * tst_qfocusevent activateWindow for Win 10Joni Jäntti2017-08-031-0/+9
| | | | | | | | | | | | | | | | | | This workaround was created to make tst_qfocusevent test pass on Windows 10 x64 Creators Update. Task-number: QTBUG-61467 Change-Id: I63eb149ae850174fb5de99761a6001e000a151a2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * unbreak tst_qresourceengine for prefix buildsOswald Buddenhagen2017-08-031-2/+3
| | | | | | | | | | | | | | | | | | don't try to execute a binary from the install dir. amends 8e776d39f. Change-Id: I37990bc83b295379f0c93f4ca712e1bbf980fd44 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * tst_QImageReader: Fix the size of the SVG imagesFriedemann Kleint2017-08-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The image appears to be 128x128. Fixes test failures FAIL! : tst_QImageReader::readFromResources(rect.svg) Compared values are not the same Actual (image.size()): QSize(128x128) Expected (size) : QSize(105x137) .\tst_qimagereader.cpp(1493) : failure location FAIL! : tst_QImageReader::readFromResources(rect.svgz) Compared values are not the same Actual (image.size()): QSize(128x128) Expected (size) : QSize(105x137) which likely do not show in the CI since the qtsvg module is not available when checking only qtbase. Change-Id: I84ebdde6f2251f56a00f16a54bd20d0c2b23638e Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* | Add QTextOption/QTextEdit/QPlainTextEdit::tabStopDistance propertyEskil Abrahamsen Blomfeldt2017-08-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Qt, we have QTextOption::tabStop, QTextEdit::tabStopWidth and QPlainTextEdit::tabStopWidth. Neither are very good names, since the tab stop is neither a numerical value as in the former, nor does it have any dimensions that can be measured, as in the latter. Vertical text advances may also be supported by Qt at some point in the future, at which point the name would make even less sense. At the same time, we expose the actual type of the tab stop distance as floating point in the QTextEdit and QPlainTextEdit API instead of always rounding it to an int. To avoid duplicating either of these APIs in Qt Quick, we introduce tabStopDistance as the common term instead and deprecate the old names. [ChangeLog][Text] Introduced tabStopDistance property in QTextOption, QTextEdit and QPlainTextEdit as replacement for the inconsistently named tabStop and tabStopWidth properties. QTextOption::tabStop, QTextEdit::tabStopWidth and QPlainTextEdit::tabStopWidth have subsequently been deprecated. Change-Id: Ib7e01387910cddb58adaaaadcd56c0e69edc4bc2 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Filesystem: Use "birth time" to avoid confusion with Unix ctimeThiago Macieira2017-08-053-110/+116
| | | | | | | | | | | | | | | | | | | | | | The Unix stat fields "st_ctime" and "st_ctim" mean "change time", the last time that the file/inode status fields were changed. It does not mean "creation time". So this commit splits all of the internal API to "birth" and "metadata change" instead of "creation" to avoid the conflict. Change-Id: I149e0540c00745fe8119fffd1463fe78b619649e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Introduce QFileInfo::birthTime and metadataChangeTimeThiago Macieira2017-08-051-7/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QFileInfo] Deprecated created() because it could return one of three different file times depending on the OS and filesystem type, without the ability to determine which one is which. It is replaced by metadataChangeTime() and birthTime(). [ChangeLog][QtCore][QFileInfo] Added QFileInfo::metadataChangeTime(), which returns the time the file's metadata was last changed, if it is known, and falling back to the same value as lastModified() otherwise. On Unix systems, this corresponds to the file's ctime. [ChangeLog][QtCore][QFileInfo] Added QFileInfo::birthTime(), which returns the file's birth time if it is known, an invalid QDateTime otherwise. This function is supported on Windows and on some Unix systems. Change-Id: I0031aa609e714ae983c3fffd1467bd8b3e3a593d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Allow QSettings to synchronize non-atomicallyThiago Macieira2017-08-041-0/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is required so that one can use QSettings in situations that temporary files or renaming may not work. [ChangeLog][QtCore][QSettings] Added setAtomicSyncRequired(), which allows one to use QSettings with config files in unwriteable directories or in Alternate Data Streams on NTFS on Windows. This used to work before Qt 5.4, but remains a non-default behavior due to the potential of data corruption. Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4f77112f0402f Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | Support Alternate Data Streams in QSaveFileThiago Macieira2017-08-041-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't use MoveFile to do atomic commits on an ADS, so QSaveFile needs to detect when the target name is ADS and then use the direct fallback mode. [ChangeLog][QtCore][QSaveFile] Saving to Alternate Data Streams on NTFS on Windows is now possible, but requires setDirectWriteFallback(true). Task-number: QTBUG-47379 Change-Id: I81480fdb578d4d43b3fcfffd14d4bc062ae1750d Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | Long live QTemporaryFileName!Thiago Macieira2017-08-041-15/+17
| | | | | | | | | | | | | | | | | | | | | | So we can use it in QTemporaryFile, QTemporaryDir and QFile::rename() [ChangeLog][QtCore][QTemporaryDir] The class now supports the "XXXXXX" replacement token anywhere in the template, not just at the end. This behavior is similar to what QTemporaryFile supports. Change-Id: I1eba2b016de74620bfc8fffd14ccb645729de170 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Implement conversion from nullptr QVariant to QString and QByteArrayAllan Sandfeld Jensen2017-08-041-0/+14
| | | | | | | | | | | | | | | | | | A nullptr QVariant should become a null QString or QByteArray, since null strings have previous in our APIs represented the null value in the absence of a dedicated null metatype. Change-Id: I3b8f6386ece314d7c196959fbcf042c4fe0508a0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add a test that we can read SQL time-stampsEdward Welbourne2017-08-041-0/+21
| | | | | | | | | | | | | | | | | | Based on a test-case from Israel Lins Albuquerque, that my planned fixes to our parsing of ISODate date-times would break. Change-Id: I5658df9c7daed59d43aa5574df25d4d9eac4677d Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Clean-up in QDateTime's parsing of ISODate{,WithMs}Edward Welbourne2017-08-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Actually check that there's a T where ISO 8601 wants it (instead of just skipping over whatever's there), with something after it; move some declarations later; add some comments; and use the QStringRef API more cleanly (so that it's easier to see what's going on). Simplify a loop condition to avoid the need for a post-loop fix-up. This incidentally prevents an assertion failure (which brought the mess to my attention) parsing a short string as an ISO date-time; if there's a T with nothing after it, we won't try to read at index -1 in the following text. (The actual fail seen had a Z where the T should have been, with nothing after it.) Add tests for invalid ISOdate cases that triggered the assertion. Change-Id: Ided9adf62a56d98f144bdf91b40f918e22bd82cd Reviewed-by: Israel Lins Albuquerque <israelins85@yahoo.com.br> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | GLSL 1.00 ES must be selected using "#version 100"Kevin Ottens2017-08-041-3/+3
| | | | | | | | | | | | | | | | I was mistaken before, the "es" part for that version isn't optional, it *must* be omitted. Change-Id: I9e83d2317523fb0a905e40b95a56033cf693b93b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | QVariants of null pointers should be nullAllan Sandfeld Jensen2017-08-041-2/+18
| | | | | | | | | | | | | | | | | | | | | | Changes the QVariant::isNull() implementation for pointer types so they return true if null. [ChangeLog][QVariant] QVariants containing pointers will now return true on isNull() if the contained pointer is null. Change-Id: I8aa0dab482403837073fb2f376a46126cc3bc6b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Long live qEnvironmentVariable()Thiago Macieira2017-08-041-3/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore] Added qEnvironmentVariable, which returns the value of an environment variable in a QString, while qgetenv continues to be used to return it in a QByteArray. For Unix, since most environment variables seem to contain path names, qEnvironmentVariable will do the same as QFile::decodeName, which means NFC/NFD conversion on Apple OSes. I opted not to #include <qfile.h> from qglobal.cpp to implement that QFile::decodeName functionality, so qglobal.cpp doesn't depend on corelib/io and to avoid possible recursions. Task-number: QTBUG-41006 Change-Id: I14839ba5678944c2864bffff141794b8aaa7aa28 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>