Commit Graph

25377 Commits

Author SHA1 Message Date
Jędrzej Nowacki
2d4fe257ca Remove some unused, local variables
Change-Id: I453162d2d396bb3427064d3b1593bb6c71376605
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-10-14 07:04:39 +00:00
Thiago Macieira
d4ea12e260 Doc: fix QRandomGenerator missing updates after rename
Commit 282065d443 renamed the generator
functions but we didn't update all the docs.

Change-Id: I0a103569c81b4711a649fffd14ec877ffbfe710d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-10-14 02:13:56 +00:00
Thiago Macieira
13b6c1e625 QRandomGenerator: improve internal noexceptness
There are a couple of Q_ASSERT wrapped by the new noexcepts, but most of
those aren't validation of external parameters, only of internal
construction. The two exceptions are the checks for pointer alignment.

Change-Id: I0a103569c81b4711a649fffd14ec8523d741dfb6
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-10-14 02:13:53 +00:00
Thiago Macieira
0a98f790bf QNetworkInterface: don't include addresses from inactive interfaces
Incidentally, we can fix a typo.

[ChangeLog][QtNetwork][QNetworkInterface] Changed allAddresses() to not
include addresses found in inactive interfaces, matching the user
expectations of this function. If those addresses are needed for some
purpose, the application will need to call allInterfaces() and obtain
the addresses in each interface.

Task-number: QTBUG-51922
Change-Id: Iaf4157b7efa2416d898cfffd14d969c963ec0a2a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-10-14 02:13:51 +00:00
Thiago Macieira
28a6529c2a QTest: make toString(QHostAddress) work
I don't know why this needs to be a template specialization instead of
overload, like all the other toString overloads. With GCC 7, it was
calling QTest::toString<QHostAddress>, which returns nullptr.

Change-Id: I638cf58bfa7b4e5fb386fffd14ea7add0eef8f87
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-14 02:13:49 +00:00
Timur Pocheptsov
7809bba68f QHostAddress::setAddress - fix an overload taking SpecialAddress
It must detach, otherwise it overwrites all QHostAddresses that were
sharing a given QHostAddressPrivate. This overload was introduced in
5.8 and probably as a result broke some pre-existing code, that previously
was using a conversion and the correctly working setAddress.
Conveniently, QHostAddress::clear() does: d.detach(); d->clear();,
exactly the first thing we do in other overloads of setAddress.

Task-number: QTBUG-63764
Change-Id: I63c36e877c9358d3ff26ba1f2e4adf35b771f426
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-13 18:13:03 +00:00
Laurent Montel
638dcbe337 Printsupport: Not necessary to call setLayout when we added the parent
Change-Id: I3504afbc7bb1aaa8c2619532fa4e05740dd6f3c4
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-12 16:45:05 +00:00
David Faure
bc74273143 QPainter: fix invalid pen style when drawing misspelled words
This code asks the platform theme to resolve SpellCheckUnderline to an
actual pen style (wave, solid, dash, etc.) but if there's no theme,
or if the default implementation in QPlatformTheme is used, the value is
still SpellCheckUnderline, which then casted to a PenStyle below in
qpainter.cpp:
   pen.setStyle((Qt::PenStyle)(underlineStyle));

The value 7 is an invalid PenStyle, which leads to random behavior
when drawing the underline. Make it WaveUnderline if the platform theme
had no opinion on how to draw it.

Change-Id: I4f02f9b58f10582cee5aefce7a4d5cd300133140
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-12 13:26:05 +00:00
Tor Arne Vestbø
f3a21f267f Fix spelling in qWaitFor comment
Change-Id: I0ac67de3371ee36c21e124e88845aaae63a73f6e
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-10-12 09:51:27 +00:00
Kai Koehne
f6cca6ab8a Replace 'an unique' with 'a unique'
Unique begins with a "y" sound, hence a unique is correct.

Change-Id: I9eb6b4d4c9ddab45af931e97c041c24edf163eca
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-11 18:44:57 +00:00
Gabriel de Dietrich
8ac9addd94 QCocoaWindow: Toggle titlebar transparency to support unified toolbar
This is need from macOS 10.13 onwards. See NSWindow related notes on

https://developer.apple.com/library/content/releasenotes/AppKit/RN-AppKit/

Change-Id: I4b4653d7342de985d22b128d73940e7163bdb1e8
Task-number: QTBUG-63444
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-11 17:06:41 +00:00
Andy Shaw
e6fe342abb Fix CVE-2017-10989 in sqlite
Change-Id: I556a453f386e887abee77a4dc147eae45970a61c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-10-11 06:22:59 +00:00
Friedemann Kleint
b2fc458620 qopenglcontext_p.h: Fix Clang warning about include resolution
kernel/qopenglcontext_p.h included opengl/qopengl.h as "qopengl.h",
triggering:

In file included from ..\..\include\QtGui\5.11.0\QtGui\private/qopenglcontext_p.h:1:
..\..\include\QtGui\5.11.0\QtGui/private/../../../../../src/gui/kernel/qopenglcontext_p.h(58,10):  warning: #include resolved using non-portable Microsoft search rules as: ..\..\include\QtGui/../../src/gui/opengl/qopengl.h [-Wmicrosoft-include]

Task-number: QTBUG-63512
Change-Id: I867a8f2ceeb8a9369dfe0163c179572feadc033e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-10-11 05:33:51 +00:00
Samuel Gaist
e5fa5bffd0 Doc: move QKeyValueIterator documentation to the right file
The documentation of QKeyValueIterator was in the wrong place. This
patch moves it with the other iterators documentation.

Change-Id: I42ad529f72f9b19fdecfca7ddfeb6e6f4dcfebac
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-10-11 05:24:49 +00:00
Samuel Gaist
6f35d7ea4e Doc: fix indexOf QRegularExpression overload documentation
That overload documentation was missing the "exact" qualifier regarding
the search result.

Change-Id: I27a08b60f9b88ae497f8bd9d9ba6a99f4a9ab4d6
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-10-11 05:24:43 +00:00
Friedemann Kleint
46eb7d6b70 Windows Vista Style: Draw dock widget title with Qt::TextShowMnemonic
Align with the other styles.

Task-number: QTBUG-54485
Change-Id: Ic8d008c59f5acf858b8ba6fbea5dd30b8aa9634c
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-10-10 18:24:40 +00:00
Allan Sandfeld Jensen
7f6f1d7e30 Revert "Do not include qfloat16 tables in arm64 builds"
They are needed for older compilers that doesn't support
 the __fp16 extension. Reverts under the assumptions other
 compilers will optimize it away.

This reverts commit 6dc7e468df.

Task-number: QTBUG-63693
Change-Id: If780de001d8c12df0db12caaf62505f16e01b663
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-10 16:05:27 +00:00
Thorbjørn Lund Martsum
f1033567aa QDockWidget - improve resize
On high DPI (e.g Apple Retina) user resizes of
QDockWidgets (with custom titlebars) could fail.
There was a cursor position check in mouse
move event bailing out if the cursor pos was not within
the widget.

The problem was that we could be on the edge
(or maybe even cross it?). Furthermore there is (/was)
no similar check when setting the cursor
to be a resize cursor, so users will obviously expect
the resize to occur.

This solves a part of QTBUG-63526

[ChangeLog][QtWidgets][QDockWidget] Fixed an issue
in QDockWidgets where the widget would not resize
despite showing a resize cursor.

Task-number: QTBUG-63526
Change-Id: Ifa842a109071552506da3a82822d903dc252c8cd
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-10-10 14:43:34 +00:00
Mårten Nordheim
a402b3a02e Add support for HTTP status 308 Permanent Redirect
308 Permanent Redirect was introduced after redirection support was
initially added to Qt.

[ChangeLog][QtNetwork][QNetworkAccessManager] Added support for HTTP status 308.

Task-number: QTBUG-63075
Change-Id: I1c6cda331d776237113ef8854de9abfe7e41ed3e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-10 07:06:24 +00:00
Florian Bruhin
d20aa0d50d Fix typo in QKeyEvent docs
Change-Id: I926fc94ae039f03c507149a6d3fc66f4584201e2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-10 06:31:27 +00:00
Friedemann Kleint
a24597d93d Windows font database: Remove clamping of default font size
Partially revert a72513cab7.
The value is too small for Chinese fonts.

Task-number: QTBUG-63654
Change-Id: If020bfc3044258b7abfd9d463bc9b292a9cc0839
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2017-10-09 21:02:22 +00:00
Laurent Montel
89e5492877 PrintSupport: Layout constructor already uses "this"
Not necessary to call setLayout here.

Change-Id: I761215b46ab4f778786e92338906b5ec7515c53d
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:55:14 +00:00
Laurent Montel
bd98a52256 PrintSupport: replace 0 with nullptr
Change-Id: Ic5e0000e384989239965f269474d17fa29669db1
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:50:26 +00:00
Laurent Montel
b4b36c9b50 Printsupport: Fix compilation on gcc with -Wpedantic
Change-Id: Ic17079e14e90801ed40fddb12d5c1af1b1fa14be
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-09 12:21:39 +00:00
Krzysztof Kawa
6dea9bfa10 Documentation: Add missing event type for non-client mouse events
Documentation is missing the specialized event type names in the
non-client mouse event enum description.

Task-number: QTBUG-55018
Change-Id: Ica35994e13fc9a637a52eeca361898f8669fdbd1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-10-07 19:52:06 +00:00
Thiago Macieira
10f2b5aa66 QUdpSocket: make sure receiveDatagram() returns empty on error
If the datagram reception failed, we forgot to set the buffer back to
empty. The returned QNetworkDatagram did report isValid() == false, but
it was possible to get the .data() and check its size, getting nonsense.

Tests in the next commit.

Change-Id: I638cf58bfa7b4e5fb386fffd14ea91adf2133d47
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-07 19:29:16 +00:00
Jake Petroules
e470348d87 Fix deprecated API usage
Amends c1cece8e54

For some reason, this was missed in the original change. This is now
outright prohibited in the watchOS 4 SDK and will cause a compilation
error on that platform.

Change-Id: Iaa2edf6256a54ca11dec9f1efd8a4d18ba7dc046
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-10-07 16:52:10 +00:00
Allan Sandfeld Jensen
f0096a2bd3 Enable patent-free LCD rendering with FreeType 2.8.1
Use the FreeType LCD rendering path with 2.8.1 even when it has lcd-
filtering disabled. This gives us proper subpixel rendering even with
a freetype build with the patented lcd-filtering code disabled.

The code is also simplified by removing the long pointless
ifdefs for 10+ year old versions of freetype.

Change-Id: I487e465317cb984b6e33c7bcc497f27cf29f9bcd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-10-07 11:20:10 +00:00
Liang Qi
906ce1c52b Merge remote-tracking branch 'origin/5.9.2' into 5.9
Change-Id: Iaae1d9efe6b9267e8e8349905811525ff344e00c
2017-10-06 19:27:40 +02:00
Allan Sandfeld Jensen
c071413ecc Fix zero-length lines with scaling
We should calculate the pen width based on the scaling similar to how
it is done for normal lines, otherwise we get the scaling applied
twice.

Task-number: QTBUG-61777
Change-Id: Iba71d55971a1d29537d2c9ff33749223a06160de
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-10-06 12:05:31 +00:00
Mika Salmela
0366f68b6d Prevent changing the width for layout item's rect
For gridlayout items the x position is rounded, but the QRectF changes
the width to keep the right edge. The width is yet calculated exactly
for the text so we need to preserve it.

Task-number: QTBUG-61244
Change-Id: I823ba742c9ab299740232b5d9b4ad5713e1782c4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-10-06 10:56:36 +00:00
Jake Petroules
467cede61e Fix build with -no-opengl and on watchOS in general
This fixes a regression introduced in 8e70241dcc.

Task-number: QTBUG-63631
Change-Id: I5a2c23e06b790a482e1542ac2db3dcf25927caf2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-10-06 10:50:02 +00:00
Eirik Aavitsland
248beda08f XCB platform: Fix crash on X servers with BGR888 display
If the native visual was BGR888, the XCB plugin would assert as soon as
it needed to find the corresponding QImage format. Fix by adding the
required mapping in qt_xcb_imageFormatForVisual().

Task-number: QTBUG-62840
Change-Id: Idd9eb01a60f605ad004d5b0c3025ded63ed64271
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-10-06 08:37:16 +00:00
Mårten Nordheim
7f7d939380 Windows: Let topmost and bottom windows use raise and lower respectively
329a029c36 made ::raise and ::lower do nothing
for topmost and bottommost windows. This made it impossible to
e.g. raise one topmost window above another topmost window using
QWindow::raise.

Task-number: QTBUG-62021
Change-Id: I5f60816cbc48d69c0411e3bd68852d8bd8e300bb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-10-06 07:29:06 +00:00
Lars Schmertmann
6486a4bd19 Avoid using deprecated APIs on iOS 10.0+
Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-06 06:15:30 +00:00
Giuseppe D'Angelo
cb08b40976 Move detection of <future> to a configure test
<future> is needed by QThread::create. Instead of a fragile series
of preprocessor tests, move its detection to a configure test.
This dramatically simplifies the code, but on the other hand ties
the availability of QThread::create() to the system used to compile
Qt (rather the one used to compile an application).

