Commit Graph

31236 Commits

Author SHA1 Message Date
Friedemann Kleint
8deeb6777d Diaglib: Exclude Win32 window dump functions for WinRT
Change-Id: I1323b2212266b3cd7a355c6c022e3f2d2822f210
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-02-08 21:06:45 +00:00
Marc Mutz
0c50edbe84 QCollator: don't pipe bcp47Name() through QString
Give QCollator access to QLocalePrivate::bcp47Name(), to avoid
both the latin-1 -> UTF-16 conversion in QLocale::bcp47Name(),
as well all as

- the replace('-', '_').toLatin1() call in ICU
- the toLocal8Bit() call in macOS
- the toUtf8() call in Windows

implementations of QCollatorPrivate::init().

This is safe, since, according to https://tools.ietf.org/html/bcp47,
a BCP47 name only contains US-ASCII (ALPHA used, which is defined by
https://tools.ietf.org/html/rfc5234 to be [a-zA-Z] only).

Change-Id: Id56befb1b5a7983494d848cdabf7ebeda377cf9f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-07 19:40:10 +00:00
Marc Mutz
9aaaa8427d QCollatorSortKey: use QExplicitlySharedDataPointer as pImpl
The key is immutable except for assignment and swap,
so don't run the risk of auto-detaching and use the
explicit-detach version of QSharedDataPointer.

Change-Id: Ib2cfe5981e6dfe375d6208289ff58247ef9d4870
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-07 09:50:16 +00:00
Marc Mutz
1401225330 QLoggingRegistry: optimize updateRules()
... by not creating three temporary QVectors just to concatenate them.

There's no QVectorBuilder, so what works well with QStrings doesn't
work well at all with QVectors. The chaining of op+ causes three
temporary QVectors to be created and thrown away.

Instead, use clear() (which preserves the vector's capacity these days),
followed by four op+=.

Change-Id: I300bd35544ea41037d28db0f48f210c33c826b85
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-02-07 09:50:00 +00:00
Samuli Piippo
3de596a321 kms: calculate physical size if actual size is unknown
Use the default dpi of 100 to calculate physical size of the display,
if KMS output returns 0 as the size and the size was not set via
environment variable.

Change-Id: If310592b2694a46d2fab464b21ec1765a5033933
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-06 20:37:18 +00:00
Friedemann Kleint
4bf0ddb3f1 Fix some qdoc warnings for 5.9
Fix warnings:
src/network/access/qhstspolicy.cpp:158: warning: Undocumented parameter 'expiry' in QHstsPolicy::setExpiry()
src/network/access/qhstspolicy.cpp:178: warning: Undocumented parameter 'include' in QHstsPolicy::setIncludesSubDomains()
src/network/access/qhstspolicy.cpp:178: warning: Can't link to 'includeSubdomains()'
src/widgets/kernel/qsizepolicy.cpp:402: warning: Cannot find 'transposed(...)' in '\fn' QSizePolicy QSizePolicy::transposed()
src/widgets/kernel/qsizepolicy.h:165: warning: No documentation for 'QSizePolicy::transposed()'
src/widgets/util/qundostack.cpp:164: warning: Undocumented parameter 'obsolete' in QUndoCommand::setObsolete()

Fix the signature of the QStaticByteArrayMatcher member functions. The warnings
src/corelib/tools/qbytearraymatcher.cpp:372: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from)
src/corelib/tools/qbytearraymatcher.cpp:382: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from)
remain, though since apparently qdoc is thrown off by the constructor.

Change-Id: I157359a881ff3fbc80d2eeb52dd5c27249d009c4
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-06 16:58:04 +00:00
Friedemann Kleint
91120599ae QRasterPlatformPixmap::createPixmapForImage(): preserve DPR
Remove the line setting the DPR from the source; the image
is moved.

Task-number: QTBUG-58653
Task-number: QTBUG-58645
Change-Id: I2de94681459dba1d69dee06da44617fb9fa35bcc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-02-06 16:57:41 +00:00
Oswald Buddenhagen
4e5b013e32 stop exporting QT.*.{libexecs,plugins,imports,qml} in module pris
these are not referenced anywhere, and neither should they, as they are
not relevant to _using_ these modules in any way.

