Commit Graph

26517 Commits

Author SHA1 Message Date
Gatis Paeglis
89ab15ac91 xcb: various coding style cleanups in qxcbbackingstore
- Pass QXcbBackingStoreImage a pointer to QXcbBackingStore. This
allow for simpler QXcbBackingStoreImage ctor.

- Use member initializers.

Change-Id: Ia992390060bb30e1184813cd0d115a8bf0fbc237
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-04-09 16:31:06 +00:00
Gatis Paeglis
315327f3d6 xcb: rename two classes in qxcbbackingstore
QXcbShmImage to QXcbBackingStoreImage as it is an image that
might or might not have SHM capability. The current name implies
that it always uses SHM.

QXcbShmGraphicsBuffer to QXcbGraphicsBuffer as it has nothing to
do with SHM.

Change-Id: I57ced75891e8b10515142769278a7f3f40da91ef
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-04-09 16:30:50 +00:00
Paul Wicking
37161d0380 Doc: Update QVariant::toString description, update see also links
Change the toString description to reflect that the listed types are not
exclusive, and update see also link to link to the canConvert method
that includes conversion table.

Task-number: QTBUG-67174
Change-Id: I3ad2889c98a235995b94a2d0496a6fb8c024b7bb
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2018-04-09 09:43:51 +00:00
Mikhail Svetkin
f5a624c9b9 Fix integer overflow (1 << 31)
On platforms where integer by default is int32(max is 2147483647) and
(1 << 31) will be 2147483648

Change-Id: I59ccb5344d5ad7d085f01bbc7cebdf6152ff7755
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-04-09 08:40:29 +00:00
Mårten Nordheim
1c92bb87fe Fix TlsV1SslV3 case in the WinRT SSL backend
It would previously only enable TLS v1.0, but it should also enable
SSL v3. According to Microsoft's documentation[0] that is exactly what
"SocketProtectionLevel_Ssl" does.

[0]: https://docs.microsoft.com/en-us/uwp/api/windows.networking.sockets.socketprotectionlevel

Change-Id: Id48f1ad310d994b8379116c9fa2102db858d7f69
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-04-09 07:24:52 +00:00
Thiago Macieira
a9d903d18f QSemaphore: Fix 64-bit Linux QSemaphores initialized to non-zero
The original design for the 64-bit futex had the token count replicated
in the high part. But the constructor wasn't setting it. This is one of
the issues I had noticed when investigating QTBUG-66875, but didn't need
to address since the the fix I ended up applying in commit
081c001deb made that unnecessary: the high
part only had the number of waiters.

Unfortunately, when commit f502270c0f06daba75c1da381bd1658d81aa7bba
brought back the token count in the high part, I failed to correct that
problem. As a consequence, every QSemaphore that was initialized in the
constructor to a non-zero value would eventually deadlock.

This commit fixes that oversight.

Task-number: QTBUG-67481
Change-Id: I662b8f168c74440ab1a8fffd1522be6b85adb4d0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
2018-04-06 22:46:49 +00:00
Johan Klokkhammer Helsing
fbb9c0461c QOpenGLTexture: Set wrap mode if NPOT textures are not fully supported
The OpenGL wrap mode defaults to GL_REPEAT although it is not supported for
non-power-of-two textures on hardware that only has limited support.

I.e. the following would create a texture with an invalid wrap mode:

    auto *t = new QOpenGLTexture(QOpenGLTexture::Target2D);
    t.setSize(123, 456);

This patch adds a check in QOpenGLWindow::setSize to see if it's called with a
non-power-of-two size on hardware without full support, and if so sets wrapMode
to ClampToEdge (which should work on devices with limited support).

Task-number: QTBUG-67418
Change-Id: I56e9f4383dbf5430c2bc5e4e9e585712b3603c13
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-04-06 12:47:11 +00:00
Andy Shaw
d90fb72c20 Pass on local html links with a fragment to openUrl()
If a file link to a html file has a fragment part included then this
will be lost when passed to QDesktopServices::openUrl() as this is not
kept in the conversion of the QUrl. So by checking the filename in the
case of a fragment existing in the url, we can be sure that the
information is passed on correctly for html files.