Change-Id: If1b06363379bf29126cfa68f2a0651cbb78a67f7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-06 05:51:54 +00:00
Thiago Macieira
f62768d046 QUrl: re-fix the setPath("//path") case leading to scheme://path
Commits aba336c2b4 (in Qt 5.2) and
aba336c2b4 (in 5.6) both tried to deal
with this problem, with different levels of success. This is the third
attempt (and hopefully the charm).

Instead of modifying the path that the user provides, go straight ahead
and declare it invalid. This is supported by RFC 3986, which declares
this expansion impossible:

   relative-part = "//" authority path-abempty
                 / path-absolute
                 / path-noscheme
                 / path-empty
   path-abempty  = *( "/" segment )
   path-absolute = "/" [ segment-nz *( "/" segment ) ]
   path-noscheme = segment-nz-nc *( "/" segment )

The "path-abempty" and "path-noscheme" cases are the two issues we
already handle. This commit adds the third one: path-absolute, which
requires that the first segment of the path be of non-zero length.

That is, it is now possible again to have http://example.com//path
constructed piece-wise, without it producing http://example.com/path.
Additionally, it catches the case of http://example.com//path parsed
from full URL then followed by setAuthority("").

Change-Id: I69f37f9304f24709a823fffd14e67a5e7212ddcd
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-06 03:49:40 +00:00
Thiago Macieira
70ee08951a Doc: Remove unsupported systems out of QNetworkDatagram's list
We don't support Windows versions prior to 7 nor Windows CE anymore.

Change-Id: I638cf58bfa7b4e5fb386fffd14ea930155d67689
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-06 03:49:35 +00:00
Thiago Macieira
db1027bc36 QLockFile: don't use QCoreApplication::applicationName()
That was stupid for two reasons. First, applicationName() can be changed
by the user by calling QCoreApplication::setApplicationName(), so if
that happens, we won't be able to properly identify a lock belonging to a
given application because the name changed.

Second, because applicationName() is not what we compare to. Instead,
let's use processNameByPid() on both content creation and verification.

[ChangeLog][QtCore][QLockFile] Fixed a bug that would cause QLockFile
mis-identify valid lock files as stale if the application name was set
with QCoreApplication::setApplicationName().

Change-Id: I0b48fc8e90304e0dacc3fffd14e912a5c98c87e7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-10-06 01:53:53 +00:00
Thiago Macieira
4dca0cba30 QLockInfo: Centralize the management of the lock file's contents
We duplicated both the creation of the contents and the check if the
file was stale. Centralize everything in qlockfile.cpp.

Change-Id: I0b48fc8e90304e0dacc3fffd14e91174af79841f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-10-06 01:53:50 +00:00
Thiago Macieira
3399d79773 QLockFile/Unix: drop the use of fcntl(F_SETLK)
F_SETLK is bad. Explanation in the comment. And flock(2) does work with
NFS on Linux, so let's just stick to that, which is simpler.

We only use the file locks when we attempt to delete an apparently stale
lock: that is, for a lock file that is at least staleLockTime old.

Change-Id: I0b48fc8e90304e0dacc3fffd14e908c8c4c9d59b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2017-10-06 01:53:47 +00:00
Tor Arne Vestbø
de3f764be8 macOS: Split QCocoaScreen out from qcocoaintegration.mm
It's confusing to keep it along with an unrelated class. Let's keep it
in its own file like for most other platform plugins.

Change-Id: I449ee061ff9fd5dc7ef06cadd633414d6b16358f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-10-05 17:06:00 +00:00
Oleg Yadrov
5ff9d6a470 QMacStyle: smooth QMenu corners for real
It's been for years that QMenu's rounded corners in qmacstyle_mac were
done via QWidget::setMask(QRegion). Unfortunately, QRegion mask does not
work well with retina displays and also does not support translucency.
That's why in this change we explicitly make QMenu's background
transparent and then draw a rectangle with rounded corners in
QMacStyle::drawPrimitive(PE_PanelMenu). This not only gives much better
result than the mask-based approach, but also de-HIThemes QMenu.

As a consequence, QComboBoxPrivateContainer doesn't get any mask from
QMacStyle anymore. Therefore, when the mask is empty, we need to paint
PE_PanelMenu before invoking QFrame's paint event handler.

Made-with: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Change-Id: Ia9236176113f23b86e45507fa6ddf77236084ce3
Reviewed-by: Oleg Yadrov <oleg.yadrov@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-10-05 17:04:07 +00:00
Tor Arne Vestbø
08e083e682 Ensure result of all QTest::qWaitFor are verified
The qWaitFor functions themselves can not trigger a test failure, as that
will not result in the test function exiting early, so every single call
to qWaitFor needs to be wrapped in a QVERIFY.

Change-Id: Id15a1549f31d06cdbf788e1d84ea431c28636ec8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-05 15:15:36 +00:00
Liang Qi
7bbb9a8ce8 Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into refs/staging/5.10 2017-10-05 12:38:45 +00:00
Tor Arne Vestbø
8e70241dcc Let QPlatformBackingStore handle its own QOpenGLContext
The resources allocated by QPlatformBackingStore are owned by the class,
and should be allocated in a context the class also owns. This removes
the asymmetry of having to pass in a context to composeAndFlush, while
having to make the same context current before destroying the platform
backingstore.

The context owned by QPlatformBackingStore is shared with the associated
window though a new QWindowPrivate::shareContext() API.

The result is that on e.g. iOS, the backingstore does not need to tie
the resource allocation of QPlatformBackingStore to the global share
context, but can instead tie them to the per-window context, and hence
clean them up after each window is closed.

Task-number: QTBUG-56653
Change-Id: Ic1bcae50dafeeafaa8d16a7febd83b840ec6367a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-10-05 12:34:23 +00:00
Tor Arne Vestbø
5b4cf7af6a macOS: Prevent backingstore image detach during color space assignment
The call to CGImageCreateCopyWithColorSpace took a naked toCGImage(),
which left the resulting CGImageRef without a release, causing the
extra ref by toCGImage() to never be derefed, and a subsequent detach
of the image data on the next paint event.

Wrapping the call in a QCFType<CGImageRef> solves the problem. The code
has also been moved directly into QCocoaBackingStore::flush(), as there
is no need to keep the CGImageRef a member.

A local autorelease pool has been added to QCocoaBackingStore::flush(),
so that the NSImage used for blitting the backingstore is released upon
exit of the function, thereby releasing the corresponding CGImageRef.

Note that for layered mode, the QImage will still detach, as the view's
layer.contents property keeps a reference to the image data until being
replaced in a subsequent flush.

Task-number: QTBUG-63559
Change-Id: I06b9298f65a84deae7cc2eff617ba75c92ec3b87
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-10-04 20:27:29 +00:00
Svenn-Arne Dragly
ba423261cd Improve performance in QThreadPool
When many runnables are executed, this improves the
performance by not resizing the queue for each runnable,
which was the case in the previous version, because of
many calls to QVector::takeFirst().

Also add a test that makes sure tryTake() is safe to
call and does not leave the queue in a bad state that
tries to use nullptr entries.

Change-Id: I608134ecfa9cfc03db4878dcbd6f9c1107e13e90
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-10-04 12:00:33 +00:00
Liang Qi
bc5f45052f Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
	src/corelib/global/qconfig-bootstrapped.h
	src/corelib/global/qglobal.h
	src/corelib/tools/qcryptographichash.cpp
	src/corelib/tools/qcryptographichash.h
	src/corelib/tools/qmessageauthenticationcode.cpp
	src/plugins/platforms/windows/qwindowswindow.h
	tests/auto/gui/kernel/qwindow/BLACKLIST
	tests/auto/widgets/itemviews/qitemdelegate/BLACKLIST

Change-Id: Ib68112de985a3d714c2071f47c10e907e4f0229a
2017-10-04 13:41:04 +02:00
Richard Moe Gustavsen
b4981f9d4c Widgets: change QWidget::setTabOrder to understand compound widgets
A "compound widget" is a widget that has a focus proxy set to an inner
child. This is normal for complex black-box components where focus handling
is delegated to the children. Since the compound can have several
children, a local tab order might exist between them.

The current implementation of setTabOrder had no idea about
compound widgets. As such, when connecting two compounds in the
tab chain, it would just break up their inner tab order and
cause tabbing to ignore children other than the proxy.

The new implementation recognizes compound widgets, and add some
extra code to figure out the correct tab targets. This way, the
local tab order between the children will be preserved.

This implementation was inspired by the patches of Marek Wieckowski posted
in the linked bug report, and later modified by Nikita Krupenko.

[ChangeLog][Widgets] QWidget::setTabOrder() will now preserve the local
tab order inside a widget if it has a focus proxy set to an inner child.

Task-number: QTBUG-10907
Change-Id: I0673d39d70ec8c6bf64af30bf978d67c651b2f3c
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-10-04 11:27:18 +00:00
Kai Koehne
c5ef7bd5e1 Remove // from license text
Change-Id: I252b296713e03b749c6e99391a6928c942474378
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-10-04 10:50:36 +00:00
Gabriel de Dietrich
b8947e9194 QMacStyle: Remove HITheme calls for QSizeGrip
That's no longer a thing on macOS. We still keep it around for
QMdiSubWindow, but we should support 4-edge resizing there as
do native windows.

In practice, because of WA_MacOpaqueSizeGrip, we were already
rendering the size grip manually instead of relying on HITheme.

Change-Id: If613a14f03dc650b457688f3f2f57631b5fb30a3
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-03 21:12:42 +00:00
Gabriel de Dietrich
d47a467ca6 QMacStyle: De-HITheme QGroupBox
NSBox is good enough for this and pixel equivalent with
the previous HITheme calls.

Change-Id: I32b2a1cc8a9cd2a6ef17d1e01032540344808ebc
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-03 21:12:36 +00:00
Gabriel de Dietrich
475243a746 QMacStyle: Refactor QMacStylePrivate::cocoaControl()
That switch following the if looked a bit corny.

Also made cocoaCells hash mutable to get rid of the
const_cast(this) in QMSP::cocoaCell().

Change-Id: I4facec827409314cf1214152c19efb9688715eb2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-03 21:12:30 +00:00
Andy Shaw
3e2de48161 OCI: Clear the cache in the result for a forward only query
When the query is forward-only then nextIndex() is always 0, therefore
the cache values need to be cleared beforehand so that they are not
reused when the next row is retrieved.

Task-number: QTBUG-57765
Change-Id: I49e8427b24ec2d932e5b387699ac7f3496e9a48c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-10-03 12:10:54 +00:00
Tor Arne Vestbø
bccbb52b7a macOS: Tighten up window icon and represented filename handling
Window icons on macOS are tied to document windows, and should not show
up unless a represented filename has also been set according to the HIG.

We follow this, and no longer create a document button based on the window
title if one did no exists. We also fall back to using the filename of
the file if a title has not been set, including being able to restore
this default title after setting a custom title.

The icon is no longer reset to nil after setting a QIcon(), which would
remove the icon completely, but instead we restore the default behavior
of showing the default filetype icon of the file.

Finally, the two callbacks in QNSWindowDelegate dealing with the document
icon/title popups and drags have been taught to look for spaces in the
represented filename. This allows clients who really want the old
behavior of setting an icon without caring about the filename to set
the filename to a single space character, which will prevent the
dropdowna and drag from occurring.

The reason for not tying this behavior to the existence of the file in
the filesystem is that being able to represent a file that is yet to
be saved is a valid usecase.

Task-number: QTBUG-63338
Change-Id: I7d4377c6358226fb6058f8c2b3c28588eec77ce5
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-10-03 07:30:26 +00:00
Jake Petroules
291233a8d0 Fix strict-prototypes warning with qVersion function
This is enabled by default with Xcode 9 and would therefore be seen by
anyone calling this function from C or Objective-C.

Task-number: QTBUG-63450
Change-Id: Iecd67017b6774c9f2fce2433002ff852058dd3ed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-10-02 05:28:08 +00:00
Thiago Macieira
5e8b8a9388 Mark QCoreApplication::applicationPid() as const function
The PID cannot change.

Change-Id: I0b48fc8e90304e0dacc3fffd14e9324bfcda4412
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-10-01 17:00:40 +00:00
Thiago Macieira
bd4506fe5b Remove Q_ALWAYS_INLINE from frequently-used functions
MSVC is too stupid for them. Not only will it not inline those functions
if they are in a __declspec(dllimport) class, it will also print an
annoying Level 4 warning:

 function 'function' marked as __forceinline not inlined

