The native child windows need to inherit the parent's visual in order
to have a translucent background as well.
Surface with type QSurface::OpenGLSurface should not be forced to use
the parent window's visual - the parent visual for instance, might not
even be GL capable.
Changing WA_TranslucentBackground during runtime is not supported, for
two reasons:
1) Other platform plugins seem not to support it
2) It would require recreating X windows.
Task-number: QTBUG-29625
Change-Id: Ic1474dd2de99069027481c7db6bf865f9b8d616d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
This is an alternative plugin for the windows platform. It shares most
code with the current windows plugin, but substitutes a direct2d-based
paint engine for window backing stores and pixmaps.
Change-Id: I78fafd9c5871fa090b49436f5b40ec80f8789f8b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Add a layer of abstraction in some spots where the Direct2D plugin will hook in.
Change-Id: Ifca7daf6ad0284af52a81822e970c2317d339234
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
By default starting an app that uses OpenGL will
switch machines with dual graphics hardware over
to the discrete GPU. This causes a delay at startup
and possibly increased power usage.
It is possible to prevent the switch:
1) Add the NSOpenGLPFAAllowOfflineRenderers attribute
to the OpenGL pixel format. This is done in this commit.
2) Add <key>NSSupportsAutomaticGraphicsSwitching</key><true/>
to the apps Info.plist. This final opt-in is left to
the app author.
Change-Id: Ibff56fd7770a6b7f8041c8bb60bf290eed24330a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Currently if the converter_map does not have an entry for how to
do a direct conversion, the image is first converted to ARGB32 and
then to the final format. In most cases the conversion to ARGB32 is
the generic converter which convert over ARGB32PM, which mean the data
is converted to ARGB32PM then to ARGB32, then to ARBG32PM and then to
final format.
This patch uses the generic converter directly everywhere there isn't
an optimized converter declared and it is valid.
Change-Id: Ibad57432ef8c58025e63a032b09f92dad4a559ee
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
A large part of qimage.cpp is the implementation of the various
conversions methods from one format to another. These methods could all
be moved to a separate file to make qimage.cpp smaller, and possible
later enable more aggressive optimization on the conversions.
Change-Id: I355806710281b4222114cdd9c35a7c28cbc0f692
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
If the file doesn't exist, open() will fail. But open() might fail
even if the file exists(), which would lead to bad follow-up code. In
any case, this saves one unnecessary stat(2).
Change-Id: Ic99507c9dc07a4387ee6a4fe9c24830fca54e095
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
It's not used anywhere. Found by Clang 3.4:
qeglplatformcontext_p.h:80:13: error: private field 'm_eglApi' is not used [-Werror,-Wunused-private-field]
Change-Id: I37ce240a9d07ef570e0814de366dbb7cd13ad714
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
qIntersectionPoint with ints wasn't used, qDot was only used in debug
mode. Found by Clang 3.4.
Change-Id: I4b5699f75eb88331df54bf5a289133914d80b299
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
These functions have been turned to static (although inline), which
means they need to be used or marked as possibly unused.
qglobal.h:712:37: error: unused function 'qFuzzyCompare' [-Werror,-Wunused-function]
Change-Id: Ie2ee713d26c86e0574b579c1ea42b9404c3d2035
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
We opened the counter at every start(), even if we had already started
before. Some of the benchlib's options caused it to start() and stop()
over and over again, like -minimumvalue and -minimumtotal, which could
leak to fd exhaustion (EMFILE).
Change-Id: Ifeb7cca65c758877be600dc22928bea74f499934
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
There was a comment about the test failing for max() because of an
overflow. That happens if you're at UTC or ahead of it (to the East of
the Prime Meridian), which is how this test usually gets run (UTC,
Europe/Oslo, Europe/Helsinki, Pacific/Auckland). But if you're behind
UTC (to the West of the Prime Meridian), then the overflow happens for
min().
Change-Id: Iebba49d1303e9f18f5038f5cf23c77bf83e5fd4b
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This allows us to know whether a given type is an integer or not. It's
going to be useful for QAtomicInteger, to know whether certain
operations can be performed on the type.
Change-Id: Ie64b24993e4021b44c97952d7d3973759fef3d4c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
The new code is based on what QUrl already had, so this should have no
net effect in performance.
Change-Id: Ibb2fabd5a108e99a44e0e6e3f713ce2f8b26e4d7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
The encoder is in qjsonwriter.cpp, which requires special handling for
ASCII due to the use of escape sequences. The decoder is in
qjsonparser.cpp, which only scan one character at a time.
As a side-effect, the JSON parser now reports the UTF-8 error in the
first character with error, instead of the last. This is probably what
should have been expected.
Change-Id: I52e5bc30d71466b6a36098b4150c61b2e385d8e9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Like before, this is taken from the existing QUrl code and is optimized for
ASCII handling (for the same reasons). And like previously, make
QString::fromUtf8 use a stateless version of the codec, which is faster.
There's a small change in behavior in the decoding: we insert a U+FFFD for
each byte that cannot be decoded properly. Previously, it would "eat" all bad
high-bit bytes and replace them all with one single U+FFFD. Either behavior is
allowed by the UTF-8 specifications, even though this new behavior will cause
misalignment in the Bradley Kuhn sample UTF-8 text.
Change-Id: Ib1b1f0b4291293bab345acaf376e00204ed87565
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is a new and faster UTF-8 encoder, based on the code from QUrl. This code
specializes for ASCII, which is the most common case anyway, especially since
QString's "ascii" mode is actually UTF-8 now.
In addition, make QString::toUtf8 use a stateless encoder. Stateless means that
the function doesn't handle state between calls in the form of
QTextCodec::ConverterState. This allows it to be faster than otherwise.
The new code is in the form of a template so that it can be used from
QJsonDocument and QUrl, which have small modifications to how the
encoding is handled.
Change-Id: I305ee0fd8523cc4ec74c2678cb9ea88b75bac7ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QtDBus adheres to the org.freedesktop.DBus.Properties
interface, however there is no current way to include the
PropertiesChanged signal in exposed introspection data.
This change adds that signal to the introspection data,
whether the adaptor uses the signal or not is up to the user.
[ChangeLog][QtDBus][Important Behavior Changes]
QtDBus adaptors now include the PropertiesChanged signal in introspection data
Change-Id: Iee26528b59b30696689a79fb692f93859b42bb49
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QObject::senderSignalIndex is, combined with ::sender(), the current
hotspot in the QWebChannel which makes heavy use of it in its 1-to-many
QSignalSpy implementation.
This patch optimizes the senderSignalIndex by only iterating over the
linked senders list once, instead of twice. I.e. it first iterated over
it to find the signal index, then again to find the sender to convert
to a method-offset.
Change-Id: Ic86aed0dce891b87b953a6ec2364a81695bd4876
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Add support to hide the cancel button on the last page of a wizard. This
is useful for wizards where the last page is used as a summary page that
should not be cancelled.
[ChangeLog][QtWidgets][QWizard] Added NoCancelButtonOnLastPage option.
Task-number: QTBUG-7484
Change-Id: I282bda55a8dec9cde6439a9285d79e0a5c6df96a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
If width was specified, but not height (or vice versa) the actual
window size was not as expected:
* The window width was not the width specified.
* The window height became 0.
This was unexpected, since if both width and height was not specified
it would fallback to becoming 160x160 (on Windows).
However, with the advent of https://codereview.qt-project.org/71999
both width and height might receive sensible defaults based on the
content of the ApplicationWindow, which would mean that it might be
reasonable to expect that you only need to specify one size component
of the window.
This also fixes an assertion in file
..\..\..\3rdparty\angle\src\libGLESv2\renderer\SwapChain9.cpp, line 81
The assertion happened when a window was created with 0 height (but
valid width), and then its height got increased, causing it to become
visible.
Change-Id: Ia9e730418e35d679907bdcc59b00c3c988216c32
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
With this patch all wheel events will be generated by XInput2 where
available. This enables higher precision and smoother scrolling
especially from input devices such as touchpads on laptops.
[ChangeLog][Platform Specific Changes][X11 / XCB]Support XInput2 smooth scrolling events
Change-Id: I3b069ed92ad5c53e08af64baaece32de82e9b5c4
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Add additional keyboard type and enter key support to
QQnxAbstractVirtualKeyboard and update the subclasses for PPS and BPS
to match.
Update the PPS handler to be more streamlined by adding a helper
function to write the encoder and convert from type to string.
Change-Id: I32dbf9d8c44694789b5e24b4f72da8455836ae32
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
The setting of margins wasn't being passed to the base class, so calling
margins() wouldn't return the new values.
Change-Id: I86c30f28fb0430f4b9d6e180a59cad354b489289
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
46a8885ae4 fixed a security issue [1],
but also caused a large performance regression. This patch improves
the performance from ~98 seconds to ~.1 second for 1000 entities,
using the benchmark in the bug report:
"0": 0 msecs per iteration (total: 0, iterations: 1)
"250": 1,547 msecs per iteration (total: 1,547, iterations: 1)
"500": 12,254 msecs per iteration (total: 12,254, iterations: 1)
"750": 45,506 msecs per iteration (total: 45,506, iterations: 1)
"1000": 98,112 msecs per iteration (total: 98,112, iterations: 1)
"0": 0 msecs per iteration (total: 0, iterations: 1)
"250": 6 msecs per iteration (total: 6, iterations: 1)
"500": 25 msecs per iteration (total: 25, iterations: 1)
"750": 58 msecs per iteration (total: 58, iterations: 1)
"1000": 102 msecs per iteration (total: 102, iterations: 1)
[1] http://lists.qt-project.org/pipermail/announce/2013-December/000036.html
Task-number: QTBUG-35919
Change-Id: I6a6a1a6b606a8033a8f66e294cb55bbd8bdb8a03
Reviewed-by: Richard J. Moore <rich@kde.org>
File dialog APIs are being converted to QUrls as much as possible.
Task-number: QTBUG-35947
Task-number: QTBUG-35948
Change-Id: I98d86249ac5018c3b7439065ae6ad7f1c7422a08
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
[ChangeLog][QtCore][QVarLengthArray] Added the indexOf, lastIndexOf and
contains functions to QVarLengthArray. These functions make the class
more similar to QVector.
Change-Id: I9bd2b22bd8b7151c2d17aede36e5f2126570600b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
The function is invoked from the QFileDialog constructor in
save file mode when passing a non-existing file.
Task-number: QTBUG-35703
Change-Id: I5c13efb9b6789404b28739f6ce88ed87b594b6e4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
In the event the plugin loader encounters it due to some configuration
problem, it is otherwise detected as a plugin causing a crash
when trying to read the meta data.
Task-number: QTBUG-35970
Change-Id: I34182b3a61125e3b192dfd4b1dc03bd1e98c693e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
According to docs DynamicPropertyChange event should be sent from
setProperty function only when property is added, removed or
changed.
Change-Id: I080a27a4119a63580b03172f4b5b367338c6f440
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Change-Id: Ibac69cfa44eff33d8cc172fc16cf105fff4c12b1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Adds inplace version of QImage::rgbSwapped() and QImage::mirrored() that
can be used on temporary QImage objects when supported by the compiler.
[ChangeLog][QtGui][QImage]Rvalue qualified mirrored and rgbSwapped methods for inline conversions
Change-Id: I4ffb658bf620dfc472d9db14c1aa70291c1fd842
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
As we add more classes with RValue ref qualified methods we will need
the same _compat trick and no-pch support as QString.
This patch moves the extra compiler to precompile_header.prf which is
automatically included when pch is used.
Change-Id: I422a355fd11f499ce0648a90b0385f2a6f699fcb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
In the case of multiple VS installations, a static variable wasn't
initialized. That led to wrong values in subsequent calls of the
detection function.
[ChangeLog][qtbase][qmake] fix detection for multiple VS installations
Task-number: QTBUG-35530
Change-Id: I3fc23bc99679fff640f39578a7074d16fe923334
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
The bmp handler would ignore the high byte of a 32bit bmp. It
would also ignore any alpha channel.
The actual change is really simple; it just adds the alpha_* members
and the reading of the 4th byte in 32bit depth. However, detection
of alpha channel required switching the order of two independent
blocks of code, hence the size of this patch.
[ChangeLog][QtGui] Support reading bmp images with alpha channel
Task-number: QTBUG-35220
Change-Id: Ib133c3644c03c5cfc728f5fa2c837219804e69ae
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
sizeof(QTzType) == sizeof(void*) on my platform, so it will benefit
from the type info classification.
Change-Id: I07146372da4381dba72da3718bc9c0b76a22b4fb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
- Fix issue where input flags and classes where wrongly mixed.
- Adds DATETIME class (support for Qt::ImhDate/Qt::ImhTime).
- Adds TYPE_NUMBER_VARIATION_PASSWORD for API level > 10.
Task-number: QTBUG-35198
Change-Id: I794159ca7c19d38b0b97521448cef0f5112ee8ba
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Those libraries are contained in QMAKE_LIBS_CORE and
GetSpecialFolderPath() is present in all supported versions.
Change-Id: Iae40714e0f234625b063aeb50e29fc79c4aaa6ea
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
this pretty surprising behavior would interfere with building the
examples from an installed qt tree with qmakes from other qt builds.
.qmake.conf (and .qmake.cache) files provide a possibility to explicitly
"anchor" project roots, so there is no point in having a second, even
more magic way to do it.
Task-number: QTBUG-35485
Change-Id: I8fd4fda67cabafdf55e7a98282dcdfaffb4a405e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
while the meaning of the error message is actually pretty obvious from
the context, some people apparently expect an equivalence with their
package manager's terminology.
Change-Id: Ie7a31887bf5086e5d1d7de7e339a6d08571a4d01
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>