Task-number: QTBUG-14460
Change-Id: I8167d8c164713dd999603ba9e74150f4f1a4abea
Reviewed-by: David Faure <david.faure@kdab.com>
2018-04-06 12:45:02 +00:00
Andy Shaw
ec23d96c86 oci: Use OCIBindByPos2 to accommodate data longer than USHRT_MAX
OCIBindByPos2 is only needed when using execBatch(), binding data that
is longer than USHRT_MAX works for exec() so this is left unchanged.

Change-Id: Ifdcf91939d184f225d24c13052ea0b81611ecf91
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-04-06 12:44:37 +00:00
David Faure
a1b1dd3b84 QMimeDatabase: fix assert when fetching data for invalid mimetype
The Q_ASSERT(mimePrivate.fromCache) at qmimedatabase.cpp:218
which I added in commit 7a5644d648, was being triggered when calling comment()
for invalid mimetypes such as db.mimeTypeForName("").

Change-Id: I8037041a4b435d2a5ba24ec94b7858e38b2f0bf2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-04-06 07:19:01 +00:00
David Faure
e729ac6dc5 QSqlDatabase: Skip confusing thread warning on invalid QSqlDatabase
If the db isn't valid, then that's the actual issue, not the fact that we're
getting the same invalid db (with the same driver QSqlNullDriver) in
multiple threads.

Change-Id: I95490818ed78e741c3823e115f139c2cff01b0b1
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2018-04-06 07:18:03 +00:00
Eirik Aavitsland
cab5f37ef4 Fix visual artifacts in diffuse image dithering (the default)
The distributed error fractions in the Floyd-Steinberg dithering
algorithm were not computed precisely. In particular, rounding errors
could be accumulated, leading to visual artifacts.

Task-number: QTBUG-67425
Change-Id: I77b48c3cab3e66ca161721d14b58fcc4188e74a8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-04-06 06:40:37 +00:00
Oliver Wolff
11adeb24ff winrt: socket engine: Replace last occurrences of old connect syntax
Change-Id: I1d2f3b0b39de252f5392a2411ff4e3d94fd8593b
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-04-06 05:31:05 +00:00
Oliver Wolff
a634f01402 winrt: Properly deinitialize socket on connection failure
Change-Id: I4dde73423111ca4af386fa76ac26d1a1161fe493
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-04-06 05:31:04 +00:00
Oliver Wolff
29b21e83ba winrt: process pending data before closing a socket connection
If data is received and the remote immediately closes the connection,
it was possible that data was lost. If a remote closes the connection
make sure that any pending data is processed, before signaling closing
of the socket.

Change-Id: Ia94a616a31184fd28695919baaff99811fe0f1dd
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-04-06 05:31:03 +00:00
Kai Koehne
20d2f02485 Doc: Remove section about Qt Gui in Qt 4 from overview page
Qt 5 is now old enough that the delta to Qt 4 doesn't need to be on
the central module page anymore. This is best left to

   https://doc.qt.io/qt-5/portingguide.html

Change-Id: If65ef91765e1aca37fd7f107c2334ac65e403cd3
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-04-06 05:29:53 +00:00
Jan Grulich
470a50375a Avoid multiple connections to same response in FileChooser portal
When not specified, xdg-desktop-portal keeps using same Request object
over and over when returning response, causing multiple connections
to same slot on same DBus object. While this is not problem when using
FileDialog just once, it is a problem for QML FileDialog which is
usually reused. For this purpose x-d-p provides handle_token option
where you can specify token to be used when creating Request objects.

Change-Id: Ie6569700c48e05fcefa4d5c22c921410f87ea7ae
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-04-06 05:07:05 +00:00
Gabriel de Dietrich
8396162027 QTabBar: Repaint when releasing mouse on selected tab
Some styles, most notably QMacStyle, require this to
properly reflect the pressed state.

Change-Id: Ie841d97afbe3cfdfde1254a7069876a1a0af2e52
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-04-05 21:04:06 +00:00
Gabriel de Dietrich
cff9142942 QMacStyle: Fix "on" toggle button text color
Change-Id: I344c63debdcf012a16305f1b2124e8ad0785d982
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-04-05 21:03:57 +00:00
David Edmundson
63a433f6c8 Make nvidia resets opt-in based on QSurfaceFormat::ResetNotification
We can't be sure every user will check the return value from makeCurrent
and reset appropriately.
Even though after a reset a user will be left with the same garbage as
before, it's safer than a potential infinite loop.