notably, QT.*.bins remains exported - this is because dlls reside there,
so it is necessary for setting up a launch environment.

Change-Id: I7a33c72be6e4789ea29a2fbbcac9588213900b6e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-06 16:33:25 +00:00
Oswald Buddenhagen
f8607045c4 stop exporting QT.*.{MAJOR,MINOR,PATCH}_VERSION in module pris
the only users of module versions in the first place are found within
qt's own prfs; even qbs' qt module importer ignores them. but arguably,
the information makes sense.

however, exporting the same barely useful information redundantly is
plain over the top, so remove the pre-split representation.

Change-Id: Iaee69c86d8b7c8b8ef4f3580b8da333aeb8ade2c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-06 16:33:18 +00:00
Marc Mutz
47a275c0ba Un-export QCollator{SortKey,}Private
This is private API, and used nowhere else except in qcollator*,
so don't export these classes.

Change-Id: I217fde97c60ab0a3e19774ed5a6eed8b156fff1d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-06 09:42:35 +00:00
Kai Koehne
f3b3e79feb Document harfbuzz-ng upstream version
Document version updated in commit
f4ac14944d as 1.4.1.

Change-Id: Ia890158d2e9b5d5dccea9a56342d0261dd0210cb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2017-02-03 18:03:36 +00:00
Allan Sandfeld Jensen
21d3771922 Implement generic text blend routines
Implements a generic version of alphamapblit and alphargbblit so we can have
gamma-corrected blending of text outside of only RGB32 formats.

Change-Id: Ide960276357546558dd713aab66d2af0f2a09a2a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-03 16:24:24 +00:00
Oleg Yadrov
ff34633bd0 QTabBar: fix vertical tabs appearance
Fail to take into account vertical tabs led to that vertical tabs were
displayed wrong in some cases (for example, QMovableTabWidget was
one pixel shorter than it should be).

Task-number: QTBUG-58266
Change-Id: I90411eeaa6055538634b62b5d5bd5fa5013b0015
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-02 17:33:09 +00:00
Allan Sandfeld Jensen
56e9221b36 Implement clip part of qt_alphamapblit_quint16
Adds handling of clipping in qt_alphamapblit_quint16, this
is also preparing for a generic implementation of alphamapblit.

Change-Id: I706f08179abefa74f8de138369a0dc8ce19510fc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-02 16:08:59 +00:00
Eskil Abrahamsen Blomfeldt
3e238113f8 Accept error margin in QGlyphRun/QStaticText test for decorations
When calculating the width of a text for drawing decorations on top,
we use the effective advance of the whole text after it has been
through the shaper.

However, in the case of QStaticText and QGlyphRun, there is shortcut:
Since we only have the glyph indexes and position of each glyph,
we use the position + advance of the right-most glyph to find the
right-most edge of the decoration. For this, however, we use the
advance of the glyph *out of context* of the rest of the string,
because the whole idea is to avoid doing the shaping of the string
with every draw call. In some rare cases, the advance of the
right-most character, in the context of the string, is different
from the advance of the standalone glyph.

Now, one way of fixing this would be to store the width of the
text in QStaticText and QGlyphRun, but since it is a very rare
artifact which is barely visible, I have opted to just work around
it in the test instead, the workaround being to force integer
metrics so that we don't get the small 0.2 pixel error.

Task-number: QTBUG-55217
Change-Id: I8d16d52f2ef27275cabb7d3865aeeaa31617ba3d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-02 15:10:41 +00:00
Konstantin Ritt
89501f9a7b Adjust some tests to pass with latest HB-NG changes
Recent HB changed the way of handling ZWJ/ZWNJ to be more in par
with other engines.

Change-Id: I8abacd195e4b247c8fa6d91ef1086e74da0a1efb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:37 +00:00
Konstantin Ritt
f4ac14944d Update bundled HarfBuzz-NG copy to 1.4.1
Most important changes since 1.0:

