Commit Graph

22614 Commits

Author SHA1 Message Date
Sérgio Martins
e655426e7a docs: Reference QLineEdit::hasAcceptableInput() in setValidator()
Easy to miss otherwise and hasAcceptableInput() already references setValidator().

Change-Id: Id2d63050db670ab8f7150d7f76492664751cd2da
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-16 19:33:43 +00:00
Robin Burchell
094b64fb60 QRawFont: Add a qHash overload
This will be used in QtQuick to avoid costly string manipulation (which in turn
involves memory allocations).

Change-Id: I51a67a4cd97cc576f399483c9c0c13da1e1c6e72
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-11-16 18:13:41 +00:00
Gabriel de Dietrich
e8a41ed866 QCocoaMenu: Force NSMenuValidation when syncing items
When a menu item's enabled state changes after
-[QCocoaMenuDelegate menuWillOpen:] is invoked, i.e.,
during or after QMenu::aboutToShow() is emitted, that
state change may not be taken into account. This is
because the automatic menu validation, upon which Qt
relies, is not made aware of any such change.

By calling -[NSMenu update] when syncing the QPA menu
item, we induce Cocoa to invoke -[QCocoaMenuDelegate
validateMenuItem:] and ensure that previously synced
items, whose state may have changed, will be properly
updated. This, however, has a small side effect, namely
that menu-holding items will also go through the automatic
menu enabling path and may appear disabled since, until
now, they were not properly configured. In order to solve
this, we set the action on those items as well, and make
sure that both of QCocoaMenuDelegate's relevant methods,
validateMenuItem: and itemFired:, properly process
menu-holding items.

Menurama manual test updated accordingly.

Change-Id: I62f955538b8be09b8494ea0ce87fca7910148d38
Task-number: QTBUG-56850
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-16 14:23:49 +00:00
Maurice Kalinowski
3e5e2cd3bd winrt: Do not shadow variable
Change-Id: I70fc9254bfdfe42bf0e8d379537eb60b21be8275
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:21 +00:00
Maurice Kalinowski
7912ac5d67 winrt: move to range based loop
Change-Id: I0694adcff9b591eecf1025074e8b1c478484bd74
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:16 +00:00
Maurice Kalinowski
3e3b22adeb winrt: Fix ill-constructed loop
That loop could never have worked properly.
Identified by analyze compile switch.

Change-Id: I5e987dc9f5c57d3ffbcf054b7b417b506c02e7e1
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 13:06:11 +00:00
Liang Qi
b39adf8945 Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8 2016-11-16 13:54:01 +00:00
Liang Qi
90c425642d Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	mkspecs/common/linux-android.conf
	src/gui/opengl/qopengl.h
	src/network/socket/qnativesocketengine_winrt.cpp
	src/network/socket/qnativesocketengine_winrt_p.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/eglfs/api/qeglfsintegration.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
	sync.profile

Change-Id: If70aaf2c49df91157b864cf0d7d9513546c9bec4
2016-11-16 12:35:36 +01:00
Kai Koehne
a6fbfea24a Doc: Mention qtmain library in Qt Core overview
The documentation for the qtmain license is right now pretty hidden.
The library is added by qmake independent of the Qt module that are
linked to, but it seems safe to assume people at least link against
Qt Core.

Change-Id: Id474990edde45feab6727bada2bc6a28946216cd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-11-16 11:32:10 +00:00
Maurice Kalinowski
78e33de8e5 winrt: Check for sanity of variables in debug build
Identified as potential issues by analyze mode.

Change-Id: I3f7c63a2349f29cc3de7baa78157fec157b9e561
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-16 08:13:12 +00:00
Gabriel de Dietrich
27aeeac6ee Cocoa Dialog Helpers: Refactor OK-Cancel buttons view
Since virtually all the logic is shared between QNSColorPanelDelegate
and QNSFontPanelDelegate, we extract the added buttons and
layouting logic and move it into its own class. This requires
the two afore mentioned Objective C classes to satisfy the
QNSPanelDelegate protocol.

Change-Id: Ie26e758f5db71920896d930a4f3644b51a1ce3fa
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-16 05:19:44 +00:00
Oswald Buddenhagen
4d90bd55a5 re-arrange QLibraryInfo::rawLocation() for comprehensibility
swap the branches for (not) reading from qt.conf, and use a state
variable instead of an 'else' for mutual exclusion. this is somewhat
more self-documenting, and allows for a saner handling of the mkspec
fallbacks (which really should have been in a separate [QMake] section
along with Host* and Sysroot, but changing that now is way too much
hassle downstream).

Change-Id: I80a73294022fd1e8d84fe501b737c4fc7758662f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-15 22:44:36 +00:00
Oswald Buddenhagen
712a041eb8 qmake: don't look for qrc-based qt.conf
we know there is none.

Change-Id: I75bc39f8b900525e7db29664f7dd2117d2bd33d2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-15 22:44:14 +00:00
Oswald Buddenhagen
e71cf69217 fix directfb build
60985aa42 converted the QT_CONFIG use, not taking into account that the
feature isn't actually known to the configure system - it's coming
directly from the makespec. so revert that hunk (until we have a better
integration between makespecs and configure).

Task-number: QTBUG-57039
Change-Id: Iaf57b5f5339250055f1c378e091da3ab3fcd4292
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-15 22:43:19 +00:00
Martin T. H. Sandsmark
1753d69607 QCss: Fix parsing of charset
When including a CSS file in a HTML file sent to QTextDocument, and the
CSS file starts with «@charset "UTF-8";», which is the correct way of
declaring that, the parsing fails.
If you omit the space, like «@charset"UTF-8";» the parsing succeeds,
which is wrong.

Fix this by expecting and swallowing whitespace after the @charset
tokens.

Task-number: QTBUG-54829
Change-Id: I32044e8d24bda70c1eb06bf74af50d4cabe2211d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2016-11-15 17:17:08 +00:00
Marc Mutz
083d8caee1 QXbmHandler: fix missing NUL-termination
The buffer is fed into strstr() on the next loop iteration, but
strstr() expects a NUL-terminated string.

In the equivalent code some lines up, the buffer is explicitly
terminated, and we never write the last character of the buffer again,
so we'll not fall off the end of the buffer, but if we read less bytes
than in the last line, we'll parse garbage from the previous line.

Change-Id: I354e1ce1dea71188942305190500b4778a69b4ff
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-15 16:50:42 +00:00
Robin Burchell
f2205c48c2 QFontEngine: Cache whether or not a font can be smoothly scaled
This will be used by QtQuick to correct a performance regression introduced by
592614ea3e -- QFontDatabase::isSmoothlyScalable is
quite computationally expensive; and now it is unconditionally expensive
regardless of the platform.

Change-Id: I82bfa65a963c6c3c276d574f2b379da4a9ba5b69
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-11-15 16:02:07 +00:00
Allan Sandfeld Jensen
e133f0cca4 Improve error offset in JSON parsing
Do not consume white-space after a token before the token has been
parsed, otherwise we end up with misleading offsets. This also fixes
a wrong error of illegal number in several cases.

Change-Id: I492ca4de0346a1d0ab73b1c23d7a72dba812664c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-15 14:19:23 +00:00
Lars Knoll
71d21ed500 Fix image format conversion
QImage::convertToFormat() returns the converted image.

Change-Id: Icfd3ff43e04939e6b92c7fa94e5e0af60f633385
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-15 14:00:11 +00:00
Lars Knoll
c442244907 Fixes for findVersionDirectivePosition()
The old code was wrong as it used QString::fromUtf8() to convert the
char * array to a QString. This could lead to wrong positions when trying
to find the #version directive, as any valid utf8 sequence in a comment
before could have lead to wrong offsets compared to the 8 bit data.

Fix this and optimize the code at the same time to avoid creating a copy
of the data and using QRegularExpression.

Also fixes building Qt with -no-feature-regularexpression

Change-Id: I2d84875ef59b3a0fb4d8b069bf56f4372c57ccdc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-15 13:59:51 +00:00
Liang Qi
9808b53fde Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	configure
	src/plugins/platforms/eglfs/qeglfsintegration.cpp
	src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp

Change-Id: Id2da7c775439adb62646d5b741ee7c638042b34b
2016-11-15 09:58:16 +01:00
Morten Johan Sørvig
246fe27187 Cocoa: Make dictation via speech recognition work
Returning NSNotFound from the NSTextInputClient selectedRange
implementation when there is no selection prevents
dictation from activating (for unknown reasons).

Return an empty {0, 0} range instead. Text input
methods such as Pinyin still work after this change.

[ChangeLog][macOS] Speech to text dictation now works
for Qt text input.

Change-Id: Ibf1729bdd271e8ed5ce3c9d2a0373c8ab3613d8e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-14 20:59:51 +00:00
Palo Kisa
291eba6f80 QClipboard: Fix emitting changed() in XCB
In XCB environment the QClipboard::changed() was not delivered if the
QClipboard::clear() was issued by other Qt app/process.

If the QClipboard::clear() is used, then the owner in
xcb_xfixes_selection_notify_event_t is XCB_NONE, so we need make the
decission to handle this event by the selection_timestamp and our
m_timestamp[mode].

Task-number: QTBUG-56972
Change-Id: If4c486ac02223eac506465cac7ff1a07bd02a187
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-14 19:54:58 +00:00
Lars Knoll
94f9ee79a6 Clean up some conditions in our pro files
Change qtConfig(opengl(es2)?) to qtConfig(opengl) as that covers
the case without any regular expression.

Change-Id: I935e3150f87e195e8bd3d0e55b4ed43572b131cf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-14 19:22:17 +00:00
Marc Mutz
80842959c4 Revert "Optimize QJsonObject::operator=="
This reverts commit 862fa24179,
which attempted to optimize QJsonObject::operator== under the
assumption that the entries it holds are lexicographically
sorted. They should be, because Object::indexOf() finds them
by binary search, but apparently both fromJson(), as well as
construction through op[] leave (some) entries unsorted.

This behavior should be fixed, because other code relies on
sorted entries, too, but until the problem is more fully under-
stood, revert the patch to unbreak equality comparisons.

Task-number: QTBUG-56843
Change-Id: I5b608c16d1bbcb4f01b75ce93bd58b49ff050be2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-14 16:49:39 +00:00
Eskil Abrahamsen Blomfeldt
104e6d0f54 Freetype: Disable outline drawing when drawing to pixmap cache
When we are anyway caching the rendered glyphs in a texture,
like when doing native text rendering in the scene graph, the
outline drawing fallback does not make sense. In fact, when used
together with a dpr scale factor, it would cause text to be blurry,
since it would first render the QPainterPath at the set pixel size
and then scale the image.

In practice, there isn't any real clients of the internal outline_drawing
property in the Freetype engine anymore, since this is now handled
independently of the font engines in the
QPaintEngineEx::shouldDrawCachedGlyphs(), but in case we at any point
would want to be compatible with the X11 paint engine again, we
might as well keep it around.

Task-number: QTBUG-55856
Change-Id: Ie090c596fe5cda2b598fa152a488881d50f86d2c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-14 11:08:46 +00:00
Eskil Abrahamsen Blomfeldt
8d6522ddd0 Freetype: Fix device pixel ratio with large fonts
When the dpr scale caused pixel sizes to reach 64 pixels and up,
thus triggering the outline drawing fallback, we would render
the glyphs at the original size but scale the glyph positions,
giving broken rendering. This was because we did not actually
pass the matrix to the fallback function when getting the alpha
maps.

Fixing it revealed a different problem, which was that the bounding
box for the glyphs, returned by alphaMapBoundingBox() did not
actually apply the transform when outline drawing was enabled.

[ChangeLog][QtGui][Text] Fixed rendering of large fonts when a
device pixel ratio is set and the Freetype engine is used.

Task-number: QTBUG-55856
Change-Id: I03d9066faf0e4346628a4eb630f0dd74a81ef148
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-14 11:08:37 +00:00
Oliver Wolff
c214379156 winrt: Fix definition of GL_GLEXT_PROTOTYPES in qwinrtbackingstore
We have to make sure that GL_GLEXT_RPOTOTYPES is defined when
qplatformbackingstore.h is included. Without the definition
glBlitFramebufferANGLE will not be set and compilation might fail.

Task-number: QTBUG-57083
Change-Id: I4cacaf4c2851913b3437ebd1f0f2956d0f400553
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-14 10:57:58 +00:00
Allan Sandfeld Jensen
49e3b2f27e Disable PCH for qdrawhelper.cpp with GCC 5
Precompiled headers with GCC 5.3.1 causes internal compiler error in
qdrawhelper.cpp, so compile this specific file without PCH.

Task-number: QTBUG-54154
Change-Id: Id5d9fe99cbeca58a60734510898e4ccb9694c203
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-11-12 19:03:51 +00:00
Alexander Volkov
839cae0422 doc: Add missing documentation for QXcbWindowFunctions::setWmWindowRole()
Change-Id: I5a457eb19fee011868cdf6d0534713c760fd57d2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-12 18:38:20 +00:00
Alexander Volkov
1c08046565 doc: Remove obsolete note for QWidget::paintEvent()
qt_x11_set_global_double_buffer() is dead code since Qt 5.

Change-Id: Ie9a33b6f03dc2e39f12bc790292bb0d227f05c44
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-11-12 10:40:42 +00:00
Alexander Volkov
2265fbe7c1 Remove unused variable in QIconLoader::findIconHelper()
Change-Id: Idac0b24631187063445ea5acfd078b2479359d52
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-11-12 10:40:20 +00:00
Lars Knoll
0038b40053 Unbreak a couple of configurations
Fix compilation with topleveldomain, textodfwriter
and cssparser features disabled.

Change-Id: I3f061fb09eef36cd640256a46cf77dde85a54d3d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-11 17:04:47 +00:00
Morten Johan Sørvig
3654a401f8 Prevent stale QOpenGLContext fbo pointer
There is logic for clearing the qgl_curent_fbo pointer
in release(), but it is not always called, causing
the pointer to become stale on QOpenGLFramebufferObject
deletion.