Change-Id: I5b328c654ad2a89c5b8c4399e2eb38150f4f384b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-04-05 19:57:09 +00:00
Timur Pocheptsov
1c463000ed HTTP/2 - treat HEADERS frames as valid for streams in 'open' state
Previously, I erroneously expected HEADERS frame only on a stream,
which is in half-closed (local) or reserved (remote) state. But
'open' state is also valid (RFC7540, 6.2). For example, we start
uploading some data, we have sent HEADERS frame and now are
sending DATA frames, without END_STREAM flag set yet; this stream
is in 'open' state. If a server wants to reply with some error
status code or redirect - it does not have to wait for our END_STREAM
flag, reading all this data that will be discarded anyway.

Task-number: QTBUG-67469
Change-Id: I53e3a5e9b2ab7f7917ae083ba44e862a227db238
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-04-05 19:56:55 +00:00
David Edmundson
f1fc449016 Support graphics reset status for offscreen surfaces in XCB-GLX
I originally didn't to match the ANGLE code, however it's important for
all surfaces to be able to know to reset if their makeContext fails.

This is espcially relevant on some Linux nvidia drivers which has a bug
where while(glGetError()) won't ever clear whilst a reset is in
progress.

Change-Id: Iae3502168cda748c601a9aee1497e40c6d82cd83
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2018-04-05 14:50:51 +00:00
Mitch Curtis
a14bfea500 Improve QAbstractSpinBox::stepBy() docs
Change-Id: I28e942b6b2952205641c751e4c120cb38ae13fd6
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2018-04-05 14:50:30 +00:00
Friedemann Kleint
2823cc6d4b Windows QPA: Fix override cursor not working when re-entering the window
Return early from QWindowsWindow::applyCursor() when an override cursor
is set.

Task-number: QTBUG-67467
Change-Id: I0d3ceead8bbbd3c6295c216a944a1ef15b6f8190
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2018-04-05 09:00:51 +00:00
Harald Brinkmann
c067083057 Fix memory corruption in heightForWidth cache
Overflowing q_firstCachedHfw caused memory to be overwritten
before q_cachedHfws.

Change-Id: Ibbcc72380f426550cc0569a05c54cd1acd878b33
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2018-04-05 08:58:48 +00:00
Kai Koehne
18a1cfaba3 Doc: Add missing punctuation in qCritical, qFatal documentation
Change-Id: If4175502f81e569f031d97da6cc7f5d46428442a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-04-05 05:40:16 +00:00
Allan Sandfeld Jensen
4b4870a12c Parse XDG_SESSION_TYPE and use that to determine default platform
Makes Qt application try to launch using wayland in a wayland session,
even if it was a default desktop build.

Change-Id: Ib7d4a79fbe777527d1862bd775627afae10b1e9e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-04-04 22:26:01 +00:00
Jarek Kobus
ab7d48625a Fix read-only text browser sometimes jump to the top of the document
Respect the inputMethodAccepted() attribute of QPlatformInputContext in
the ibus input context plugin. This is what for example the windows
input context plugin does, too.

A text browser that is read-only should not receive input method events
that include a cursor placement. So when it receives the focus, we must
only convey the received-focus information to the input method if the
widget is editable (or accepts input method events generally speaking),
because as soon as the ibus process learns about it, it will send an
input method event that looks like a "let us reset the state a clean
start and place the cursor at the beginning" message. We are not
interested in reaching that state with the ibus process.

Task-number: QTBUG-63066
Change-Id: I1b0e5f8a396bc31169d6081f9325092b447cf60a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-04-04 08:53:35 +00:00
Eskil Abrahamsen Blomfeldt
c53b86444f macOS: Document availability of freetype font engine
Since we have this documentation for the Windows platform plugin,
it makes sense to also have it for Cocoa.

Task-number: QTBUG-67372
Change-Id: I170ae251572c8e209643a582cdd7350aaf5c7ccd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-04-04 08:52:36 +00:00
Andy Shaw
33e5b55b7e Check if the movie's current pixmap is null before drawing it
Change-Id: I87ed9998108961775f8f424bfbb4b957c0b03d8a
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-04-04 08:42:52 +00:00
Gabriel de Dietrich
6d644c7a77 QWidget: Fix typo in Mac size propagation
This amends commit f8b6d104b9.

Change-Id: I77a48e68ec7db791b843fe4dfeddc4c6fedf6380
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2018-04-04 02:41:33 +00:00
Kari Oikarinen
8b9a9651d6 Fix typoed integrity condition
Amends 594fe5c463.