- New API.
- Update to Unicode 9.0.0; add 6 more scripts.
- Improved list of language tag mappings.
- OpenType 1.8 Font Variations support.
- Blacklist GDEF table of certain fonts.
- Implement parsing of OpenType MATH table.
- Implement CBDT/CBLC color font glyph extents.
- Fix mark zeroing types of most shapers.
- Allow GPOS cursive connection on marks, and fix the interaction with
  mark attachment.
- Universal Shaping Engine fixes; update to latest draft from Microsoft.
- Implement "shaping" of various Unicode space characters, even
  if the font does not support them.
- Allow MultipleSubst to delete a glyph (matching Windows engine).
- CoreText backend fixes and optimizations.
- Optimizations and other improvements.

[ChangeLog] Bundled HarfBuzz-NG copy updated to 1.4.1

Change-Id: Ie398fad8f6d3b98e3236f62a97caedc649511470
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:34 +00:00
Konstantin Ritt
268b3ec2d1 Update HB-to-Qt bridging code to deal with latest HB
- add support for hb_font_get_{nominal,variation}_glyph() callback
  introduced in 1.2.3
- add support for hb_get_font_h_extents callback
  introduced in 1.1.3
- do not register dummy callbacks for which HB has a bit faster
  implementation (since 1.1.2)
- mark funcs object immutable for the sake of safety

Change-Id: I05281b01d012aed32030ec7cff41a456b5540179
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:31 +00:00
Konstantin Ritt
847fe03d91 Make PDF handling in CoreText shaper consistent with OT
The CoreText backend will remove the PDF token from the end of
the string (instead of producing a zero-width glyph for it),
thus the output will be different from the OpenType backend
and the client will get confused. To fix this, we replace
the PDF token with a visible grapheme starter and handle it after.

Task-number: QTBUG-38113
Change-Id: I1bf6927aa2fa214d33f98afec8eb57bcab639379
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:29 +00:00
Eskil Abrahamsen Blomfeldt
db2054fb2f Fix tst_QFontMetrics::elidedMultiLengthF with some fonts
The QFontMetricsF version of the test should not truncate the
returned values, as the results may then be wrong.

Change-Id: I17f97f846bb723709e695e8866e437d6888d275b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-02-02 15:10:27 +00:00
Eskil Abrahamsen Blomfeldt
57fb8b11cd Fix tst_QTextScriptEngine::thaiWithZWJ() on OpenSUSE
OpenSUSE has a bitmap font called "Waree" while the test
is created for the TrueType font which is available on Ubuntu.
The style names are different, so we can use that to check
that we have the right one.

Change-Id: I808d0d1ecde9f10ed7730dc76ab3818490002ba9
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-02-02 15:10:24 +00:00
Oswald Buddenhagen
dcd5cb9736 Merge remote-tracking branch 'gerrit/dev' into HEAD 2017-02-01 21:00:55 +01:00
Mitch Curtis
f299b565b5 Implement support for Scale directory key according to Icon Theme spec
Qt already supports high DPI icons using the “@nx” approach, where the
device pixel ratio that the image was designed for is in the file
name. However, our implementation of the freedekstop.org Icon Theme
specification did not support the Scale directory key:

https://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout

This meant that users creating icons via QIcon::fromTheme() did not
get high DPI support. This patch fixes that.

[ChangeLog][QtGui][QIcon] Implemented support for Scale directory key
according to Icon Theme Spec. Icons created via QIcon::fromTheme()
now have high DPI support by specifying the Scale in the appropriate
entry of the relevant index.theme file.

Task-number: QTBUG-49820
Change-Id: If442fbc551034166d88defe607109de1c6ca1d28
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-02-01 13:58:01 +00:00
Kai Koehne
ff68e5d667 Document new PCRE2 library
[ChangeLog][Third-Party Code] The PCRE sources that are bundled
with Qt got updated to version 10.22.

