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>
[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>
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>
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>
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>
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>
The units that were supposed to have variance were completely off in the
test leading to all benchmarks with slight variance being completely
flaky.
Change-Id: Ib76593813974adee462b3f03be9370d2248d770c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Add an API that allows to retrieve and detach the texture from the
framebuffer object. The next bind() call will then create and attach a
new texture.
[ChangeLog][QtGui][QOpenGLFramebufferObject] Added takeTexture() for
retrieving and detaching the texture from the framebuffer object.
Task-number: QTBUG-35881
Change-Id: I2cca37f5872c1685b1238047f8b912e6534ab781
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
In order to prevent people from shooting themselves in the foot, abort
if we're running setuid. This behavior can be disabled by calling
QCoreApplication::setSetuidAllowed(true) in order to support legacy code.
[ChangeLog][QtCore][Important Behavior Changes] Running Qt applications
that are setuid has been prevented. If you really need to do this then
you can call QCoreApplication::setSetuidAllowed(true) before creating the
QCoreApplication instance.
Change-Id: I992a9a0cd8420693d438852a05666e3dbb2c9d6a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
- Move private classes in the .cpp file (they aren't needed outside)
- Conform to Qt style, such as includes and braces
- Use ComPtr where appropriate
- Use foreach where appropriate
- Remove non-functional wake/interrupt leftovers
- Remove redundant timer list
- Make the timer callback a static method, so it won't crash if it
gets called on shutdown
Task-number: QTBUG-35945
Change-Id: I5426fba2735e908a04ea60287f9936f5abde6644
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Instead of returning the HRESULT of the Run method, return the actual
exit code of the application.
Change-Id: I1e3d654ecdb4c319d4a08fe8a11e8699d186f66b
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
This adds the required members to allow setting the SDK version, and uses
them when creating WinRT projects.
Task-number: QTBUG-35328
Change-Id: I500ea77c41e27cbcc850462034c0eba8c5d1f124
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
When creating a MSVC project file for WinRT/WinPhone, the package
manifest and all referenced icons should be automatically added as
content items.
Task-number: QTBUG-35328
Change-Id: Id7f34388c5ba6746392ddadbb795ef47bef34af6
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Visual Studio will default to generating metadata, even if it is not
written to the vcproj. Since there is no metadata file, the build will
fail. This change keeps a saner default for this option when generating
WinRT project files.
Task-number: QTBUG-35328
Change-Id: Ie693e270ef0b9d9677d53af0c60905f048235bc5
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Some cross-compiling mkspecs may require a different MSVC version than
the one found in the path (or the default version). This change allows
the preferred MSVC version to be selected from the mkspec's MSVC_VER
variable when found.
Task-number: QTBUG-35328
Change-Id: I19e03101e3921dfd5026421aef4630e11b9f131e
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
While there is no implementation for accessibility yet, enabling it allows
the interfaces to be used and an accessibility plugin to be developed
for this platform.
IAccessible2 and MSAA bridge autotests are disabled for this platform.
Change-Id: I2bfd07f6b21ca469b27d88ef11df723ac8ff8202
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
- Sleep when there are no events to process. Otherwise, CPU usage remains
high all the time.
- Reorder processing so window events are processed after being collected
by the native event loop.
- Provide basic interrupt and WaitForMoreEvents flag support.
Task-number: QTBUG-35327
Change-Id: I8a5545cba5f3e65eafd0bb40695bf6ffde68bb04
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Calling xcb_flush() right before QXcbConnection::sync() is pointless.
The flush sends all requests that were already queued to the server and
the call to sync() then just sends another request, flushes it and waits
for its reply. Having just sync() implicitly flush for us means less
overhead and has the same effect.
Another useless flush is in QXcbShmImage::put(). The only caller is
QXcbBackingStore::flush() and this calls put() in a loop. If we just
call xcb_flush() from flush(), then xcb can send more requests in a
single write() call again.
Finally, calling Q_XCB_NOOP() twice in a row without doing any
interaction with xcb in between doesn't help much, so remove one of the
two calls from QXcbShmImage::put()
Change-Id: Ia3d6945b8d961e2844fc3e31fdf8189c47b534d1
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This makes testlib a lot more hackable since when the output is changed
in a defined way we can regenerate the expected output (eg adding the
test duration which will be a follow-up patch).
Note that the script does not work properly on Windows and not all
benchmarks work, but at least it reduces the work of adapting files to a few lines.
Change-Id: I910387cd92ff82aa629747a3a3033dae17fbd711
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
The newly added generate_expected_output.py was used to get the expected
output into a more reproducible state.
Change-Id: I1ca75c8e0c5778d25c1df531bd298007aac0ff4a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Using wmain causes the problem that the linker seems to create some code
around it, which calls ExitProcess. That function however is forbidden by
the Windows Store Certification process and hence you cannot publish an
application currently. This does not apply to Windows Phone, which links
in such a way that this problem does not occur there.
With WinMain as the entry point this does not happen and also is the
default entry point. Testing locally shows that certification goes fine.
Since it does not pass the full command line string, the C-runtime method
__getmainargs is used instead. This also gives access to any environment
strings which may be passed.
Note that MSDN states that this function should only be used for desktop
applications. For XAML/C++ scenarios there is no entry function at all,
but rather the App object gets instantiated in the default template. But
this only works for XAML itself and not for plain C++ applications,
probably some other entry wrapper is created on the fly here.
Done-with: Andrew Knight <andrew.knight@digia.com>
Change-Id: I8a118eddf6cfeddeca7d676267e979af17123e02
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
In qt_xcb_XPixmapFromBitmap(), a new pixmap is generated for the caller.
This pixmap has to be freed after use. However,
createNonStandardCursor() didn't do this and instead leaked the pixmap.
Change-Id: I6fee180ec6508db9e82a5bb028957e7d9f7a4632
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
The source code is valid C++. But not valid C.
Change-Id: I43126001d33caef050b0bc8c248cf9f3b01091df
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
If it's detected, we have "mtdev" in QT_CONFIG, not in CONFIG. With
the bad test, libQt5PlatformSupport.prl would not get -lmtdev and, in
turn, the evdevtouch generic plugin would fail to link.
Change-Id: I5dab57b648e66943f98a22527717a20be35f02a4
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This warning no longer exists since at least MSVC.NET 2003. It's
reported to have existed on MSVC 6 and older only.
Task-number: QTBUG-35815
Change-Id: Ifb35d027edc3c1cbadac9a0d0a9c26524c52c87f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
When using a touch screen on a Linux machine, we receive both touch-events
and emulated mouse events from XInput, on top of that we synthesize mouse-
events ourselves for the touch events.
This patch grabs the touch device for touch events whenever it processes
a touch-begin thereby avoiding XInput from synthesizing mouse events.
Task-number: QTBUG-35157
Change-Id: I5849d5841be236d6719cd080af2e9e39eb9cdd84
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix QCocoaWindow::setGeometry() to respect WindowFrameInclusive
* Support fake fullscreen on 10.6 or WindowFullscreenButtonHint was not set on
10.7 and later
* Fix tst_qwindow on 10.6 and later
Task-number: QTBUG-23059
Task-number: QTBUG-34629
Change-Id: I6e032ca55b45674388b00506a424d3bd7ece429f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This fixes failing assertions in the CI system. All the callers of
lockedAlphaMapForGlyph always check the return value for being null as well as
the image itself, so we need to do the same here as well before calling
unlockAlphaMapForGlyph.
This is proposed to stable because commit
f9399d69ad also landed in stable.
Change-Id: I0a4f4fbb1727e5b4ad497b08177d14c81abd2dd0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
E.g. in the case where the first char in a font got a font engine
index != 0, and the second character got font engine index == 0,
we would not count the second character as a separate glyph run.
The result would be that its glyph indexes would refer to font #0,
but the font used to render them would be the same as for the first
character, i.e. random.
Task-number: QTBUG-35740
[ChangeLog][Text][QTBUG-35740] Fixed regression when shaping some
strings containing characters from multiple fonts.
Change-Id: I668804045c8b276787c7b256bc87916c467f3f59
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
[ChangeLog][Accessibility] On Linux action names were returned as empty
strings in AT-SPI getActions, now returns the proper names.
Change-Id: I75a469a0b8a5789cd54ce1b489ed5012654bb265
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2d05d3bd28 was not correct.
On OS X, when user uses CJK input method, only types single punctuation,
it was converted to CJK ones, and not showed in composing text.
Task-number: QTBUG-35700
Change-Id: I919edb3f5165bf943c0d90d06a788a2f335bb1ba
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
API level 19 (Android 4.4) introduces "immersive" mode which lets
the app use the entire screen.
Change-Id: I12f6aebaf1303cdc5b6bfb51944e895351fa2406
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>