Change-Id: I0fb5ab79d895cfd9698db9b4a4394481299a7e1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-04-03 10:20:18 +00:00
Morten Johan Sørvig
306df144b4 Cocoa: Make QMacNativeWidget paint correctly
QWindows with transparent pixels (of which QMacNativeWidget
is an example) must be composited, even if they are
content views.

This will display the NSWindow background instead
of solid black for the areas where the Qt backingstore
has transparent pixels.

Change-Id: Ibee1327e11bc64975900b4c5d632dd5f103da4c8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-04-03 06:03:40 +00:00
Gabriel de Dietrich
dbdd5f0ffb QCoreTextFontEngine: Fix build with Xcode 9.3
Apple LLVM version 9.1.0 (clang-902.0.39.1)

Error message:

.../qfontengine_coretext.mm:827:20: error: qualified reference to
      'QFixed' is a constructor name rather than a type in this context
    return QFixed::QFixed(int(CTFontGetUnitsPerEm(ctfont)));

Change-Id: Iebe26b3b087a16b10664208fc8851cbddb47f043
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2018-03-30 19:17:46 +00:00
Samuel Gaist
62da8e3480 doc: Improve QByteArray::fromRawData snippet
The current snippet uses integer literals that will trigger the
Wnarrowing warning with recent version of gcc. This patch replaces them
with character literals to fix this warning.

Change-Id: Iffad495f24cc9d4c1674a7fe3f6b45c46a625ff8
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2018-03-29 19:12:07 +00:00
Oswald Buddenhagen
1d537071de rcc: prune dead wildcard matching code
clearly, rcc was meant to support wildcard patterns in <file> entries.
however, since its inception, this code was broken: the exists() check
was done first, so the decomposition into path and wildcard would never
happen.
as actually supporting wildcards woulds just complicate matters, simply
remove that dead code.

on the way, re-arrange the code in a way that is advantageous for
subsequent changes, and insert a case that catches non-regular file
nodes (this would have previously run into the wildcard code).

Change-Id: Iac1a168b844ef5b176f6cc45d6a779fde0bec6f7
Reviewed-by: hjk <hjk@qt.io>
2018-03-29 18:16:50 +00:00
Thiago Macieira
72f8f994b2 QSemaphore: attempt to fix again the 64-bit Linux semaphore
This time, the issue was that we could race a wait and a wake. A multi-
token waiter would not notice that the number of tokens changed because
it only performed a fetch-and-OR, then waited on the high part which did
not change. That means the futex_wait() would succeed, when we wanted it
to have failed.

So we have to bring back a portion of what commit
081c001deb removed: we need to keep both
the token count and the waiter count in the high word.

Task-number: QTBUG-67214
Change-Id: I04a43ee94975482f9e32fffd151e467a9e0030b3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-03-29 15:15:03 +00:00
Mauro Persano
2e496e9322 Windows: handle multiple transient children when closing windows
On Windows, we must update the transient children of a window that's
about to be destroyed or its transient children will be destroyed as
well. This is already being done in the case of a single transient
child, but there are still problems when there are more than one.

Change-Id: Ib0de6767bf43dca508ecdb87cbdfedb59e9146e8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-03-29 15:07:45 +00:00
Jürgen Hunold
ee6164942d Allow compilation with clang-cl disguised as cl
Task-number: QTBUG-63512
Change-Id: I7e0c4e144262a175c39508090c935c73186fac65
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2018-03-28 18:18:05 +00:00
Kari Oikarinen
f22ae9c0d0 QFutureWatcher: Refer to convenience method resultAt in documentation
The future does not actually have a result() member function that takes an int.
The correct function is resultAt(). But that is also available directly in the
QFutureWatcher, so refer to that instead of advising to get to the future.

Change-Id: I53d267b4b48b1171bf611e11130b9dacabc059a4
Reviewed-by: Martin Smith <martin.smith@qt.io>
2018-03-28 11:40:30 +00:00
Olivier Goffart
c59cb98095 Fix MSVC2017 compilation with enabled relaxed constexpr on 32-bit target
The problem is that qCountLeadingZeroBits is calling qPopulationCount
which is only conditionally constexpr, so qCountLeadingZeroBits can only
be marked constexpr if qPopulationCount is also.