Change-Id: Ib334fb4e9766035fd120ef4ab3a249322adba8eb
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-01 10:43:52 +00:00
Thiago Macieira
3ac806b76d De-inline qfloat16 streaming operators in QDataStream
Which allows us to remove the #include. The qfloat16 operator overloads
in the global namespace are giving some trouble on some compilers, for
reasons unknown (could be compiler bug, could be real). So don't #include
the header anywhere else: let the user choose it.

Task-number: QTBUG-58555
Change-Id: I4c9f691516694b90b08ffffd149ef7dff27d0f6a
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-02-01 10:32:35 +00:00
Oleg Yadrov
bc232b2bef QCommonStyle: fix a few typos and formatting issues
Change-Id: I7855795bf010865d5c2b8dd51538c446cdff1974
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-31 22:24:36 +00:00
Gabriel de Dietrich
f6c17c37ba QCursor: Remove old pixmaps and use native cursor on macOS
The DragCopyCursor part is a regression from ed55c4a14c.

Change-Id: Id98a40c372e48f09d8c1824a4c2c1df2a3bdd052
Task-number: QTBUG-58378
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2017-01-31 18:34:12 +00:00
Glen Mabey
3ab7016632 New qfloat16 class
This constitutes a fairly complete submission of an entirely new
floating point type which conforms to IEEE 754 as a 16-bit storage
class.  Conversion between qfloat16 and float is currently performed
through a sequence of lookup tables.  Global-level functions
qRound(), qRound64(), qFuzzyCompare(), qFuzzyIsNull(), and
qIsNull() each with a qfloat16 parameter have been included
for completeness.

[ChangeLog][QtCore] Added new qfloat16 class.

Change-Id: Ia52eb27846965c14f8140c00faf5ba33c9443976
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 14:21:42 +00:00
Glen Mabey
e5d303cb9f tst_qvariant: fix comparison ambiguity for QMetaEnum value
Under certain circumstances, VS2015 reported ambiguous options in using
the operator>(Enum,int) operator.  This change adds a static_cast<qint64>
to remove any ambiguity.  In the process of testing this change, a gap
in the existing logic was identified: the handling (just in the test
code) of large negative enum values.  Consequently, and additional
test case was added, and additional if-conditions were added to account
for that case.

Change-Id: Ife2c471ba4caa4b9a0107722042114e58145c4d0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 14:21:02 +00:00
Erik Verbruggen
36f8816555 Fix 2 clang warnings
The first one was already suppressed for GCC, so also do that for clang:

/Users/erik/dev/qt5-dev/qtbase/tests/auto/corelib/tools/qstring/tst_qstring.cpp:1076:16: warning: format string is not a string literal (potentially insecure)
      [-Wformat-security]
    a.sprintf( zero );
               ^~~~
/Users/erik/dev/qt5-dev/qtbase/tests/auto/corelib/tools/qstring/tst_qstring.cpp:1076:16: note: treat the string as an argument to avoid this
    a.sprintf( zero );
               ^
               "%s",

The second one could also occur with other compilers, so fix it in a
generic way.

/Users/erik/dev/qt5-dev/qtbase/tests/auto/corelib/tools/qstring/tst_qstring.cpp:6382:5: warning: ignoring return value of function declared with
      warn_unused_result attribute [-Wunused-result]
    string.repeated(3);
    ^~~~~~~~~~~~~~~ ~
2 warnings generated.

Change-Id: Id999179e795580a37b5be673ee54d6fa1a006dd7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 09:27:56 +00:00
Kimmo Ollila
60f48dd09a Remove -uvfd flag on INTEGRITY
The uvfd flag is implicitly defined when -Olink is used.
This causes the compiler to generate a warning for every
file being compiled in release mode.

Change-Id: I75759151864da7cf2f6d9c812e466a52c1208444
Reviewed-by: Nikola Velinov <nvelinov@ghs.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-31 09:27:53 +00:00
Kimmo Ollila
8d9da54dd5 Add a configure check for alloca()
Alloca() is not supported on all platforms, like
INTEGRITY on ARM, so adding a configure check for it.
This can be used when building QtQml and 3rd party
code, in particular PCRE2 and SQLite.