Task-number: QTBUG-57811
Task-number: QTBUG-55042
Change-Id: I0b48fc8e90304e0dacc3fffd14e8a346d18a9e0c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-29 20:11:06 +00:00
Mårten Nordheim
8b64a1054a Fix cookies not being applied on redirect
Task-number: QTBUG-63313
Change-Id: I5245fc837557f19062cbbf0f1dfb86353c85229f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-29 14:44:13 +00:00
Timur Pocheptsov
49643145e1 HTTP/2 protocol handler: set redirect URL on reply
For HTTP/1 it's done when no data expected and response headers received -
protocol handler emits channel->allDone which handles the status code and
sets (if needed) a redirectUrl. HTTP/2 protocol handler cannot emit allDone
(it has many requests multiplexed and actually cannot say allDone yet).
So we set a redirect url if we have the corresponding status code and
found 'location' header.

Task-number: QTBUG-63471
Change-Id: Ibd3438ef918c245a46b8c0128910a89b9a418448
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-29 14:12:35 +00:00
Albert Astals Cid
b74cdf18e8 The desktop is called Plasma now
Change-Id: Ic07b45491a13bc4136e5259d45232297b7b25d8f
Reviewed-by: David Faure <david.faure@kdab.com>
2017-09-29 09:55:06 +00:00
Timur Pocheptsov
617ba6f1c4 Revert "HTTP/2 protocol handler: set the redirect URL on reply"
This reverts commit 9e268185bb.
Reasons: must go into 5.9 + the logic in this patch needs fixing, not good as
it is now.

Change-Id: I92516ddb1d2661d85ce77c54a1307f45df1ab635
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-29 09:52:27 +00:00
Nico Vertriest
ca4f78ff85 Doc: Add 2 QtWidgets examples to highlighted examples
Task-number: QTBUG-60635
Change-Id: I458cb09101c3423fb2abd3011e6f340e31cd0b42
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2017-09-29 08:51:55 +00:00
Friedemann Kleint
278fa07045 QNetworkDiskCache: Fix deprecation warning
access\qnetworkdiskcache.cpp: In member function 'virtual qint64 QNetworkDiskCache::expire()':
access\qnetworkdiskcache.cpp:540:44: warning: 'QDateTime QFileInfo::created() const' is deprecated: Use either birthTime() or metadataChangeTime() [-Wdeprecated-declarations]
             cacheItems.insert(info.created(), path);
                                            ^

Change-Id: I5705de5cb4b490ef2bd788fb94ceac0e5b6c0d05
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-29 07:28:17 +00:00
Jake Petroules
7fd3cc3980 Clean up OS version checks for Apple platforms
Convert QSysInfo/QOperatingSystemVersion to __builtin_available where
required or possible, or to QOperatingSystemVersion where
__builtin_available cannot be used and is not needed (such as negated
conditions, which are not supported by that construct).

Change-Id: I83c0e7e777605b99ff4d24598bfcccf22126fdda
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-29 03:30:13 +00:00
Gabriel de Dietrich
8ea5c40109 QWindowsMouseHandler: Add documentation link for bitmask magic
Change-Id: I743aef0e15ef42347c5222d0e50577b006483cc4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-28 16:48:23 +00:00
Timur Pocheptsov
9e268185bb HTTP/2 protocol handler: set the redirect URL on reply
For HTTP/1 it's done when no data expected and response headers received -
protocol handler emits channel->allDone which handles the status code and
sets (if needed) a redirectUrl. HTTP/2 protocol handler cannot emit allDone
(it has many requests multiplexed and actually cannot say allDone yet).
So we set a redirect url if we have the corresponding status code and
found 'location' header. Before it's too late.

Task-number: QTBUG-63471
Change-Id: Icfa871fb999e676650d62c45a20e689596da4028
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-28 14:04:28 +00:00
Orgad Shaneh
1cb5943aee QFileSystemEngine: Remove unneeded test for relative symlink
symLinkTarget should always return absolute path.

Change-Id: Id0078924d2f0befdea91e652a6c7775707c1b3c8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-28 12:42:07 +00:00
Orgad Shaneh
8805fdb391 QFileSystemEngine: Minor cleanup in unix
Change-Id: I4a123484ea1f5e53af85a52e86d4a80cef1cd7bc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-28 12:41:58 +00:00
Anders Hafreager
cbbf843e96 macOS: Bail out early when handling shortcut event results in closing window
When Cmd+W is used to close a window, check if m_platformWindow is still valid
before accessing window property.

Task-number: QTBUG-63389
Change-Id: I9abda19b8482e7a1fd07b07d8981b6a768e96c2e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-28 12:30:29 +00:00
Tor Arne Vestbø
eb2e984da1 macOS: Apply window file path when creating new NSWindow
Otherwise QWindow::setFilePath() before create() would have no effect.

Change-Id: Ia2171054aa13e21316d525193d330efaf4653dbf
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-09-28 12:21:23 +00:00
Paul Olav Tvete
ff2e9a17e7 Fix crash when reparenting window container
QWindowContainer assumed that a widget could never change from
native to non-native. This is not a fact when the window container
is reparented to toplevel and back. In this case, usesNativeWidgets
would be stuck at true, and parentWasChanged() would go down the
native widget path, triggering an assert.

The solution is to always recalculate the usesNativeWidgets bool.

Task-number: QTBUG-63168
Change-Id: I88178259878ace9eb5de2ee45ff5e69b170da71c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
2017-09-28 12:09:27 +00:00
Eirik Aavitsland
621c5baf66 Fix element overwrite in QRandomGenerator's fallback function
Copy into the intended array elements, not into the start of the
array.

Change-Id: I05c4ece2450583c9358aa1eddfd702262e995146
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-28 11:25:06 +00:00
André Klitzing
9c13ec5fa3 Replace bundled libjpeg by libjpeg-turbo 1.5.2
Most linux distribution uses libjpeg-turbo as a replacement for libjpeg.
Since Qt will be linked against -turbo more frequently than the "original"
libjpeg we should use it for the bundled copy, too.

Also add an import script.

[ChangeLog][Third-Party Code] Replaced bundled libjpeg by libjpeg-turbo 1.5.2

Change-Id: I41081db74f194cbc288820fc783c9fef16545efd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-09-28 10:06:26 +00:00
Jan Arve Saether
36af37c99c Fix BIC issue with QNativeGestureEvent
Problem was for 32 bit macOS, or if QT_COORD_TYPE was configured
to be float.

Change-Id: I0a3d3d305f2e8a0f9be7c40f4fef7eabf4643d05
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-09-28 04:45:35 +00:00
Jake Petroules
70422449ef Add a "shim" to allow use of Clang 5's __builtin_available everywhere
This is mostly relevant for Apple platforms, where we can use the new
unguarded availability warnings to guarantee that proper version checks
are present when using APIs that are not necessarily available on the
deployment target.

Change-Id: Ie408704b2924e1220491a9ea30f0141dfa4867d9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-27 16:40:49 +00:00
Thiago Macieira
1402f5d16e Workaround GCC 6 parsing error ("used but never defined")
GCC 7 and other compilers compile this code just fine. GCC 6 fails, so
this is clearly a compiler bug. So revert the implementation of the
qWait() function back to the original, to make the problem disappear.

 qtestsystem.h:58:42: error: ‘bool QTest::qWaitFor(Functor, int) [with Functor = bool (*)()]’ used but never defined [-Werror]

Change-Id: I0b48fc8e90304e0dacc3fffd14e8110138cc9f45
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-27 15:53:04 +00:00
Thiago Macieira
9fcbef15f6 Fix build: move Q_REQUIRED_RESULT to the right position
If you're using GCC 7 or Clang 4, Q_REQUIRED_RESULT expands to
[[nodiscard]] that must appear in as specific place on the line.

 qcompilerdetection.h:1182:29: error: attribute ignored [-Werror=attributes]
 qtestsystem.h:58:12: note: in expansion of macro ‘Q_REQUIRED_RESULT’
     static Q_REQUIRED_RESULT bool qWaitFor(Functor predicate, int timeout = 5000)
            ^~~~~~~~~~~~~~~~~