As a last resort, clear the qgl_curent_fbo pointer
on the current context if it’s pointing to the object
that is being deleted.

Change-Id: I0a91d686cec5fcbe4c1520a9ba96cea833bb2249
Task-number: QTBUG-56639
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-11 15:34:19 +00:00
Lars Knoll
bfaa8925d5 Improve the validation algorithm for binary JSON
Add better boundary checks and catch (hopefully all)
cases where invalid binary JSON could cause crashes.

Change-Id: I206510b7c5e3ba953802a5f46645878e65704ecc
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-11 12:34:27 +00:00
Allan Sandfeld Jensen
467b15a20c Improve use of QHash to minimize double hashing
Avoid looking up by key twice in a row in various locations, but instead
using iterators and index lookup.

Change-Id: I61a079115199ab9c041ad3a26d36b45ee3f775e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-10 16:14:51 +00:00
Laszlo Agocs
3c2cb87de2 xcb: Warn and bail out when even the basic, dummy context fails
Do not move on to glGet since the behavior is undefined.

Task-number: QTBUG-48986
Change-Id: Ifd279635ed1b8441f92697965d15ae3ecb59a7e3
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-10 12:16:25 +00:00
Laszlo Agocs
e8364f9a4b Enable GL prototypes with recent Khronos headers
Recent Khronos headers decided to break the world by guarding all
function prototypes with GL_GLEXT_PROTOTYPES which has traditionally
been used for extension headers only.

Until this gets corrected - see
https://lists.freedesktop.org/archives/mesa-dev/2016-September/128654.html
- add the define to the config tests and qopengl.h.

While 5.7 already has some of the qopengl.h fixes due to an upgraded
ANGLE shipping with newer headers, this is a cross-platform issue that
will surface everywhere eventually. Therefore we target the full set
of fixes to 5.6.

This time we also make sure the forced define of GL_GLEXT_PROTOTYPES
is removed before including the ext header, thus apps get the ext
protos only if they actually requested them.

Task-number: QTBUG-56764
Change-Id: Ib2c6d2e7b71b8fb8683424f43e6289e64e4ee46c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-11-10 12:16:20 +00:00
Laszlo Agocs
5fcda45872 Do not guard tslib with evdev
That relation is incorrect. We can have tslib support without evdev.

Task-number: QTBUG-54998
Change-Id: I2c09bad73210fa4a13000077480c70365d482e2e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2016-11-10 09:11:21 +00:00
Gabriel de Dietrich
5cff7d2b67 QComboBox: Prioritize the model font for popup items
On Mac, we use QComboMenuDelegate specifically as
item delegate for the popup list. It happens that
the order of resolving the font for each item
individually would prioritize QComboBox's font
instead of whatever the assigned model's FontRole
would specify.

The fix only requires checking whether FontRole is
valid before falling back QComboBox's properties.

Change-Id: I7208ad1911b30cc52c826c1884a1e19f5acd9fb4
Task-number: QTBUG-56693
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-11-10 05:40:29 +00:00
Gabriel de Dietrich
a192ee0c37 Move WinRT font database to QtFontDatabaseSupport
Similar to what we recently did with the Windows font databases.

The goal, again, is to add platform font database support for the
minimal QPA plugin.

Change-Id: Ide5f4ec452c920f169cc31c617cbcf19d8d1764d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-11-09 23:47:45 +00:00
Oswald Buddenhagen
95b506cccd fix build with -qt-xcb
the include path must be absolute, as otherwise the external module pri
will contain a bogus path.

amends 9a088e78.

Task-number: QTBUG-56934
Change-Id: I701f5778d8c1b5586310b08e7763858460455d63
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-11-09 18:45:53 +00:00
Eskil Abrahamsen Blomfeldt
15414257b3 Don't count no-break spaces as trailing spaces
No-break-spaces should not be counted in the space data, but rather
be treated as any other non-breakable character. We were already
taking care of this in the loop we reach if the item starts with
a character which isn't whitespace, but there is a second loop for
items that begin with whitespace characters.

The result of this was that in certain circumstances where you gave
the nbsp its own format and made the line wrap, the previous line
would count an extra trailing space and it would swallow the first
character in its following line.

[ChangeLog][QtGui][Text] Fixed a bug where a no-break space would
sometimes cause the first character of the containing line to not be
displayed.

Task-number: QTBUG-56714
Change-Id: Idd760a389052e6de70f6cc397122b217987fa5f2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-09 16:24:46 +00:00
Allan Sandfeld Jensen
9512d97c90 Remove a few unnecessary recalculations of hash
When we already have the hash-value we can give it to findNode to avoid
recalculating it, and if don't need it later, we don't need to request
it.

Removes around 1% of qHash calls when running QtCreator.

Change-Id: I0e5e61e26a407f4ac7e029a3ac13ddd553e4994b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-09 14:42:43 +00:00
Paul Olav Tvete
f7a7b9796e Make QT_NO_HIGHDPI a proper feature
Change-Id: Ia82f25f9bedfde77aeb711cb089ce3e0f95d0e59
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-09 13:13:31 +00:00
Paul Olav Tvete
49680fe0bb Fix misspelled QT_NO_ features
Change-Id: I77ca4139cb8437b781f082195bf4c92034f55512
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-09 13:13:22 +00:00
Maurice Kalinowski
7d3b291c22 winrt: Switch default screen image format
No need to specify a format with alpha for the screen. Comparing to
Windows, Format_ARGB32_Premultiplied was only set in the constructor,
but never actually during runtime as detection enforces eith RGB32 or
RGB16.

Change-Id: I4c2fabbab0d14ee296f9b7e43b02de8a9836d5bb
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-09 10:06:33 +00:00
Lars Knoll
ef744f2163 Avoid clang warnings about unused return values
Change-Id: Iebec7fb425a92199592cb3ea92190dd0bb5deabd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-09 09:42:24 +00:00
Edward Welbourne
8ee65cd1f2 Correct a Q_CHECK_PTR()'s parameter
Someone cut-and-pasted but forgot one of the changes.

Change-Id: I647dc8117ebfe8ce3d4b26d468b80c15d4e533e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-09 09:41:15 +00:00
Steve Schilz
a160fd52a1 Documentation: Specify units for QTextDocument::pageSize
Parameter in setPageSize is QSizeF. Without a specified unit it is hard to know
what to use as input.  Units depend upon the underlying paint device

Change-Id: If001b3e9587d6085cc18017680fa20396e936adb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Nico Vertriest <nico.vertriest@theqtcompany.com>
Reviewed-by: Steve Schilz <sschilz@pasco.com>
2016-11-09 09:36:25 +00:00
Kai Koehne
615270a300 Rename QtPrivate::is_[un]signed to QtPrivate::Is[Un]signedEnum
Any other use than for enums should use std::is_[un]signed. Make this
explicit by renaming the type traits.

Change-Id: I494158563c95c710e710d0d337f4e547006df171
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-09 09:13:29 +00:00
Kai Koehne
5c3b16706f Remove compiler-specific implementations of Q_IS_ENUM
Since the macro is now just a wrapper for std::is_enum,
its use is also deprecated.

[ChangeLog][QtCore][Global] Q_IS_ENUM is deprecated.
Use std::is_enum<>::value instead.

Change-Id: I09b9f4559c02c81f338cace927873318f2acafde
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-09 09:13:01 +00:00
Daniel Vrátil
9de3b15d07 QLabel: take DPR of QMovie in account when calculating sizeHint
QLabel already does that for QPixmap, so just do the same for
QMovie's current pixmap.

Task-number: QTBUG-48157
Change-Id: I7b26460f778e56ff017a5efd433f8929f30e4b41
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-11-09 09:09:26 +00:00
Maurice Kalinowski
c83ba01f7b winrt: remove superfluous code
We do not need to check for an invalid timer id, as this can only happen
if the above check is already true. Hence, this was doing the same check
twice.

Task-number: QTBUG-56756
Change-Id: Icca9b26c32ce88eab76dd02c6c10b24af07bfad7
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-09 07:03:31 +00:00
Maurice Kalinowski
0383d0be33 winrt: Do not copy into a reference
The intention has probably been to reset a reference, which is not
required.

Task-number: QTBUG-56756
Change-Id: I1ef44b6c9b8365ac5c8d48234137e518558e9398
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-09 07:03:28 +00:00
Lars Knoll
b64fc69d1c Fix compiler warning/error with clang 3.6
Clang warns about self assignment, so use the same mechanism as
Q_UNUSED for HB_UNUSED.

Change-Id: I0894c72fb0936074b15198053464f5bc4b8991d4
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-11-08 22:08:54 +00:00
Friedemann Kleint
e649eac69a Direct2D QPA: Add #include directives for MinGW
D2D support has been partially added to recent versions of
MinGW, which one day could make compiling the plugin possible.

Change-Id: I53f91c483d3b900698f4424cb6a72f626e32e60b
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-11-08 21:35:27 +00:00
Marc Mutz
b559b56463 QFontconfigDatabase: remove 200 unneeded relocations
Same change as in QColor (d38f86e50b).

No text and data reduction numbers (ubsan build).

Change-Id: I7280a511e785c9442a3a6a1ed55e10011ce0a84e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-08 19:37:42 +00:00
Marc Mutz
ef36fd0217 QGraphicsSceneBspTreeIndex: fix misleading code in event()
The old code employed a switch statement to filter timer events,
but fell unconditionally through to the default case of calling
QObject::event(). The final return statement following the switch
is thus dead code.

Fix by turning the switch into an if and returning QObject::event()
unconditionally afterwards, which much better describes the intent
of the code, and also fixes the GCC 7 warning about implicit fall-
through in the switch (which wasn't implicit to a human, but GCC's
comment-reading-capabilities are somewhat limited at this point).

Change-Id: I6756a65b3679a446d09fd721dfd0adc24fdf7772
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-08 16:33:10 +00:00
Marc Mutz
e25f2392eb QGraphicsWidget: add missing break statement to switch in event()
If the QEvent::GraphicsSceneMousePress case falls through, it does so
because d->hasDecoration() == false or the virtual call to
windowFrameEvent() returned false.

It falls through to the case for QEvent::GraphicsSceneMouseMove, etc,
which ensures d->windowData and then checks hasDecoration() again,
with some other conditions on top, and calls the same virtual
function, windowFrameEvent(), with the same arguments again.

Now, it could, theoretically, be possible that that second call would,
due to the presence of a windowData that wasn't there before, return
true when before it did return false. But the only modification to
*this between the calls to windowFrameEvent() is the potential
allocation of d->windowData, which, if actually effected, will have
d->windowData->grabbedSection == Qt::NoSection, hence
windowFrameEvent() won't even be called a second time

It is therefore safe to assume that a break was intended here, so add
it.

Discovered independently be GCC 7 and Coverity.

Coverity-Id: 11149
Change-Id: Id708a1689ed0f0c914622e388c456ea4576fda02
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-08 16:32:42 +00:00
Laszlo Agocs
92805a0e9c Fix EGL break on Debian X32
Change to QT_POINTER_SIZE instead of Q_PROCESSOR_WORDSIZE. The latter
is 8 due to targeting 64-bit, but pointers are 32-bit still in such
builds. For the condition in question it is the pointer size that
matters.

Task-number: QTBUG-56686
Change-Id: I96c203cae91ceb8404606de605c4fdb1a02a9d5f
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-08 16:21:24 +00:00
Kai Koehne
ed7f77071d Replace custom type traits with std one's
Remove most type traits from qtypetraits.h, but keep the custom
implementation of is_signed/is_unsigned. This gets rid of
BSD-3 licensed code from Google in a public header (hugh!).

The custom implementations for is_signed/is_unsigned are kept
because the implementations in gcc's standard headers do not
work as we expect for enums - both is_signed and is_unsigned
always returns false there - see also
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59027

[ChangeLog][QtCore][General] Qt now relies on type traits from
the C++ standard library.

Change-Id: I3f2188b46949f04ca4482a6ac9afd3482103f0e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-08 15:31:17 +00:00
Kai Koehne
b5fa247102 QStandardPaths: Do not check whether path exists (Windows)
It's arguably better to return a non-existing location than no location
at all. This makes it in line with the documentation for e.g.
QStandardPaths::writableLocation that says

  Note: The storage location returned can be a directory that does not
  exist; i.e., it may need to be created by the system or the user.

Finally, this was also the behavior of code that used
SHGetSpecialFolderPath before.

Change-Id: I5ee44747a38434535610e45a4d303b36ef79d42a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-08 15:30:42 +00:00
Kai Koehne
aa73a7026f QStandardPaths: Replace deprecated Win32 SHGetSpecialFolderPath
SHGetSpecialFolderPath is declared 'unsupported' by Microsoft, and has
problems with non-ASCII characters. Replace it by the newer
SHGetKnownFolderPath.

To fix compilation with MinGW, we have to link in libuuid also in
the bootstrapped tools. The alternative is redefining all GUID's
(like we did for FOLDERID_Downloads), which is arguably less elegant.

Task-number: QTBUG-50570
Change-Id: If99be559bc72de3734ae1fa4d50f960659739898
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-08 15:30:39 +00:00
Kai Koehne
aa7e764058 MinGW: Explicitly define NTDDI_VERSION
Define NTDDI_VERSION, just like _WIN32_WINNT, to be Windows Vista.
Usually NTDDI_VERSION is automatically set by MinGW headers to the value
that matches _WIN32_WINNT. However, for precompiled headers the inclusion
order is that _WIN32_WINNT is set _after_ the relevant MinGW header is
parsed, so this can fail.

The alternative would be to set _WIN32_WINNT via a compiler flag, e.g.
in the mkspecs.

Change-Id: Id59e7083f0d3e00491b54e87647c6c9fabb99795
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-11-08 15:30:33 +00:00
Friedemann Kleint
d7bcdc3a44 QStyleHelper::uniqueName(): Improve palette pixmap cache key
Use QDataStream to obtain cache key for a palettes that are different
from the default QPalette. This results in unique keys for palettes
created from QStyleSheetStyle's render rules.