Change-Id: I9785e16c21f67d1a68fef567e18c3356170f027e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-31 09:27:43 +00:00
Giuseppe D'Angelo
1b488d8b49 Streamline #include <type_traits>
It's included by qglobal.h, so we get it for free in other headers.

Change-Id: I90072156e313271a5354a39cbf78a83a6885c431
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 08:24:03 +00:00
Marc Mutz
d258d6962a QLocale(Win): fix pessimizing use of QStringBuilder
Instead of

   result += QString(string builder expression);

forcing a QString creation incl. memory allocation, do

   result += string builder expression;

using the overloaded QString += QStringBuilder operator.

Change-Id: I23023c76620fa6bb7bf9f2786c22f6a2ec0d87c2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-31 08:06:37 +00:00
Marc Mutz
714100f631 QSizePolicy: implement transpose() via transposed()
Having two implementations was nice for testing, but now remove
one of them.

Change-Id: I70dc7d16496427dd36ba2464c9f650ec865202b1
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-31 00:39:06 +00:00
Marc Mutz
f66319faa1 QtWidgets: convert some users of QSizePolicy::transpose() to transposed()
Change-Id: I492c3825ac10145c6ca69029ad1bcda6efc971b7
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-01-31 00:38:53 +00:00
Marc Mutz
6a9cd5604e Don't narrow lengths in qHash() implementations
The crc32() functions take a size_t length, but the hash() functions
wrapping them took int lengths.

That makes no sense and actively hurts adding hash functions for STL
types or QStringView, so port the hash() interface to size_t.

Change-Id: Id303d6df4b698560fce656cec8ed693b01daac1c
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 00:38:37 +00:00
Allan Sandfeld Jensen
85468f7bcc Manually vectorize ARGB32toARGB32PM for SSE4.1 and NEON
Manually vectorizing is significantly faster because we can optimize
for common cases like long stretches of opaque or transparent pixels.

This is both smaller and faster than the auto-vectorized version, it is
also much faster than the autovectorized version for AVX2 which then can
be removed.

Change-Id: I0fa80ce273a8387cc6cd084879822ad9bade385c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 00:14:11 +00:00
Jake Petroules
ad4f7b59ea Fix iOS build
This fixes a regression introduced in the merge 318b5856.

Due to the removal of actual simulator_and_device in 5.8 (397f345a6),
conditions using it have become meaningless.

Task-number: QTBUG-58440
Change-Id: I9f874f9f85efa590c40602dbcd07793ff17d35f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2017-01-30 17:31:28 +00:00
Liang Qi
5a70c5e7f5 Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2017-01-30 17:31:21 +00:00
Liang Qi
246799d8a7 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	examples/network/network-chat/peermanager.cpp
	src/widgets/util/qsystemtrayicon.cpp
	src/widgets/util/qsystemtrayicon_qpa.cpp
	src/widgets/util/qsystemtrayicon_win.cpp
	src/widgets/util/qsystemtrayicon_x11.cpp

Change-Id: I1c026df83818c0ccaf956980370e7522960627db
2017-01-30 12:46:20 +01:00
Timur Pocheptsov
84fa396d84 SecureTransport - remove (now) redundant standalone function
It was first introduced when we had to work-around old macOS SDK (<= 10.7) with
missing API; so we split the original code into two functions, one for
iOS (any supported version) and macOS > 10.7, another function (with all
ifdefs needed and old, deprecated API usage) for macOS <= 10.7. Now that
support for those versions was dropped and the second function gone, having
the remaining code in some external function looks illogical. It can be moved
into the member-function back.

Change-Id: Ib6355f225b5df3d92a70bd7679545cc89c450228
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-30 11:28:18 +00:00
Pier Luigi Fiorini
5ad191850b Modes API for QPlatformScreen
Add an API for modes (that is screen size and refresh rate).

This will allow platform plugins to list modes available
for a screen.

