Commit Graph

31624 Commits (d55e3bdced8efa69287c968a34fa37148a853f45)

Author SHA1 Message Date
Gatis Paeglis d55e3bdced xcb: remove code and macros related to Q_XCB_DEBUG
... early spring-cleaning, leaving one block of virtual
root debug code that was inappropriately conditioned on
Q_XCB_DEBUG; it now gets its own define.

Removed Q_XCB_CALL:
1) I don't know anyone who actually uses it.
2) Enabling this feature (via Q_XCB_DEBUG) fails to build
   (and has been like that for about 1 year).
3) There are better ways to debug X11 client message exchange
   (see xtrace for example).
4) Using Q_XCB_CALL is a very fragile approach. Grep for
   example for xcb_change_property and you will see that
   half of the calls are not wrapped with the Q_XCB_CALL
   macro.

This patch also removes the Q_XCB_NOOP macro. It's unclear
what its purpose was. There was a TODO comment in qxcbeglcontext.h
suggesting removal of this macro as well.  Its evaluation of its
parameter, even without Q_XCB_DEBUG, had no side-effects, so its
removal should be harmless.

Change-Id: I9fa48af454061d8b38f69f308131647cd18f85f4
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2017-03-10 10:24:48 +00:00
Marc Mutz 1567a7c0f4 Use new QSemaphoreReleaser in tst_QThreadPool
... replacing a hand-rolled version there.

Change-Id: I0db50acd1ecf591d608eb719021a6fcd06aeb226
Reviewed-by: David Faure <david.faure@kdab.com>
2017-03-09 19:04:33 +00:00
Jake Petroules 07ec102195 Introduce SH_TitleBar_ShowToolTipsOnButtons style hint
This removes some tight coupling between QMdiSubWindow and
QMacStyle in order to allow the latter to be moved into a plugin.

Change-Id: I090c2c5774279c0454486c3db2e77f00a646b145
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-08 20:51:01 +00:00
Marc Mutz 8f52ad9fe0 ucstricmp: compare null and empty strings equal
For consistency with ucstrcmp(), which does the same.

Before, the two overloads would sort null before empty strings. This
behavior was removed in Qt 3.0, IIRC-

This does not yet change anything, as all callers seem to work around
the problem by handling null strings before calling this function
(directly or indirectly). We would have seen a failure crop up if it
wasn't so.

As soon as we use these functions to compare QStringViews, however,
the functions need to deal correctly with a nullptr lhs and/or rhs, so
fix them.

Change-Id: Ie4e417aade993213169b96b5e7351850c52ae733
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-08 13:11:13 +00:00
Marc Mutz 69415638ae QLatin1String: add iterators
[ChangeLog][QtCore][QLatin1String] Added iterators, {c,}{r,}{begin,end}().

Change-Id: I0222a3ff44f2aa827c737e2fa3cfbb8aad69b5a7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-07 16:38:58 +00:00
Jake Petroules b181da9885 Remove workaround for potentially unavailable pasteboard in macOS
This was added in 2006 (when Tiger was the latest version of macOS) in
order to work around an issue where the pasteboard would not be
available when running under a non-graphical session. The latest
supported version of macOS is currently 10.10 on which this is not
expected to be an issue, so this workaround and therefore the Carbon
dependency can be removed.

Change-Id: Id5ed0a7e531dda71ce461c8bbbaebd5d4cadbd0e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-07 01:04:46 +00:00
Jake Petroules c1058cfd7b Remove remaining Carbon includes from QtCore, QtGui and QtWidgets
Carbon is deprecated and we should not rely on it at runtime or compile
time. These headers were only included for a small collection of
keyboard key constants which have now been hardcoded instead.

Change-Id: Ia2eaa267584b63be8019be3bbf64cba897a985a8
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-07 01:04:40 +00:00
Jake Petroules e0e956bfc2 Remove Carbon API usage from tst_qmacnativeevents
These code paths are actually never exercised at all.

Change-Id: I95a5cfa0173e265573c30378ec2e03a2ddf954e4
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-07 01:04:35 +00:00
Marc Mutz a7b9a1f966 QString: make ucstrncmp() work for more than 2Gi characters
Required for implementing upcoming QStringView's member functions such
as compare(), indexOf(), endsWith(), ...

Most implementations of the function body just add the length to the
begin pointer to obtain an end pointer and then either no longer use
the length, or decrease it in lock-step with increasing the begin
pointer.

The only exception is MIPS DSP's qt_ucstrncmp_mips_dsp_asm(), which
gets the length passed in as an uint, implicitly converted from the
int parameter, proving that calling the function with negative length
was always undefined behavior, and therefore using an unsigned type
does not introduce incompatibilites.