Task-number: QTBUG-56743
Change-Id: Icbfe165f705ef3e1c9e88cfc9dca88ff1d1e81e6
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2016-11-08 14:32:37 +00:00
Morten Johan Sørvig
356f5bbac3 Cocoa: Make child window cursors work correctly
The existing cursor logic had a couple of issues:

- It made the faulty assumption that we could not use
the NSWindow invalidateCursorRectsForView API for
child NSViews.

- It used NSWindow invalidateCursorRectsForView and
NSView resetCursorRects. This API has been replaced
by the more general NSTrackingArea API.

- It did not implement falling back to the parent
window cursor if the current window has no cursor
set.

Document that QWindow cursors work the same way as
QWidget cursors in that a QWindow with no set cursor
will fall back to the parent window cursor.

Change the cocoa platform code to use NSTrackingArea
exclusively and implement NSView cursorUpdate which
sets the cursor. Handle immediate change on QWindow::
setCursor() manually.

Add QWindow::effectiveWindowCursor() and
applyEffectiveWindowCursor() which finds the correct
window cursor.

Add a manual test for the child window, child widget,
and QWidget::createWindowChild cases.

Task-number: QTBUG-33479
Task-number: QTBUG-52023
Change-Id: I0370e11bbadb2da95e8632e61be6228ec2cd5e9d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2016-11-08 12:30:45 +00:00
Morten Johan Sørvig
8f2eb9b43c Prevent stale QOpenGLContext fbo pointer
There is logic for clearing the qgl_curent_fbo pointer
in release(), but it is not always called, causing
the pointer to become stale on QOpenGLFramebufferObject
deletion.

As a last resort, clear the qgl_curent_fbo pointer
on the current context if it’s pointing to the object
that is being deleted.

Change-Id: I36cca511da295412332193524219e32607ef8261
Task-number: QTBUG-56639
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-11-08 12:30:24 +00:00
Gabriel de Dietrich
ae8d3d69d6 macOS: Clear event dispatcher interrupt state
A pending interrupt of a QEventLoop may interfere with
native runModal calls, resulting in Cocoa's main event
loop to be stopped unexpectedly.

After commit 9ab60b9c processEvents() no longer resets
the event dispatcher interrupt flag.

Add QCocoaEventDispatcher::clearCurrentThreadCocoa
EventDispatcherInterruptFlag(). Use it to clear the
interrupt state before calling runModal and variants.

Work around the inability to use platform API in
the print support code.

Change-Id: I52f26f99a63cbb46969db42f65b09a3c3119ad15
Task-number: QTBUG-56746
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-11-08 12:30:06 +00:00
Liang Qi
ef5b4d2ada Merge "Merge remote-tracking branch 'origin/5.7' into 5.8" into refs/staging/5.8 2016-11-08 12:16:18 +00:00
Paul Olav Tvete
ffe72840a3 Only turn off font hinting when scale is != 1
KDE will set the screen scale factors to 1 by default. Make sure
we don't turn off font hinting in that case.

Task-number: QTBUG-56797
Change-Id: Ieab18a7cfe4c1cb7087caab4d881932a4a991bc8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-11-08 11:32:02 +00:00
Gabriel de Dietrich
e79b40ee8f macOS: Clear event dispatcher interrupt state
A pending interrupt of a QEventLoop may interfere with
native runModal calls, resulting in Cocoa's main event
loop to be stopped unexpectedly.

After commit 9ab60b9c processEvents() no longer resets
the event dispatcher interrupt flag.

Add QCocoaEventDispatcher::clearCurrentThreadCocoa
EventDispatcherInterruptFlag(). Use it to clear the
interrupt state before calling runModal and variants.

Work around the inability to use platform API in
the print support code.

Change-Id: I3e03e7ec21ff6c49442c7a6e803a7200aac0b58d
Task-number: QTBUG-56746
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-11-08 10:45:45 +00:00
Allan Sandfeld Jensen
baebb6aa26 QVariant to QJsonValue::Null conversion
Adds a few missing parts of the conversion from QVariant to QJsonValue
after the introduction of the nullptr QVariant. The conversion the other
way is already implemented.

Change-Id: I8b25dec4b476c4761c5098a60944ff11c36f8bec
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-11-08 09:50:32 +00:00
Liang Qi
9d50df5511 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	src/corelib/tools/qalgorithms.h

Change-Id: Ib8ce4d5d9ecd5b9c166d5b8b44e58f3e4e7283ff
2016-11-08 10:01:50 +01:00
Andrew Knight
c647728652 Fix developer build with -no-feature-cursor
Change-Id: I3ec22f212ad68baa788fcea2e7340c2f53bfc8a1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-08 07:35:15 +00:00
Andrew Knight
14805de3d9 Fix build with -no-feature-cursor
Change-Id: I0644342c56facefab611f981690d0c7a2a460e7e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-11-08 07:35:09 +00:00
Maurice Kalinowski
fe51dbac3d winrt: Fix potential memory corruption
The timerInfo list might get accessed concurrently and cause references
to become dangling. Hence, we need to protect usages with a mutex.
According to tests/benchmark there is no impact on performance.

Task-number: QTBUG-56756
Change-Id: I4bdffccff70d2dca99f4a39defad438afe571ada
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-11-08 07:32:43 +00:00
Oliver Wolff
c972c452e2 winrt: Proper guarding by readMutex
Commented its purpose and the guarded members for
readMutex.

Fixed places where guarded members were accessed without
using the mutex.

Use QMutexLocker instead of manually (un-)locking the
mutex.

Task-number: QTBUG-44357
Change-Id: I3049bb0df30f00659dc284c8e30ad7503c11e7c6
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-08 06:27:59 +00:00
Friedemann Kleint
146a2eef5f Re-add configure option for Direct2D QPA plugin
This also allows us to enable auto-detection for it.

Change-Id: I7639ab533553f02e691e6f6b8cdd8dff19d91809
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-07 18:52:02 +00:00
Richard Moe Gustavsen
91c0afdcbf iOS: only build nsphotolibrarysupport for iOS
The plugin depends on AssetLibrary.framework, which is only
available for iOS.

Change-Id: Ic7b3c4ffb4d26808d2120e46593cb4e191e2c10b
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-07 08:50:07 +00:00
Richard Moe Gustavsen
a07e77a99a iOS: fix 'incompatible pointer type' compiler warning
Change-Id: I01bb7516a3600dd1dbd71dd6989f541494840abc
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-07 08:45:14 +00:00
Eskil Abrahamsen Blomfeldt
95d1273548 Windows: Don't claim bitmap fonts support all standard sizes
We were throwing away important information by claiming that all
fonts support all the standard sizes in QFontDatabase on Windows
This caused the font dialog to list unsupported sizes for bitmap
fonts, unlike the native font dialog.

We would also claim to support creating bitmap fonts at
unsupported sizes, which would lead to
1. QFontInfo(font).pointSize() would return the requested size,
not the actual rendered size.
2. Bitmap fonts created at 64 pixels and higher would be invisible.

On Mac, there are no system bitmap fonts, and the use is not very
common, but installing some bitmap fonts on the system, it does
seem to ignore the sizes supported in the font and just displays
the standard list instead, so we keep the current behavior there.

[ChangeLog][QtGui][Text] Fixed list of supported sizes for
bitmap fonts on Windows.

Task-number: QTBUG-56672
Change-Id: Idbec2db9eb3381ab5ddf6259bd2befcba9b93564
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-07 08:32:37 +00:00
Samuli Piippo
c5f1828424 Fix freetype detection on QNX
Pass qtConfLibrary_freetype test even when the .../freetype2 folder
is not found, so that freetype and fontconfig config.tests are run.
This fixes freetype detection on QNX, since the freetype headers are
located in the default .../include folder.

Task-number: QTBUG-56861
Change-Id: Ic8d72e6509195acd2d22a70603df850361f07b34
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-07 07:26:29 +00:00
Andrew Knight
b18a4de814 Register Qt::TextFlag with QT_Q_ENUM
By some unfortunate oversight, this enum was never registered.

Change-Id: I2227ccf294d2cf717187a3dcaaf4cbfacc4ac65d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-11-05 10:15:03 +00:00
Tor Arne Vestbø
a21ffd44b3 Use async delivery when flushing events from secondary threads
Commit 33d748bb8 (Allow granular synchronous and asynchronous delivery of
QPA events) replaced a postWindowSystemEvent() with a SynchronousDelivery,
which was completely broken, as the delivery is already guarded by a mutex
wait.

Change-Id: I929fddc4e3403f943e8fe0677b5a46bf58419575
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-11-04 23:23:23 +00:00
Thiago Macieira
ea9a8672a1 Fix build with ICC on macOS: <atomic> is properly supported
I'm guess I introduced the regression in the commit
18ed6f20ad, which I wasn't sure about.

Change-Id: Ic46ff326a6ba46bc877cfffd14839f84fdf796e7
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-11-04 16:32:54 +00:00
Kai Koehne
02167870c3 Use new "Files" property in testlib 3rdparty documentation
Change-Id: I4ecef274f4afe0b1a25502fb64b2213a7bdb2853
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-11-04 15:20:12 +00:00
Richard Moe Gustavsen
6a4aaa3477 iOS: remove wrong file include after upstream merge
qiosfileenginefactory.h is now a part of the optional plugin.

Amends d7e49801

Change-Id: Ia1854145f54e4278ab5c0020361915f476d48cc9
Reviewed-by: Liang Qi <liang.qi@qt.io>
2016-11-04 12:17:19 +00:00
Kai Koehne
dd876ccb66 Add missing QBIG5CODEC_LICENSE.txt file
Add file that was forgotten in eb96813976.

Change-Id: Ib288bfc1f1f9cb4857e42f2fa3fe750e23b56aea
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-11-04 11:48:47 +00:00
Eskil Abrahamsen Blomfeldt
1ba0cfab30 Windows: Fix high-dpi text rendering
In change ce2ae6ebd8 we added support for
hinted rendering to the DirectWrite engine. Previously, we would just
use the DirectWrite engine for all text rendering in high-dpi and assume
we would get only vertical hinting, but since the default changed, we
ended up scaling hinted text and the resulting text layouts were a mess.

Task-number: QTBUG-56841
Change-Id: I52101ea264878138de41878d1677c0ef8b522e78
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-04 11:20:31 +00:00
Liang Qi
e918605f42 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/corelib/json/qjsonparser.cpp
	src/gui/opengl/qopengl.cpp

Change-Id: Ib4d3208398399691839e6c6eaeb9006f99e3a62b
2016-11-04 11:39:15 +01:00
Lars Knoll
15df60239d Fix OOM crashes for huge json documents
Check all places where we reallocate our internal data structure
and return a DocumentTooLarge parse error if we can't get enough
memory.

Change-Id: I006d0170d941837220c7dad0508571b68e2cbfd7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Kati Kankaanpaa <kati.kankaanpaa@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-11-04 07:53:39 +00:00
Thiago Macieira
4b6784b49c Stop using readdir_r: glibc deprecated it and it's not a good idea
POSIX does not require that readdir() be reentrant even for operations
on different dirent objects, but all implementations (according to the
glibc documentation) already do that. Moreover, it's not a good idea to
use readdir_r since the buffer space is limited by the caller, so
certain file names may be too long (ENAMETOOLONG) -- we had a workaround
for QNX, but for no other OS. According to the glibc documentation, it
is expected that POSIX will mark readdir_r obsolete and instead require
some form of reentrancy for readdir.

This commit makes everyone use readdir instead. The macros in
qplatformdefs.h are left behind in case someone else is using them.

With glibc 2.24, we started getting:

 qplatformdefs.h:150:35: warning: ‘int readdir_r(DIR*, dirent*, dirent**)’ is deprecated [-Wdeprecated-declarations]
 qfilesystemiterator_unix.cpp:112:17: note: in expansion of macro ‘QT_READDIR_R’

Task-number: QTBUG-56088
Change-Id: I33dc971f005a4848bb8ffffd14749b4082f62e69
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
2016-11-03 15:31:33 +00:00
Thiago Macieira
cf4e7575ca Fix GCC warning about ODR violation
There are two enums called "Operator"

 qdrawhelper_p.h:201:8: warning: type ‘struct Operator’ violates the C++ One Definition Rule [-Wodr]
 qopengl.cpp:138:6: note: a different type is defined in another translation unit

Change-Id: I09100678ff4443e6be06fffd1482da1f636614b7
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-11-03 15:31:30 +00:00
Edward Welbourne
9930ea92c1 configure -libproxy: add a warning if not namespacing Qt
Task-number: QTBUG-46058
Change-Id: I62978b7fe9a82f9facb16ba56d0b14b792e3de61
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-11-03 15:25:45 +00:00
Dmitry Shachnev
1a1a0e3159 GTK+ dialogs: Get rid of deprecated GtkStock usage
GtkStock has been deprecated since GTK+ 3.10, and is removed in GTK+ 4.
Use the standard button names provided by Qt instead.

Change-Id: I55e8452178544b4a9ebf5c75b70f4c5c56c047f4
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-11-03 14:07:59 +00:00
Allan Sandfeld Jensen
9e53a91e99 Fix tiling on a width over 2048
The blend_tiled_argb and blend_tiled_rgb565 was not correctly handling
widths larger than the buffer size. This patch adds the same pattern
used in blend_tiled_generic, which worked correctly.

Change-Id: Ie22c2a21d96cb0477cd0990bf01451ab907a4768
Task-number: QTBUG-56364
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2016-11-03 12:54:52 +00:00
Oliver Wolff
181bb447f5 winrt: Removed unused member variable from socket engine
Change-Id: I3255c1fb10e053f9a9a1753ad0a0b6969d8a8cfe
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-03 09:28:32 +00:00
Oliver Wolff
67c6d0f54e winrt: Remove static mutex that protected handleReadyRead
At the point in time when the callback is called it is very
unlikely that another thread sets the state or error of
the socket engine. Other members (readBytes, bytesAvailable)
are protected by readMutex.