[ChangeLog][QtGui][QPA] Add an API for modes.

Change-Id: I91851c51cc60a1544465dfa3b4d96cc667237a0a
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-01-28 16:13:38 +00:00
Friedemann Kleint
fed6c35461 QAccessibleCache: Replace Q_GLOBAL_STATIC by instance pointer
QAccessibleCache is a QObject which emits signals at destruction time.
This can lead to crashes in situations where the library is unloaded
after QApplication has been deleted, for example in PySide2.
Change it to a pointer instance variable that is cleaned up by a
post routine.

Task-number: PYSIDE-452
Change-Id: If0d673c7dfe33c8d2d7298bc081824f9d6d7efdc
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-28 11:49:13 +00:00
Marc Mutz
8b9b27bced QSizePolicy: add a transposed() method
In some situations, this allows for nicer code. It's also possible to
make this constexpr in C++11, whereas the mutable transpose() would
require C++14-style constexpr.

The new function should also be faster, since it just swaps the member
variables.

Because of constexpr-function limitations, the way the return value is
constructed needs to depend on the level of the compiler's C++11 support.
This is not the only class that requires uniform init to provide a fully
constexpr interface (QUuid and QBasicAtomic come to mind), so this should
probably be generalized across Qt at some point.

Added tests.

[ChangeLog][QtWidgets][QSizePolicy] Added transposed() method.

Change-Id: Ic1077a0d5a861e7c63bd1daeeb42b97c3a2f71ef
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-28 07:46:27 +00:00
Marc Mutz
ce3402b5ef QSizePolicy: add some constexpr
Also add a basic test for constexpr expressions involving QSizePolicy.

GCC < 4.8.0 has problems with initializing variant members in constexpr ctors:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54922

Instead of revoking its Q_COMPILER_CONSTEXPR, which is a source-incompatible
change, simply note the fact so we can selectively provide constexpr for
QSizePolicy.

Change-Id: Iba8e5a7cdf847d73e8e2b6bb6211fb3c9846aa0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-28 07:46:22 +00:00
Friedemann Kleint
1aea3c1229 XCB: Use member initialization
Shorten or remove constructors accordingly.

Change-Id: I9c8bcf512c922c3c72be8a965d9557589bc9874f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-01-27 22:32:07 +00:00
Jake Petroules
944110089d Build Qt libraries with -fapplication-extension
This ensures at compile-time that Qt libraries do not use any APIs that
are not safe for use in application extensions, and fixes warning
messages that appear when linking to Qt libraries that are not built
with this flag, when used in an application extension.

This is especially important on watchOS where *all* "applications" are
actually application extensions, and on other Apple platforms if
application extensions are developed using Qt.

Task-number: QTBUG-40101
Change-Id: I022046f2584e0222253d33052b0abc221d7c93d6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-27 22:10:01 +00:00
Friedemann Kleint
af7cefd272 Widgets/qwidgetbackingstore.cpp: Fix developer build with MinGW
In  showYellowThing_win(), replace the switch by an array of COLORREF
and simplify the code accordingly, fixing:

kernel\qwidgetbackingstore.cpp: In function 'void showYellowThing_win(QWidget*, const QRegion&, int)':
kernel\qwidgetbackingstore.cpp:188:39: error: 'brush' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         FillRect(hdc, &winRect, brush);
                                       ^

Change-Id: Id60be0e01e1edb2fa939d64abaf2e58357bcc14d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-01-27 17:16:14 +00:00
Andy Shaw
c6ecbd4762 Win: If the combined key is unknown then fall back to the original key pressed
When pressing a combination of keys it is possible that it ends up being
seen as a Key_unknown and as a result it can give strange results when
used. Therefore if the key is Key_unknown in that case then it should
fallback to the unmodified key. For example on a French keyboard, this
means it will correctly allow CTRL+< as a shortcut instead of showing
it as CTRL+\.

Task-number: QTBUG-58304
Change-Id: Iae4c11a1e6e2d4343134ed1e3f9049b6df2613af
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-27 16:15:50 +00:00