I don't stand a snowball's chance in hell to fix the assembler
routine, but since the code is only included for MIPS32, we don't need
to do anything except be paranoid, add a static_assert that uint is
the same size as size_t, and keep calling the old code.

Dropped Q_COMPILER_LAMBDA in some places. We require lambdas since 5.7.
Also hold lambdas by value, not by reference. This stuff is supposedly
completely inlined, anyway, so there's no reason to make the code more
complicated with magic lifetime extension of temporaries bound to
references.

Change-Id: I0c7bdc47648b873992b51b2e9d47d808390320ea
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-06 10:55:15 +00:00
Marc Mutz 80bfb8f1ad QString: make UnrollTailLoop work with non-int indices
The extension of ucstrncmp to size_t will introduce the first user
of this loop unrolling construct with size_t indices.

Instead of choosing between int and size_t, make the index type a
new template argument to facilitate a step-by-step transition from
int to size_t users.

Change-Id: I9d8fa7aaefa572130403bd19e11f52c58dff0a4d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-03-06 10:55:04 +00:00
Jake Petroules a4bec7b388 Remove unused Carbon include
Change-Id: I62d7fa00da98e2925049fc381f0a592e27f2a245
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-03 21:55:45 +00:00
Jake Petroules 7b796116ff Move widget size policy methods to QStyleHelper
While they're relatively Mac-specific, conceivably multiple style
implementations could use them, and it breaks a tight coupling between
QStyleOption and QMacStyle.

Change-Id: I5915c519129538a9ac39a34d5cfc3aeb838145d6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-03 21:55:27 +00:00
Jake Petroules f892318898 Remove QT_CONFIG checks for style_mac
These checks are now done entirely at runtime.

Change-Id: I63cfee6123fc8465cee2ee36049ece0e5262ce8f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-03-03 21:55:16 +00:00
Thiago Macieira aa3391e474 Remove use of QMutexPool in Windows code resolving libraries
We can use Q_GLOBAL_STATIC for this, which is thread safe.

Change-Id: Ifea6e497f11a461db432ffff1449afe930f72d5d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-03-03 19:38:57 +00:00
Marc Mutz 7982dfe6e6 QMimeBinaryProvider: avoid QString creation just to check for isEmpty()
Return a QLatin1String instead and only if that is not empty,
convert it into a QString.

Also saves 320B in text size on optimized GCC 6.1 AMD64 Linux
builds.

Change-Id: I5432d213a6200e45414626bedb9f216bafaf1108
Reviewed-by: David Faure <david.faure@kdab.com>
2017-03-03 14:13:45 +00:00
Gunnar Sletta 74bb6569b9 Fix another race in the filtered touch implementation
The lastPoints is used outside of the mutex-locked area, so of course
it cannot be a reference.

Change-Id: Ic69f9acd643366f8086e96b026a47d5de40cd77b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-03-03 11:55:46 +00:00
Gabriel de Dietrich f874b6e995 QBoxLayout: Remove unconventional try/catch blocks
These appear in insertSpacing() and insertWidget() only
and without any justification of why they may be needed.
Several other instances of the pattern these try/catch
blocks were guarding, i.e. allocate new QBoxLayoutItem
and insert to the list of items, were left unguarded,
leading us to believe this may not be useful at all and
can be safely removed.

Change-Id: I887fbde9d10e10f4f5daaa37f6f2892bd4038d58
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-03-02 18:19:20 +00:00
Lorenz Haas 7bfe093ae5 Fix possible use after free error in SQLite REGEXP
If the cache insertion fails, regexp is deleted and
"subject.contains(*regexp);" is UB.

Coverity-Id: 176868
Change-Id: Ibf9340e019f09fdb8b2a82de8877cdfb2ffe1372
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-03-02 16:08:24 +00:00
Alexander Volkov 4428763001 xcb: Optimize QXcb{Screen,VirtualDesktop} for multi-monitor setup
Move non-monitor-specific members of QXcbScreen to QXcbVirtualDesktop:
they relate to an X screen rather than to a monitor.
It allows to save some memory and X server callings that were
previously made for each monitor.

Change-Id: I079cdec5f27ca93a2aade00c3040936a0e50b494
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-03-02 14:22:27 +00:00
Liang Qi 71264bae08 Merge remote-tracking branch 'origin/5.9' into dev
Change-Id: I84097f8e7b3b2128028bd7693c913d6968b82bfe
2017-03-02 09:04:38 +01:00
Marc Mutz 5e785c0b83 Add a string API symmetry test for mid/left/right
All good.