Change-Id: I76cf12fbc9019d1b42846c4b40e0cd1c06bbb220
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-03 09:28:27 +00:00
Oliver Wolff
b787977ba0 winrt: Guard pendingReadOps with mutex
As the list is changed inside a native callback
(handleReadyRead) which can be run inside another
thread it has to be protected by a mutex.

Change-Id: I145a866a36a12b7ea9bfa9f99ad9f7add872a021
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-03 09:28:21 +00:00
Oliver Wolff
e1f29814da winrt: Proper guarding by readMutex
Commented its purpose and the guarded members for
readMutex.

Fixed places where guarded members were accessed without
using the mutex.

Use QMutexLocker instead of manually (un-)locking the
mutex.

Task-number: QTBUG-44357
Change-Id: I0d46f9592d5a9d1b52e73df961785a6f6c9e80be
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-03 09:28:16 +00:00
Thiago Macieira
ca4d93d85e Stop unloading plugins in QPluginLoader and QFactoryLoader
QPluginLoader hasn't unloaded in its destructor since Qt 5.0, but we
missed the equivalent code in QFactoryLoader (which bypasses
QPluginLoader). Besides, QPluginLoader::unload() was still doing
unloading, which it won't anymore.

Not unloading plugins is Qt's policy, as decided during the 5.0
development process and reaffirmed now in 5.6. This is due to static
data in plugins leaking out and remaining in use past the unloading of
the plugin, causing crashes.

This does not affect QLibrary and QLibrary::unload(). Those are meant
for non-Qt loadable modules, so unloading them may be safe.

Task-number: QTBUG-49061
Discussed-on: http://lists.qt-project.org/pipermail/development/2015-November/023681.html
Change-Id: I461e9fc7199748faa187ffff1416070f138df8db
(cherry picked from commit 494376f980)
Discussed-again-on: http://lists.qt-project.org/pipermail/development/2016-October/027476.html
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-11-02 17:58:48 +00:00
Oliver Wolff
5f6c0418fe winrt: Fixed assignment of readOrigin in readDatagram
Change-Id: I0455b6526b8bacd30622698e0a497fa2da3932ba
Reviewed-by: David Faure <david.faure@kdab.com>
2016-11-02 12:14:46 +00:00
Jesus Fernandez
b5fc085e71 Add QPixmapIconEngine::pixmap pointer check
Dereference after null check (FORWARD_NULL)5.
var_deref_op: Dereferencing null pointer pe.

pe pointer it's being checked at the beginning of the function so it
implies pe might be null.

Coverity-Id: 11106
Change-Id: Ie88b27877a46cdd20a317fb5e21c3fdec1b99dda
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-02 10:56:51 +00:00
Sergio Martins
c501010722 Mention QDialog::setSizeGripEnabled() in QSizeGrip's docs
The same way it also mentions QStatusBar.

Change-Id: Ic084466310c989d1a79ba5ba21d6784acaa38e6e
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-11-02 10:39:39 +00:00
Jesus Fernandez
dcedce51a6 Include intrin.h header when using MSVC
Fixes the build with MSVC15

Change-Id: I7f22938583775bb3f0767d50cf59a43cab95eede
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-02 09:49:54 +00:00
Kai Koehne
71166288cb Add QNetworkProxy::usesSystemConfiguration() accessor
Allow to check programmatically whether using the system proxy settings
is enabled. To implement this the QSystemConfigurationProxyFactory is
replaced by an explicit boolean in QGlobalNetworkProxy.

Change-Id: I52231b4ffc890b085bcd1739acf93c97bdb18eb5
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-11-02 08:04:14 +00:00
Anton Kudryavtsev
c12f42e91b QString: optimize replace(QChar, QChar, Qt::CaseSensitivity)
Only detach() if the string does contain the character to be replaced.
Save memory allocations.

Change-Id: I69c070d3f0b99f505fb6c209f657cdce31a35461
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-11-01 18:36:53 +00:00
Oswald Buddenhagen
147b7d9da2 remove bogus freetype dependency stuff
fixes rebase FAIL in f9a80e06a.

the ft dependency itself is pulled in via the basic font database, which
is included if ft is used.

Change-Id: I4e9c0c44bd0360b702953e51cde4c5d526eff499
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-11-01 15:22:58 +00:00
Liang Qi
a732576a66 Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
	config.tests/win/msvc_version.cpp
	configure.pri
	mkspecs/macx-ios-clang/features/default_post.prf
	mkspecs/macx-ios-clang/features/resolve_config.prf
	mkspecs/features/uikit/default_post.prf
	mkspecs/features/uikit/resolve_config.prf
	src/corelib/io/qsettings_mac.cpp
	src/corelib/json/qjsondocument.cpp
	src/plugins/platforms/cocoa/qcocoawindow.h
	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/plugins/platforms/cocoa/qnswindowdelegate.h
	src/plugins/platforms/cocoa/qnswindowdelegate.mm
	src/plugins/platforms/ios/ios.pro
	src/plugins/platforms/ios/kernel.pro
	src/plugins/platforms/ios/qiosintegration.h
	src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
	tests/auto/gui/painting/qpainter/tst_qpainter.cpp
	tools/configure/environment.cpp

Change-Id: I654845e54e40f5951fb78aab349ca667e9f27843
2016-11-01 06:02:55 +01:00
Liang Qi
cd9de59177 Revert "Deduplication fetchTransformed"
A merge from 5.7 with this change will trigger a compiler crash
on gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) on Linux RHEL_7_2 (gcc-x86_64).

This reverts commit eeb03fbf26.

Task-number: QTBUG-56817
Change-Id: I143fdf43e0530d68d627718c515c2063630bd920
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2016-10-31 17:12:00 +00:00
Martin Smith
1df45820d4 doc: Document two undocumented functions
This change provides missing documentation for two member
functions of QString.

QString QString::fromUtf16(const char16_t *str, int size)
QString QString::fromUcs4(const char32_t *str, int size)

Change-Id: I94a9437a457062e49e4457f5876e4d7c31fff24c
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-10-31 14:03:58 +00:00
Frederik Schwarzer
700ea0af68 QMainWindow: fix wording in apidoc
Change-Id: I5cb44bed7e946574eb3e08ff51948f901b2bb78c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-10-31 13:49:55 +00:00
Liang Qi
8e20daae9f Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/minimalegl/qminimaleglintegration.cpp

Change-Id: Ia6ab42a6daadbf8abc085c971545904d49ea4b56
2016-10-31 09:26:35 +01:00
Laszlo Agocs
694702e09d Mark the entire widget dirty when changing flush paths
This augments 2a7cee47e5

Task-number: QTBUG-56534
Task-number: QTBUG-54241
Change-Id: I635478c43e353b0e435d3ac30e4cc608a5a2a6a5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2016-10-29 18:24:14 +00:00
Laszlo Agocs
ca5d4137aa minimalegl: Reorder includes to avoid EGL native type clashes
Some of the qminimaleglscreen.h includes are not even necessary.
With the inclusion of egl.h (or qt_egl_p.h in 5.7 and up) isolated
to this header, all we need to ensure is that the sources that include
it place the include at a suitable place.

This is not the only possible solution, there are alternatives (each with
its own caveat), but this is likely the least intrusive.

Task-number: QTBUG-56559
Change-Id: I17db031c8e401d9895a417ba3568ad1e4ba30f72
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 21:01:58 +00:00
Laszlo Agocs
f9ec707e49 windows: Disable OpenGL proper on Intel 945
Change-Id: I77fbf5bafcd6b0fe5040513ef6b0d049600f9b33
Task-number: QTBUG-40991
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-28 21:01:43 +00:00
Marc Mutz
56734cdf33 QFileSystemModel: improve readability of the renaming code
Instead of calling QHash::value(), inserting the return value
into the hash with a different name and only many lines later
removing the old node, do the extraction into a QScopedPointer,
and the insertion into the hash from the QScopedPoiner, keeping
the node update in between the two.

Avoids the double-lookup of 'oldName', makes it clearer what's
going on, and limits the potential for some return between the
insertion under the new name and the removal under the old one
sneaking in, which would cause a double-delete later in the
dtor.

Change-Id: Ia2d1cca77c04708421ccb5e594729ec83de85345
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-28 18:20:08 +00:00
Liang Qi
f2f39946d2 Fix a mis-merge in af0d0b9
"-framework AudioToolbox" was lost.

Task-number: QTBUG-56784
Change-Id: Ibd536c53e7e1456077559c021a70407339f33971
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2016-10-28 18:02:41 +00:00
Friedemann Kleint
4039568837 Direct2d: Add missing dependency to platformsupport's accessibility
Change-Id: I620370bb5f4bbac11c1e5740c706e0cb64d9d407
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-10-28 14:19:49 +00:00
Friedemann Kleint
8cd8124559 Windows QPA: Do not use QSettings to access the registry
When commenting out the warning in createOrOpenKey()
(src\corelib\io\qsettings_win.cpp:157), applications produce warnings:
QSettings: Failed to create subkey "Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes": Access is denied.
indicating that an attempt to open the registry in read/write mode fails.
Add a utility function to read out registry strings in read-only mode to
the font database and use that instead.

Change-Id: I4187344cac7ec2ba27f15b51e237575efc171853
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-10-28 14:14:28 +00:00
André Somers
4c00246fea Fixed crash taking null central widget
When no central widget has been set, calling takeCentralWidget should
just return a null pointer instead of crashing.

[ChangeLog][QtWidgets][QMainWindow] Fixed crash using takeCentralWidget when
the central widget was not set.

Task-number: QTBUG-56628
Change-Id: I240ccf4caa41d2716a78851571fbfbf444a4922e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2016-10-28 14:11:42 +00:00
Topi Reinio
dbf35d7571 Doc: Fix a typo in QtConcurrent example snippet
And use different wording to describe QtConcurrent::filtered(), as
it doesn't modify the sequence it operates on.

Change-Id: I768c0d121e027c5de36ba7bd548c2d4c2a7f1bd9
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-10-28 13:17:19 +00:00
Kai Koehne
e5451f086b Document license for CLDR data in Qt Core
Change-Id: I21bf76a5603f3384fccad46a16b7304380a7a444
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-28 12:46:46 +00:00
Kai Koehne
e46cf80f8a Remove legalese text from QLocale
The mentioned functions are now documented in src/3rdparty/freebsd.
Anyhow, the license and copyright differs ...

Change-Id: Ib59ace624d1d8244f591668ed05993787ca65d24
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-10-28 12:46:43 +00:00
Kai Koehne
eb96813976 Document use of BSD code in Qt Core
Change-Id: I31305e40dc57ddd37e5ef35a52cc99dc7ebb3bc5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-28 12:46:39 +00:00
Oswald Buddenhagen
bda6c2b018 remove monolithic platformsupport module
all users have migrated to the modular libraries.

Change-Id: Ifc470583c86a4f30af5335c21f2e3e4d19d39954
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-28 12:37:52 +00:00
Anton Kudryavtsev
d245db2f83 QWidgetPrivate: remove unused declarations of methods
... such as beginSharedPainter() and endSharedPainter()

Change-Id: I0e76dd172c2f3bce169f58e4c62bd47c73c99dcd
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-28 12:23:58 +00:00
Gabriel de Dietrich
f9280ba45e QNSColorPanelDelegate: Don't restore stolen view on dealloc
We may not be playing nice with Cocoa's internals when
we decide to reparent NSColorPanel's contents to add
QColorDialog's own OK/Cancel buttons. In order to reduce
issues, we should avoid poking at things during the
application's shutdown sequence. Simply releasing the
stolen view should be enough at that point.

A similar pattern exists in QNSFontPanelDelegate.

