Until now we'se set the screenGemetry to 0,0 until the layout is
created, but some controls needs it before that.
Task-number: QTBUG-44271
Change-Id: I7d00e2a142572e27fc77e46566bb2cdb37f58035
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
The native Windows file dialog does not support displaying
files in the directory chooser.
Task-number: QTBUG-46982
Change-Id: Ib58f3d888df564d42044b81ad8e67b8aeae5f3c6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
All overloads of QProcess::start will now check whether the program
string is empty and in that case
- set error to FailedToStart,
- set errorString to "No program defined",
- emit error.
Until now only one of the three overloads behaved like this.
As a side effect, start(QString(), QStringList()) will not crash on
Windows anymore.
Task-number: QTBUG-47404
Change-Id: I2f93657204fe3643b1d74a74817843c05fc4a96b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Work around QPaintDevice::metric's int return type
by adding a new metric that returns a scaled devicePixelRatio.
Choose a scale factor that gives us more than enough
range.
The QPaintDevice::devicePixelRatio() convenience accessor
is public API and can unfortunately not be changed
to return a qreal. Add devicePixelRatioF() which
returns the (unscaled) devicePixelRatio.
Change all call sites of QPaintDevice::devicePixelRatio()
to use QPainDevice::devicePixelRatioF().
Task-number: QTBUG-46615
Change-Id: I97ec4000fe379b7ff5e1624a871ae2512790aad9
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Implement the new QPlatformScreen API for power state.
[ChangeLog][QPA][eglfs][kms] Allow to set DPMS mode and get the current
value for each screen.
Change-Id: I5abfb53c3e2f6579a2d6ff19d780b67f424903bf
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Allows platform plugins to set the power state for each screen.
Change-Id: I4164ca63cbae9fa2ab186dc84c8f704c33fd7c69
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The common case of QVersionNumber is that there are few segments and
each segment is a small integers. So instead of allocating a
QVector<int>, just store those numbers in the class itself if
possible. Think of this as a "Small String Optimization" for
QVersionNumber.
QVector<int> costs 16 + 4*N bytes, plus malloc overhead. After this
change, QVersionNumber(5,4,0) will have an overhead of zero.
The memory layout is explained in the header. I've coded it so big
endian also works, but I have not tested it at all.
Aside from the special functions for QVersionNumber and operator>>, all
the rest of the algorithm could have been left unchanged. I only updated
segments(), normalized(), compare(), commonPrefix() and fromString() to
take advantage of the smaller implementation in a more efficient way.
Note: QVersionNumber's constructors often leave half of the object or
more uninitialized. That's not a problem.
Change-Id: I4a2a0ce09fce2580f02d678e2f80b1dba74bac9d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Introduce overloads in the API to allow specifying multiple color
attachment sizes and formats. When these are in use and MRT is supported,
a texture or renderbuffer is created for each of GL_COLOR_ATTACHMENT0, 1, 2, ...
[ChangeLog] Added support for multiple render targets in QOpenGLFramebufferObject
Task-number: QTBUG-39235
Change-Id: Ie7cfd81d1b796a9166b80dff7513aafe0120d53d
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
It will be reintroduced as a cross-platform feature.
Task-number: QTBUG-46615
Change-Id: Ia6d03275018b2a25ebed438fe51f15e491f1c3ff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
There are multiple QString and QStringRef functions that document
behavior "if n is greater than size(), ...", but a comprehensive,
correct statement is "if n is greater than or equal to size(), ...".
Change-Id: I5d2112e08013edaf6f2f6d7e8a6740ea26a076e2
Task-number: QTBUG-47479
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
- Fix QDoc warnings for broken links
- Use \badcode for code snippets that are not C++ or QML code
- Remove/update obsolete information
Change-Id: Ie5ce6ec588709059fc7ba7b47e0cc8ad5385c42f
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDoc already recognized "group" as a document type selector, but provided no
way of defining which group the members should be selected from.
This commit adds that feature, by allowing 'group:groupname' as a selector.
All members (from the local tree) of the specified group are added to the
subproject.
Introduce up-to-date selector names for QML types and documentation pages,
but keep the old legacy names for compatibility.
Add documentation for the selectors.
Change-Id: Ic3f60a028d15f5f8e0035d28fbc503630af8f1d1
Task-number: QTBUG-32985
Reviewed-by: Martin Smith <martin.smith@digia.com>
This is just to make the code cleaner. The static variable will control
whether we've detected that the system call exists -- if it does, we are
expected to always use it.
Change-Id: Iee8cbc07c4434ce9b560ffff13cb4adc049413c1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
It's more efficient than we are. This also enables the code to work in
the unlikely case of an ELF platform without RTLD_DEFAULT.
Change-Id: Ib306f8f647014b399b87ffff13f12f8aeeb2589a
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
In the normal case, this change is a no-op. In case RTLD_DEFAULT isn't
defined, this makes the job of the optimizer easier to detect that the
static variable is never modified and that it can do a lot of dead code
elimination.
This also enables the optimization in the next commit.
Change-Id: Ib306f8f647014b399b87ffff13f12f40a359233b
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
That version of uClibc has neither pipe2 nor eventfd.
There were two problems with our detection. First, it checked for glibc
incorrectly, so the comparison was always true as
__GLIBC__ << 16 = 0x20000
Second, we needed to check for uClibc's version.
Task-number: QTBUG-47337
Change-Id: Ib306f8f647014b399b87ffff13f3023b7f8d6d4a
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
So we can have interoperability with algorithms.
Motivated by inefficient code like qDeleteAll(hash.keys())
[ChangeLog][QtCore][QHash] Added key iterators, accessible through
keyBegin() and keyEnd().
Change-Id: I1f9db8a7a4294e1556cbb50b8fe5ebdcf0dc29a2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
So we can have interoperability with algorithms.
Motivated by inefficient code like qDeleteAll(map.keys())
[ChangeLog][QtCore][QMap] Added key iterators, accessible through
keyBegin() and keyEnd().
Change-Id: Ieee2f9ad031e9d1e845a71447746699bbe95b96c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Patch 53d289ec4c caused it not to select
property change events, which are needed separately for each tablet
device. It's not enough to select them on the master device.
Change-Id: Ibb6c7990d2edd865019eacfa7eed4bf818f7557e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Compositing stays active for the window even when all such widgets get destroyed.
Task-number: QTBUG-46937
Change-Id: Ib4acc90689151fd7de234806c4b5c0c472c13a5c
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Fixes a typo which breaks the parsing of certificates with DSA public keys
when using a non-OpenSSL backend (WinRT, SecureTransport).
Change-Id: I250ba9948d5bd7739e281d7cd1b95cfbcb10e402
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
The docs for QList advised users to choose QList
over QVector for efficiency reasons. The advise
should be to use QVector over QList for efficiency
reasons. This update corrects that misunderstanding.
Change-Id: Ie04c99ab7fe6aef4bd1d39175c9564455b0122de
Task-number: QTBUG-47196
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Using Qt::ImhPreferNumbers means that we should use a keyboard that
has focus on typing numbers. But it's important that we don't restrict
typing to numbers only, it also needs to support normal text input.
And this seems to be exactly what UIKeyboardTypeNumbersAndPunctuation
does.
Task-number: QTBUG-47365
Change-Id: I5bb88cedcbe0e89ea884dc9c14d3ffd9fb368060
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
ibus-hangul sends "CommitText" dbus asynchronous API during
"ProcessKeyEvent" dbus API is called. If "ProcessKeyEvent" is
synchronous, "ProcessKeyEvent" finishes before "CommitText"
finishes and the order of Hangul characters and space is not correct.
Task-number: QTBUG-40541
Change-Id: Ia526bc11833853082205ef1c3d64cf7943e2274f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Introduce 'outputsuffixes' QDoc configuration variable, which
allows defining a module name suffix inserted into the
generated html file names. The suffix can currently be applied
to QML and JS documentation.
This is useful in cases where we have multiple versions
of a module as part of the documentation build, and
writing to a common output directory would otherwise result
in file name clashes.
Change-Id: I1437874fad09f041e506b93b62b6a4a8cae49ec9
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDocDatabase provided a way to search for a collection node in
the primary tree only. This was insufficient for use cases where
we want to list groups, C++ classes or QML types in other modules
using the \generatelist or \annotatedlist commands.
This commit does the following changes:
- Add a function to find a collection node across all
trees, use it for generating output for the list commands
and generating C++ class/QML/JS type requisite tables.
- Modify the code for \generatelist command to accept
'qmltypesbymodule' and 'jstypesbymodule' as parameters.
- Modify constness of some functions to enable above
changes.
Change-Id: I3dbdadfd224754db4bdc1602a5ffab9d46c51f00
Reviewed-by: Martin Smith <martin.smith@digia.com>
Replace a lot of c strings with QLatin1String to avoid
utf conversions. Make one constant data structure static to
avoid it being recreated the whole time, and optimize our
tag replacement code.
Change-Id: I6513f3c70781a1bac658cbb3164c45d4cab36f57
Reviewed-by: Martin Smith <martin.smith@digia.com>
We get rid of the last usage of QDom and the old
xml parser in our build tools, and it makes parsing
of index files a lot faster.
Change-Id: Iccf01a4a73cc74a77806470fb4c4625f5331a7be
Reviewed-by: Martin Smith <martin.smith@digia.com>
An attribute is not allowed twice in XML. So change the
associated-property attribute, so that it contains a list
of associated properties is required instead of listing them
a couple of times.
Change-Id: Ibfb21c1a1de5ed39cda2eb29ac318bdbbf0eab4e
Reviewed-by: Martin Smith <martin.smith@digia.com>
This avoids a couple of more string/memory
allocations, giving another 5% speed gain
for qdoc --prepare.
Change-Id: I455f615bb4388d883dca5a8cd31bf50629db23e0
Reviewed-by: Martin Smith <martin.smith@digia.com>
The history state had the limitation that it was hard (or impossible) to
use when more than one default state had to be entered. For example,
using it in a parallel state was impossible without ending up in an
infinite loop.
This patch changes the QHistoryState to only have an initial transition,
and the state selection algorithm is changed accordingly. It also brings
QStateMachine closer to the SCXML standard.
The existing defaultState is implemented on top of the
defaultTransition: when used, a new transition, with the default state as
its target, is set as the defaultTransition.
Task-number: QTBUG-46703
Change-Id: Ifbb44e4f0f26b72e365af4c94753e4483f9850e7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Usually you want to use just QLocale(), and not QLocale::system(). They
are both the same except when the user called QLocale::setDefault()
beforehand.
Change-Id: I2d9b13ac3ffec0005b1d9bf661eccdea276d34b1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Rewrite QDebug operator<<(QDebug d, const QMimeData &mimeData)
to take a pointer and handle 0 values. Change the formatting to the style
commonly used in Qt. Make it static as it is not used anywhere else.
Task-number: QTBUG-47393
Change-Id: I78174e10b75769bf4acd33a894acc0a51e525c39
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reverting change 4db5d3ccd1, since it
introduced two separate regressions:
1. QToolButton would prefer text() over iconText()
2. Actions with a mnemonic would create a shortcut when added to
a tool button.
There is a fundamental problem here, which is impossible to solve
correctly: A menu item with the text "Short&cut" will create a mnemonic,
i.e. it will be triggered by pressing 'c' when the menu is open. However,
a button with the text "Short&cut" will create a shortcut that is triggered
by Alt+C as long as the window has focus. Also, iconText() is used for tool
tips, so it should not contain shortcut related '&'s.
This patch attempts to find a sensible compromise:
1. If the text is set through QAction::setText(), QToolButton will not
create a shortcut, and will not display an underline.
2. Using QAction::setIconText("Short&cut") will create the shortcut.
3. Tooltips will not show any extra '&'s when generated from
text(), but when using setIconText() directly, any '&' characters used
to create shortcuts will also be visible in the tooltip.
Task-number: QTBUG-23396
Task-number: QTBUG-47306
Change-Id: Ieea2fc569807c862ca462349bf91922a4029700f
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
There were two problems:
1. qHash() hashed FaceId::uuid, but op== didn't use it for
determining equality. Thus, x == y => qHash(x) == qHash(y)
might be broken if fileName and uuid have an orthogonal
component, if you excuse my vector analogy.
2. To hash fileName and uuid, it concatenated the two,
causing a temporary QByteArray to be created just for
hashing its contents. That prevented marking qHash()
as nothrow.
Fix by using new QtPrivate::QHashCombine and adding
uuid to the list of fields compared in op==.
Change-Id: I49f2379d514d6d3669929e737562cf6de823127e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
The sources for QSessionManager live under Qt Gui so it doesn't make
sense to include the class under the Qt Widgets doc module.
Task-number: QTBUG-47274
Change-Id: I18b58c2a274bff323c7364cebbb0429a5a3a97d6
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Using the approach we already do for some GLES 3.0 functions we can provide a cross-platform,
cross-GL-GLES wrapper for ES 3.0 and 3.1 functions too.
Applications only have to take extra care about the version requests (context version
and version directives in shader code), the rest of their code can stay the same across
desktop/mobile/embedded, even when ES 3 functions are used.
The new functions are placed to a new subclass which is placed between QOpenGLFunctions
and the internal QOpenGLExtensions. This is necessary because, unlike with QOpenGLFunctions,
there is no guarantee that these functions are always available in all configurations.
When running on desktop OpenGL, we resolve as usual. If the OpenGL version contains the
function in question, either in core or as an extension, it will all just work. This is
handy because it does not rely on 4.x extensions like GL_ARB_ESx_compatibility, and so
ES 3.0 functions will be functional on OpenGL 3.x systems too by just setting a 3.x version
number in the QSurfaceFormat.
We will no longer qFatal on broken systems where the driver returns a 3.0 or 3.1 context without
the corresponding functions present. Instead, we show a warning and gracefully fall back to
resolving as usual, via eglGetProcAddress or similar. For functions that are available in ES2 as
an extension this may just work fine.
Added also an example that runs identically both with OpenGL and OpenGL ES 3 and utilizes some
ES 3.0 features like instanced drawing.
[ChangeLog] Added QOpenGLExtraFunctions providing OpenGL ES 3.0 and 3.1 function wrappers in
a cross-platform manner.
Task-number: QTBUG-46161
Change-Id: I9f929eb61946c35c415b178c4d6ab2c1c958684e
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
A parallel state cannot have an initial state, as all children of the
parallel state will be entered. Setting such an initial state on a
QState marked as ParallelStates would already produce a warning and
ignore the initial state. Now any initial state that has been set before
changing the child-mode to ParallelStates will also produce a warning
and remove the previously set initial state.
Change-Id: Ie5fcd44b03516744f785f2d1880bf806918c44d4
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
This cuts away another 15% of the running time of
qdoc -prepare.
Change-Id: I81bc32fa191b73fad5d7bd27ff22ac845f83a9ce
Reviewed-by: Martin Smith <martin.smith@digia.com>
This makes generation of the index files 3 times as fast.
Change-Id: I89af86e54d932fa19330f36a33af6ed9ea81461d
Reviewed-by: Martin Smith <martin.smith@digia.com>
This method was probably there in older versions of the specification,
but it is no longer used now. The only caller was in
QStateMachinePrivate::setError, which has been changed to use the newer
methods.
Change-Id: Ic4961990d8d2c902676e63193d3f30ef427e6f0c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
The move special members were inhibited by the presence of
user-defined copy ctor and assignment operator, which we
cannot remove since the class is exported.
Change-Id: I54fe6c28351fe69ca4b75066adb76ea07c959dfe
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The types are either too large or too small for QList, which
only has acceptable performance with movable types of size
= sizeof(void*).
Change-Id: I5a2354e9400baad44095f1eac18d76ef915f6545
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Commit 5c44232122 removed
the functions, but not the docs.
Change-Id: If12ec8a268cf67c7a62ba4f523360e0c79ce63ca
Reviewed-by: Martin Smith <martin.smith@digia.com>
The move special members were inhibited by the presence
of a non-trivial copy constructor/assignment operator
and destructor. Restore them.
While we're at it, move all the special member functions
we should not have defined into an #if QT_VERSION block.
Change-Id: I873a99bfefe03e0fb02676e3431fd51f8c8f0adc
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
They do exactly what the compiler-generated ones would do,
but their presence inhibits the move special member function
from being synthesized.
Change-Id: Ib2046dbcee3c21ac3b5087f41d19e2a4a3e0a54f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Unfortunately, we cannot rely on Q_DECL_EQ_DEFAULT, so I
needed to code the special member functions by hand.
The 'reserved' field is pretty useless, since the
existing ctors didn't initialize it, but just in
case someone finds a way how to store information
in there, deal with the field in the usual way:
set to nullptr in the move ctor and swap in the
move assignment operator.
Change-Id: I15a5f61807cb67deb6e979d4f3e5a260384b20ab
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The move special members were inhibited by the presence of
a user-defined copy ctor, which we cannot remove since the
class is exported.
Change-Id: I7118588b808387f2733d93216c8c3b117666bb9e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Avoids default-constructing two QPersistentModelIndex
instances just to copy-assign to them.
Change-Id: I0f3e04e3d202f58905f74df44d37dba27911a927
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
QTextDocument::find has a behavior that is different from the typical
QRegExp/QRegularExpression behavior where finding a given expression is
always constrained by the paragraph (block), regardless of newline
characters in the expression.
Task-number: QTBUG-21785
Change-Id: Ia6a061c6feb5a19e6b8caa3d8009da5ca31ec422
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Add QTRY_VERIFY2_WITH_TIMEOUT() similar to QTRY_VERIFY_WITH_TIMEOUT()
except that QTRY_VERIFY2() is used below the loop and QTRY_VERIFY2()
based on it.
Add tests to cmptest.
[ChangeLog][QtTest] Added macros QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY2()
making it possible to output a message after the timeout has expired.
Change-Id: I587e24f3aeb73542dbf3ccb936a16f2e0806555f
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Literals 1. or 0. have type double, but QGradientStop.first is qreal and
thus can be float depending on platform/configuration, making
qBound call invalid (qBound(0., qreal_value, 1.) for example).
Change-Id: Idab668d417a148bffe2495009ae700de980b73cc
Task-number: QTBUG-47319
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Add a helper class for resolving debug symbols by dynamically
loading dbghelp.dll and try to obtain a symbol at the exception
location and a stack trace by using CaptureStackBackTrace().
The output looks like:
A crash occurred in d:\dev\projects\crashingtest_5d\debug\tst_crashingtesttest.exe.
Exception address: 0x0000000052E2853A
Exception code : 0xc0000005
Nearby symbol : QString::length
Stack:
# 1: windowsFaultHandler() - 0x00007FFE080CACD0
...
# 8: QString::length() - 0x0000000052E28530
[ChangeLog][QtTest] A stack trace will be output on standard error
if a test crashes.
Task-number: QTBUG-47370
Change-Id: I7217e02ec7dc0c96132fe84d1a175d0bed9c5aaf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Crash in qtwidgets.dll when Qt app is used with accessibility tools like
Dragon. Crash due to null pointer dereference.
Task-number: QTBUG-47093
Change-Id: I140196ba44b68dfaf229dd8a8e6031379ea1acac
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
User gets compiler warnings for plugins if "-Wold-style-cast" is enabled
Change-Id: I142ae2676ca7690c8e8e10c73a4007e85d8f448d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
X server may send RROutputChangeNotify event with null crtc and mode,
when it switches an output mode. Request RROutputInfo to distinguish
this case from the case when the output is explicitly disabled.
Change-Id: I4c2356ec71dbcc8013009ea8a6f46dd11f19d6bb
Task-number: QTBUG-44158
Task-number: QTBUG-46786
Task-number: QTBUG-46822
Reviewed-by: Daniel Vrátil <dvratil@redhat.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
On my system, this fixes the misbehavior of Qt applications when the (only) active screen is
switched, e.g. from an external screen to the laptop.
This behavior is caused by the screen() of widgets to be set to NULL when their screen goes away.
When a new screen comes online, the widgets *should* be told about it, but they are not. The only
place that "maybeSetScreen" is called is when an existing screen changes its geometry, but not
when a screen gets enabled without its geometry being affected in any way (e.g. because it was
just disabled via xrandr, but has been connected all along). This makes sure that "maybeSetScreen"
is also called when a screen gets enabled.
Task-number: QTBUG-47041
Change-Id: Ic72d6beaa544bf9a4efdbea0830b1bc0d6ce5362
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
On Ubuntu 14.04.1 LTS, a file /etc/profile.d/appmenu-qt5.sh appeared,
exporting QT_QPA_PLATFORMTHEME=appmenu-qt5 (application menu theme plugin).
This caused QGenericUnixTheme::createUnixTheme() to return an
instance of QGenericUnixTheme by theme name instead of the appropriate
QKdeTheme, QGnomeTheme.
Fix this by always appending the generic theme name to the list
of available themes and returning it only if the name matches.
Qt 5 applications will now appear correctly themed on Ubuntu,
including theme icons.
Change-Id: I68fcd80a620b74e2af73e938253dba9933816336
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
The "open source" version it's talking about is that of Darwin, not of
Qt.
Change-Id: Ib306f8f647014b399b87ffff13f27bc651d78707
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Dirk Hohndel <dirk@hohndel.org>
This fixes a crash when using the style for painting without a
corresponding widget.
Change-Id: I0742e4559ed7a78270dab3a1b0162c9617343053
Reviewed-by: André Klitzing <aklitzing@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
... like all other assignment operators.
Removes the last user of internalCopy(). Removed.
Change-Id: I15f2cb3b7b26988dd3bc2f4475bc316480476993
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This makes the docs match the code from qsystemdetection.h.
Change-Id: Iec75e24d13e21f1800777bac5fa98b47b47e6001
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Check for special return value INFINITE (unsigned -1) of
GetCaretBlinkTime() (indicating cursor should not flash)
and return 0 in that case.
Change-Id: Iead41a20a68b79d04b03f77a3caf063d4e1d577e
Task-number: QTBUG-47208
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
QCOMPARE did not print "Actual" and "Expected" values for quint8
and qint8 variables when they where not equal. QTest::toString<T>()
lacked specializations for signed and unsigned char types, that are
actually distinct types from char.
Change-Id: Iae789885c474c56441da45065992d7ccf1bc9f5c
Task-number: QTBUG-45238
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Previously Qt didn't register an English name alias for application font
files under Windows. Suppose we add an application font file using
QFontDatabase::addApplicationFont(), the font family name returned by
QFontDatabase::applicationFontFamilies() then was the English name of the
font file, but the corresponding font family name returned by
QFontDatabase::families() was the localized version. This prevented us
from using the English font family to access the font since it was not
registered as alias.
Add an overload of populateFamily() which will register the English name
of the application font file as alias.
Task-number: QTBUG-47096
Change-Id: Idb89b7d8a419646c209426e826e7fd1ebee49662
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
[ChangeLog][QtCore][QProcess] Fixed a bug that caused QProcess to launch
a child process on Unix even if the directory specified with
setWorkingDirectory did not exist.
Task-number: QTBUG-47271
Change-Id: Ib306f8f647014b399b87ffff13f195158b0e52f5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
We force a recreation of the library paths with added information on
construction of QCoreApplication. This way we can find plugins in
the application directory which only becomes known when
QCoreApplication is created. When the user changes the library path
we create a new list of the manually modified library paths and
recalculate it from the delta of original vs. modified paths when
QCoreApplication is created.
The upsides of this approach vs. keeping an explicit delta are:
* We don't need to introduce a separate data structure to hold
the added/removed status for delta items or the information that
the whole list got replaced.
* The lists never get larger than the the real library paths. An
explicit delta would have to record all modifications.
* I don't think the delta replay algorithm we would have to do
anyway could be made much more compact than the one this change
introduces.
Of course, if the user actually changes anything, the list is
duplicated. Considering that this is a rarely used function and
that we would have to save some extra information anyway, I think
we can live with this.
Task-number: QTBUG-38598
Change-Id: I3bfbbd1be62dd5804dcc7ac808b053428a4e3149
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There's no __HLE__ macro and there won't be, since the HLE prefix can be
run on older CPUs. There's no need for runtime detection.
Change-Id: Ib306f8f647014b399b87ffff13f1daba0e654b02
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
We can't have too many braces: one pair is just enough because we're
actually calling the QBasicAtomicInt's constructor. That is, we're using
the uniform initialization procedure.
Required for Clang 3.7:
qmetatype.h:1772:46: error: braces around scalar initializer [-Werror,-Wbraced-scalar-init]
static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
qatomic_cxx11.h:331:43: note: expanded from macro 'Q_BASIC_ATOMIC_INITIALIZER'
#define Q_BASIC_ATOMIC_INITIALIZER(a) { {a} }
^~~
Change-Id: Ib306f8f647014b399b87ffff13f1f2db1fabe393
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
_Nullable is a language extension in clang 3.7 (indicating whether or
not a pointer can be null).
http://clang.llvm.org/docs/AttributeReference.html#nullable
Using it as a class name breaks building with this compiler.
Change-Id: I0c838dac872ca2c00bf57c95df17d24edb48007b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This adds an OpenSSL-based implementation of the QSslKeyPrivate encrypt
and decrypt method. This puts both the OpenSSL-based and non-OpenSSL
backends (WinRT for now) on par.
Change-Id: I18a75ee5f1c223601e51ebf0933f4430e7c5c29b
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
The clearing of 'children' is already performed by the
'children' destructor, and the presence of the user-defined
QDirNode destructor inhibits the move special member functions
for QDirNode.
Change-Id: Ie8025e7a2c4b1a8c0b691deda0e49b517f8a6ed5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Every bit combination is a valid object, so the
correct type classification is primitive, not
just movable.
This is BC, because it just changes whether
the default ctor and dtor are run or not,
and these types don't care.
Change-Id: Ifbfa83128778744f15a086a65c8be1ce01a58820
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
The compiler-generated move operations are ok.
Change-Id: Ida994b52e3ee6ce75afd50133e61488b94464eee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These types are larger than a void*, so holding them in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking them movable, and holding in a QVector instead.
Change-Id: I74b2ce327d6aee60e2cc3463ce09453a4305bba7
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is low-hanging fruit, for two reasons:
1. The implementation is dead-simple (unlike, say, in QList).
2. It's completely transparent to the QVector user (unlike,
say, emplace_back, which can only be used inside an ifdef).
Change-Id: Iaf750100cf61ced77aa452f0e4e3c4ec36b29639
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It doesn't save any space, is not required for ABI compat
(because it's private API), generates more code to extract
the field, and triggers a bug in older GCCs when synthesizing
a move constructor for this type:
src/gui/image/qiconloader_p.h:64:8: error: invalid conversion from 'unsigned char:4' to 'QIconDirInfo::Type' [-fpermissive]
src/corelib/tools/qvector.h:641:13: note: synthesized method 'QIconDirInfo& QIconDirInfo::operator=(QIconDirInfo&&)' first required here
Change-Id: I61e886566b67c7a18a318a3d026dc762600f8ab4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
... except if the function is a ctor, callers pass rvalues,
and the type has a fast move ctor. In that case, keep passing
by-value and qMove() into place.
Change-Id: I2c0be7d4436327834ddee0531c51c5af352ac74c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Makes for much more readable callers, and, d/t NRVO, isn't less efficient
than the old code, either. Transparently enables moves when QVector should
get them, at some point, too.
Change-Id: I77327cf665272b80277deaaa6dd2ee9c00806464
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
FileInfo is larger than a void*, so holding them in a QList is needlessly
inefficient. Worse, the code could come to depend on the fragile property
of (inefficient) QLists that references to elements therein never are
invalidated.
Change-Id: I772177c5ac544a5fecce2368f628148308ef260f
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
- don't define special member functions if the compiler-generated
ones are just fine (inhibits move semantics)
- implement all remaining methods inline
- unexport
- remove unused (and, to add insult to injury, never init'ed)
d-pointer. This is private API. No need for a d-pointer,
much less an unused one.
Change-Id: I6979cb5103a361c0313c252d3bf7073a3c47addd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
They do the right thing (except move special member functions
on MSVC, but that's MSVC's problem).
Change-Id: I699e1be83c0568821f8c6b84394a2713bb22e8e7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
[ChangeLog][QtCore] All generic containers (with the exception of
QVarLengthArray, but including QSharedPointer) destroy the
previous state as part of a move-assignment now. Previously, they
would dump it into the right-hand-side object. Note that this is
only true for the generic containers. Other implicitly-shared
types, as well as the non-generic containers QString, QByteArray,
etc. still just swap the contents with the right-hand-side object
when move-assigned into, and, for performance reasons, this will
not change in the forseeable future.
Change-Id: I1f1c684e85400b77bd2e7fba65bde2dce6c1bdde
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Requires adding member-swap and (at least in my copy) move operations.
Change-Id: I1b638a81e4a41f467e69e352806524039e7b9f27
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These all invoke the QFlags<>(Zero *) ctor, which is designed to
accept a 0, but no other int. But in doing so, it requires passing
a nullptr literal, and 0 is not a nullptr literal accepted under
-Wzero-as-null-pointer-constant or similar warnings.
Fix by using the QFlags::QFlags() ctor instead.
Task-number: QTBUG-45291
Change-Id: I73f9c9f4de11eeb1ba04ace6c7121d17510ea29f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: I6f591a42a8e8ea471d27666eb1cbc77b572b3e0d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: I72ab40b21a9499b53a639564fa45884de17b6c98
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: I9a05d375d2d9d3ed56079ad024c89a08a290619b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It was added for NokiaX86 / RVCT compilers and may
produce unexpected results with g++, where it matches
for qCompare(int, enum).
Task-number: QTBUG-47260
Change-Id: Ia29b9ae289c6df579a923aef6eb67e46db0b1120
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Requires adding member-swap and (at least in my copy) move assignment.
Since the type does not contain a d == nullptr state,
a move constructor isn't yet possible.
Change-Id: Iad6939fa30f214591eab1fdf30a2cf1423ffb32a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Requires adding member-swap and (at least in my copy) move operations.
Change-Id: I4284484b1f520eb2d9036b993a5b5b70aaea0af9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Requires adding member-swap and (at least in my copy) move operations.
Change-Id: I0b32c387809c972203c94677616fe0a52143ec3b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
...by allowing to pass the column to the Private::index() overloads.
Because Private::index() always returns an index in column 0,
callers that needed a different column used QModelIndex::sibling()
to adjust the column of the returned index. But that calls
QAIM::sibling(), which calls both QFSM::index() and ::parent().
Simply allowing to pass the column number instead of hard-coding
0 avoids that heavy detour.
Change-Id: I8895b3d102d576ba291333cf61075b7263f96b9d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
In current implementation, d->firstRead doesn't provide any
performance improvement.
Change-Id: I5d6e765a7d49cb546998b2c3e908e3c5600e70b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
... with classical semantics, meaning movable-come-Qt6,
and complex-until-then.
Whether or not we want a new flag for movable-except-
in-QList is an orthogonal question, and should not hold
back the slew of commits that introduce use of this
macro.
Change-Id: I3a6be08c314fcd7f3315af138625c38196debda5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Not caught by the headersclean check, because they are in template code.
Task-number: QTBUG-45291
Change-Id: I7294404225a19a1c58f91e6e47a9d650179ea83c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The reverse_ ones were missing, and the non-reverse ones
were marked \internal. But why should they not be documented?
Change-Id: I5ffbfc1def8dcac3f4a771883152ffbcca3d745d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The new constructor cannot be marked nothrow, because it calls
non-nothrow doCheck();
Change-Id: I4e5b33c58125091644573ed84e715c7fa946ae09
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The new constructor cannot be marked nothrow, because it calls
non-nothrow doCheck();
Change-Id: I732fac7a07d46a3ff3be0e4e56de72dd19090737
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
They are held in QVariants. No need to allocate
them on the heap.
Change-Id: I7829acbed94fd5b37079df670b0aa2d09613c73c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The compiler-generated move operations are ok.
Change-Id: Iec0fed49d52ace5ca7dae2c7ee53d717a283f15a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Because the MS standard library headers won't have the necessary
constexpr markings, some types that should be literal (like std::atomic)
aren't and some functions that should be constexpr (like
std::numeric_limits:max()) aren't.
Change-Id: Ib306f8f647014b399b87ffff13f1c74093b11af1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
If you're running Qt under valgrind, it stands to reason that you know
what you're doing.
In particular, Valgrind does support AVX and AVX2 instructions, but some
versions seem to be missing the necessary CPUID bits.
Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1940f6fa5c4f4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: David Faure <david.faure@kdab.com>
wait4 gives us the struct rusage contents for us, which may contain
interesting data for other users of forkfd (not Qt, though).
Change-Id: Iee8cbc07c4434ce9b560ffff13cb4aa28e18e790
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Long-lived threads started by Qt itself can now receive events even if
QCoreApplication hasn't been created. This is required in all threads we
start that will handle events, unless we're sure that the thread will
exit before the global application object begins destruction.
Otherwise, those threads will have race conditions dealing with the
event delivery system trying to call the QCoreApplication::notify()
virtual while the object is being destroyed.
Change-Id: I27eaacb532114dd188c4ffff13d4ad2a4bb443e6
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit makes QCoreApplicationPrivate::checkReceiverThread,
notify_helper, and sendThroughObjectEventFilters be static functions,
since they only deal with global data or the parameters only.
Making notifyInternal would have been binary incompatible (it's called
from inline functions QCoreApplication::sendSpontaneousEvent and
QCoreApplication::sendEvent), so instead add a new static
notifyInternal2 and mark the older function deprecated and to be removed
in Qt 6.
Change-Id: I27eaacb532114dd188c4ffff13d59fe3b0661489
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
ButtonInfo is larger than a void*, so holding them in a QList is needlessly
inefficient. Worse, the code could come to depend on the fragile property
of (inefficient) QLists that references to elements therein never are
invalidated.
Fix by holding it in QVector. Also reserve() the vector, even though we
can't tell the size exectly. It's a short-lived vector.
When appending, add an optimistic qMove().
I would have liked to use std::vector instead, but QRenderRule, thus
ButtonInfo, isn't nothrow-move-constructible, because of missing
move constructors on QBrush and QFont, among others.
Change-Id: I89164f4ed5745498093102f022a7ef32186e8045
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
I can't possibly understand the meaning of the note, especially
given the snippet. (However ,it has been there since Qt 3,
so perhaps it refers to some weird QValueList behavior?)
Change-Id: I952e9a7cb687b94cfccb927eb359b635804f4ade
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Prefer -std=gnu++11 unless strict_c++11 is defined. You can enable
strict C++11/C++14 mode by using
CONFIG += strict_c++
That is enabled for Qt's own code, so we we don't accidentally use GNU
extensions in portable code.
There's no support for strict C++98 mode (that is, the -ansi option).
[ChangeLog][qmake] By default, GNU extensions are now enabled with
Clang, GCC and ICC even in C++11 and C++14 modes. To disable the GNU
extensions, add to your .pro file: CONFIG += strict_c++.
Change-Id: Ib056b47dde3341ef9a52ffff13ef14de2169bef5
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The pipe2/dup3/accept4 functions and SOCK_CLOEXEC are quite old nowadays
on Linux. They were introduced on Linux 2.6.28 and glibc 2.10, all from
2008. They were also picked up by uClibc in 2011 and FreeBSD as of
version 10.0. So we no longer need the runtime detection of whether the
feature is available.
Instead, if the libc has support for it, use it unconditionally and fail
at runtime if the syscall isn't implemented.
Change-Id: Ib056b47dde3341ef9a52ffff13efcc39ef8dff7d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
FD_CLOEXEC is implicit for us, so no caller will need to set O_CLOEXEC.
Change-Id: Ib056b47dde3341ef9a52ffff13efcb635dea95f0
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This also finishes the implementation of the static methods which
were being passed a supportedSchemes argument but weren't using it.
Now they can pass it along to the QFileDialog instance, which then
passes it to the helper used by the QPA implementation of the file
dialog. The default implementation only supports local files and
can therefore ignore this, but other implementations can use this
argument to restrict the protocols allowed to the user.
[ChangeLog][Widgets][QFileDialog] Add supportedSchemes property.
Change-Id: I5235f70e785da1c06866a8355ef98f571890c4a2
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
- Introduce Qt 5 signals & slot syntax.
- Use QCommandLineParser to obtain file arguments, factor
out positioning into tile() function to be able to
use it from command line and open/new slots.
- Merge MainWindow::createMenus()/createQToolBars()
into MainWindow::createActions(), removing the need
to store the actions as member variables.
Use QMenu::addAction() for brevity.
- Use QIcon::fromTheme() to obtain system icons and use
resource icons as fallback.
- Rewrite settings code to use
QWidget::saveGeometry(), Widget::restoreGeometry() since
saving size and position does not work well with multiple
screens. Query the available size when determining
the initial size instead of using hard-coded values
for High-DPI screens.
- Fix minor issues in code, use multi-argument version
of QString::arg(), QDir::toNativeSeparators() to
present file paths to the user and and static method invocation.
- Fix snippet references accordingly.
Change-Id: I3ea0372bc7ff82247192f54620289352fb68d60f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This mapping has to be done manually, like we do on Windows
for example.
libinput maps through xkbcommon, like xcb, so it is already correct.
Task-number: QTBUG-46845
Change-Id: I61f3f1160e2581aae2ef43cc260f191f6d344fec
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
On Windows, having read-only files in a directory can cause removal
to fail. When file deletion fails, check on the permissions, set
write permissions and retry.
Split apart code paths by OS in tst_QDir::removeRecursivelyFailure();
deletion of the read-only directory on UNIX should still fail.
Change-Id: I36e54be5229a7b552e90fd5f42722b868fa0b6ee
Reviewed-by: David Faure <david.faure@kdab.com>
The code samples seem to be using Qt::FindDirectChildOnly. Changed this
to Qt::FindDirectChildrenOnly.
Task-number: QTBUG-46383
Change-Id: I99b05e5e279bff8f799a09b0d7b02512fc73170b
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Right now the two functions being added are just wrappers, but this will
allow us in the future to support FreeBSD and Linux's system calls that
do the equivalent of forkfd, but have slightly different semantics in
the actual getting of the information from the file descriptor.
See-Also: https://lkml.org/lkml/2015/3/12/1044
See-Also: http://www.freebsd.org/cgi/man.cgi?query=pdfork
Change-Id: Ia0aac2f09e9245339951ffff13c94acb5f4ff204
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Commit 5bf67f5f41 did it for qobject.cpp,
but I missed qwidget.cpp (I hadn't realized the test existed there too).
Change-Id: Ib056b47dde3341ef9a52ffff13eeceafcfc64893
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
They can't be ref-qualified if the QVersionNumber object doesn't actually
hold a QVector<int>, as the next commit will make it: for segments(),
there might not be a QVector to be moved; for normalized(), the common
case will be that there's no gain in ref-qualifying.
Change-Id: I4bfb8b8765a502c0de6aed693752217106e575a2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Example on how to reproduce the bug with examples/widgets/mainwindows/mainwindow:
- Select the option "Groupped Dragging" from the "Main window" menu
- Drag and drop dock widget so there are at least three of them in
the same group of tabs (for example red, black, and green)
- Drag the tab bar of one of them outside to make it floating
(for example black)
- Drag away the group of two remaining tabs to make them floating
- Drack back the floating-alone (black) dock widget somewhere
back inside the main window.
=> The black dock widget is tabbed with the other instead of being
where we put it
That's because it was still inactive (skipped) in the tab group.
Task-number: QTBUG-47209
Change-Id: I84ac33d4ca1df0381c6007486b41830bd7be99a8
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Even though we expect very few option names, GCC unrolls the
loop calling IsInvalidName::operator() four times. Together
with the lead-in/lead-out for size() % 4 != 0, that makes
for five inlined copies of the function call operator.
I don't know how to prevent the unrolling, but at least I can
stop the inlining.
Change-Id: Ib9d6c33e8193464a73927a92b8b54c3452cb26a3
Reviewed-by: David Faure <david.faure@kdab.com>
We suppose that this function will never be called, yet the
compiler still inlines it in all four places.
Stop it.
Change-Id: If601bc3644cacb77aeab9d615578e4afb349a73e
Reviewed-by: David Faure <david.faure@kdab.com>
There are other literal 4's used in the implementation, so
disambiguate.
Change-Id: I5b0e4ac0018f9d5734e3de8b4f75259e175b23d3
Reviewed-by: David Faure <david.faure@kdab.com>
QBackingstoreTextureInfo is larger than a void*, so holding them in
a QList is needlessly inefficient. Worse, the code could come to
depend on the fragile property of (inefficient) QLists that
references to elements therein never are invalidated.
Change-Id: I5edf846ee8f01ae36c9314147261748270e1fdf6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Only one of the three following branches actually uses the ButtonInfo
object, so create it only in that branch.
Change-Id: I65c1d45d807258ed3352018c088bb4c4c66f9b84
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
These types are held in QVariant.
This change should be BC, because it's private API, even though
it is located in a public header file. The classes are used as
private data members in the respective public API classes, but
we don't change the size or composition, and holding these
types in a QList would be outside the use of non-private API
for which we promise BC.
Change-Id: I7ef1c1ca57e9d87c6474c97bb2fa8afef170c88f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
In preparation of marking it movable. For this, it is important to
have a good overview over the data members. Distributing them among
the function members is not helpful for that. Fix.
Change-Id: I29e6e270c698ce32f7e58e083e6205bdba9c1362
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
First, all values in the array fit into 8-bit, so change the type
from ushort to quint8.
Then, instead of appending a zero as end marker, statically
determine the size of the array and use that number.
Also fixes (benign) off-by-one error in the existing reserve()
call.
Change-Id: Id05b6a56b55d2e0769b00496a55808bb7351b084
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Same pattern as used for Q{Sequential,Associative}IterableImpl.
Change-Id: Iacec3266af80eecf491d2bb766c6fddd1365bdaa
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Make sure that the QString is not in scope anymore when the pthread
cleanup happens. C++ destructors in scope are pthread cleanup handlers.
Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1ae1c7e31f6bb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
These are all error conditions, and should not happen in practice.
Naturally, there's no savings in executable size, because the
compiler just shuffles the layout of the branches around.
Change-Id: I52b98cc696fd808735c7d73c1f21e02478ff4f5a
Reviewed-by: David Faure <david.faure@kdab.com>
... by centralizing the common part of repeated qWarnings() in a single
function, passing the variable part through %s.
Change-Id: I114d10f41d4b0bbf59ef87f75308dc5b3ccd3967
Reviewed-by: David Faure <david.faure@kdab.com>
The integration, screen, window and cursor classes were split in Qt 5.3 under a plan
of sharing these between eglfs, the Android port and potentially other future plugins.
This never materialized.
Maintaining the artificial split is getting difficult and is prone to errors. Therefore
it is time to merge back these base classes into eglfs. The result is cleaner, smaller,
and potentially better performing code. eglconvenience is now restored to be a collection
of convenience classes instead of platform plugin bits.
Change-Id: I75c6ad876ef66a1a0c5b39c1c307f928d2ed47d4
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
[ChangeLog][QtCore][Logging] QT_LOGGING_RULES now supports multiple
rules separated by semicolons
Change-Id: I7fdd62a3d719aeb16cad54f193befb6c203bc160
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Use segmentCount() and segmentAt() instead of going to m_segments. This
is done in preparation for a major refactor of QVersionNumber that will
store the version numbers in the object itself, without QVector.
Change-Id: I03dbdee59a3c74c21a0a4e70c1bb9182250f6223
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Commit ffcad3244f did that for the GCC-
compat mode, but I forgot the MSVC one.
Change-Id: Ib1d49f003062638b4e27e5ead4554e25f539c373
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Like on OS X and Linux, ICC uses the native compiler's standard library
headers, so the C++11 features that depend on headers need special
attention.
* <initializer_list> is missing with MSVC 2012. It is present on 2010
for some reason and it appears to work
* ICC disables Unicode string support prior to MSVC 2015, probably
because MSVC Standard Library headers have a typedef for char16_t
std::nullptr and std::move should have come with MSVC 2010, but I'm not
keeping compatibility with MSVC 2008. It's been deprecated since ICC
14.0 (Composer XE 2013 SP1, released in 2013) and support was removed in
15.0 (Composer XE 2015, released in 2014). ICC hasn't supported MSVC
2005 since ICC 13.0 (Composer XE 2013).
Task-number: QTBUG-47119
Change-Id: Ib306f8f647014b399b87ffff13f139174aeeafff
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
An object that throws in its constructor cannot be reentered. This
violates both C++11 and C++98. It's also a regression from MSVC 2013.
The unit test is renamed to indicate what it really does, as opposed to
a misleading name that was probably a "thinko" on my part.
Task-number: QTBUG-47224
Change-Id: Ib306f8f647014b399b87ffff13f132436d0578ef
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Define both qHash() and operator==() outside of the class, like
it is already done for operator!=(). Defining it inside the
class limits it to argument-dependent lookup, which in turn
means that the lookup rules for operator!= and operator==
were slightly different (e.g. if one would compare variables
of a type that is implicitly convertible to QSslEllipticCurve).
As a side-effect, this also fixes a qdoc warning.
Change-Id: I40ab2f8cd2b6b5f42481dd254229a88b678f3f15
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Any function using the non-dsa helpers and glTextureParameterf() would
crash as this code path failed to initialize the function pointers.
Task-number: QTBUG-47133
Change-Id: I8970c9693ec471a96b135ae5728ab6407ee06a6f
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This improves SecureTransport logging consistency:
- include error code in SSL error when a native backend call fails
- use qt.network.ssl category for debug / warning messages
- do not use duplicate qWarning when error is already reported via QSslError
Change-Id: I52d457b11f0cef2cc3579305e457663b61b92f3f
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
We use menus to implement the ComboBox popup in QtQuick Controls,
and therefore, all the items are actual menu items. If that's the
case, we can skip the new style background.
Task-number: QTBUG-47084
Change-Id: If46ebf8115b36f45b4b5e6068ddc0d61afe307b8
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
The ldrexd and strexd instructions require 64-bit alignment, but Clang
for iOS aligns those types on 32-bit boundaries inside structures. We
can't use Q_ALIGNOF because it returns the alignment for the type inside
a structure.
Task-number: QTBUG-46949
Change-Id: Ib056b47dde3341ef9a52ffff13ef17bede0846f2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Commit 5d366f7e was not correct. The time displayed would always be the
same (the start time of the application).
[ChangeLog][QtCore][Logging framework] Fixed a bug that would cause a
"%{time boot}" field in the logging framework's pattern to always
display the same value, instead of the time since boot.
Change-Id: I255870833a024a36adf6ffff13ecb1dca4a688ed
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Somehow the const int is no longer understood to be an immediate. GCC
4.8 still compiles this fine.
qstring.cpp:316:34: error: the fifth argument must be an 8-bit immediate
Change-Id: Ib056b47dde3341ef9a52ffff13ef24d541833abc
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
QTemporaryFileEngine does not store the pattern, so it needs to get it
again from QTemporaryFilePrivate prior to reopening the file. It's
possible to lose the pattern when remove() is called on the object.
Task-number: QTBUG-46156
Change-Id: I66a35ce5f88941f29aa6ffff13dfc7f83d4fa3a2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: David Faure <david.faure@kdab.com>
I can't find the function for NetBSD and OpenBSD. There's a good chance
QtCore simply fails to compile.
Change-Id: Ib056b47dde3341ef9a52ffff13efaff642bd7bb9
Link: http://www.freebsd.org/cgi/man.cgi?query=kinfo_getproc
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In the common case, macroExpandIdentifier was called in the
"not a macro" case, and a temporary vector with a single item was
allocated. Now, we catch this common case at the caller site
and put the single item directly into the result set, bypassing
the temporary list.
Change-Id: I71d92afc486ccdaae5930405d028f53f48073b8c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
[OS X] Mangle the event handle related calls on QNSApplication, so that
the events are passed through the correct QApplications when several
Qt5's with different namespaces do UI in the same process.
Change-Id: Ibb44246fbcf4a2bc3af5a93c48db0382a1380328
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Since findAllLibSsl() and findAllLibCrypto() differ only in the
filter passed to QDir::entryList(), so Extract Method findAllLibs().
In the new function, cache the filters QStringList instead of re-create
it in every loop iteration.
Change-Id: I1bdd05e83fa1f9bb3f47b9b2ae5da9654ec1525b
Reviewed-by: Richard J. Moore <rich@kde.org>
It prevents the compiler from synthesizing move assignment
and move constructor.
Change-Id: I864d143d5a6233e45f3f2fc343a147db89559f33
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
ItemDecoration is larger than a void*, so holding it in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking the type movable and holding in QVector instead.
Change-Id: I06d7a77529f7cff2ba503c5e8d6e5df0ad801a21
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
They are held in Qt containers or QVariant.
Change-Id: Ida1b904120d4fb53a5596f1c3cbc973bd2ca315e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Previously, a temporary list was allocated and then fed into the
bigger list of results. Now, we push data into the final list
directly, removing the overhead of the temporary allocation.
Change-Id: I9bea0fd3c23b1434b4be2728c60ac22a66908efc
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
In cause of doubt this is more efficient, see
https://isocpp.org/wiki/faq/ctors#init-lists
This also fixes the initialization order to match the declarartion order
of the variables in the class which some versions of GCC otherwise would
complain about.
Change-Id: I642f7156d624c2c65f2f3525d813f5289c092f96
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Return true from isArgvModified() when __argv is null (as is the
case when using wmain()) indicating arguments are modified.
Task-number: QTBUG-47023
Task-number: QTBUG-30330
Change-Id: I44329ed3369cd4db79ba1b7c19303895f67b1616
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Currently when the remote server disconnects gracefully (for example upon
returning an HTTP request with Connection: close) the call to SSLRead
will return errSSLCloseGraceful which is incorrectly reported as
QAbstractSocket::SslInternalError.
This patch aligns the behavior with that of the OpenSSL backend and instead
reports QAbstractSocket::RemoteHostClosedError.
Change-Id: I8c6679280ac0c6fbd71d5f0d29b25f692eca5b24
Task-number: QTBUG-47154
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
The first change is to make libGreaterThan a function object.
This allows all compilers to inline the comparison into the
sort implementation.
The second change is to use QString::splitRef instead of
QString::split to extract the components.
The third is to extract the element comparison into a
function object and replace the rest of libGreaterThan
with a suitable call to std::lexicographical_compare,
rendering most code comments (present or missing) moot.
Change-Id: I3a761d721aa7cf5fa727dcc4ddca4b922f413899
Reviewed-by: Richard J. Moore <rich@kde.org>
This allows the compiler to inline the function call into the
std::sort instantiation.
Change-Id: If2b948c1d7202d6a81afd8a58cc9fab50a9709c1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
SideWidgetEntry is larger than a void*, so holding it in QList
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking it movable, and holding in a QVector instead.
Change-Id: Ia87b9ac634ad9386bc667355e6e236bc3d56ab29
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
QItemViewPaintPair is larger than a void*, so holding it in QList
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by holding in a QVector instead (was already marked movable
as a QPair of movable types).
Change-Id: I6f4042d2df306ecf0ec576ecbc6678736268014e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
ExtraStruct is larger than a void*, so holding it in QList
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking it movable, and holding in a QVector instead.
Change-Id: I02f2089859c2deccf0e6c451bf80da07893cc3f0
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
QPointer is larger than a void*, so holding them in a QList is needlessly
inefficient. Worse, the code could come to depend on the fragile property
of (inefficient) QLists that references to elements therein never are
invalidated.
Change-Id: Ia224a4fe01acc1d4ca9b57c62941dd0f37780c67
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Q(Multi)Map::keys() returns duplicated keys, so keys().size() will
always be the same as the map's size().
So use that directly instead of creating temporary QLists to check
the size.
Change-Id: I0600d1845e25be3b825e4ae470c1ef41a3a5d2c9
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
QModifKeyName is larger than a pointer, so holding it
in a QList is horribly inefficient.
Fix by marking it movable and using QVector instead.
The logic for filling the lists-turned-vectors is a bit
fishy in that it is not thread-safe. Maybe it doesn't
have to, it's not marked as \reentrant.
Change-Id: I8421e6d8b980eff022badfe3c61b3537783b5cfa
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
ints are only half the size of void* on 64-bit, so
QVector<int> uses only 50% of per-element memory,
compared to a QList.
Change-Id: I18db97d2ec0e46ec4301e8939ac21dff558172b2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
QPropertyAssignment is larger as a void*, and wasn't marked as
movable, so QList<QPropertyAssignment> is horribly inefficient.
Fix by marking it movable and using a QVector.
Change-Id: I34e21e3f28f64dd8b187c144fb5bee022414216b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
All values in the table fit into 8 bits, so don't use a
16-bit type.
Change-Id: I685727e16a264a49ea501d36eb6815c6d5aaa9b2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
The MaxKeyCount symbolic constant was introduced for use by QKeySequenceEdit,
but never applied to QKeySequence itself. To prevent the two from getting
out of sync, use it in the QKeySequence implementation itself, too.
This required re-writing most expressions involving QKeySequenceEditPrivate::keys
with algorithms, but we already determined in the discussion around 1cf9a139
that GCC generates the same code as the loops unrolled by hand, and if Clang
doesn't, it's its own fault.
Where using MaxKeysCount was not possible, e.g. in documentation,
static_asserts were used to indicate the need for manual changes.
Change-Id: I559fffdfd552d488448ba4a5a1ac10708c16a2ae
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This allows all compilers to inline the function call into the
std::sort instantiation.
Change-Id: I3d831ee9160dd89208f42b258ff2463f942a7630
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
- Introduce Qt 5 signals & slot syntax
- Use QCommandLineParser to obtain file arguments
- Merge MainWindow::createMenus()/createQToolBars()
into MainWindow::createActions(), removing the need
to store the actions as member variables.
Use QMenu::addAction() for brevity.
- Use QIcon::fromTheme() to obtain system icons and use
resource icons as fallback.
- Rewrite settings code to use
QWidget::saveGeometry(), Widget::restoreGeometry() since
saving size and position does not work well with multiple
screens. Query the available size when determining
the initial size instead of using hard-coded values
for High-DPI screens.
- Fix minor issues in code, use multi-argument version
of QString::arg(), QDir::toNativeSeparators() to
present file paths to the user.
- Fix snippet references accordingly.
Change-Id: I1bc49a8913aa6d669e0e666f04be3f1f42eaba10
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Make the name of the signal and the name of the getter unambiguous,
which in turn allows the easy use of Qt 5-style connects.
[ChangeLog][QtCore] Deprecated QProcess::error() signal in favor
of new QProcess::errorOccurred() one.
Change-Id: Ic5bcf7d6878e6985f1b4fed9dbe247527d13758c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This update adds the \noautolist command to qdoc.
This command can be used in the qdoc comment for
a \module or \qmlmodule to tell qdoc not to write
the automatic annotated list of C++ classes or
QML types to the HTML page because the documenter
has listed them manually. The qdoc manual is also
updated to include the \noautolist command.
Change-Id: I2eac5ceebfcd83a41bca7384b3da038fffbe6e66
Task-number: QTBUG-46821
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
This function has been removed. Fixes documentation warning:
qtbase/src/corelib/codecs/qtextcodec.cpp:1160: warning: Cannot find 'setCodecForTr(...)' in '\fn' QTextCodec::setCodecForTr ( QTextCodec * c )
Change-Id: I8d17705291b414d9c27827af4248bbf9e090962e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Fix the corner case when called on empty buffer.
Change-Id: I1316de7fbe69f3db40a7fdde06336e53d82675c9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Previously, this allocated temporary QByteArrays in the frequent
QVector<Symbols>::indexOf calls (macro.arguments.indexOf(s)).
Now, the we reuse the fast SubArray::operator== implementation.
Change-Id: Idbc6e3cf5fd353e8e36d51ba88d31e4c3bfd121d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
ParsedParameter is larger than a void*, so holding it in QList
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking it movable, and holding in a QVector instead.
Change-Id: I5b1bea9ef7b796a790d8e86404531ae19a4aca66
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDBusIntrospection::Argument and the QPair are larger than a void*, so holding
them in QLists is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references to elements
therein never are invalidated.
Fix by marking the types movable, if not already done, and holding them in
QVector instead.
Change-Id: I1cf88287cc3a1d87e1fcd5061ed8d6d19d2f0722
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Specifically when reading files with broken cmap tables, we could
get some undeterministic results. We handle this more gracefully
by verifying that the offsets are sane and bailing out early if not.
This replaces the current pattern throughout the font engine for
consistency.
Change-Id: I507bba49c0be634afca77d1eb3d199a427451bee
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
GIMP asks for image data in PNG format when doing a "paste" which
was previously handled only in convertToMime(). Add handling
to convertFromMime() and register format.
Task-number: QTBUG-46848
Change-Id: Ib11de27d301c8632869c7276e421e48e4f34e1d0
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
Previously, 0 was passed which causes QWindowsXPStylePrivate::winId() to
go on a hunt trying to find a window handle needlessly looping over top
levels, slowing down painting.
Task-number: QTBUG-42245
Change-Id: Ic702d9a73c4f749fd5988950280aef632a3308c4
Reviewed-by: Marko Kangas <marko.kangas@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
There was an attempt to allow static instances of QIcon in
7727a4355876607a1a022ff54e2570dae883f79c (Qt 4). This patch does only
solve some of the corner cases and broke with
aa5f70c00a. Since the "breakage" has been
there for two years, let's officially declare it unsupported instead of
trying to work around the issue.
Change-Id: I61e12fd03953763ee2e70eae58bcaecabdcb85b8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This allows end users to create QSystemTrayIcons that are properly
displayed as monochrome images on OS X, which is especially important
on Yosemite and above when Dark Mode is turned on.
[ChangeLog][QtGui][QIcon] Add ability for QIcons to be marked
as template images. This allows end users to create QSystemTrayIcons
that are properly displayed as monochrome images on OS X, which is
especially important on Yosemite and above when Dark Mode is turned on.
Task-number: QTBUG-42109
Change-Id: I095fb71355ffa572d0abb4769341f68b89b877c4
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
They are held in QStack, thus QVector.
Change-Id: I0673b68632b384d6428e881e24ff830d12aecfab
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The latest version of Haiku provides the implementation
for pthread_condattr_setclock, so we can enable the code
in QWaitCondition again to make it use the monotonic clock
correctly.
Change-Id: Ibb9ad33d873c3b34f2c516087c4e0aeac04cc83f
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We have ownership for a reason - and there seems to be
no good reason not to accept it here.
[ChangeLog][QtWidgets][QComboBox] QComboBox::setView no longer
deletes the old view directly. It now checks the ownership first.
Change-Id: Icb5e5c0a6e9dc93c1d1c1a90ff57fbcc0786aa60
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Previously, directory nodes in the resource tree generated empty
file names in the --list output. They do not add value.
Change-Id: I04ac495ba5f57802de9796ec663c28facfee89f2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Simon Warta
It might get new features, but it probably won't so don't create
false expectations.
Change-Id: Icbdae9242822798c681f75988c968fc9e6f0d081
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Some window managers don't reparent the client window into the frame,
so the old method of calculating frame margins by the geometries of the
window and it's frame window is not suitable for them. Use it only as a
fallback.
Change-Id: Ie4d62370425effef4dd91bf27d98e3746e8a375e
Task-number: QTBUG-2280
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Its not known if the call to flush() is required in
Qt 5. It has been compiled out until now; remove it.
Change-Id: I7033e02af8ac7ea2a357d1287e368b541d1d6776
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: Ie14e5280c430b6a254f8f686534450c1e5995374
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Saves one full iteration and memory allocation.
Change-Id: Ice527499b5f5f62bd1e47d76fdf40119948ee3a1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Nuiouser.h seems to be missing in WEC2013.
But it can be re-enabled according to Gunnar,
thus disable it conditionally.
Change-Id: I01be629fc309f04d2a43a9153c124a4e332b6ed0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gunnar Roth
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Micro optimization, because it's called a lot.
Change-Id: I50f775b39393f1f450e09ae9dc59a77d584f3c10
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Was placed under an unrelated enum. Move it to the
correct one.
Change-Id: I0cf1ffc678c4cffae16660acde95183d5ebcad03
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
These types are larger than a void*, so holding them in QLists
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking them movable, and holding in a QVector instead.
Change-Id: I3d5cf78c1597bd1b743ed3692aaa5e2e750a85f9
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
This is a fix-up for cff39fba10.
That patch lead to some internal state issues that lead to the QTBUG-47048
or to QNetworkReply objects erroring with "Connection Closed" when
the server closed the Keep-Alive connection.
This patch changes the QNAM socket slot connections to be DirectConnection.
We don't close the socket anymore in slots where it is anyway in a closed state
afterwards. This prevents event/stack recursions.
We also flush QSslSocket/QTcpSocket receive buffers when receiving a disconnect
so that the developer always gets the full decrypted data from the buffers.
[ChangeLog][QtNetwork] Fix HTTP issues with "Unknown Error" and "Connection Closed"
[ChangeLog][QtNetwork][Sockets] Read OS/encrypted read buffers when connection
closed by server.
Change-Id: Ib4d6a2d0d988317e3a5356f36e8dbcee4590beed
Task-number: QTBUG-47048
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
DestFormat is not defined here but should be Format_RGBX8888
Change-Id: Ie33989a6fc31650434281a6b7b0f4806524268af
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Timo Jyrinki <timo.jyrinki@canonical.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Found by ICC:
qtextengine.cpp(1259): error: more than one instance of constructor "QFixed::QFixed" matches the argument list:
function "QFixed::QFixed(int)"
function "QFixed::QFixed(long)"
function "QFixed::QFixed(qreal={double})"
argument types are: (uint)
QFixed stretch = QFixed(actualFontEngine->fontDef.stretch) / QFixed(100);
^
Change-Id: I790fb4cae1abc692705253a7863291bc8743b832
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
The warning is useless, since the application is about to terminate
anyway. The user will be better informed by getting a proper backtrace
of the throw point, instead of the rethrow point inside QObject's
destructor.
The application WILL terminate because C++11 destructors are noexcept
and GCC 6 enforces it:
qobject.cpp:909:13: error: throw will always call terminate() [-
Werror=terminate]
qobject.cpp:909:13: note: in C++11 destructors default to noexcept
QT_RETHROW;
^
Change-Id: Ib056b47dde3341ef9a52ffff13ee8f01d874d224
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
On Windows, t->timeout was updated only once, at creation time, so the
timer would always show as "overdue" after the first activation.
The timer is updated to indicate the full remaining time during the slot
activation, which is the behavior of the Unix and Glib dispatchers.
Task-number: QTBUG-46940
Change-Id: I255870833a024a36adf6ffff13ecadb021c4358c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When cleaning up the shortcut override code, in
d7ca800a87 passing on the autorepeat flags
from the native event was accidentally dropped in the call to
QWindowSystemInterface::tryHandleShortcutEvent.
Task-number: QTBUG-46569
Change-Id: Ib053e11e582de630a1fc1b754f8d10d995c88026
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
A friend operator was declared as a friend in the private part of the
class. qdoc thought this meant the operator should be private and
therefore should not be documented. But the friend operator should be
documented, despite being declared in the private part of the
class. This update changes qdoc so that it always treats a friend as
public.
Change-Id: I7f8bcf0c0fdffd32f67041f7d1a03eefa2a8b924
Task-number: QTBUG-46983
Reviewed-by: Martin Smith <martin.smith@digia.com>
The debug code in puredocparser.cpp and qmlvisitor.cpp was no linger needed.
Change-Id: Idac0b7afe58febb2f89cdce7928b0d806a02d67e
Task-number: QTBUG-46958
Reviewed-by: Martin Smith <martin.smith@digia.com>
Some functions in qstring.h are marked with both friend and inline,
and qdoc ignores them when it sees the friend keyword. Then, when qdoc
finds the documentation for the functions in the cpp file, it reports
an error that it can't associate the documentation with anything it
saw in a .h file.
This update corrects that problem. It also improves qdoc's parsing of
other inline functions in other files.
Change-Id: If94e403809af3ee3238eac0f2861b027197d6d3c
Task-number: QTBUG-46531
Reviewed-by: Martin Smith <martin.smith@digia.com>
Fixed a few qdoc error messages caused by errors in qmetatype.cpp and
qtextlayout.cpp and qtestcase.cpp and qpointer.cpp
Change-Id: I662aa25bedba057e125e289c34787e81793941ff
Task-number: QTBUG-46939
Reviewed-by: Martin Smith <martin.smith@digia.com>
The return value of the function is never used
Change-Id: I75e51bce36eedd42f5527ddb86efd434fe11551d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The order of member variables is wp, xp, yp, zp. When performing
operations that touch all members, do so in declaration (=memory)
order.
Might enable autovectorization. Probably leads to slightly
better cache behavior.
Change-Id: Id9541e5a8011c349f5d24c5e9322bb232a7607b6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These are already held in QVectors.
Change-Id: I6fe831ba5b75d792fd13e63ef0d2e178b52e1107
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Not all empty states were considered equal.
[ChangeLog][QtCore][QProcessEnvironment] Fixed a bug in
operator== involving different empty states.
Change-Id: I13c3200897847475bde2f963db0d2c587336b8a7
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
And use Q_NULLPTR and the ctor-init-list.
Found while looking into QTBUG-45291.
Change-Id: Ie6db7c2ffe4e054781f0666da593df898b8000e0
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
sizeof(QLabelPrivate) only goes down from 640 to 632 (on 64-bit),
but we now have a non-conditional data member as the last member,
so the ctor-init-list doesn't look quite so ugly anymore.
Change-Id: I51f7e56d92cfcca4f35128595c829e2f3f887c72
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
...and move most of the init() code into the ctor-init-list.
Saves 176B of text size on Linux AMD64 GCC 4.9 optimized C++11
builds.
Change-Id: I6cd42e19c40a031456eaf626e32619aed1758a6c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Had to mark {,c,const}{begin,end}() inline, since they are, and mingw
complains about inconsistent dllimport attributes.
[ChangeLog][QtCore][QByteArray] Added rbegin(), crbegin(), rend(), crend(),
and reverse_iterator and const_reverse_iterator typedefs.
Task-number: QTBUG-25919
Change-Id: Id5aefb52635f029305135afcd99db0b036a7af82
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Had to mark {,c,const}{begin,end}() inline, since they are, and mingw
complains about inconsistent dllimport attributes.
[ChangeLog][QtCore][QString] Added rbegin(), crbegin(), rend(), crend(),
and reverse_iterator and const_reverse_iterator typedefs.
Task-number: QTBUG-25919
Change-Id: I1d48729c76e510c1e49c0e5dc41691aa662fdf21
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Make the example and the explanations a bit more detailed about the
purpose of the feature, and fix the example, as it was not calling
metaObject() on the example object.
Change-Id: Ibf3331ed85601274f43794e3a4143e0d6b86a479
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Since the introduction of jpeg auto transform, it is possible to read jpeg
header after its state was changed from ReadHeaer to Ready which will lead
to creating some resources again without releasing them.
For example, if you call QImageReader::setAutoTransform(true) and then
call QImageReader::read(), QJpegHandlerPrivate::readJpegHeader() will be
called twice and it will allocate resource again without releasing the old
one.
This patch add a new state ReadingEnd to prevent the header from being
read twice.
Change-Id: If2497f6e3668958c0c792a66e1b77eb2773584a2
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
ShellSDK isn't always available in WEC2013 and
sadly the define that should tell us if it is
isn't enough as the headers would be in the SDK
but the lib doesn't need to have the symbols.
Change-Id: Iccd11eafd0dbd22ee421c9a08f05bfc2fc5bdd49
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
If you statically link in a dbus library you'll have dbus_shutdown()
available.
Change-Id: Ieeded63838423a14a5530a4edb0ea46dc9b58d18
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
In particular the move constructor now performs only
two instead of four assignments.
Change-Id: I033d75635288fbd44060a1ba5f2da23b7e7729f6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Since QtTestLib has a lot of templates and macros, not all uses of 0 as nullptr
might have been detected by the headersclean check.
Task-number: QTBUG-45291
Change-Id: I21e9d8822e3a708010938e8d5ef2fd42ae6c8c68
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: Ie67d235151ca8d4ef5e721c9cf4a6fd32bd167a0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Marking them movable now would make QLists of these types BiC.
Change-Id: I7ae06aec596b349ee05e48f24a077af743450669
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This is in preparation of adding -Wzero-as-null-pointer-constant (or similar)
to the headers check.
Task-number: QTBUG-45291
Change-Id: I16c93bd36c242a6d402cf7622820e91eac782772
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
In Qt 4, we would create and destroy the DirectWrite factory for
each time we load the font data from a QRawFont. This factory
would then be passed to the font engine ctor. However, in Qt 5,
some things have been refactored, and the font engine will now
try to use the factory stored in the sharedFontData(). This
would cause dereferencing a null pointer because we didn't
initialize the data before constructing the font engine.
[ChangeLog][Windows][Text] Fixed crash in DirectWrite engine
when constructing a QRawFont from raw font data.
Task-number: QTBUG-46963
Change-Id: I4813c7f818c9df5707c27f5b6ce507649d902270
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Task-number: QTBUG-46826
Change-Id: Ie04e69cc5af05650ec6aa42f534f494049a54ee8
Reviewed-by: James Turner <james.turner@kdab.com>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>