Change-Id: Iab278c24b4bd462d5e77af0c4f0fefb155d00551
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-03-01 13:40:12 +00:00
Mathias Hasselmann 0d34f0c9df Android: Allow timeout to fade out splash screen
Change-Id: I7b24f4d402da7f74b4c983467008ff4c19fc3b1b
Task-number: QTBUG-59200
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-03-01 09:15:14 +00:00
Jake Petroules 8d0b46c3ae Remove more tight coupling between QMdiSubWindow and QMacStyle
This technically just changes a compile time check to a run time check
and better options should be explored later, but it removes the compile
time dependency for now.

Change-Id: I58c5599baf2c338e88bd558a82093835124d6f67
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-28 19:21:53 +00:00
Jake Petroules 6ed4ff2535 Remove unused references to QMacStyle headers
Change-Id: If7b84e3b8a0a8682d031e7a1ebf066feedf6a97c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-28 19:21:47 +00:00
Kai Koehne 6d10f739cd evdevtouch: Replace LPGL21 with LGPL license header
Also use caonical contact url.

Change-Id: Ic229623b0bcb533a9801890347802469c9c53c59
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-28 15:35:02 +00:00
Kai Koehne 7392985a5c XCB: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I6976dd6e2898d1c80260b08a8257f2848b4b7b6c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-28 15:34:58 +00:00
Kai Koehne a244636817 Windows QPA: Replace LGP21 with LGPL license header
Also use canonical contact url.

Change-Id: I58c7f5309883fa775d1bf7b56692e4c237a3f5a4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-28 15:34:46 +00:00
Kai Koehne 3ea8102343 Integrity plugin: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I7faf9b329f4dd2c2a422d02e171bc2d39c359ed3
Reviewed-by: Rolland Dudemaine <rolland@ghs.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-02-28 15:34:40 +00:00
Kai Koehne 5590d84062 bsdfb plugin: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: Iaf22c48d0a548efaccd816132e8730cbb6e0bb5d
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-28 15:34:35 +00:00
Kai Koehne 2ef1d48be7 IOS: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: Id1d8328e6cc9aab82a30e0ee3a971e6935341b42
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-02-28 15:34:27 +00:00
Kai Koehne 13d3e05e3b pcre2: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I61bf0990698a7021f1240deaf3eef2aff8f90a7e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-28 15:34:20 +00:00
Kai Koehne 58cf57492c Widgets: Replace LGPL21 with LGPL license header
Also use canonical contact url.

Change-Id: I59ed3d09d2fee877a577a00e7e1cb09782d26512
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-28 15:34:14 +00:00
Kai Koehne a64c766a3d Network: Use canonical license headers
Replace outdated LGPL21 with LGPL license header.
Use GPL-EXCEPT for all autotests.
Also use canonical contact url.

Change-Id: I6e5cc8a4285569c4f862730a980f492b8a933a72
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-02-28 15:34:01 +00:00
Kai Koehne a62d8ab993 Doc: Use canonical contact URL in license header
Change-Id: I34821150f66255df30d12572b27779e0e729ebc8
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-28 15:33:49 +00:00
Olivier Goffart eadae036f5 QDockWidget: remove dead code
I suppose that once upon a time, the plug function used to return the
rectangle of the new item. But right now, the 'result' is not used
so we can remove all the code that computes it.

Change-Id: I786e1f1ead82ac64a5eed632f3a3836f67c59c10
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-02-28 12:10:24 +00:00
Liang Qi 1a4f0deeb4 Merge remote-tracking branch 'origin/5.9' into dev
Change-Id: I7d84cfed0b2a122d334b8a920e6e4f18472d2f11
2017-02-28 13:03:36 +01:00
Allan Sandfeld Jensen 6dc7e468df Do not include qfloat16 tables in arm64 builds
The FP16 extension in IEEE mode is mandatory for Aarch64, so there is
no aarch64 configuration where the tables will be needed for conversion.

Change-Id: I9804e55c193cc9b5adcaedb720d8b980624139cc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Glen Mabey <Glen.Mabey@swri.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-28 12:01:18 +00:00
Marc Mutz 49c558eb0d QSizePolicy: inline toControlTypeFieldValue()
The implementation now uses the relaxed-constexpr
qCountTrailingZeroBits() function from QtAlgorithms, making the
QSizePolicy(Policy, Policy, ControlType) constructor constexpr on
C++14 compilers. The explicit check for DefaultType remains to keep
the constructor C++11-constexpr when called with just (Policy,
Policy).

Extend the constExpr tests a bit.

Change-Id: I59690f0921d9bdee08e3615d0d1f4a9b92870c32
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-27 23:09:27 +00:00
Jake Petroules db0064b767 Speed up QFile::copy on Darwin file systems that support cloning
Recent Darwin system have a new system call that allows cloning the
contents of a file from another one if the underlying file system (for
example, APFS) supports it.