Change-Id: I0b48fc8e90304e0dacc3fffd14e80ede168d5c6b
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-09-27 15:40:06 +00:00
Sérgio Martins
ef0129bb66 Don't read the statx struct in case of failure
Change-Id: I62d98e4463003a1da8f28318d82635f6e0b2cc8c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-27 15:35:58 +00:00
Edward Welbourne
d5ae3b1747 Reorder defines to respect alphabetic order in bootstrap config
Apparently it's all meant to be in alphabetic order by feature name
(except for where it isn't).  So move my new addition to it to where
that would put it, re-order everything else to follow that rule and
add a comment documenting it.

Change-Id: I6f00d3d18fc8c492992e9f701520f3e8731739b5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-27 13:15:50 +00:00
Alex Trotsenko
f03cd9a7bc QAbstractSocket: fix handling of successful connectToHostByName()
In case connectToHostByName() returns 'true', we should fetch the
connection parameters and emit connected() signal.

Change-Id: Id36b6d71005b8cec070a1b12e7bb0caf8bf0bcb9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-27 08:37:57 +00:00
Kai Uwe Broulik
3c59065d5c qglxconvenience: Avoid null pointer dereference
glXGetVisualFromFBConfig according to documentation can return NULL [1].
This may result in a crash when running Qt applications using ARGB windows
with XLIB_SKIP_ARGB_VISUALS defined.

Also guard QXlibScopedPointerDeleter against illegally calling XFree(nullptr).

[1] https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glXGetVisualFromFBConfig.xml

Task-number: QTBUG-58910
Change-Id: Ie076a1e906ed632543bdab03ef365f699533a61a
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-09-27 08:35:28 +00:00
Eric Lemanissier
3d0fa4d4fb moc: remove useless cast in qt_static_metacall generated code
_a[1] was reinterpret_casted twice in a row, which triggers
clang's warning undefined-reinterpret-cast:
"dereference of type '_t *' (aka ...) that was reinterpret_cast
from type 'void **' has undefined behavior "
only the last reinterpret_cast is kept

Change-Id: I71d52c5ff08c674003aec29f8a907c90905c0d4c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-09-27 07:04:02 +00:00
Sze Howe Koh
33693473d4 Remove unnecessary copying in QSet::subtract()
Task-number: QTBUG-42810
Change-Id: I5d4793a12b078e34bea034b4500e270d42609de0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-27 00:56:04 +00:00
Thiago Macieira
f7350ac99e Improve qustrlen further by avoiding the alignment prologue
This avoids looping prior to the main 16-byte loop, by performing one
load that may include bytes prior to the start of the string. This is
guaranteed not to fault, since str points to a valid character, but it
may cause Valgrind to print warnings.

Change-Id: I6e9274c1e7444ad48c81fffd14dcae854bba24b2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-26 18:19:35 +00:00
Paul Olav Tvete
35781b3588 Return focus to correct widget after showing menu
By the time we call setKeyboardMode(true), the menu may
already have taken focus. This change sets keyboardFocusWidget
before opening the popup, and makes sure that keyboardFocusWidget
is not set to the popup. (We cannot remove the assignment from
setKeyboardMode(), since it's called from several places.)

[ChangeLog][QtWidgets] Fixed widget losing focus after showing
menu second time.

Task-number: QTBUG-56860
Change-Id: Ic01726bf694e6f365dd7b601ad555156e0fdf6c5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-09-26 13:38:06 +00:00
Tor Arne Vestbø
49154acde3 macOS: Deliver NSWindow notifications to all windows, not just top level
Child QWindows (or in the case of QWindows embedded in native applications:
top level QWindows where the corresponding NSView is a child of another
view, so not being the contentView of its window), still need some of the
NSWindow notifications to e.g. update their exposed state when the window
becomes visible.

We make sure to send the notification to all QCococaWindow children of
the relevant NSWindow, and let each callback decide if it should only
apply to content views.

This fixes an issue where a QWindow would never be exposed if the window
was a child NSView and added to a NSWindow that was yet to be shown.

Change-Id: I7f7df8bc5f4ca3ac553a2c146f8c3229b197c059
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-09-26 12:50:05 +00:00
Tor Arne Vestbø
44c304cefb Reset QWindowPrivate::platformWindow during destruction before deleting it
Otherwise the deletion of the platform window may result in platform events
that then conclude the QWindow has a valid platform window and calls into
it, when it's been half-way destroyed.

Change-Id: If9eaad1b4e6aa414ba0f96475756a2146e0c01d5
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-09-26 12:50:01 +00:00
Tor Arne Vestbø
113de68543 macOS: Don't send expose event as update request when becoming visible
QGuiApplicationPrivate::processExposeEvent updates the QWindow's exposed
state, so we need to call QWindowSystemInterface::handleExposeEvent()
when going from non-exposed to exposed.

Change-Id: I461b2fb27cd8fd4bdb250d05d47f9af6cb3eb15c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-09-26 12:49:40 +00:00
Allan Sandfeld Jensen
807fa90b32 Fix crash with clips entirely outside glyph map
When the range to work on is empty just continue to next span.

Task-number: QTBUG-63412
Change-Id: Ic5cb77ed438eb9c218f482095aa0cd4e3c2fc6e6
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-09-26 12:05:13 +00:00
Andy Shaw
2b51ad4712 Cups: Check the created QPrintDevice is valid before using it
Task-number: QTBUG-63293
Change-Id: Ibde0e8db955f6f3647b31cef8561d0744754cec1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-26 12:05:01 +00:00
Friedemann Kleint
bc31d2235c Windows QPA: Call raise() also for SubWindows with WindowStaysOnTopHint
QMdiSubWindows may have WindowStaysOnTopHint set.

Task-number: QTBUG-63121
Change-Id: I21f80311fdf57e775df895122299bb7beb6ec4e6
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-09-26 08:06:50 +00:00
Friedemann Kleint
f1ec81b543 Windows QPA: Detect screen by mouse position when dragging a window
When dragging a window by its border, detect the screen by mouse position
to prevent it from oscillating between screens when it resizes.

Task-number: QTBUG-62971
Change-Id: I0a4a584ef8ff3bb7288d1abec4de51fb4091dccd
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2017-09-26 07:19:32 +00:00
Friedemann Kleint
7896efdd9f QNativeGestureEvent: Fix documentation
Fix qdoc-warnings:

src/gui/kernel/qevent.cpp:2772: warning: Undocumented parameter 'dev' in QNativeGestureEvent::QNativeGestureEvent()
src/gui/kernel/qevent.cpp:2794: warning: No documentation for 'QNativeGestureEvent::device()'

Change-Id: I845b0925ad4f1d8602455444ebbd4ec6320ebae7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-09-25 13:32:39 +00:00
Rainer Keller
bde42ffb8b Avoid window geometry jittering when changing geometry from JavaScript
The QML API allowed only separate setting of geometry parameters which
causes flickering when all parameters need to be changed.
By exposing the setGeometry function it is possible to set all of these
at once using an imperative setGeometry call from JavaScript.

Note that bindings for x/y/width/height are still evaluated
sequentially, resulting in four calls to the platform window's
setGeometry. This patch only introduces an imperative workaround for
that issue.

Change-Id: Ie9b0d3c39434740e50757ba7cff0385ae80f47f4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-25 12:56:04 +00:00
Tor Arne Vestbø
292cb12e02 testlib: Add qWaitFor to wait for predicate
Reduces duplication of logic and allows other primitives to be
built on top.

Change-Id: Ia100014cfb0c09ac2f47c3a156d0c76f0fddafa8
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-09-25 12:19:18 +00:00
Friedemann Kleint
d03dba3f4a Windows QPA: Move function to find screen by HWND to QWindowsScreenManager
Task-number: QTBUG-62971
Change-Id: Ida0a8e758723f0f617011a89dc89c266d2506aad
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-09-25 10:11:07 +00:00
Edward Welbourne
aa4fef8812 Make QDateTimeParser a separate feature
It was being mis-described in some places by a QT_CONFIG(timezone)
test, replacing older QT_BOOTSTRAPPED checks; but it has no time-zone
dependency (until 5.10).  So make it a separate feature in its own
right.

It turns out QAbstractSpinBox's presumed dependency on datetimeedit
was an illusion caused by use of QDATETIMEEDIT_*_MIN symbols actually
provided by datetimeparser; so remove its bogus dependency.

Change-Id: Ibc12f4a9ee35acb64a39a1c7a15d2934b5710dc0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-25 09:54:22 +00:00
Gatis Paeglis
2c35ef04ff doc: fix code snippet of qConstOverload usage
Change-Id: I11628d2f9372f21f371ccf93000c26079eb9ef72
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-09-25 08:44:17 +00:00
Olivier Goffart
4dcd9145e7 moc: don't use const_cast in qt_metacast generated code
qt_metacast is not const so there is no need to use const_cast.
This fixes a warning in generated code.

Task-number: QTBUG-63352
Change-Id: I0c37442ac268a654316bc0e7e04f77fb51cae019
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-25 07:43:39 +00:00
Richard Moe Gustavsen
0dbede2b17 Widgets: be able to tab to a widget that has a focus proxy
When tabbing/searching for the next focus widget, the current
code would check if the next widget in the focus chain
had a focus proxy, and if so, ignore it. The exact reason
for this behavior is not clearly understood, but some widgets
(e.g QSpinBox) has children (a QLineEdit) that sets the parent
as focus proxy. If we didn't ignore children with focus proxy, tabbing
from a QSpinBox would lead us to find the inner QLineEdit, which
(because of its proxy), would lead us back to the QSpinBox. And
therefore not be able to tab out.

But ignoring the focus proxy has other problems. Normally a focus
proxy is the next sibling to the widget it acts as a proxy for, and
tabbing to the widget will therefore appear correct. But if the
focus proxy is not the next sibling, the logic will fail, since
the tab would anyway give focus to the next sibling. This becomes very
apparent if the focus proxy is a child of the widget, since then
its likely that the focus proxy is not the _first_ child among all
the children. So tabbing to the parent would not give focus to
the proxy.

This patch will change this logic so that you are allowed to tab to a
widget with a focus proxy. But we check that if you do so, you actually
end up moving focus in the right direction. If not, we ignore it like
before. This will ensure that we tab correctly when dealing with focus
proxies, and especially when focus proxies are used to construct
compound widgets.

[ChangeLog][Widgets] When tabbing to a widget with focus proxy, focus
will now be given to the proxy rather than just being ignored.

Task-number: QTBUG-10907
Change-Id: I66d1da5c941fdd984bb2783cc355ca65b553b5dd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-09-25 07:18:37 +00:00
Richard Moe Gustavsen
1fe27f79f7 Widgets: add QWidgetPrivate::deepestFocusProxy()
Factor out searching for the deepest focus proxy
in to a private function. Other than being called
from QWidget::setFocus(), this function will also be
used in subsequent patches.

Change-Id: I4450a42e362eccb64f8a88c7ea83b415101973b9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-09-25 07:18:28 +00:00
Thiago Macieira
8656ee950b Refactor QNetworkAddress not to keep a full QHostAddress
QHostAddressPrivate is one QString and 24 bytes, allocated on the heap,
which is WAY too heavy for something that fits into 8 bits. So instead
of storing the expanded netmask inside QNetworkAddressEntryPrivate, we
store the simple prefix length and calculate the mask only if asked.

Change-Id: Ie05c6480d8a44fda817ffffd14d9ad4707aa8a92
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-25 05:38:24 +00:00
Thiago Macieira
758982bd74 QNetworkInterface/Windows: solve 11 year old puzzle about Win32 API
When I introduced QNetworkInterface in Qt 4.2, I didn't understand the
relationship between the prefix list and the unicast address list in the
IP_ADAPTERS_ADDRESSES structure. Turns out, there isn't a (direct) one
and the actual solution didn't come along until Windows Vista, adding
the prefix length to each address.

Change-Id: I6a556cca551116d77c7edf43f9c651dacb75348f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-25 05:38:21 +00:00
Thiago Macieira
59e0b6d40c QNetworkInterface: complete removing pre-Vista support
Commit 2589111dc0 removed the dynamic
function search, but did not remove the offsetof checks.

Change-Id: Ibd2b5263f7de551f47fe137dbe1a1b7b7cd71934
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-25 05:38:19 +00:00
Jake Petroules
8d20fa11a5 Fix namespaced build on macOS
Change-Id: I6c570b668fd3a182991ba79cb12ec47d4db8a541
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-25 03:18:23 +00:00
Jake Petroules
bad4205250 Remove obsolete version checks
Our iOS deployment target is now 8, so this code will never be executed.

Change-Id: I7dd4001c01d7c8c2e8e977753cb3fa246b19ce06
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-09-25 00:58:52 +00:00
Jake Petroules
b0561e6382 Add currentType function to QOperatingSystemVersion
This allows us to retrieve the current OS type without constructing an
instance of the class, and it's also constexpr.

Change-Id: I8b32a1aebeb8139fe3fcf146e5de558fa1060bb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-25 00:58:41 +00:00
Sérgio Martins
32ca19b2c5 Fix typo in debug statement: QPlatformScren -> QPlatformScreen
Change-Id: Ibf5046ff88cbad1f03966f39f62183b0bd750221
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-24 20:34:22 +00:00
Thiago Macieira
370f8ecaa9 Fix parsing of tzfile(5) files in QTimeZonePrivate
The leap second record sizes were not properly taken into account. The
comments in the code were right, but not the code itself. Fortunately,
on most Linux systems the leap seconds are not stored in the tzfiles, so
we never ran into a parsing issue.

Task-number: QTBUG-63205
Change-Id: I6e1fe42ae4b742a7b811fffd14e4a57f5d142f97
Reviewed-by: Maximilian Baumgartner
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-24 17:20:07 +00:00
Giuseppe D'Angelo
0d0ad598c5 QThread::create: move implementation out of line
Now that we accept STL datatypes in our ABI, expose a factory
function that takes a std::future<void>, and hide the QThread
subclass in our implementation. This also solves the problem
of a non-exported polymorphic class that would generate duplicate
vtables / typeinfo in all TUs.

Change-Id: I70a5c301e7c589de1a4a189db39b86b956d1ba0d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-24 15:05:25 +00:00
Giuseppe D'Angelo
e5033a5c9b QThread::create: make qdoc generate its documentation
Change-Id: I6eaaa0f9cbda6ef985cda63f2bf36d3102f34f32
Reviewed-by: Martin Smith <martin.smith@qt.io>
2017-09-24 12:35:59 +00:00
Jake Petroules
b0ffb332f2 Add missing math.h include (for sqrt function)
Change-Id: Ia9cee8a941e31d71d3df6094b21d20a26f1b46f1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-22 20:27:50 +00:00
Thiago Macieira
282065d443 QRandomGenerator: update API to better name
"generate" is better than "get", and we already have "generate(it, it)"
which uses std::generate(). This changes:

 - get32()    →   generate()
 - get64()    →   generate64() and QRandomGenerator64::generate()
 - getReal()  →   generateDouble()

Change-Id: I6e1fe42ae4b742a7b811fffd14e5d7bd69abcdb3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-09-22 15:29:42 +00:00
Shawn Rutledge
ce019efb5c add back the device-less QNativeGestureEvent (deprecated)
It was an oversight in 83729ad7a1
that this constructor is still in use in other modules.  And in fact
we cannot remove public constructors without deprecating them first.

Task-number: QTBUG-63355
Change-Id: I64dbf9bc54c0bf6be7157f047b548d3b2c5bc2ed
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-09-22 14:34:36 +00:00
Allan Sandfeld Jensen
12a382e3bc Fix saving QImage with longer than necessary bytes-per-line
We should only copy the minimum bytes-per-line when saving an image.

Task-number: QTBUG-30515
Change-Id: Idd34a389cf88210c3f127599ccf54d27d3ec9a06
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-09-22 07:20:36 +00:00
Gabriel de Dietrich
4c025ca9c7 QCompleter: Send activated() signal only once on return key
Due to the complex event forwarding logic between QCompleter,
QComboBox, QLineEdit and QWidgetLineControl, in some cases the
same single user return key press could result in duplicated
activated() signals being emitted by QComboBox. The first one
would be emitted because QLineEdit emitted editingFinished()
as a result of QCompleter::eventFilter() having forwarded the
return key press event to QComboBox. The second one, would
happen right after, as QCompleter::eventFilter() would process
the same event on behalf of its popup.

(We recall that QCompleter is installed as its own popup event
filter. That's also the case for the completer's widget, although
the purpose there is limited to focus-out events).

The current fix consists on skipping the emit as a result of
QLineEdit::editingFinished() if the completer's popup is still
active. For this to be accurate, it helps to test whether the
completer's popup is visible, so we will not be hiding it in
QWidgetLineControl::processKeyEvent() anymore. Indeed, we know
that if the popup is visible, that means that processKeyEvent()
was called after being forwarded by the completer's popup event
filter. Furthermore, the popup will be hidden by its event filter
shortly after it returns from said event forwarding call.

Based on a patch by Alexey Chernov <4ernov@gmail.com>.

Task-number: QTBUG-51858
Task-number: QTBUG-51889
Change-Id: I013f6c3000ae37b5b0ec20eaf5cf7746c9c903e3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-09-22 00:02:06 +00:00
Gabriel de Dietrich
d29f0bc65c Avoid calling QCompleter::popup() internally
QCompleter::popup() is used to lazily create the popup itself.
However, we oftentimes call this function only to check if the
popup is visible.

Change-Id: I55531e1e6810c02a44f5f65124cf641b1a89de69
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-09-22 00:01:43 +00:00
Gabriel de Dietrich
c84b4ff495 QTabWidget: Don't build expensive parts of the style option when hidden
We end up calling setUpLayout() quite a few times and, in
particular, every time we add a new tab. Even if the tab
widget is hidden, we set the layout item margins to ensure
that whatever layout will contain the tab widget can get
the proper sizing.

For all practical purposes, layout item margins don't depend
on the contents itself, but are rather a simple constant
returned by the style. This means that QStyleOptionTabWidgetFrame
::tabBarSize, among a few other properties, is not needed
right away. This property in particular is quite expensive
to compute because it requires measuring the text size of each
tab. This can lead to a quadratic behavior: the size of each
tab's text will be computed for each tab we add. Besides, text
size computing has become a relatively expensive function in
itself (see QTBUG-53151, for example).

The current solution just uses a partially initialized style
option object for the sole purpose of getting the tab widget's
layout item margins from the style. The performance improvements
detailed show the creation time for QTabWidget with the specified
amount of tabs (times in ms):

        Tabs  Before  After
        -------------------
          1      6      5
          5      6      6
         10      8      6
         50     57     17
        100    178     21
        200    673     33

Task-number: QTBUG-55126
Change-Id: I79505dbd0014f6ed185da28047d8b68f9462ba94
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-09-22 00:01:24 +00:00
Shawn Rutledge
aa4ff7b2e9 macOS touch and gestures: pay attention to deviceID
Previously we pretended that there is only one touch device; but in fact,
different trackpads have different deviceIDs, and this may be useful
in some scenarios to tell them apart, as on other platforms.
So far we don't expect to get touch events from actual touchscreens
though, because macOS only turns single-touch events into mouse events
and does not interpret gestures on touchscreens.  So there isn't API
which can distinguish touchscreens from touchpads as far as we know.
QCocoaTouch::getTouchDevice() takes the type as a parameter, just in
case this changes some day.

Change-Id: I56228471363235c5d0cc2a55a35a3c3288f3b1a1
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-09-21 16:35:14 +00:00
Shawn Rutledge
83729ad7a1 make the QTouchDevice available in each QNativeGestureEvent
QtQuick is beginning to have a use for this, to distinguish native
gestures which come from actual trackpad rather than from the "core pointer".
It might as well use a real device ID instead of making one up,
as it has to do for the core pointer.

So far on macOS, the device ID isn't a real one; but that can be fixed,
as the qCDebug lines demonstrate (different trackpads have different IDs).

Change-Id: I5841deb1c4cc0b77a3b1df70904f70b3d2d71853
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-09-21 16:35:06 +00:00
Daniel Vrátil
d253464172 Only call mysql_library_end() once when using MariaDB
MariaDB allows only a single call to mysql_library_end(), all subsequent calls
to mysql_library_init() or any other API call will fail. Since QMYSQLDriver
calls mysql_library_end() function whenever the refcount drops to 0, this
breaks applications that close and reopen database connections.

This change registers call to mysql_library_init() via qAddPostRoutine()
when compiled against MariaDB, so that we only call it once.

Task-number: QTBUG-63108
Change-Id: I22c1f0c5b081216f12596a32748dca25cae919e9
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-09-21 14:22:13 +00:00
Timur Pocheptsov
be0a9a7688 Fix loadOpenSslWin32
The libraries are now 'libssl-1_1' and 'libcrypto-1_1', not 'ssleay32' or
'libeay32'. 64-bit versions also have -x64 suffix in their names.

Task-number: QTBUG-62692
Change-Id: Ic15bf8f8271d0f6266cb9d2143e292ddba643ded
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-21 12:55:04 +00:00
Thiago Macieira
64ab7489b3 XCB: also test for Xinerama's presence
It's included unconditionally from qxcbconnection.cpp and qxcbscreen.h.

Task-number: QTBUG-53537
Change-Id: I6e1fe42ae4b742a7b811fffd14e5d374155660f3
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-09-21 11:47:58 +00:00
Liang Qi
e5114e10dc Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into refs/staging/5.10 2017-09-21 06:55:09 +00:00
Iceyer Lee
72188001bb Fix QGraphicsEffect draw error size in decimal scale factor
When QT_SCALE_FACTOR=1.5 or other decimal, QWidget
draw QGraphicsEffect in error size. Use QPaintDevice::devicePixelRatioF
instead QPaintDevice::devicePixelRatio() will fix it.

Change-Id: I423e224d73b948ecdeca0e6b24c51f12a724a0ba
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-09-21 06:41:13 +00:00
Thiago Macieira
92ca09147f Restore compatibility with pre-5.9 Keccak calculation
Commit 12c5264d9a fixed the calculation of
SHA-3 in QCryptographicHash: we were previously calculating Keccak.
Unfortunately, turns out that replacing the algorithm wasn't the best
idea: there are people who need to compare with the result obtained from
a previous version of Qt and stored somewhere. This commit restores the
enum values 7 through 10 to mean Keccak and moves SHA-3 to 12 through
15. The "Sha3_nnn" enums will switch between the two according to the
QT_SHA3_KECCAK_COMPAT macro.

[ChangeLog][Important Behavior Changes] This version of Qt restores
compatibility with pre-5.9.0 calculation of QCryptographicHash
algorithms that were labelled "Sha3_nnn": that is, applications compiled
with old versions of Qt will continue using the Keccak algorithm.
Applications recompiled with this version will use SHA-3, unless
QT_SHA3_KECCAK_COMPAT is #define'd prior to #include
<QCryptographicHash>.

[ChangeLog][Binary Compatibility Note] This version of Qt changes the
values assigned to enumerations QCryptographicHash::Sha3_nnn.
Applications compiled with this version and using those enumerations
will not work with Qt 5.9.0 and 5.9.1, unless QT_SHA3_KECCAK_COMPAT is
defined.

Task-number: QTBUG-62025
Discussed-at: http://lists.qt-project.org/pipermail/development/2017-September/030818.html
Change-Id: I6e1fe42ae4b742a7b811fffd14e418fc04f096c3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-09-21 03:21:58 +00:00
Alex Trotsenko
bcd81a9e2d QAbstractSocket: remove disconnect timer
Nowadays, there is no need for this additional timer. It was intended to
forcibly disconnect the socket if an appropriate write notification has
not arrived. After several fixes in the notification system this does
not occur anymore, because otherwise we might have seen the hangs in the
regular data transmitting.

Also, it can break a delaying disconnect of the socket, if a write chunk
is large enough.

Task-number: QTBUG-63000
Change-Id: I9b9fd46af0209f9ce006a6d5ee5bfac9ea85482d
Reviewed-by: Anthony Groyer <anthony.groyer@airliquide.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-20 19:18:34 +00:00
Friedemann Kleint
34aa7a18af QOperatingSystemVersion: Add debug operator
Change-Id: Ibc942196bef0edc74f34501830fc83cb64259e39
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-09-20 12:19:56 +00:00
Liang Qi
01bc69f99f Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
	src/plugins/styles/mac/qmacstyle_mac.mm
	src/widgets/util/qcompleter.cpp
	src/widgets/widgets/qmainwindowlayout.cpp
	src/widgets/widgets/qmdisubwindow.cpp

Change-Id: If0e96981af07ce36ac68f2e69211bc2120f93973
2017-09-20 11:58:32 +02:00
Andy Shaw
35bb55cd12 Itemviews: Set the WA_InputMethodEnabled attribute correctly
When focus is put back onto an itemview and the current item is editable
then the WA_InputMethodEnabled attribute should be set. Likewise this
should be set/unset when the current index changes too, depending on
whether the index is editable or not.

Change-Id: Iaea075e669efd21bdaa89a49c500c449272d098b
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-09-20 07:37:35 +00:00
Friedemann Kleint
269c9fce3c QGestureManager::filterEventThroughContexts(): Reduce debug output
Log only relevant input events which are ignored. This reduces the
output when COIN re-runs failing item view tests with full debug
output enabled.

Change-Id: Ifce9a56fdf313b7572baff9de8fb298b38e8b33a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-09-20 07:33:44 +00:00
Stephan Binner
6d699d0820 Convert features.menu to QT_[REQUIRE_]CONFIG
Change-Id: I031356411294b259ebd2b22c53159c93fd92af6e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-19 10:57:12 +00:00
Stephan Binner
9833e68217 Convert features.textedit to QT_[REQUIRE_]CONFIG
Change-Id: I0fb0e658796484f374586d8d1f0f1b9167ab30d2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-19 10:57:08 +00:00
Laszlo Agocs
14e20bb474 windows: Blacklist Intel 8.15.10.1749
Task-number: QTBUG-56360
Change-Id: I438e58e13b364a7c4748a4325cb7ff00bb00b25b
Reviewed-by: Joni Poikelin <joni.poikelin@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-19 10:52:49 +00:00
Allan Sandfeld Jensen
6c4a1914e0 Hide ibus IM on password fields
We haven't hooked on any of the properties to tell ibus IMs the type of
field or that it should be hidden, so hide it like is standard.

Change-Id: Iaa64c669f7162b60c16971ec962101b974108e65
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2017-09-18 22:20:05 +00:00
Jake Petroules
54a242f7ed Add missing pwd.h include
This file uses functions declared in this header, and it is not pulled
in transitively on all platforms.

Change-Id: I6654118883a8dc22dacf1beb7b9b1c662719d25c
Reviewed-by: Tuomas Heimonen <tuomas.heimonen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-18 21:06:21 +00:00
Giuseppe D'Angelo
81a19050d8 QSharedPointer: fix undefined behavior in operator<
Pointers belonging to different arrays must be compared using
std::less.

Change-Id: Ib77af7b1b2da58d7243fa77273a8a45ee9035a1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-17 11:41:40 +00:00
Friedemann Kleint
c23c4a921d Fix documentation code snippet of QString::arg(QStringView)
Fix qdoc warning:
src/corelib/tools/qstring.cpp:7809: warning: Command '\snippet (//! [11-qstringview])' failed at end of file 'qstring/main.cpp'

Change-Id: Ie5a57bd94ba64ceab5179593f1df35be29c9985a
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2017-09-15 07:46:00 +00:00
Timur Pocheptsov
6aa001570d Fix OpenSSL 1.1 build
Fix the 'shared' OpenSSL code for those our users who build with QSSLSOCKET_DEBUG
defined and OpenSSL 1.1 detected: the preprocessor-excluded fragment is using old
API. Also remove never used in this file (and commented out) macro.

Task-number: QTBUG-63170
Change-Id: Id24ccf2955f0a65e4f1dea1ecb06e10245105080
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2017-09-14 12:18:34 +00:00
Tobias Koenig
62ea3eaf05 Improve PDF/A-1b support in QPdfWriter
Fix warning of missing F key in Annot directory. The F key needs
to have the printing flag (bit 3) enabled and all other bits disabled.
(Clause 6.5.3 in ISO 19005-1:2005)

Change-Id: Iddba6b71f516aca75cd573584aa184c1b808863d
Reviewed-by: André Klitzing <aklitzing@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-09-14 11:56:54 +00:00
Allan Sandfeld Jensen
590e71a69c Fix convertToFormat with color-tables
The function was only well defined from RGB32 and ARGB32PM formats,
this patch fixes it so it behaves well from all formats.

Task-number: QTBUG-63163
Change-Id: Id892531d9aaf997b707b430196c1166493792a2a
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-09-14 08:13:46 +00:00
Lars Knoll
b6e99ec056 Optimize QVariant::cmp()
Don't always copy the variants that we want to compare. This can
in some cases be a relatively expensive operation.

Change-Id: I2b3fd246ac136b19d8a8d281fbdcfb0417c8fb6c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2017-09-14 06:27:56 +00:00
Thiago Macieira
306a6b9dec QNativeSocketEngine: Simplify nativeHasPendingDatagrams()
We don't need the sockaddr structure.

Change-Id: I6e9274c1e7444ad48c81fffd14da826387d72f83
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-13 16:19:56 +00:00
Thiago Macieira
a9ff368ac7 QNativeSocketEngine: reduce memory usage in nativePendingDatagramSize()
The Windows implementation had the right idea: by using a chunked read,
we can tell the OS to reuse the same buffer over and over, so we don't
need to grow a buffer to the size of the datagram when peeking. This
commit implements that strategy on Unix and changes both implementations
to start at 1500 bytes instead of 8192 (1500 is more than enough for
almost all datagrams we're going to receive).

Let's also not use a static buffer, but a stack-based one. No need to
dedicate 1500 (or, worse, 8192) bytes for something that is only seldom
called.

Change-Id: I320d9d2f42284a69a4cbfffd14dd92a6775bf28b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-13 16:19:54 +00:00
Thiago Macieira
3b61cd6ad7 QStringView: De-inline the length calculation so we can use SSE2
Performance is more important in this case than the theoretical benefit
of constexpr. This commit implements the SSE2 search for 16-bit null and
it might be possible to implement the equivalent for AArch64
(investigation required). It also adds a fallback to wcslen() for
systems where wchar_t is short (non-x86 Windows or 32-bit x86 build with
-no-sse2).

We can re-add the constexpr loop once the C++ language has a way of
overloading constexpr and non-constexpr. GCC has a non-standard way to
do that with __builtin_constant_p, which is also implemented in this
commit, but note that the inline function is still not constexpr.

Change-Id: I6e9274c1e7444ad48c81fffd14dcaacafda5ebdc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-13 16:19:45 +00:00
Lars Knoll
1d5e55c2a3 Improve performance of QVariant::canConvert()
Add an early check if both types are the same.

Change-Id: If6fc60a58fce641521c083bf920e72bf3d2d4c28
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-13 06:48:58 +00:00
Thorbjørn Lund Martsum
9ad0e09f5b QMenu: Fix size on high DPI + multi screen
When calculating item sizes (used for menu size)
the styles consider the widget screen. This widget
screen could be a wrong default or an obsolete value.
This patch ensures the screen is correct set on popup.

[ChangeLog][QtWidgets][QMenu] Fixed menu size issue when
using high DPI on multi-screen system.

Task-number: QTBUG-59794
Change-Id: I84461441d5d33cb8dc04ab1acb9630fbfc8c5514
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Morten Kristensen <msk@nullpointer.dk>
Reviewed-by: Per Liboriussen <liborius@chelys.dk>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-09-13 06:35:40 +00:00
Christian Stenger
01ea60fdd2 Testlib: Do not list unsupported option
This option is listed when displaying the help of Quick tests,
but was never actively supported as it had been removed before
Qt5.0 was finally released.

Change-Id: I4cdf8d86471ab72e289f27a07a5f04c0338bfdbd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-13 06:27:54 +00:00
Stephan Binner
79bf70b5b6 Convert features.slider to QT_[REQUIRE_]CONFIG
Change-Id: I03adb5e34071aa106bbfe7caa2d41a93e8d1e263
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-12 18:13:28 +00:00
Stephan Binner
710a9180c1 Convert features.lineedit to QT_[REQUIRE_]CONFIG
Change-Id: I509977994b11a7fc0c109bfcc83aadeee6c9b0b8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-12 18:13:14 +00:00
Stephan Binner
df99fbdbed Convert features.spinbox to QT_[REQUIRE_]CONFIG
Change-Id: Idecb6927c20ff009795b0ad94bbb7199df98a8f8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-12 18:13:08 +00:00
Stephan Binner
bef8b905af Convert features.sizegrip to QT_[REQUIRE_]CONFIG
Change-Id: Ieac4ae1f0b8b84e943c00da9903346a44e57138c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-12 18:12:47 +00:00
Tor Arne Vestbø
ad8a48e8f1 Add QGuiApplication::screenAt()
[ChangeLog][QtGui] It's now possible to retrieve the screen
at a given point via QGuiApplication::screenAt().

Change-Id: Ic09514ec731d8cce5d453833e98fcd118a70600e
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
2017-09-11 17:41:15 +00:00
Stephan Binner
10601aa7d2 Convert features.mdiarea to QT_[REQUIRE_]CONFIG
Change-Id: I6d2ec035a218869aa6595f5848de94ce491d3124
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-11 17:21:35 +00:00
Stephan Binner
79851be729 Convert features.mainwindow to QT_[REQUIRE_]CONFIG
Change-Id: If7efc8c15d8876f5bc5575d48686894ea71bbe62
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-11 17:21:20 +00:00
Andy Shaw
689606de91 Cocoa: Update the known menu items when the QCocoaMenuBar is deleted
If an application has more than one menubar, for instance, one for each
mainwindow it has visible then once one is deleted it needs to ensure
the application menu items are updated as appropriate.

To do this the resetting of the known menu items is extended to cover
all the application specific ones so that they can all be updated
correctly.

Task-number: QTBUG-62193
Change-Id: I61f46a4745f4e40b9283d40fa5a7473f2721c354
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-09-08 17:45:54 +00:00
Andy Shaw
452ad2bb13 Add documentation about not having QSqlDatabase objects kept around
Task-number: QTBUG-35977
Change-Id: I8601b3f7379a5fe94898a2f5ff63558a896a4de2
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2017-09-08 17:31:03 +00:00
Andy Shaw
202d3ba3e6 Cocoa: Check if charactersIgnoringModifiers is not empty too
If a dead key occurs as a result of pressing a key combination then
characters will have 0 length, but charactersIgnoringModifiers will
have a valid character in it. This enables key combinations such as
ALT+E to be used as a shortcut with an English keyboard even though
pressing ALT+E will give a dead key while doing normal text input.

Task-number: QTBUG-57933
Change-Id: I52fe9edacefe7298a96af5430831f805626bacd2
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-08 17:30:10 +00:00
Tor Arne Vestbø
d2a988512e macOS: Detect use of heap-allocated QMacAutoReleasePool
QMacAutoReleasePool is backed by an NSAutoreleasePool, which documents that
"you should always drain an autorelease pool in the same context (invocation
of a method or function, or body of a loop) that it was created".

This means allocating QMacAutoReleasePool on the heap is not a supported
use-case, but unfortunately we can't detect it on construction time.

Instead we detect whether or not the associated NSAutoreleasePool has been
drained, and prevent a double-drain of the pool.

Change-Id: Ifd7380a06152e9e742d2e199476ed3adab326d9c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-09-08 12:05:21 +00:00
Tor Arne Vestbø
ff9080e740 macOS: Remove QMacRootLevelAutoReleasePool member from QCoreApplication
Tying the pool to the lifetime of  QCoreApplication becomes a problem when
the application is allocated on the heap, for example when Qt is used to
create plugins, as NSAutoreleasePool should be allocated and drained in
the same context, typically a function scope.

The feature is disabled for now, until we can find a better way to
achieve the same thing.

Change-Id: I600587df62a8cc7caded5172ad914c0e04d794d9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-08 12:05:17 +00:00
Liang Qi
71ec67a0fd Merge "Merge remote-tracking branch 'origin/5.9' into 5.10" into refs/staging/5.10 2017-09-06 17:57:12 +00:00
Gabriel de Dietrich
03bcf389c0 QMacStyle: Remove theme test in palette polish
macOS doesn't use different colors for alternate rows
between blue and graphite themes. It's always the same
light gray, as seen on Finder, and we're already getting
it right.

Change-Id: Ic9ff1712ed90728bcc7613d9fe9eeb7a9c90f59b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-06 16:07:08 +00:00
Gabriel de Dietrich
2466e17154 QMacStyle: No more background pattern pixmap
This ain't used nowhere.

Change-Id: I107bbc4d8cd223bbc726c3ce2ea00059d97e6f2c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-06 16:06:55 +00:00
Gabriel de Dietrich
0cfe31b122 QMacStyle: Update HIG link, reference version of IB
Change-Id: Iae56312a78431613737b69c0e16472cafff35da9
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-06 16:06:26 +00:00
Gabriel de Dietrich
dcef3b1c02 QMacStyle: Render only the selected scrollbar subcontrols
This provides proper support for proxy styles wanting to
override only parts of QSlider.

Change-Id: Ica1e87c42c8d793708c388cb19f11105c0fc97ad
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-06 16:06:14 +00:00
Gabriel de Dietrich
5fa773607e QMacStyle: De-HITheme QSlider
This one uses a hybrid approach. Standalone NSSliderCell has
proven to be quite useless. However, we can access the cell
of a properly configured NSSlider. Then, the cell can be to
render all the QSlider parts as well as getting their rects.

Change-Id: Idedad3e6d80e70631b01125596ed24dae5fde6c7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-09-06 16:05:54 +00:00
Gabriel de Dietrich
ad8f11c756 QCocoaKeyMapper: Remove unused member variables
These are written into, but never read from.

Change-Id: I23af5dbb2d162b06ed93f32459140a8385d65a95
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-06 16:05:48 +00:00
Gabriel de Dietrich
c4c00ea7e4 QMacStyle: No more SInt32
Change-Id: I00805bf55566059f842203faaad13a6d4a5b96f4
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-09-06 16:05:40 +00:00
Liang Qi
19dd2ca93b Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
	examples/opengl/qopenglwidget/main.cpp
	src/3rdparty/pcre2/src/pcre2_printint.c
	src/plugins/platforms/cocoa/qnsview.mm
	src/widgets/widgets/qcombobox.cpp

Change-Id: I37ced9da1e8056f95851568bcc52cd5dc34f56af
2017-09-06 13:26:31 +02:00
Stephan Binner
d332a2d3cc Convert features.networkdiskcache to QT_[REQUIRE_]CONFIG
Change-Id: I8ba76ba1c7210169df14ffab7dabf4b4be086fb9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-06 06:51:00 +00:00
Stephan Binner
c6b9c6e5f2 Convert features.socks5 to QT_[REQUIRE_]CONFIG
The sources were already added conditionally in the project file since
179fe5981f.

Change-Id: I0baaec2e772f3e596d311c1973b9745aa2b80423
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-06 06:50:54 +00:00
Stephan Binner
029e5cde33 Convert features.ftp to QT_[REQUIRE_]CONFIG
QUrlInfo is used only by the FTP implementation, so it uses the same
conditionals.

Change-Id: Ia15abf44d2a538e90b792a31c65926cc9e16aecf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-06 06:50:47 +00:00
Thiago Macieira
9429226524 Don't call the qAddPreRoutine routines with the mutex lock held
One of those routines could recurse back. This was a pre-existing
problem for Pre-Pre routines, but commit a92ee2518fdbd77fcbe3f8ef4f412aa
made qAddPostRoutine also use the same mutex.

Task-number: QTBUG-63008
Change-Id: I38341f8155354cc4a776fffd14e17a037d25475f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2017-09-06 06:48:39 +00:00
Gatis Paeglis
0919025ff5 vnc: remove unused qlibinputhandler_p.h include
It has been there since the first commit 6d70e543aa
of VNC platform plugin, and it has never actually been used.

Change-Id: I6a9c4e6a27de042e18650fa88728a1849a99b094
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-05 14:24:54 +00:00
Gatis Paeglis
b0da063d8c libinput: make scrolling consistent with other platforms
Default scroll increment on other platforms (e.g. XCB, Windows) is 120.
With libinput it was 15 * 120 = 1800, which results in non-smooth scolling
experience. This patch also replaces deprecated versions of
QWindowSystemInterface::handleWheelEvent().

Change-Id: I363f13a2922fd871a93dbd1bd611778fa18f6122
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-05 14:16:48 +00:00
Gatis Paeglis
90d5959dc4 libinput: remove unused signals
I guess this signal pattern was copy-pasted from evdev input integration
code, where we use similar signals in combination with QDeviceDiscovery.
In libinput, device notifications are delivered via libinput APIs, so
these signals are not necessary. In evdev we do some logging from
slots that are connected to these signals. In libinput this is handled
via libinput_log_set_handler. As we can see, we can simply drop this code.

Change-Id: I50b519784e89b59ceeb3cf296780705fe98a8cbf
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-05 14:16:43 +00:00
Gatis Paeglis
35ed524d92 evdev*,libinput: use functor-based connections
This results in less boilerplate code, among other benefits that
come with functor-based connections. Simple expressions have been
converted to use lambda.

Change-Id: I6887980524027eada24beed95e6f9ba43f0fc8d5
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-05 14:16:38 +00:00
Mitch Curtis
30609e684f testlib: Print event coordinates and window size when event is outside of window
This gives the user a much clearer understanding of which part of the
test caused the warning.

Old warning:

WARNING: tst_controls::Default::Dial::test_linearInputMode(mouse) Mouse event occurs outside of target window.

New warning:

WARNING: tst_controls::Default::Dial::test_linearInputMode(mouse) Mouse event at 501, 179 occurs outside of target window (450x450).

Change-Id: I2943d79bab5a808e9b5b721758db216b91a07bbd
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-05 11:45:46 +00:00
Friedemann Kleint
9d8a4d16c6 Windows QPA: Do not call EnableNonClientDpiScaling() on Desktop GL Windows
It causes artifacts when moving the windows between monitors.
Amends e8ecde99df.

Task-number: QTBUG-53255
Task-number: QTBUG-62901
Change-Id: Ia8b0f760370887a75efa05bc9736075afebfe069
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-09-05 11:02:40 +00:00
Morten Johan Sørvig
4250993c42 macOS: Don’t color convert the backing store
The backing store was assigned the sRGB color profile
as an unintended side effect of the QImage -> CGImage
conversion function refactoring in ac899f6d. This
caused Core Graphics to add a color convert step, which
in some cases caused performance issues.

Restore fast, previous behavior by assigning the target
display color profile to the backing store image.

Color correctness is still a goal, but we’ll add API
for it and make it opt-in.

Task-number: QTBUG-61384
Change-Id: Ia36d29404c64d8030a100f6a71816d84e484308b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-05 09:32:35 +00:00
Morten Johan Sørvig
0adc14d8db macOS: Don’t color convert the backing store
The backing store was assigned the sRGB color profile
as an unintended side effect of the QImage -> CGImage
conversion function refactoring in ac899f6d. This
caused Core Graphics to add a color convert step, which
in some cases caused performance issues.

Restore fast, previous behavior by assigning the target
display color profile to the backing store image.

Color correctness is still a goal, but we’ll add API
for it and make it opt-in.

Task-number: QTBUG-61384
Change-Id: I107f06a881a34fa711b386265d8dc2edfb246624
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-05 09:32:32 +00:00
Andre de la Rocha
a2a5b7a697 Windows: Make dropped files be opened or attached
Adds QWindowsDropDataObject as a QWindowsOleDataObject subclass
specialized for handling Drag & Drop, which only allows "text/uri-list"
data to be exported as CF_HDROP, to allow files dragged from
Qt applications and dropped into other applications to be recognized as
attachments or opened. Otherwise, files would be imported as URLs and
inserted as local hyperlinks.

[ChangeLog][Important Behavior Changes][Windows] On Windows, a drag
& drop operation of local files URIs, like QListView items backed by a
QFileSystemModel, will result in the attachment or opening of the files
by the target application, instead of the creation of hyperlinks.

Task-number: QTBUG-62662
Change-Id: I51efa4a56574b5e5fb3ee736ede14b5da24caac4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-05 08:22:45 +00:00
Giuseppe D'Angelo
c7766a41e3 PCRE2: remove pcre2_printint.c from the imported sources
Follow up of fc37e03699:
while the file is #included from pcre2_compile.c, it's never
actually compiled (seems to be about a debugging aid for developing
PCRE2). So it's safe to get rid of it.

Change-Id: I0affaad730e8c5678d3431e47d5fee0dbedc0e78
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-05 07:12:55 +00:00
Giuseppe D'Angelo
e8e0895a33 PCRE2: disable JIT on all UIKit platforms
Both iOS and tvOS need to have JIT disabled, so use the uikit qmake
scope for that. This was already done for PCRE 1, but the corresponding
change was lost for PCRE 2 (probably due to a bad merge).

Change-Id: Iac7997880c13b34ced46c63b748980c6fb700a0f
Task-number: QTBUG-62993
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-09-05 07:12:49 +00:00
Tor Arne Vestbø
54c3ab7a10 macOS: Fix support for issuing requestUpdate during expose event
AppKit will clear the needsDisplay state of a view when finishing the
display cycle, so if the client requested an update when delivering
the expose event, the update request would not be delivered unless
the view was otherwise exposed in some way at a later point.

Task-number: QTBUG-62964
Task-number: QTBUG-62963
Change-Id: I5ac9bf2f19af775294d093c8b7a414af22efee92
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-09-05 05:50:40 +00:00
Tor Arne Vestbø
67a075f485 iOS: Fix implicit conversion warning in QIOSEventDispatcher
Change-Id: Id9650dde73e1cfbe8626b4d31b86e9bbf007be89
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-09-04 20:50:43 +00:00
Gatis Paeglis
de7ffee747 evdevtablet: don't use qpa compatibility function
This patch does not attempt to add the necessary functionality
to support other tablet buttons, it simply replaces deprecated
version of QWindowSystemInterface::handleTabletEvent(), by keeping
the previous logic.

Task-number: QTBUG-62886
Change-Id: I23597077774d482492136fda2e998700f8b27e9c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-04 18:05:46 +00:00
Gatis Paeglis
c06fb51b8a eglfs_x11: remove unused event handlers
Logic that utilizes these event handlers was added by
f610814b05 and few months
later broken by 2b20ed5af4.
The original code used an event mask to select press/release/
motion events when creating window with XCreateWindow.
The XCB replacement (xcb_create_window) changed event mask to 0,
which means that these event handlers have been unused for
about ~4 years and can be safely removed. The eglfs_x11
integration receives mouse input directly from libinput/evedev.

Change-Id: Iac1521365445b8423898a16c3e609deb0806ce5e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-09-04 18:05:17 +00:00
Àlex Fiestas
7d32339762 Pass m_drag_icon_window to getNativeMousePos instead of Event QObject
The QWindow passed to eventFilter is static so it might be in a
different screen when we call getNativeMousePos, resulting in negative
position and all sorts of glitches.

Change-Id: Ibc848c6d85d8b6932ee379aa77851094212a0db2
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-09-04 14:35:18 +00:00
Eskil Abrahamsen Blomfeldt
52bda430af macOS: Reset composition when focus object changes inside window
When the focus object inside a window changes and we are
currently composing text, we have to cancel composition to avoid
getting into an inconsistent state. This is what already happens
if you switch to a different top level window.

Note: Because we limit the user's ability to change focus inside
a window when composing text, this would only happen under
certain circumstances, such as creating a new MDI window with
an editor while still composing text in a previous one.

[ChangeLog][macOS] Switching focus objects inside a top level window
while composing text using dead keys or input method events would
leave the application in an inconsistent state. The composition
now automatically cancels when the focus object changes.

Task-number: QTBUG-59222
Change-Id: I06792a7db1441dcc5c87e4bf0861b422a25f7f7c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-04 13:51:19 +00:00
Stephan Binner
093064fdeb Convert features.completer to QT_[REQUIRE_]CONFIG
Change-Id: If45a46c08b37d245229a39f3d6ffbb34154934f2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 11:28:02 +00:00
Stephan Binner
66d9a2b997 Convert features.buttongroup to QT_[REQUIRE_]CONFIG
Change-Id: Id5df397d0aa4cad7f586ef7303902d8ee7b88f1d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 07:53:34 +00:00
Stephan Binner
6380729c48 Convert features.effects to QT_[REQUIRE_]CONFIG
Change-Id: I8421b5e81dc21e8f9f6bdd9f714fb3f535618a3c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 07:53:26 +00:00
Stephan Binner
8a93f50695 Convert features.resizehandler to QT_[REQUIRE_]CONFIG
Change-Id: I44ed1be0cf56daf7dc2a7e4bbd3402419a04a530
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 07:53:17 +00:00
Stephan Binner
dab49434d8 Convert features.scrollarea to QT_[REQUIRE_]CONFIG
Change-Id: Ifc7b0a6b025c282234b4aeaf23daecff8a558236
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 07:53:08 +00:00
Stephan Binner
135da45318 Convert features.keysequenceedit to QT_[REQUIRE_]CONFIG
Change-Id: Id8ffd7f0e6ef4bdc43959179c26342ecee75b280
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 07:52:52 +00:00
Orgad Shaneh
ced0f54ec3 Fix resolution of relative links on Windows
[ChangeLog][QtCore][QFileInfo] Relative symbolic links on Windows are
now resolved to their absolute path by symLinkTarget().

Task-number: QTBUG-62802
Change-Id: I5826517130bd389aef994bf3f4b6d99b2a91b409
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-09-04 07:35:09 +00:00
Stephan Binner
314a591461 Convert features.menubar to QT_[REQUIRE_]CONFIG
Change-Id: Idbd4978852fa280dd18a5684469d499da3892126
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 06:40:14 +00:00
Stephan Binner
b649717784 Convert features.stackedwidget to QT_[REQUIRE_]CONFIG
Change-Id: I06b7fb9736620dcdfda21fc0a06e13cb02f9a1e7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-09-04 06:40:02 +00:00
Frederik Gladhorn
9831118378 Merge dev into 5.10
Change-Id: I5fb5e7e6e57bb5db6fcb1f670f7f6cbc8def2d60
2017-09-02 10:27:09 +02:00
Giuseppe D'Angelo
fc37e03699 PCRE2: remove a source file from the .pro
pcre2_printint.c does not need to be compliled as a standalone source
file, as it's #included from pcre2_compile.c. Apparently qmake does not
detect this in all cases, and sometimes tries to compile pcre2_printint.c,
resulting in compile errors.

Change-Id: If494e5853b52ff1387bfb24f3847b73edcc837b7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-09-01 17:03:42 +00:00
Giuseppe D'Angelo
f71a99c0eb QModelIndex: use std::less to compare pointers
Comparing pointers not belonging to the same array requires using
std::less.

Change-Id: I2725aa0899f6b9fece73dadd9ee5c10242d50ae1
Reviewed-by: David Faure <david.faure@kdab.com>
2017-09-01 17:03:33 +00:00
Thiago Macieira
b5d471d0c2 QNativeSocketEngine: disable unused methods about OS socket buffer
They aren't used in the API, so let's stop wasting library size.

Change-Id: I6e9274c1e7444ad48c81fffd14db247ecf825a57
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-09-01 16:40:36 +00:00
Thiago Macieira
ca92ee2518 Make qAddPostRoutine & family thread-safe
If one wants to add them on demand, threads may have started, so these
functions should be thread-safe. That includes the calling of the
registered functions: some other thread could be adding post routines
too. Of course, if you're racing, it's your own fault, but we need to
support the routines registered with qAddPostRoutine adding more post
routines.

[ChangeLog][QtCore] qAddPostRoutine() and qRemovePostRoutine() are now
thread-safe.

Task-number: QTBUG-62915
Change-Id: I38341f8155354cc4a776fffd14dffa68bde8345d
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-09-01 16:40:33 +00:00
Albert Astals Cid
6e18293299 Forward the readChannelFinished from the plain socket to the ssl socket
Task-number: QTBUG-62257
Change-Id: I12632b7ffd2012adc99b4784892cbb6f79e065f7
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2017-09-01 15:09:14 +00:00
Tor Arne Vestbø
362dcb4759 macOS: Respect responder chain when setting cursor
There's no need for us to walk our own ancestor chain to figure out which
cursor to set. AppKit will automatically call cursorUpdate: on the view
that would be the hitTest target of the current mouse position, and by
falling back to super when no cursor is set for the current view, we
automatically get the behavior that effectiveWindowCursor tried to solve.

In addition, it solves the case of applyEffectiveWindowCursor applying
the arrowCursor when no cursor was set, which would mean that if any
native parent view of our view _did_ have a cursor set, we would not
fall back to the native view's cursor, but instead override it with
the arrow cursor. Following the responder chain gives the correct
behavior in this case.

Unfortunately, due to rdar://34183708, if a subview of one of our
views uses the legacy cursorRect approach to cursor management, the
cursor will not be reset back to our cursor via cursorUpdate: when
leaving the child and entering the parent view (our view). Moving
our implementation over to the legacy API would solve this problem,
but just propagate it to native parent views of our views, which
could potentially use NSTrackingAreas, and would not have _their_
cursors re-set.

Change-Id: Id20cc03136f0b1d4b9120750fe63ddc455363aaf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-01 10:04:52 +00:00
Friedemann Kleint
a72513cab7 Windows QPA: Hardcode a limit for the default point size
Windows uses deprecated API to obtain the default font which
has been observed to return bogus sizes in multi monitor setups.
Apply a limit in this case and add fixme comment for Qt 6.

Task-number: QTBUG-49374
Task-number: QTBUG-58610
Change-Id: I6e805ec792a3f425961a48ef4c4329c3cdf302b6
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2017-09-01 09:15:32 +00:00
Tor Arne Vestbø
ca14d84197 macOS: Modernize masking of windows
Instead of masking window blitting via a CGImage mask, we use the window's
mask directly to intersect the region that we blit during flushing of the
QCocoaBackingStore. This approach also enables masking of child windows.

We now also support setting a mask for layer-backed views, by setting a
CAShapeLayer as the layer's mask.

The window shadow invalidation has been moved out of QNSView, as the view
should not be involved in that process. For layer-backed views, the shadow
is not invalidated as expected after the initial mask has been set, but
this bug has been left as a fix for a later stage as it requires more
research.

Change-Id: Ie0127d8df49d95b2d6144816b19559f3d3c95d13
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-01 02:42:38 +00:00
Tor Arne Vestbø
1f9284b624 macOS: Forward [QNSViewMouseMoveHelper cursorUpdate:] to view
Calling [self cursorUpdate:] doesn't make much sense, and was probably
an oversight. The event is also delivered straight to the view, not to
the owner of the tracking area (as the documentation says it should),
but we keep this method implemented just in case.

Change-Id: I176a2aa782da316d1fe11ce15a89195595d80618
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-01 02:42:37 +00:00
Tor Arne Vestbø
9507edddf2 macOS: Implement QWindow::requestUpdate() in terms of setNeedsDisplay
This is preferable to the timer-based default implementation of
QPlatformWindow, as it gives AppKit more control of when to schedule
the update, and makes sure the update is scheduled along with other
views in the normal display-cycle, reducing the number of push flushes
we do. QtWidgets still need to plumb the update() method to updateRequest
for that to have any real effect though.

In the future we may consider scheduling the update via a display link,
if the window surface is set up for GL, for example.

Ideally we'd also have a platform hook for the repaint() method, so that
we could funnel it through display and get synchronous painting with
AppKit still taking care of drawing and compositing child views.

Change-Id: I136a9afa087b922aad69086548c2aa190ce75b6b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-09-01 02:42:36 +00:00
Liang Qi
112a4af107 Merge remote-tracking branch 'origin/5.9' into dev
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
2017-08-31 14:31:31 +02:00
Alex Trotsenko
29ef0d2bcc Simplify QDataStream::skipRawData()
... by using the new QIODevice::skip() function.

Change-Id: I943c4feb896d677f3150da542950595d7f485e75
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-08-31 06:37:07 +00:00
Tor Arne Vestbø
fefbed5eae macOS: Determine opaqueness and backgroundColor of NSWindow declaratively
Instead of imperatively trying to keep the logic consistent in many
different call sites.

Task-number: QTBUG-61909
Change-Id: I8d647690c47656f34673555a8a8aa3ec6ffc73d1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-08-30 17:57:01 +00:00
Thiago Macieira
2a131b94db QHostAddress: remove our own sockaddr_in6
IPv6 is required now.

Change-Id: I209fcd5dbc2b4e5381cffffd14df2694bd5a92c8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-08-30 16:13:46 +00:00
Tor Arne Vestbø
1be1ed014b macOS: Use [NSObject superclass] instead of class_getSuperclass
The former takes into account dynamically generated key-value-observing
(KVO) subclasses, of the form NSKVONotifying_*, which would result in
class_getSuperclass returning QNSWindow and recursing back to the original
call site of qt_objcDynamicSuper.

Change-Id: I4b8b1aa64d2834d9d1baa395c877319e99084bc8
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-08-30 13:29:49 +00:00
Peter Seiderer
b7722c251c Fix error attribute(target("+crc")) is unknown
Task-number: QTBUG-61975
Change-Id: I0b1b55c0737dad485b5ace8e6eb7cb842589453d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-08-29 20:30:59 +00:00
Liang Qi
3088f73cf4 testlib: move strings from functions to array in benchmark metric
Change-Id: Ida7ba60d26171b95ba0e9709eec5c6553efeecca
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-08-29 15:52:08 +00:00
Allan Sandfeld Jensen
789f9d0d56 Avoid assert on large clips in qt_alphamapblit_generic
It is (end - start) that represent the number of pixels being worked on
and needs to be smaller than the buffer size.

Change-Id: I75a22bc2656ac1c7d231278c3a1931758090f8ce
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-08-29 13:56:59 +00:00
Dongmei Wang
63002b2f37 QFbVtHandler: Remove unused sys/signalfd.h include
Change-Id: Ia9fa3c4de0a1dbdd1b36730c82f5180c2128cbcf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-08-29 13:43:17 +00:00
Timur Pocheptsov
0270651dda Cocoa integration: do not use released session
QTBUG_10735_crashWithDialog started to show flakyness recently - it crashes,
but not every time (which fits the definition of UB perfectly).

While the test itself is doing weird things and puts our event dispatcher
into a weird state, our API allows to:

1. Using QDialog to enter event loop (with runModalSession under the hood), then ...
2. to call from a slot (e.g. timer-attached) QApplication::closeAllWindows() while ...
3. we are still inside that special loop and using the 'session' object, thus ...
4. on the next iteration with [NSApp runModalSession:session] we'll re-use already released
   session (released by endModalSession which in turn was called indirectly by closeAllWindows).

And Cocoa gives us a warning/hint: "Use of freed session detected. Do not call
runModalSession: after calling endModalSesion:."

Task-number: QTBUG-62589
Change-Id: Ie651cee1fba43cfd2b0fc44af5eddc5fd52e2907
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-08-29 12:49:58 +00:00
Alessandro Portale
c827afa282 QWidgets/CommonStyle: Fix tooltip drawing under HighDPI
Delegating the border painting to qDrawPlainRect ensures that there are
no off-by-one pixel issues.

Task-number: QTBUG-61849
Change-Id: I56dc849da80fad00d02a0f9c60dbb621e6de7c48
Reviewed-by: Michael Winkelmann <michael.winkelmann@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2017-08-29 11:53:03 +00:00
Eirik Aavitsland
01af6771c3 Fix: WebP missing from QMovie::supportedFormats()
Use QImageReader::supportsOption() instead of ::supportsAnimation(),
since the former checks what the handler supports in general, not just
the particular device.

Task-number: QTBUG-61642
Change-Id: I57db24425b4fd8821446659936e6a8ca55008921
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2017-08-29 11:38:37 +00:00
Friedemann Kleint
041df6e2ae QFileInfo: Clarify documentation on symlinks
Explain symbolic links vs shortcuts.

Change-Id: I12176616be72c97607ee1f441d1ea05af5e9e549
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-08-29 11:15:42 +00:00
Kai Koehne
afb7d99af9 New AA_DisableWindowContextHelpButton to globally hide ? button
Dialogs and Sheets by default have the WindowsContextHelpButtonHint
set, which adds a question mark button to dialogs on Windows. This
button then triggers the 'What's this' mode by changing the cursor,
and letting the user explore the UI by showing whatsThis tooltips.

Anyhow, the paradigm is little used today and a lot of applications
do not set any whatsThis properties, leaving the mode pretty
non-functional. It's therefore common to explicitly remove the
WindowsContextHelpButtonHint from dialogs. However, this has to
be done for _every_ dialog.

Instead, this patch adds a global application flag to not set the
WindowsContextHelpButtonHint by default. This allows developers to
already buy into the Qt 6 behavior, where the flag will not be set
anymore by default.

[ChangeLog][QtWidgets] Added AA_DisableWindowContextHelpButton
attribute. Setting this attribute globally prevents the automatic
"What's this" button on dialogs on Windows
(WindowsContextHelpButtonHint).

Change-Id: I497a79575f222c78b2d5d051a6de346b231f72d3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-08-29 07:23:44 +00:00
Shawn Rutledge
3ea09e4474 QLocale docs: remove useless \sa links
It's true that formattedDataSize is useful for formatting file sizes
from QFileInfo, but these links don't make sense here, and also cause
qdoc warnings due to lack of class scoping.

Change-Id: I9dd28200aa9d0da048db0c02ac66dc20c1b42e5c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-08-29 06:18:04 +00:00
Friedemann Kleint
dca1423fc9 Fix documentation of QThreadPool::stackSize
Fix warning
qthreadpool.h:61: warning: No documentation for 'QThreadPool::stackSize'

Amends e44ff19783.

Change-Id: I060de623b2befcc55846e1827b9cd58aacf3a3c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2017-08-29 06:10:58 +00:00
Thiago Macieira
9f5aec777a QProcess: add docs that the PID from startDetached() may be recycled
Change-Id: I209fcd5dbc2b4e5381cffffd14de2742eb1d8cd7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-08-29 03:49:05 +00:00
Alexander Volkov
d61e61fa1a uic: Use nullptr instead of Q_NULLPTR in generated code
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>
2017-08-28 15:25:07 +00:00
Robert Loehning
e81f430e30 Doc: Fix example
Change-Id: Ic678b69c6c9820701c4cc10c7797f599e5d71b7a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-08-28 14:36:49 +00:00
Jesus Fernandez
eeaaac8f0e Remove unneded pointer check
CID 158429 (#1 of 1): Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking ctx suggests that it may be null, but it has already been dereferenced on all paths leading to the check.

Coverity-Id: 158429
Change-Id: I6d202599e962dae5ea4a45401f34237dd496d38b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-08-28 13:58:46 +00:00
Gabriel de Dietrich
48784486a3 QCocoaMenu: Stop update timer
This amends patch f27d1ccbb2.

Change-Id: I4c7a390a5f2cdd3307007c7b6708692c36f861b4
Task-number: QTBUG-62396
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-08-28 13:45:41 +00:00
Joerg Bornemann
d7438593a8 Remove QMAKE_LIBS_CORE variable
Define the lib dependencies for corelib in corelib.pro, where they
belong.

Change-Id: I973d3b0c571782d869b27dea243e899db4dddc43
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-08-28 13:10:38 +00:00
Joerg Bornemann
1bb70830d4 Make it possible to override QT_LOGGING_TO_CONSOLE in test cases
It is currently impossible to get output from autotests in Visual Studio
or Qt Creator when running under the debugger. Qt Creator's cdb
integration cannot distinguish between the inferior's console output and
cdb's console output. If the inferior's output came from
OutputDebugString we'd be able to catch and display it.

Pave a way to force QTestLib's logging facility use OutputDebugString.

Task-number: QTCREATORBUG-16161
Change-Id: Iccd69c283626266ee4384a6163a8b72bb0e7df27
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-08-28 11:01:17 +00:00
Gabriel de Dietrich
f1a857c079 QCompleter: Add check before setting the widget
This prevents unnecessarily removing and reinstalling the completer
as event filter on the same widget.

This does not prevent what's going on in QComboBox::focusInEvent(),
where we'd set the line edit as widget just to immediately override
it with combo box itself.

Change-Id: I70c081a920f4daf4d7560e5cd7158e4070042d42
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-08-28 07:10:48 +00:00
Thiago Macieira
23d52de321 QUdpSocket: use faster ways to get datagram size on Linux and macOS
With MSG_TRUNC on Linux, recv/recvfrom/recvmsg will return the full size
of the datagram, even if it won't fit the buffer you passed. On Darwin,
we have a getsockopt() option to get that value.

Change-Id: I6e9274c1e7444ad48c81fffd14da7d5b93815f90
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-08-27 16:38:50 +00:00
Thiago Macieira
db0585d63a Fix crashes with libproxy+webkitgtk: it's not threadsafe
I'm getting crashes in Akonadi processes due to libproxy. I don't have
direct evidence that this was caused by a threading condition, but it's
clear from the source code of libproxy that the plugins it runs for
expanding PAC scripts are not thread-safe. To overcome this problem, we
only run libproxy functions in one thread only.

 #0  0x00007f745f0ac1d8 in JSC::HeapTimer::timerDidFire() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
 #1  0x00007f745f0ac287 in  () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
 #2  0x00007f748e5ae9c5 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
 #3  0x00007f748e5aed88 in  () at /usr/lib64/libglib-2.0.so.0
 #4  0x00007f748e5aee1c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
 #5  0x00007f7494f4268f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
 #6  0x00007f7494eeb35a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
 #7  0x00007f7494d1b31a in QThread::exec() () at /usr/lib64/libQt5Core.so.5
 #8  0x00007f7494d1fd2e in  () at /usr/lib64/libQt5Core.so.5
 #9  0x00007f74913174e7 in start_thread () at /lib64/libpthread.so.0

The pacrunner implementation of libproxy uses libdbus-1 which
(officially) is thread-safe, but experience tells that it has
problems. Since it is not running a JS engine, we don't need a thread,
but we do need to lock around it.

Change-Id: I84e45059a888497fb55ffffd14d2f638f21e807d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-08-27 16:37:08 +00:00
Alex Trotsenko
5de734bc18 QSslSocketBackendPrivate::transmit(): improve writing to OpenSSL
This patch avoids intermediate copying of the data by using a
new QIODevice::skip() API.

Change-Id: I358a83b21e2a58b59481745162fce1894549c0ac
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
2017-08-27 06:17:52 +00:00
Friedemann Kleint
eb93d7b517 Testlib: Format QVector2/3/4D in QCOMPARE
Change-Id: Ia0709e598d2fddd6c2f448633b484749146265f7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-08-27 06:17:32 +00:00
Alex Trotsenko
ca0df4b269 Introduce QIODevice::skip()
[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>
2017-08-27 06:17:09 +00:00
Timur Pocheptsov
53357f0156 HTTP/2 - implement the proper 'h2c' (protocol upgrade)
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>
2017-08-27 04:54:55 +00:00
Orgad Shaneh
0f11fab6f7 Fix resolution of relative symlinks from relative path on unix
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>
2017-08-27 02:39:57 +00:00
André Klitzing
e51dbda067 Update bundled libpng to version 1.6.32
Also add import script.
The remaining diff to clean 1.6.32 is archived in the qtpatches.diff file.

[ChangeLog][Third-Party Code] libpng was updated to version 1.6.32

Change-Id: I1b4b78e39a6eb098d1b66c2528e47544bd9e6713
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-08-26 18:04:32 +00:00
Orgad Shaneh
3635b78c54 QFileInfo: Fix typo in doc
Change-Id: Id1051f08a870461b172b646c126eb44e8addc114
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-08-26 17:39:45 +00:00
Tor Arne Vestbø
40fe5d43fd macOS: Move NSOpenGLPixelFormat creation back into QCocoaGLContext
The code was factored out in 0058f00b6 to be shared with Wayland, but
the Wayland platform plugin now lives in its own repository (as of
75a66c3d), and doesn't support running on macOS anymore.

Change-Id: Ied54f5f3e0a3e6fdaaedfcd456a140b46706f33c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-08-25 15:33:33 +00:00
Tor Arne Vestbø
cda9bd664d macOS: Add workaround for Qt not accepting resize-events before show
QtWidgets in particular expects a show event before any resize or expose
events. QWindow::setVisible creates the platform window before sending
the show event, so we block sending any resize events during platform
window creation of QCocoaWindow, which means we miss out on the resize
event that indicates that the window is maximized.

We should probably teach QWindow::setVisible to send the show event
before creating the window, but until then we work around it by sending
an explicit resize event in QCocoaWindow::setVisible.

Task-number: QTBUG-62774
Change-Id: I6d512c9775986bcbcbf5c02a9e49984015fa9782
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-08-25 15:33:31 +00:00
Andy Shaw
d293f071f5 Add missing #ifdef for isTouchScreen() implementation
The definition of isTouchScreen() is protected with XCB_USE_XINPUT22 so
the implementation needs to have this too.

Task-number: QTBUG-62226
Change-Id: Icc3de01a6cb1299b43e56fc9f77833764131ca4b
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-08-25 10:32:43 +00:00
Andy Shaw
dbaa4de28e Cocoa: Fix compile when using QT_NO_TABLETEVENT
Change-Id: I76f08d747009a5bf2c0e8004c3443e16e83b6a7d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-08-25 10:32:19 +00:00
Gabriel de Dietrich
75b323c30e QMenuPrivate: Fix implicit type conversion warnings
As reported within Qt Creator.

Change-Id: I9dc06b9fba52936e01e01fb0e8cdf4b216c46551
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-08-25 10:04:21 +00:00