Change-Id: I678c236e0c57c4d08a1109a479d965f924288c54
Task-number: QTBUG-56448
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-28 12:13:38 +00:00
Laszlo Agocs
f577a01f5e eglfs: Cast to EGLNativeDisplayType in EGLDevice backend
When compiling with EGL native types being the Xlib types (uncommon since
we disable this both for Mesa and NVIDIA embedded, but can happen with other
vendor's headers), the types for EGLDeviceEXT (void*) and EGLNativeDisplayType
(Display, i.e. _XDisplay*) won't match, breaking compilation. At runtime we won't
hit that path, so all we need to ensure is that the code compiles. Do this via a cast.

When the native types are generic, both types are void* so the cast has no
effect.

Change-Id: Ib54f569d4494906f74107f08b47bd6b521d700db
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 10:01:38 +00:00
Laszlo Agocs
8d9c42e362 xcb: Avoid crash when requesting non-supported stereo formats
Introduced in the 5.7 branch by 5f39a0ef8d.

Add also a warning in the GLX backend instead of just dereferencing the
null pointer.

Task-number: QTBUG-55291
Change-Id: I1f2930768b39a04ee443a68d0ac7dc9ecf26cb9c
Reviewed-by: Louai Al-Khanji <louai.al-khanji@qt.io>
2016-10-28 10:01:31 +00:00
Gabriel de Dietrich
f9a80e06ac Move Windows font DB and engines to QtFontDatabaseSupport
This allows creating or extending QPA plugins to provide access to QFont
and related types.

It concerns both GDI and DirectWrite engines, as well as the regular and
the freetype based font databases. The qt.qpa.fonts logging category has
been moved together into the QWindowsFontDatabase related files to avoid
depending on the qwindowscontext.h header file. Finally, QwindowsNativeImage
is following pending a future refactor with similar code in qpixmap_win.cpp
and the Windows XP style.

Change-Id: Iddff2f3d715e3ab7695e6c2052b7596a01fd6fa8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-28 08:02:46 +00:00
Friedemann Kleint
af3e697ad6 QWindowsXPStyle: Use qreal scale factors in theme drawing helpers
This improves support for fractional scale factors.

Task-number: QTBUG-49374
Change-Id: Ied6579ee831f3ea29f238baaffa67374ea6823d9
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-28 07:45:02 +00:00
Richard Moe Gustavsen
5700644a42 iOS: guard iOS only code to not break tvOS build
inputAssistantItem is not available on tvOS.

Change-Id: Icff684d6299688fbeaf40ffcb32ff9c46371b305
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-28 07:34:08 +00:00
Richard Moe Gustavsen
3daa76d494 iOS: ensure we return a non-null clipboard
QPlatformIntegration::clipboard() is not allowed to return
 null. This will lead to a crash as soon as someone tries
 to access QClipboard.

Change-Id: I3c1e7cdc5103fe4424f9739a09f599d6c0af40b2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-28 07:32:52 +00:00
Alex Trotsenko
0e2d38b447 QAbstractSocket: avoid unspecified behavior in writing on TCP
Passing zero as size parameter to QAbstractSocketEngine::write() has
unspecified behavior, at least for TCP sockets. This could happen on
flush() when writeBuffer is empty or on writeData() with size 0. Avoid
by explicitly checking against zero size.

Change-Id: I070630d244ce6c3de3da94f84c2cded2c7a4b081
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-27 17:15:41 +00:00
Richard Moe Gustavsen
d19f01acbf nsphotolibrarysupport: add missing namespace macros
Change-Id: Ib2014dc64dfcc1ea8de63a1668907ace6d26c530
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-27 12:12:50 +00:00
Kai Koehne
5a92b6e8be Document use of 3rd party code in qgrayraster
qgrayraster_p.h, qgrayraster.cpp contain code from Freetype which
unfortunately cannot be excluded by e.g. '-no-freetype'. Document this
code therefore separately.

Change-Id: I20d79e984013b2aec874774ddc765b1dc57ebe0e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-10-27 11:30:49 +00:00
Liang Qi
af0d0b9c06 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/ios/ios.pro
	src/plugins/platforms/ios/kernel.pro
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm
	src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h
	src/plugins/platforms/ios/qiosintegration.h
	src/widgets/widgets/qcombobox.cpp
	tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
	tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp

Change-Id: Ibaee7cbbba99e7c4b1d8926e55932ffa6030ce45
2016-10-27 10:23:39 +02:00
Vyacheslav Koscheev
456f0e0f1a Compilation fix
If qreal is float, then android-clang compilation was breaking here

Change-Id: Ieccc357ecbbea5cbb22a5808dd0791795240a985
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-10-27 08:11:06 +00:00
James McDonnell
145587a521 Recontribute QUrl::fromUserInput
Recontribute QUrl::fromUserInput under the corporate license agreement;
i.e. remove the separate BSD license from the code.

Change-Id: I1e0b4aab921fb20d2fd558fe732cea596ecbc9ca
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-27 06:22:41 +00:00
Dongmei Wang
c8c3d39e21 Paint menu scrollers, tear off on top of QWidgetAction items
The menu scrollers and the tear off items are painted in the layer
 of QMenu. In a case that QMenu contains QWidgetAction items, the items
are painted under QWidgetAction items. They are visually hidden unless
QWidgetAction items' background is transparent. The tear off doesn't work
since QWidgetAction item on top of it grabs mouse events. To fix the issue,
add two child widgets in QMenu, paint the scroll up and the tear off items
in one child widget and the scroll down item in the other one. Both child
widgets are painted on top of overlapping sibling menu item widgets.

Change-Id: I7eaef21b667b388fbb78b60664f4a4bd91215309
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-10-27 05:28:09 +00:00
Dongmei Wang
7f0d43fd33 Don't overlap the menu scrollers with QAction items
The QAction items overlap with the menu scrollers. The patch is to
set correct clip regions for QAction items in order not to overlap
with the scroll arrows.

Change-Id: Ie724bd2be522daf5935fb489523b5d5f32bb7f71
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2016-10-27 05:27:44 +00:00
Friedemann Kleint
8da1828d7a QtWidgets: Remove function documentation from Qt 4
Fixes qdoc warnings:
qtbase/src/widgets/kernel/qwidget.cpp:13053: warning: Cannot find 'macCGHandle(...)' in '\fn' Qt::HANDLE QWidget::macCGHandle() const
qtbase/src/widgets/kernel/qwidget.cpp:13062: warning: Cannot find 'macQDHandle(...)' in '\fn' Qt::HANDLE QWidget::macQDHandle() const
qtbase/src/widgets/kernel/qwidget.cpp:13071: warning: Cannot find 'x11Info(...)' in '\fn' const QX11Info &QWidget::x11Info() const
qtbase/src/widgets/kernel/qwidget.cpp:13080: warning: Cannot find 'x11PictureHandle(...)' in '\fn' Qt::HANDLE QWidget::x11PictureHandle() const

They were accidentally re-added in
e6ddae07e1.

Change-Id: I1531a795ad182bc0b54d70d52e83422e782cc948
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-10-26 13:34:21 +00:00
Lars Knoll
99331f661d Fix QStandardPaths::FontsLocation to be compliant with the latest XDG spec
According to the latest XDG spec, FontsLocation should point to
XDG_DATA_DIR/fonts, not ~/.fonts.

Task-number: QTBUG-55507
Change-Id: Ia62ffe172abbb93d5ce7fd58bdf038ff13954f1b
Reviewed-by: David Faure <david.faure@kdab.com>
2016-10-26 13:07:43 +00:00
Lars Knoll
04f0a69e96 Replace PKGCONFIG+=foo usages with QMAKE_USE
replace explicit pkg-config uses with the results of configure tests,
for consistency.

Change-Id: I3587db6085798ea7a49f8871fc6838eb687a6391
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-10-26 13:07:34 +00:00
Richard Moe Gustavsen
4e19615907 qmacmime: convert UTF-16 using QTextCodec
The current implementation of QMacPasteboardMimeUnicodeText
didn't contain any logic to handle unicode text with a byte
order mark (BOM). According to the
docs (*), 'public.utf16-plain-text' can have an optional BOM.
Because of that, Qt would fail encoding UTF-16 text from the
pasteboard if it had a BOM.

Additionally, perhaps because of a bug in iOS 10, UTF-16 text
placed on the pasteboard by Qt ends up being encoded wrong by
native apps, unless the text has a BOM.

Rather than hard-coding UTF-16 encoding/decoding in qmacmime, we
now leave it to QTextCodec. QTextCodec will add a BOM by
default, and can handle decoding of UTF-16 both with, and
without, a BOM.

*: https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

Task-number: QTBUG-56229
Change-Id: I3a08deb0262350c67e5622cf23eb3c3a4907ec39
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-10-26 12:14:23 +00:00
Albert Astals Cid
e8b55a6d2a Document qGuiApp and tweap qApp
Change-Id: I2cd865da0e081251a2702c11cb83dde35444693a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-26 12:28:57 +00:00
Richard Moe Gustavsen
b9af823ef7 qiosfileengineassetslibrary: replace Q_DECL_OVERRIDE with override
Change-Id: Iba67e1a1fa86dff3c82543597351b597be69ed1f
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-26 12:15:47 +00:00
Eskil Abrahamsen Blomfeldt
aa2e2a8d5e Android: Fix synthesized oblique for non-latin scripts
In 5e3e34731b, a default implementation
of QPlatformFontDatabase::fallbacksForFamily() was added, but this
implementation included only the fonts with a matching style in
the returned list.

The result of this was that if a font face for a specific language
did not have e.g. an italic font, then we would show missing glyph
boxes instead. On Android, it would be impossible to show any
italic text in Chinese, Japanese, Hebrew, or Arabic.

[ChangeLog][QtGui][Text] Fixed synthesized oblique for non-latin
text on platforms using the basic font database, such as Android.

Task-number: QTBUG-51223
Change-Id: I494d8ad87292b65d4380a2e600c1c0dc7fc8f937
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2016-10-26 09:40:30 +00:00
Richard Moe Gustavsen
78ee77f491 iOS: link photo lib plugin based on Info.plist contents
If the application's Info.plist contains the key
'NSPhotoLibraryUsageDescription', we know that we can safely link in
qiosnsphotolibrarysupport without violating AppStore requirements.

This is a simple feature that doesn't introduce additional qmake
API for doing app deployment with optional iOS QPA plugins.

[ChangeLog][iOS] Starting from iOS 10, Apple requires all apps
that need access to photos to have the key
'NSPhotoLibraryUsageDescription' in the Info.plist.
Therefore, to get the same support in Qt (when, e.g., using
a file dialog), the Info.plist assigned to QMAKE_INFO_PLIST
will need this key as well.

Change-Id: I7a93afe24b589cad96d5a1d9e2a155ad1671178a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-26 08:55:19 +00:00
Richard Moe Gustavsen
99ce5d5e85 iOS: refactor usage of photos into optional plugin
Starting from iOS 10, apps that tries to access photos on the device
need to specify the reason for this up front by adding the key
'NSPhotoLibraryUsageDescription' into Info.plist. If the key is
missing, the app will be rejected from AppStore.

This causes problems for the iOS plugin as it stands since parts of it
already tries to access photos, e.g to show an image picker dialog
if a file dialog is set to open QStandardPaths::PicturesLocation.
This means that currently, all apps written with Qt will be rejected
from AppStore unless the developer adds this key, whether he tries
to access photos or not.

To solve this, we choose to split the plugin into two parts, one
that contains the core functionality, and one that contains
optional support. The latter will need to be enabled explicit
by the developer in the pro file, or in this case, indirectly
by adding the right key to the Info.plist.

This patch refactors the code in the plugin that gives access
to photos into a separate optional plugin called 'nsphotolibrarysupport'.

Change-Id: Ic4351eb0bbfffdf840fd88cd00bb29a25907798f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-26 08:55:10 +00:00
André Somers
60dbd80e5a Document that qFuzzyCompare does not work on NaN or infinity
On a discussion in the Development mailing list it became clear that
qFuzzyCompare does not work for NaN or infinity values. That was not
mentioned in the method documentation though. This patch fixes that
hiatus. It also clarifies how to deal with the comparing to 0.0
limitation.

Change-Id: I8b6d54cc0c1136e79b0d7be1a62bc9ed394d2575
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
2016-10-26 08:39:46 +00:00
Kai Koehne
443c9c1db5 Remove QSegfaultHandler class
The origin of the class predate git history, but it has been apparently
unused in Qt since Qt 4.5 times. Removing this relieves us from
documenting its custom license.

Change-Id: Ie91be5f0b2fbaf10dc212c44ebd37e6b9d781592
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-26 03:16:53 +00:00
Jesus Fernandez
951b34453b Include intrin.h header when using MSVC
Allows the usage of _BitScanForward, _BitScanReverse, __popcnt and
__popcnt16 functions.
Fixes part of the build with MSVC15.

Change-Id: I5ec37184209196ad19beddb4d6a36f9a9fd3b315
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-26 03:16:45 +00:00
Thiago Macieira
8daa050ed2 Fix syncqt warning about wrong include
syncqt says:
QtGui: WARNING: /Users/tjmaciei/src/qt/qt5/qtbase/src/gui/kernel/qevent.h includes qiodevice.h when it should include QtCore/qiodevice.h

Change-Id: I9093948278414644a416fffd14744fe9c6c9c5f8
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-10-26 03:16:11 +00:00
Thiago Macieira
0cffe2135e qversiontagging.h: Don't tag binaries in static mode
Though there should have been no ill-effects, they happen.

Task-number: QTBUG-52605
Change-Id: I9093948278414644a416fffd147444078edc3183
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-25 20:21:20 +00:00
Anton Kudryavtsev
c30e62c775 Plugins: use const (and const APIs) more
For CoW types, prefer const methods to avoid needless detach()ing.

Change-Id: I625d57c0c19e87ac2de681bb16d0cc5a7a59b366
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-25 05:12:29 +00:00
Anton Kudryavtsev
26ac91c832 qwindowsdirect2dintegration.cpp: replace QVector with QVarLengthArray
QVector was used as just RAII for local array. It's inefficient usage
of CoW type. So use QVarLengthArray instead.

Change-Id: I494ecc49af9049569a65e258581137bad3ce7dc7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-10-25 05:11:39 +00:00
Gabriel de Dietrich
9c83d7f871 QCocoaMenuBar: Update even if no window is attached
Then we need to check if the current active (or focused)
window has any menubar associated. In case there isn't,
and the menubar has no window associated, then we should
update immediately.

The previous condition is still valid.

Change-Id: I4532ccc87354d91c76b53f5433dc3944b9e29584
Task-number: QTBUG-56275
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-10-24 21:14:02 +00:00
Andy Shaw
e2d8c7bf22 Don't change the size of widgets just because it is in a floating dock
When a QDockWidget was floating on macOS then it would force the size of
various widgets, such as buttons, comboboxes, to be the smallest needed
rather than the size they had when it was docked.

Task-number: QTBUG-7460
Task-number: QTBUG-52354
Change-Id: Id348180934f113f3a9a9ce5622a9af03eed04108
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-24 16:02:23 +00:00
Andy Shaw
843247e1c5 Call raise on the window that contains the widget and not the widget
When the mouse is clicked on the widget in a window while a popup is
visible then it should raise just the window and not the widget inside it.
If the widget is in a stacked layout then calling raise() on it can cause
it to appear on top so avoid this by calling raise() directly on the
window.

Task-number: QTBUG-52670
Change-Id: Idd287c6cc7038c57e14e92f4a3e1c50985925684
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-24 16:01:35 +00:00
Erik Verbruggen
f6eb570c7d Darwin: normalize all watched paths to composed from
This will be done by all POSIX APIs for strings coming in that way, but
because other code (like NSWhateverViews) will most likely return
decomposed form, we make sure that those are in composed form too.

Task-number: QTBUG-55896
Change-Id: I065e11cee6b59706d4346ed20d4b59b9b95163b8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-24 15:10:42 +00:00
Eskil Abrahamsen Blomfeldt
592614ea3e Don't claim all fonts are smoothly scalable on Windows
Since 40ebda3efb, bitmap fonts are detected
as smoothly scalable on Windows. While the fontsAlwaysScalable() does say
whether or not the font engine can rasterize the fonts at any size, it does
not determine whether or not the result is "attractive" as the
documentation for isSmoothlyScalable() says.

Only outline fonts are smoothly scalable, and this fact is used in Qt Quick
to determine whether we can use the distance field renderer for the font or
if we have to fall back to the native renderer. The consequence was that
the fonts were no longer usable in Qt Quick.

We also need to revert the optimization for isBitmapScalable() since there
a font that is smoothly scalable should not be identified as bitmap
scalable (basically this means: Font is not smoothly scalable, but it
can be scaled with bitmap scaling artifacts).

[ChangeLog][QtGui][Text] Fixed a regression where raster fonts on Windows
were detected as smoothly scalable and thus rendering with said fonts
in Qt Quick would break.

Task-number: QTBUG-56659
Change-Id: Ia7db6fee8249aca347233a488388be5c3a00c2df
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-24 14:52:49 +00:00
Kai Koehne
bdcc9d4e73 Add attribution file for Khronos headers
Change-Id: If2db8db20cac00a0e4fa89721ede17a41a18e3c1
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-10-24 14:05:30 +00:00
Jarek Kobus
cee4d0c0b7 Add a resetClean() method to the undo stack
With the current API it is not possible to reset the
index into -1. We have setClean() method, but
we are lacking setDirty(). This is needed
in case when the document has changed outside
of the editor and nothing has changed
in the undo stack history. In this case we
don't know the state of the file modified
externally so we need to mark that editor's
contents is different from the file contents
and undoing or redoing commands can't bring
the editor to the clean state.
This may also be useful to call it when
we created a new document and haven't saved
it yet or when the document was restored
from backup file.

Task-number: QTCREATORBUG-17048
Change-Id: I64e2052b3559299e0b6939831557a07a59a851b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-24 13:03:40 +00:00
Eskil Abrahamsen Blomfeldt
cc30177a69 Fix decorated text in extra-selections
Change ddef89b323 broke decorations
set using setExtraSelections(), because these decorations are
drawn with a second drawTextItem() call where numGlyphs is
set to 0. When the drawTextDecoration() call was moved into
the branches for multi/no-multi font engines, the call for
the cut-off when numGlyphs == 0 was unintentionally removed.

Task-number: QTBUG-54626
Change-Id: Ieb9fc23099a9d7daf87cc364d3fc9da128ec516d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-24 09:57:15 +00:00
Kai Koehne
398d67198c Document Qt Network licenses
Also explicitly mention the GPL exception for OpenSSL.

Change-Id: I460189ee4d2dd79f8eca320ac82460e186b0f84c
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-10-24 09:44:57 +00:00
Timur Pocheptsov
391741bd7b Cocoa integration - remove erroneous warning
The conditional statement checks/allows only right/left mouse buttons
in handleMouseDraggedEvent and generates a lot of useless/misleading
warnings in case we press (for example) a middle mouse button (when
we're also moving mouse cursor, intentionally or not).

Task-number: QTBUG-54160
Task-number: QTBUG-42846
Change-Id: I5c54b6204cb90036c7d98724537f1c985b40d9cc
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2016-10-24 08:07:25 +00:00
Andy Shaw
a6a08095a4 Compile fix for DB2 sqldriver plugin
Change-Id: Ib91ffaa0f1f240b9d93e1756cf309a9975f09928
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-24 07:56:50 +00:00
Kai Koehne
71d4aea646 Fix description of feature 'topleveldomain'
The property is 'purpose' now. Also elaborate a bit more on the feature.

Change-Id: I66aa4165044f132dff018cfd01d54b939bb64fac
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-24 07:32:51 +00:00
Thiago Macieira
33aa2fdd08 Fix change-of-sign warnings caught by ICC 17
error #68: integer conversion resulted in a change of sign

Change-Id: I33dc971f005a4848bb8ffffd1475ee53d394acf6
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-23 21:49:00 +00:00
Erik Verbruggen
30b7278c5c Remove type punning from ucstrncmp
Type punning is UB.

Change-Id: I0022d2a38136d80f5ddda21cea7dc0968c736242
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-23 11:48:20 +00:00
Liang Qi
28628a5d5e Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/plugins/platforms/eglfs/qeglfshooks.cpp

Change-Id: I483f0dbd876943b184803f0fe65a0c686ad75db2
2016-10-22 21:19:57 +02:00
Marc Mutz
84dc7d5f55 QComboBox: fix build with GCC 7
GCC 7 warns about implicit fall-throughs now.

Fix by adding the missing comments.

Interestingly, Coverity only found one of them, even though all three
still exist in dev, too.

Change-Id: I9f2c5e2700d5ec5234fee3a532feffe01b7c4ce3
Coverity-Id: 11156
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2016-10-22 10:20:18 +00:00
Kai Koehne
f773ddd026 Fix when calling QSurfaceFormat::setDefaultFormat before Q*Application
Fixes a regression introduced in commit 51767affb.
QOpenGLContext::globalShareContext requires a QGuiApplication to exist.
This wasn't required so far.

Task-number: QTBUG-56614
Change-Id: I07bcf434fca536c4dc50feee7ea17eb541fd589a
Reviewed-by: Liang Qi <liang.qi@qt.io>
2016-10-21 14:45:30 +00:00
Timur Pocheptsov
512934f7e7 HTTP/2 - fix the handling of PUSH_PROMISE
HTTP/2 allows a server to pre-emptively send (or "push") responses (along
with corresponding "promised" requests) to a client in association with a
previous client-initiated request. This can be useful when the server
knows the client will need to have those responses available in order
to fully process the response to the original request.

Server push is semantically equivalent to a server responding to a request;
however, in this case, that request is also sent by the server, as a
PUSH_PROMISE frame.

The PUSH_PROMISE frame includes a header block that contains a complete set
of request header fields that the server attributes to the request.

After sending the PUSH_PROMISE frame, the server can begin delivering the
pushed response as a response on a server-initiated stream that uses the
promised stream identifier.

This patch:
- fixes the HPACK decompression of PUSH_PROMISE frames;
- allows a user to enable PUSH_PROMISE;
- processes and caches pushed data for promised streams;
- updates auto-test - emulates a simple PUSH_PROMISE
  scenario.

Change-Id: Ic4850863a5e3895320baac3871a723fc091b4aca
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-21 14:27:06 +00:00
Tor Arne Vestbø
ab0ba66864 Apple OS: Handle QSetting strings with embedded zero-bytes
Saving strings with embedded zero-bytes (\0) as CFStrings would
sometimes fail, and only write the part of the string leading
up to the first zero-byte, instead of all the way to the final
zero-terminator. This bug was revealed by the code-path that
falls back to storing e.g. QTime as strings, via the helper
method QSettingsPrivate::variantToString().

We now use the same approach as on platforms such as Windows
and WinRT, where the string produced by variantToString() is
checked for null-bytes, and if so, stored using a binary
representation instead of as a string. For our case that
means we fall back to CFData when detecting the null-byte.

To separate strings from regular byte arrays, new logic has
been added to variantToString() that wraps the null-byte
strings in @String(). That way we can implement a fast-path
when converting back from CFData, that doesn't go via the
slow and lossy conversion via UTF8, and the resulting QVariant
will be of type QVariant::ByteArray. The reason for using
UTF-8 as the binary representation of the string is that
in the case of storing a QByteArray("@foo") we need to
still be able to convert it back to the same byte array,
which doesn't work if the on-disk format is UTF-16.

Task-number: QTBUG-56124
Change-Id: Iab2f71cf96cf3225de48dc5e71870d74b6dde1e8
Cherry-picked: 764f5bf48c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2016-10-21 09:30:43 +00:00
Anton Kudryavtsev
10b9321c1d qxcbconnection.cpp: fix warning about unused function
isXIEvent() is used iff XCB_USE_XINPUT2 is defined.
So move declaration of the function in XCB_USE_XINPUT2 define scope.

Change-Id: I6f045cd07d572ee7425ee6edc5ac73dcf0afdb37
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-21 09:14:05 +00:00
Anton Kudryavtsev
016b5bc949 Plugins: use reserve() to optimize memory allocations
Change-Id: Id78ce43137e352292a9933222fe2f92d4ff4d69b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-21 09:13:09 +00:00
Frederik Schwarzer
92df823ed6 QFileInfo: fix double sentence in apidoc
Change-Id: Ie1cf32565b2fcb828ec381c45595adad1392e2ec
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-10-21 09:06:50 +00:00
Frederik Schwarzer
ef88bf02ef Fix some typos in docs and apidocs
While "commonest" is still correct English, it's rather old-fashioned
and "most common" predominates Qt's wording style.

Change-Id: I20d72c098ee40b2a89f91e42f7208fe5b87286a2
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-10-21 09:06:13 +00:00
Erik Verbruggen
49d3bb0058 Normalize realpath(3) output to composed form
All strings coming out of POSIX API calls are converted to composed form
by QFile::decodeName. Do the same for realpath(3) output. This is
especially important for HFS+, which will store file names in decomposed
form, and APIs will therefore return strings in decomposed form.

Task-number: QTBUG-55896
Change-Id: I5e51f4e5712ff26bf9644cbcf9a9603995748892
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-21 07:49:00 +00:00
Kai Koehne
557abfc327 QUrl effective TLDs: update table
There are more than 1000 new entries since the table has been
generated the last time. The autotest needs to be tweaked
because the rules for the .mz domains have changed; use the
.ck domain instead.

Change-Id: Ife692afd46ac41a66604e966e5e8cb57c7aa649c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-21 06:29:53 +00:00
Marc Mutz
294c870bed QImage: cache colortable size
Coverity threw an error that in the else branch, the expression
colorTableRGB16[tableSize - 1] accesses uninit'ed data. The working
theory is that it fails to perform the implication

   isEmpty() → size() == 0

This patch, therefore, checks for size() == 0 instead of isEmpty(),
which is hardly less readable and might help Coverity understand the
code better.

Then again, Coverity might not understand that the tableSize can never
be negative.  If that's the case, another patch will be needed, but
let's try the simpler solution first.

Coverity-Id: 11420
Change-Id: Ibfe2a798c55af95c8001fa909aa94a6c5bc7c647
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2016-10-21 06:19:21 +00:00
Marc Mutz
b6df725750 Fix UB (ininited pointer read) in qt_egl_device_integration()
The m_integration member of DeviceIntegration, a naked pointer, was
checked for nullptr in the DeviceIntegration ctor, but never set to
nullptr.

Fix by init'ing it to nullptr in the ctor-init-list.

Coverity-Id: 172056
Change-Id: Ia1dc9b67b9d16a991bba82338eedb19de68f91d8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-21 06:19:13 +00:00
Tor Arne Vestbø
837781db52 Add Qt::ISODateWithMs date format, with support in QTime/Date/DateTime
The Qt::ISODate format strips milliseconds, so a new format is introduced
that keeps the milliseconds. A new format was chosen over fixing the
existing format due to the behavioral change of suddenly having ms
as part of Qt::ISODate.

Change-Id: If8b852daed068cce8eee9b61a7cd4576bc763443
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-20 15:15:40 +00:00
Andy Shaw
50b9d8a931 Windows: Fix regression in QFSFileEnginePrivate::nativeWrite()
Change 0696566b1e caused the block
size to be incorrect for data > 32MB.
Since bytesToWrite changes within the do...while loop, then the block size
can potentially change too each time. So it needs to be recalculated each
time rather than just once.

Task-number: QTBUG-56616
Change-Id: I9880d0985f2d0242c30e67230be7271eb806db95
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 683c9bc4a8)
2016-10-20 12:08:42 +00:00
Marc Mutz
0cccc23478 QNetworkReplyHttpImpl: Fix UB (member call) in destruction sequence
Found by UBSan:

  qnetworkreplyhttpimpl.cpp:457:29: runtime error: member call on address 0x602000009cf0 which does not point to an object of type 'QNetworkReplyHttpImpl'
  0x602000009cf0: note: object is of type 'QObject'
   1e 00 80 18  20 e0 bb 12 54 7f 00 00  00 f2 00 00 70 61 00 00  02 00 00 00 ff ff ff 06  08 00 00 00
                ^~~~~~~~~~~~~~~~~~~~~~~
                vptr for 'QObject'
    #0 0x7f541461b71b in QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate() qnetworkreplyhttpimpl.cpp:457
    #1 0x7f541461b7f0 in QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate() qnetworkreplyhttpimpl.cpp:458
    #2 0x7f540f26df1a in QScopedPointerDeleter<QObjectData>::cleanup(QObjectData*) qscopedpointer.h:54
    #3 0x7f540f26df1a in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::~QScopedPointer() qscopedpointer.h:101
    #4 0x7f540f26df1a in QObject::~QObject() qobject.cpp:940
    #5 0x7f540e915f6e in QIODevice::~QIODevice() qiodevice.cpp:416
    #6 0x7f5414599bae in QNetworkReply::~QNetworkReply() qnetworkreply.cpp:444
    #7 0x7f54145e6f5e in QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl() qnetworkreplyhttpimpl.cpp:239
    #8 0x7f54145e6f5e in QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl() qnetworkreplyhttpimpl.cpp:242
    #9 0x7f54144b3539 in void qDeleteAll<QList<QNetworkReply*>::const_iterator>(QList<QNetworkReply*>::const_iterator, QList<QNetworkReply*>::const_iterator) qalgorithms.h:317
    #10 0x7f54144b3539 in void qDeleteAll<QList<QNetworkReply*> >(QList<QNetworkReply*> const&) qalgorithms.h:325
    #11 0x7f54144b3539 in QNetworkAccessManager::~QNetworkAccessManager() qnetworkaccessmanager.cpp:496

Fix by moving the emission of the QNetworkReplyHttpImpl::abortHttpRequest()
signal from ~Private, when the public object is merely a QObject anymore,
to ~QNetworkReplyHttpImpl(), when the public class is still itself.

Change-Id: Ifb3b19f6d180452bdf3fc26f54629ef780a5d9d9
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-10-20 11:03:37 +00:00
Oliver Wolff
0e61323c87 winrt: Added timeout for cancellation of socket read operation
As the function runs on the XAML thread it can make the app
unresponsive/wait forever on a socket close. Thus we should not wait
forever but have a timeout. If the timeout is hit the socket is not
closed properly but hard reset.

Change-Id: I82e9425c0f8195e3465027fdc2417a93f1c1ad91
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-10-20 07:02:10 +00:00
Andy Shaw
2c0033983b macOS: Don't override the set tab text color with white
Originally on macOS it would override any tab text color with white
for the active tab as it would set it directly on the option palette
inside the style code. This would cause it to ignore any changes done
by the user in a changed option, via setTabTextColor or in a proxy
style. Therefore the setting of the color should be done when the style
option is initialized and only if the tab text color has not been
set by the user.

This has the added effect of making it easier to change the color for
tabs via a stylesheet since it will not be overridden in the style but
setup correctly in the option instead.

Change-Id: Ic338e96470112cba71d422bce79e664df0cb188a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-19 15:48:48 +00:00
Andy Shaw
cd081ca96a macOS: Only show menu and allow dragging on proxy when a file path is set
If there is no file path set then it should not be possible to see a
menu or to drag from a proxy icon in the titlebar.

Task-number: QTBUG-56082
Change-Id: Ib8305bcab5717bc8cb7ddabbb079f152debbdded
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-19 15:48:39 +00:00
Andy Shaw
b38145a11d PDF: Handle monochrome images correctly
When an image is considered to be monochrome then it should not be
making the white part of the image transparent, the colors should be
kept as is.

Task-number: QTBUG-56489
Change-Id: I3621ca7be2a0ebe6852363f860c0b3de28d28a31
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-19 15:48:31 +00:00
Sérgio Martins
6cfdfad7d4 Don't crash while parsing malformed CSS
Task-Id: QTBUG-53919
Change-Id: I31a0e218e4e41ee217f8f87164f115450d69d42c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-10-19 15:38:56 +00:00
Clinton Stimpson
ee22c6505a xcb: fix passing of focus from child to its top level QWindow
With the client message _NET_ACTIVE_WINDOW, not all window managers
will pass focus from a child window to its root window, Detect this
child-to-root case, and use xcb_set_input_focus() instead.

Task-number: QTBUG-39362
Change-Id: Ib32193018e3b725b323f87d7306c9ae9493d78a7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-10-19 15:24:22 +00:00
Marc Mutz
46078f3374 QOrderedMutexLocker: unlock in reverse order of locking
This is an improvement for the following reasons:

- Should mutex locking allocate any kind of resource,
  unlocking in reverse order will free those resources
  in inverse order, which helps typical allocators.
- If the lock pair is contended, by unlocking in the
  same order as locking, we were allowing the waiting
  thread to wake up to take the first lock just to
  find that the second lock is still held by someone
  else.

The order of unlocking has no influence on the correct-
ness of the algorithm.

Change-Id: Id16b0342aef325c14a7bd8836d3a75db68ef2588
Reviewed-by: David Faure <david.faure@kdab.com>
2016-10-19 13:25:01 +00:00
Albert Astals Cid
8249f490ff Document QClipboard::mimeData can be null
The current wording (reference) seems like it's always a pointer to valid stuff

Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6deaaaa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-19 08:58:18 +00:00
Andy Shaw
683c9bc4a8 Windows: Fix regression in QFSFileEnginePrivate::nativeWrite()
Change 0696566b1e caused the block
size to be incorrect for data > 32MB.
Since bytesToWrite changes within the do...while loop, then the block size
can potentially change too each time. So it needs to be recalculated each
time rather than just once.

Task-number: QTBUG-56616
Change-Id: I9880d0985f2d0242c30e67230be7271eb806db95
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-10-19 08:05:32 +00:00
Anton Kudryavtsev
a9835dfe55 QJsonDocument: fix repetition of 'document' in doc
Change-Id: I8909336274b2c72e526d63fe9e21368550de6678
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-19 07:34:56 +00:00
Friedemann Kleint
f939e7ea73 Testlib: Move classes inheriting QBenchmarkMeasurerBase to separate header
QBenchmarkTimeMeasurer uses the 3rd party header cycle_p.h which may
include windows.h on Windows (32bit). This can cause clashes in qmltest,
which uses QBenchmarkMeasurerBase. Move the derived classes to a separate
header to prevent this.

Change-Id: I943a11c32a575594e6e79e722e8809b42de35092
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-19 06:21:51 +00:00
Anton Kudryavtsev
6a7b683817 Plugins: optimize string usage
Prefer QStringRef methods to avoid allocations.

Use startsWith/endsWith rather than comparing substrings;
and avoid substrings where references suffice.

Use new QStringList::join(QL1S).

Change-Id: I46c44aca96578633370006d613eb0ac13f7cfc03
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 17:52:04 +00:00
Anton Kudryavtsev
a769b34754 QLocale: optimize string usage
Use QStringBuilder more.
Avoid quadratic behavior when prepending zeros
in a loop, prepend whole string intead.
Use const API more for CoW types.

Change-Id: If114107dc3d9876b9a7c77bc0071878cb6e00892
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 17:45:10 +00:00
Anton Kudryavtsev
f620ad1499 QJsonDocument: enable NRVO for gcc in toJson()
Change-Id: I1b639272d38f8463b17a85a406addb74bb572756
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 17:42:27 +00:00
Anton Kudryavtsev
3d76031217 QJsonDocument: don't re-call QVariant::type() in if-else chain
Replace if-else chain with switch statement.

Change-Id: Idd2d0198178685bdaf8f77fa6cae5025ea9de561
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 17:42:02 +00:00
Marc Mutz
e80faf3db6 QTimer: don't circumvent <chrono> safety net
By templating on the <chrono> types and unconditionally using
duration_cast to coerce the duration into a milliseconds, we
violate a principal design rule of <chrono>, namely that non-
narrowing conversions are implicit, but narrowing conversions
need duration_cast. By accepting any duration, we allow non-
sensical code such as

   QTimer::singleShot(10us, ...)

to compile, which is misleading, since it's actually a zero-
timeout timer.

Overloading a non-template with a template also has adverse
effects: it breaks qOverload().

Fix by replacing the function templates with functions that
just take std::chrono::milliseconds. This way, benign code
such as

    QTimer::singleShot(10s, ...)
    QTimer::singleShot(10min, ...)
    QTimer::singleShot(1h, ...)

work as expected, but attempts to use sub-millisecond
resolution fails to compile / needs an explicit user-
provided duration_cast.

To allow future extension to more precise timers, forcibly
inline the functions, so they don't partake in the ABI of the
class and we can later support sub-millisecond resolution by
simply taking micro- or nano- instead of milliseconds.

Change-Id: I12c9a98bdabefcd8ec18a9eb09f87ad908d889de
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 16:06:28 +00:00
Anton Kudryavtsev
4a4368df56 QAndroidPlatformTheme: wrap char* in QL1S to avoid warnings
Change-Id: Idcc70038051b03366aa447f3a4c48912d3f911d5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-10-18 15:17:03 +00:00
Tor Arne Vestbø
4cb614c7ab Apple OS: Handle QSetting strings with embedded zero-bytes
Saving strings with embedded zero-bytes (\0) as CFStrings would
sometimes fail, and only write the part of the string leading
up to the first zero-byte, instead of all the way to the final
zero-terminator. This bug was revealed by the code-path that
falls back to storing e.g. QTime as strings, via the helper
method QSettingsPrivate::variantToString().

We now use the same approach as on platforms such as Windows
and WinRT, where the string produced by variantToString() is
checked for null-bytes, and if so, stored using a binary
representation instead of as a string. For our case that
means we fall back to CFData when detecting the null-byte.

To separate strings from regular byte arrays, new logic has
been added to variantToString() that wraps the null-byte
strings in @String(). That way we can implement a fast-path
when converting back from CFData, that doesn't go via the
slow and lossy conversion via UTF8, and the resulting QVariant
will be of type QVariant::ByteArray. The reason for using
UTF-8 as the binary representation of the string is that
in the case of storing a QByteArray("@foo") we need to
still be able to convert it back to the same byte array,
which doesn't work if the on-disk format is UTF-16.

Task-number: QTBUG-56124
Change-Id: Iab2f71cf96cf3225de48dc5e71870d74b6dde1e8
Cherry-picked: 764f5bf48c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-18 14:35:08 +00:00
Friedemann Kleint
158231e073 QCommonStyle::standardIcon: Add 64x64 Qt logo pixmap for SP_TitleBarMenuButton
For SP_TitleBarMenuButton, the style defaulted to standardPixmap()
would return a 16x16 XPM encoded pixmap from qcommonstylepixmaps_p.h.
This resulted in a too-small menu icon when displaying QMdiSubWindow
with the default icon set on a High DPI screen with
Qt::AA_DisableHighDpiScaling set.
Add a larger icon from resources.

Change-Id: If88c606a31ee9499f520089365f685ec75e0ddad
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-18 14:08:41 +00:00
Marc Mutz
ed5d04fcfc QOrderedMutexLocker: fix UB (pointer comparison with <) in static relock()
Comparing pointers that do not point into the same array using
operator< is UB. You need to use std::less<>.

The QOrderedMutexLocker ctor already used std::less to compare
pointers, but the static relock() function was not fixed.

Amends 5007352164.

Change-Id: I584d382391dd5a2af75020a4e77f3e42ee5d5708
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2016-10-18 13:46:11 +00:00
Frederik Schwarzer
cbb2ba23e2 Qt 5.7 requires C++11 so this hint is not needed anymore
Change-Id: I7e267c69ccf3835e4d69b4c612f1baaf40d8be39
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-10-18 12:14:17 +00:00
hjk
983d9e0c1a Fix DBus compilation
Don't use C++11 nullptr in 5.6.

Change-Id: I57e9595b2e1cede995eed09878bf02ee30482659
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net>
2016-10-18 08:04:45 +00:00
Oswald Buddenhagen
7c1d640c0c stop exporting the library versions
all users of this functionality have been removed, and not emitting the
version info saves quite some noise from the generated files.

the reason why the users have been removed is that it was unreliable in
the first place: if a dependency is found without pkg-config, no version
information would be available.

the extraction of the version via pkg-config itself is kept in place, as
configure tests could be potentially optimized by utilizing it.

this reverts much of commit 48b4e0bf6f.

Change-Id: I01917f3b2a56b747d7cc54955141d20d23d0990a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-18 05:59:14 +00:00
Lars Knoll
a81b399345 Compile uic and qdbusxml2cpp more often against libbootstrap
Otherwise, those tools do not compile in configurations which exclude
features that these tools require (e.g., -no-feature-textcodec).

Change-Id: I9f27257221755a35a48ae2efa9df63f1a319118e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-10-18 05:58:40 +00:00
Eskil Abrahamsen Blomfeldt
ce2ae6ebd8 Windows: Fix rendering of MingLiU fonts at some scales
At certain sizes and scales, GDI will clip away the bottom line
of pixels when rendering the MingLiU fonts. Since DirectWrite
renders it correctly, we force the use of DirectWrite in this case.
This also requires supporting classic GDI rendering in the DirectWrite
engine, to make sure the rendering still looks correct.

Note that this does not cover the corner case where the font is loaded
directly from data with QRawFont.

[ChangeLog][QtGui][Windows] Fixed rendering error when using the
MingLiU fonts at certain combinations of pixel size and scale.

Task-number: QTBUG-49346
Change-Id: Ie026c0d5932717858c4536dae077013eb6a1eafc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-10-17 15:39:42 +00:00
Kai Koehne
9d696af6cd Disable WindowsContextHelpButtonHint for Dialogs that are not QWidget
Do not set WindowsContextHelpButtonHint directly in Windows QPA plugin,
but instead rely on logic in QWidgetPrivate::adjustFlags for widgets.

If WindowsContextHelpButtonHint is set, a '?' button is shown in the
windows decoration. If pressed, an EnterWhatsThisMode event is generated
that is consumed in QApplication that then calls into the QWhatsThis
singleton, which changes the mouse cursor, and informs the top-level
QWidgets about the state change etc.

For QGuiApplications though the event is not generated, which makes the
button useless by default. In addition, QWhatsThis only works with top
level QWidgets, not e.g. QQuickWindows. So for apps using QApplication
and QtQuick.Controls this means that the "What's this mode" is never
exited.

Given that the paradigm is somewhat outdated on the desktop it is unlikely
that Qt Quick Controls will implement support for What's this. Anyhow,
QWidgetPrivate::adjustFlags sets the hint for Qt::Dialogs, too,
so there's no need to set it the Windows QPA plugin.

[ChangeLog][Windows] 'What's this' button is now shown by default
only for QWidget dialogs.

Task-number: QTBUG-56239
Change-Id: I1ea3e92ade723b5865c8f2e19674413433658942
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-10-17 13:31:53 +00:00
Liang Qi
d90b155c60 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	mkspecs/macx-ios-clang/features/resolve_config.prf
	src/testlib/qtestcase.qdoc

Change-Id: Icefa63056ffb37106f35299a8f19165535571799
2016-10-17 11:02:54 +02:00
hjk
d71bb504a6 Fix QtGui compilation without OpenGL
Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6def516
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-16 15:14:13 +00:00
J-P Nurmi
063997f44f QMenu: don't force platform instance creation on construction
There's a conflict between QGtk3Menu and QDbusPlatformMenuBar. The
problem is that on Unity the type of the platform menu instance must
be different depending on whether the menu is in the global menubar or
a standalone context menu.

Since QMenu creates a platform menu instance at construction time, it
does not yet know whether it will be added into a menubar. QMenuBar
checks that the QMenu already has a platform menu instance, and passes
it to the platform menubar. As a result, a QGtk3Menu instance is passed
to QDbusPlatformMenuBar.

Currently, a standalone QMenu does not use the native platform menu
instance. Only menus that are added to a QMenuBar do. Therefore we
don't need to create the platform instance when QMenu is constructed,
but only after it is added to QMenuBar. The platform menu instance
creation is implemented in QMenuBarPrivate::getPlatformMenu(), and
QMenu::setPlatformMenu() calls syncPlatformMenu() to take care of
syncing the QMenu properties and actions to the new platform menu
instance.

The macOS-specific methods QMenu::toNSMenu() and QMenu::setAsDockMenu()
rely on the platform menu instance, and must therefore create it on
demand.

This is a hot fix for the release blocker, not a long term solution.
In the future, if standalone QMenus are made to use native platform
menu instances, the instance must be created lazily when the menu is
about to be made visible.

Task-number: QTBUG-56526
Change-Id: I044933cabb1639406fe47908dfc4b1903af214d1
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-16 14:10:29 +00:00
Jake Petroules
1cc6cc56e1 Fix tvOS build
Change-Id: I128605050b68787f8c9671f4aa8de0a1667301d8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2016-10-16 00:11:38 +00:00
Jake Petroules
5d1e5003be Explicitly mark old macros as compatibility synonyms
Change-Id: Ia471fff171b3bc3de40e166e18f30e6782581611
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2016-10-16 00:11:24 +00:00
Richard Moe Gustavsen
b00565bc28 iOS: check if qApp is still valid before accessing it
When the application quits, the iOS plugin can be told
to delete after qApp has been set to null. So we
need to add a check for this, to avoid error messages.

Change-Id: I687e0b26e0c54fdd5a8539fe0f31b2e756ea92d8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 22:14:28 +00:00
Oswald Buddenhagen
d976cee1e5 make use of QT_REQUIRE_CONFIG() in platformsupport modules
Change-Id: I26fbe75c65c10d68454e64e306f7155367e66cf6
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:56 +00:00
Oswald Buddenhagen
f25afef61d rely on transitive library dependencies for freetype/fontconfig
so far, we have been delaying the linking, because we didn't want to
make the monolithic platformsupport module pull in spurious
dependencies. however, now that the module was split, there is no need
to play such games any more.

a nice effect of this is that the hideous qpa/*unixfontdatabase.prf
files disappear, and finally freetype_dependency.pri also becomes
trivial and is thus inlined.

Change-Id: I255376d592625542310a31222eb6ac965943df99
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:48 +00:00
Oswald Buddenhagen
135fcd5992 port to modularized platformsupport libraries
Change-Id: I20eb0e33abfd70b6a5240e7b6b0aa0425f2d2ee7
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:41 +00:00
Oswald Buddenhagen
ea913750b8 create modularized version of qtplatformsupport module
lumping together all kinds of unrelated stuff has caused problems with
spurious dependencies from the beginning. as the modularization infra is
now in a state which supports many small private libraries just fine,
take advantage of it.

Change-Id: Ic40f47ce76a308bbfd32deae281f6f064fe1ef4c
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:33 +00:00
Oswald Buddenhagen
ec774500fb cleanup related to transitive dependencies
public uses of external libraries are automatically transitive now, so
we can remove some parts which were only meant to pull in transitive
dependencies manually.

this is particularly good for includes() of parts of QtPlatformSupport,
which actually redundantly pulled in the library's sources.

this required making the freetype and fontconfig dependencies public,
which is ok, as in the end, they are used only by platform plugins, so
there is no point in making them private, as plugins are not linked
against anyway (except statically, but there public vs. private doesn't
apply anyway).

Change-Id: Ia2a32f50dc0f8472285675a0903e6ecd142a03b2
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:26 +00:00
Oswald Buddenhagen
9a088e7869 use helper libs via QMAKE_USE
for that, qt_help_lib.prf gains the ability to write "external module
pri" files that contain suitable information for QMAKE_USE.

these files have a bunch of limitations:
- they are not installed, because a) they are not relocatable and b) the
  helper libs' headers are not installed, either
- it won't work with qmake -r, which is ok, as qt5 does not build with
  qmake -r anyway
- deps are not transitive, neither at build nor at use time

the freetype, harfbuzz-ng, pcre, and png helper libs have been adjusted
accordingly, and their uses replaced with QMAKE_USE instances. this also
allowed inlining the now trivial {harfbuzz,pcrc,png}_dependency.pri
files. freetype_dependency.pri remains due to its funkiness.

Change-Id: I16890eecb122e34ec49f3d3e68380d1ea71a198a
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:10 +00:00
Oswald Buddenhagen
81755e9623 get rid of Q_FONTCONFIGDATABASE define
use fontconfig feature directly instead.
easier to understand data flow, and less noisy compiler command lines.

Change-Id: If80af4b08933049d553df685b41422d15e1e4f5c
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-15 18:45:04 +00:00
Tor Arne Vestbø
e9110b162c iOS: Report correct physical DPI for iPhone 7 Plus
Task-number: QTBUG-56509
Change-Id: Ibae94262c2a4c917aeca00cb1a1c28e5ae60f0c4
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-10-14 15:16:52 +00:00
Leena Miettinen
3189313f22 Doc: Fix typo in QtStyledItemDelegate::paint() docs
Task-number: QTBUG-56399
Change-Id: Iaace0ed05098ab6d880b06a40d8e13aa9288c5ec
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2016-10-14 13:28:47 +00:00
Albert Astals Cid
adbafab4ef Specify timeout is in milliseconds
Change-Id: I465b343b6fe64c8d1ce17e34be5f864e8556d374
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-14 10:34:01 +00:00
Erik Verbruggen
936e132122 Add optimize-for-size case to ucstrncmp
The SSE code had a case where tail-loop unrolling was disabled when
optimizing for size. What would be even shorter, is to just do a
straight-forward loop over the arrays and compare them. For anything
else, we can just go for speed.

Change-Id: Ifb31650e10e41409972a38014067dbd2927674c9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-10-14 10:17:51 +00:00
Oswald Buddenhagen
aec9cebf8c make setting OPENSSL_LIBS_{DEBUG,RELEASE} work with dynamic builds
while it's probably not really necessary (which is why it wasn't
implemented before), just ignoring the options is somewhat inconsistent
and a deviation from historical behavior.

Task-number: QTBUG-55530
Change-Id: I9441bf7be50ab5c997bb745e2525048ca23e4cd5
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2016-10-14 08:56:46 +00:00
Kai Koehne
f71aa48138 Fix resolution of OPENSSL_LIBS in ssl.pri
Task-number: QTBUG-55530
Change-Id: Icc5ae9849e41479732eb44d01d9ea37aa3da16f8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-10-14 08:56:32 +00:00
Laszlo Agocs
2b9fe7d42d eglfs: clean up includes in the shared kms code
Avoid unnecessary EGL and eglfs-specific includes in order to
have a clearer view of the dependencies.

Change-Id: Ifbd7dc4bd64024cc1ee48cd9f2607d1b5cdda1a2
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-10-14 08:45:03 +00:00
Eskil Abrahamsen Blomfeldt
9ebfacb688 Android: Re-enable asset extraction for styling
When the new configure system was introduced, it accidentally
disabled automatic extraction of style assets on Android.
This patch puts it back in.

Note that the style extraction is not specific to Qt Widgets,
but rather Qt Gui, like other QPA options.

Task-number: QTBUG-56328
Change-Id: Ica33c3562c6dd6483050075f5c8ed5d28cd621a4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2016-10-14 08:21:12 +00:00
Anton Kudryavtsev
fca0aa676e QPathClipper: remove homebrew 'qRemoveDuplicates' algorithm
Use std::unique

Change-Id: Iae2e80d16b5a443ee5023224f48c325197c23029
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-14 08:21:02 +00:00
Tor Arne Vestbø
6a35e77ef3 Change confusing Q_DEAD_CODE_FROM_QT4_FOO define
Commit c5db8fc74 changed all instances of Q_WS_FOO to have the prefix
Q_DEAD_CODE_FROM_QT4 instead, to make it clearer when reading the code
that the code in question was a left-over from Qt4, when we used
Q_WS_ defines instead of Q_OS_ defines.

This worked well for cases of #ifdef Q_DEAD_CODE_FROM_QT4, but less so
for cases of #ifndef Q_DEAD_CODE_FROM_QT4, where the code was actually
unconditionally included.

To make this even clearer, the defines have been replaced by checks for
1 or 0, with a comment describing how the code used to look in Qt4. The
use of constants in the check also makes it easier for editors to parse
the condition and show visually that the code is defined out.

Change-Id: I152070d87334df7259b417cd5e17d7b7950379b7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-10-14 08:19:29 +00:00
Oliver Wolff
dcf7da7c93 winrt: Do not lose initial data for TCP connections
When a client connects and sends data immediately it was possible that
initial data was lost as the state was set too late. If the callback was
called before the state was set the socket engine just discarded the
data. So the state has to be set before the callback is registered.

The new implementation needs a list of pending read operations. It can
happen that the "readyRead" callback is triggered directly while
"put_Completed" is called. The callback reassigns readOp which causes a
"function not implemented" exception when it jumps back to the
"put_Completed" call in "initialize"

Task-number: QTBUG-55889
Change-Id: I5f52e3377b6176f1f90f227ac0bf52b60ee2d95a
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-10-14 05:53:06 +00:00
Tor Arne Vestbø
d8c72f4154 iOS: Take advantage of new synchronous API for QPA event delivery
By using the SynchronousDelivery specialization instead of flushing all
window system events, we remove the risk of flushing an event that was
added without our knowledge.

For example, QGuiApplicationPrivate::processMouseEvent() used to prepend
a mouse move event to the QPA queue, which is why we had a check for
QWidgetWindow when flushing geometry changes. processMouseEvent no longer
sends the move event via the QPA queue, so that's no longer an issue,
but if it were to be reintroduced, we wouldn't need to check for
QWidgetWindow, as we're not flushing all events anymore.

Change-Id: Ib346ea9501cd88ddda6c2137981d3eb0922192a0
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-14 01:57:43 +00:00
Laszlo Agocs
815341dbec eglfs: Fix deformed mouse cursor image
In 5.8 cr got changed to QRect from QRectF. This is incorrect without
adjusting the calculations based on it since QRect and QRectF's right()
and bottom() differs by 1.

Switch back to QRectF.

Task-number: QTBUG-56478
Change-Id: I5bde4ee59ca9bbf62f65493c66f42707032bfc80
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-10-13 19:07:23 +00:00
J-P Nurmi
7740f5e98b QMimeXMLProvider: add missing out-of-line destructor
Fixes build with the latest GCC 7.

Change-Id: I4900a256ed1c6cb177d7f94d54e5b07c06ddad08
Task-number: QTBUG-56514
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-10-13 16:54:30 +00:00
Tor Arne Vestbø
542a76c490 macOS: Remove workaround for including AppKit.h with slots defined
The workaround doesn't seem to be needed anymore, and wasn't applied
uniformly anyways. If it turns out AppKit still needs this workaround
we should add CONFIG += no_keywords to cocoa.pro, instead of trying to
wrap every single include of AppKit in a undef slots dance.

Change-Id: Ia1b15137c03abcc92f0dd246796622772e99ca68
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-13 16:52:02 +00:00
Tor Arne Vestbø
c79710a181 macOS: Remove QNSView member m_window in favor of going via m_platformWindow
The two should never be out of sync, but by having them as separate members
we risk that they do. By going though m_platformWindow for QWindow access,
it's also more clear in the callsites that we're dealing with a QWindow
instead of a NSWindow, as referenced though self.window. Finally, removing
the member slims down memory use of a QNSView, however small.

Change-Id: Iec96cebf813fae82d3af339331781419f234c28b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-13 16:52:01 +00:00
Frederik Gladhorn
23c7816f44 Doc: add notes about validator and completer in QComboBox
When setting the editable property to false, we delete the internal
QLineEdit used by QComboBox. Add comments that this results in the loss
of validator and completer.

Task-number: QTBUG-56035
Change-Id: Ife04ac2b9bb3f32fae5328f1ec73b1d5d769d52c
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Nico Vertriest <nico.vertriest@theqtcompany.com>
2016-10-13 15:58:57 +00:00
Tor Arne Vestbø
2f505b79a4 macOS: Use QPointer to track QNSView -> QCocoaWindow
Change-Id: I4de581dda03d25e781112eff34de28dfd1797a7f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-10-13 15:56:12 +00:00
Alexandru Croitor
cd1d114140 Unset qgl_current_fbo when the default FBO is bound
Previously when a new QOpenGLFramebufferObject was bound, the
QOpenGLContextPrivate::qgl_current_fbo member was also updated to point
to this new object.
But if a user called QOpenGLFramebufferObject::bindDefault(),
qgl_current_fbo was not unset, meaning that if the FBO object would be
deleted at some point, qgl_current_fbo would be a dangling pointer.

This patch makes sure to clear the value of qgl_current_fbo when
bindDefault() is called. It is cleared, and not set to point to another
object because the default platform OpenGL FBO is not backed by a
QOpenGLFramebufferObject.

Task-number: QTBUG-56296
Change-Id: I68b53d8b446660accdf5841df3d168ee2f133a90
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-13 15:38:08 +00:00
Alexandru Croitor
51767affb3 Show warning when setting new default QSurfaceFormat
If a global shared context is created, and afterwards a new default
QSurfaceFormat with a different version or profile is set, it can
lead to issues with context sharing.
The documentation for QSurfaceFormat::setDefaultFormat mentions
this. It would be helpful to actually show a warning in case it
happens.

Change-Id: I71f7ce95496e1ecbfc6a0c7d7bed146ef8dc351e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-10-13 15:38:05 +00:00
Kai Koehne
d023b300b2 Document that am/pm in QDateTime::toString are locale-specific
Change-Id: I28382b25ac94cbfbad4acff1308ddd8baf5ca693
Task-number: QTBUG-55632
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-10-13 15:16:23 +00:00
Liang Qi
6370c3aa71 Merge remote-tracking branch 'origin/5.6' into 5.7
Also bump minimum required Qt version for Android: Ministro updates.

Conflicts:
	src/android/java/src/org/qtproject/qt5/android/bindings/QtActivityLoader.java
	src/android/java/src/org/qtproject/qt5/android/bindings/QtLoader.java
	src/plugins/platforms/android/androidjnimain.cpp

Change-Id: I966f249bebf92da37bfdeb995ad21b027eb03301
2016-10-13 15:18:02 +02:00