Change-Id: I90ec53b8abd2b1dc4000070f295e226d0fb4c672
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-27 22:25:07 +00:00
Jake Petroules be74da81df Define QT_*_PLATFORM_SDK_EQUAL_OR_ABOVE macros on all platforms
Use of these macros implies defined(Q_OS_DARWIN) so don't complicate the
usage point (since the preprocessor cannot handle, for example
defined(Q_OS_DARWIN) && QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE when the
latter macro is not defined).

Change-Id: I47995351f0e46d8a1d07708117f8eed63d87ba0f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-27 22:23:55 +00:00
Marc Mutz bc641ad9f8 QSizePolicy: simplify implementation
Even though we revoke its Q_COMPILER_UNIFORM_INIT for certain bugs
that affect existing usage in Qt, it turns out that MSVC 2013 supports
enough of braced initialization to make the macro magic in
Bits::transformed() moot.

Change-Id: I824d7fa298a2b95b4ad45c9e259e91c5ececfc0c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-27 21:16:04 +00:00
Laszlo Agocs 2c9acfbec6 Enable QWindowContainer on Android
[ChangeLog][Platform Specific Changes][Android] QWidget::createWindowContainer()
is now supported on Android for embedding OpenGL-based QWindows into widget UIs.

Task-number: QTBUG-59175
Change-Id: I84d3703bcd44c63b1fdfe6772b7f3de9d5c18ddf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-27 18:32:36 +00:00
Robin Burchell 7a717aaf45 QImageWriter: Detect failure due to trying to write a QImage()
This is not a bug in QImageWriter, but caller code. We should be
explicit about what the problem was so it can be fixed.

[ChangeLog][QtGui][QImageWriter] Add QImageWriter::InvalidImageError to
communicate invalid attempts to write a bad QImage (for instance, a null
QImage).

Change-Id: I0333b8263f1da1c672bed17dab48bfd6cafe41a2
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-02-27 18:03:33 +00:00
Edward Welbourne 1631384c27 tst_QWMatrix: use lambdas to duplicate messy code less
The cumbersome complex calls to QMatrix were surely easy to write
thanks to copy-and-paste; but this left the reader to either
laboriously check or guess that all the copies were the same (and
notice that there were two, in fact).  DRY.

Since QMatrix wants qreal data, change the float deg angle to a qreal
and work in qreal throughout.  Passing the angle to a function instead
of repeating it obviates the need for a local variable in the calling
code, to hold its value.

Change-Id: I6bb4adf438a893083ca19f27942502c1e5c518aa
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-27 17:45:28 +00:00
Shawn Rutledge 2b2fefb336 xcb: correct conversion of AbsX/AbsY to tablet width and height
This was a mistake in cb37ab8298

Change-Id: I5897ceb34ab4aa1655efd20697d0e761cf7796b1
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
2017-02-27 15:45:29 +00:00
Marc Mutz 3fdbba7a7a QSizePolicy: mark as relocatable type
Use Q_RELOCATABLE_TYPE now that we have it.

Change-Id: I04bb946695ebb9f0899bb73becbef301805389ef
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-27 15:36:12 +00:00
Giuseppe D'Angelo 9d82b1586d QEasingCurve: mark as shared
Requires no further changes.

Change-Id: Ib280fa69a752aefa1c29fc5f0eb292e99b96270a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-27 15:35:59 +00:00
Laszlo Agocs dfc338613e Make QPlatformSurface events work with QWindowContainer
Embeddeding a QWindow via QWidget::createWindowContainer() fails to
deliver the SurfaceAboutToBeDestroyed event. This breaks any OpenGL
or Vulkan based QWindow that releases resources upon this event, and
is particularly critical with Vulkan where the only way to do properly
ordered swapchain - surface cleanup is via this event.

In the non-embedded case close() eventually ends up in an explicit
destroy() in QWindow. In the embedded case destroy() only gets called
from ~QWindow. This then silently breaks since the subclass' reimplemented
event() virtual is not getting called anymore.

To remedy the problem, simply add an explicit destroy() to
QWindowContainer.

Task-number: QTBUG-55166
Change-Id: I1671e8f4d39f6c44e19eca7b9387f55fe3788294
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2017-02-27 12:38:08 +00:00
Jeremy Katz 2b339cd3e4 remove duplicate init check in xcb GLX threading support
Change-Id: Ifdaadcb26acfccb9625df23e6526c341cf7ebde0
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-27 09:16:16 +00:00
Stephan Binner e39e4bfc0f System tray icon requires -feature-temporaryfile
Change-Id: I28039dd566c774b5844f4617c4dfb8bbce6673f7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-27 07:46:58 +00:00