On MSVC2017 64bit this is not a problem because it uses builtins function
in this case. (which is not constexpr, but it works because the compiler
is not forced to diagnose the problem because of the "?:" operator.

The error being fixed is:

  qalgorithms.h(847): error C3615: constexpr function 'qCountLeadingZeroBits' cannot result in a constant expression
  qalgorithms.h(858): note: failure was caused by call of undefined function or one not declared 'constexpr'
  qalgorithms.h(858): note: see usage of 'qPopulationCount'

Task-number: QTBUG-67259
Change-Id: I65a3dfae12ca49394bec14ffefdd41a07fee1c32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-03-28 08:16:57 +00:00
Gabriel de Dietrich
e83f1900f6 QMacStyle: Fix spinbox implicit height
We don't need to accommodate for the fake frame anymore.

Change-Id: I2d84441d4239e1ff68f640dffda1a0d1a97fa2b3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-03-27 17:13:44 +00:00
Gabriel de Dietrich
857e73e042 QMacStyle: Fix text color for disabled default buttons
Change-Id: I7c6ba0c3818a3e269e0350153cbde355bafd249a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-03-27 17:13:39 +00:00
Gabriel de Dietrich
76bec0c49a QMacStyle: Remove CT_ToolButton related dead code
sizeFromContents() just adds 10 points to the tool button
size and returns. Therefore, the HITheme code that used
to be shared with CT_PushButton becomes effectively dead.

Change-Id: Ib0519b0037ec3097a00e2c14067d851040853499
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-03-27 17:13:32 +00:00
Gabriel de Dietrich
50428e9727 QMacStyle: SE_PushButtonContents is HITheme-free
This also removes a few HITheme-related functions that
are no longer needed.

Change-Id: I356938d1e99f5fed106c945a94050fa35db58716
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-03-27 17:13:27 +00:00
Gabriel de Dietrich
2562fe35cf QMacStyle: Do manual button sizing for CT_PushButton
We guarantee the same sizes as previously with HITheme
for most common cases. Exotic cases may break and will
be fixed along the way.

Change-Id: I3e3e6ea702c7489c1cbaa821a30916f63c440c1f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-03-27 17:13:21 +00:00
Andy Shaw
7775eb248a sqlite: Support using execBatch() with duplicated named placeholders
Also expands the tst_qsqlquery::batchExec() test to account for this
case and generally test the functionality. In addition it is made to be
more robust to avoid any discrepencies with the testing data. The test
in general is also cleaned up to enable more of it being tested with
the different database drivers where possible.

An expected fail is added for MySQL due to the fact that it has a bug
where null timestamp entries are being converted to the current
datetime when adding it as a bind value.

Change-Id: I0061bd1c69ae35b4858afc49420f13ce59cf48ae
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-03-27 16:50:19 +00:00
Pablo Marcos Oltra
c2373fce3c macOS: Fix memory leak in systemCaCertificates
We were releasing only the memory of latest iteration since cfCerts
was being rewritten in every iteration, invalidating the RAII.
Hence, we need to define the variable within the loop to ensure the
object is released for every iteration.

Task-number: QTBUG-66937
Change-Id: Iaa9365168728337c6cdaac4aef686652903cf5a9
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2018-03-27 04:15:37 +00:00
Eirik Aavitsland
c7c41fa1c6 Fix QPainter save/restore of clipping enabled state
Clipping enabled state would not always be correctly restored for the
raster engine (other engines work fine). The raster engine's QClipData
object is sometimes shared between painter state objects on the
save/restore stack. QClipData has its own enabled flag, and this could
then come out of sync. Fix by making sure we sync the enabled state on
restore.

Task-number: QTBUG-58789
Change-Id: I81e6254ebb93df6e153bbef58e32a885273e3224
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-03-26 16:00:43 +00:00
Svenn-Arne Dragly
50cfbd6112 Animation: Fix case where QEasingCurve::valueForProgress returns nan
Previously, we would divide by zero in BezierEase::findTForX if factorT3
was zero when solving the cubic equation.

This change fixes the problem by adding solutions for the special cases
where the cubic equation can be reduced to a quadratic or linear
equation.

This change also adds tests that cover cases where the equation becomes
quadratic, linear or invalid.

Task-number: QTBUG-67061
Change-Id: I2b59f7e0392eb807663c3c8927509fd8b226ebc7
Reviewed-by: Christian Stromme <christian.stromme@qt.io>
2018-03-26 15:53:10 +00:00