The number of lines to scroll on a wheel click have previously been
a QPlatformTheme hint and QApplication setting, this patch moves it to
QStyleHint so it may be easier read by QGuiApplications.
Change-Id: I80673c7b99d78c6407b1202b3742e1cb5fef0583
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Changes how we control if gamma-correction is done, and enables it for
the freetype CFF engine when stem-darkening is available.
The new code replaces existing hacks to force gamma-correction off
when using Freetype on X11 and Windows.
Change-Id: Ic703ca6965a3d81b204349e10f406c991b292edd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Make INTEGRITY happy.
While we are at it, clean up the way the data is composed and accessed
and avoid unaligned uint32* accesses on our side as well.
Task-number: QTBUG-58183
Change-Id: I357be4b6844e5e8b8d27261a3676e135faea6250
Reviewed-by: Kimmo Ollila <kimmo.ollila@theqtcompany.com>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
This is based on revision 360 of lp:qtubuntu.
Main features/bugs fixed:
- fix QQuickWidget-based app rendering
- wire up Qt window types to Mir to enable desktop-based applications
to function with a window manager
- use QEGLPlatformContext and QEGLPBuffer instead of custom code
- correctly populate and update list of QScreens
- support for switching keyboard layouts
- improve window resizing to fix visual glitching
Change-Id: If816a858eb10b6356275d4b80c89a72562b3c29f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Reviewed-by: Matti Paaso <matti.paaso@qt.io>
This change allows painting via QPainter onto a QOpenGLWindow, QOpenGLWidget
or QOpenGLFramebufferObject when an core profile context is in use. This is
important on macOS in particular, where compatibility profiles are not
available, and so the only way to use modern OpenGL is via a core profile
context.
Added core profile compatible shaders with moder GLSL keywords.
The paint engine binds a VAO and two VBOs from now on, whenever VAOs are
supported. Note that this changes behavior also for OpenGL 2.x context that
have VAO support via extensions.
The Lancelot test suite gains support for core profile contexts. This can
be triggered via -coreglbuffer in place of -glbuffer when manually inspecting
via 'lance', while tst_lancelot will automatically run core context-based tests
whenever supported.
Task-number: QTBUG-33535
Change-Id: I6323a7ea2aaa9e111651ebbffd3e40259c8e7a9c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
The \c command is not supported within the \brief command.
If used, QDoc omits the value and the command. Rewrite briefs
to avoid using the \c command in them.
Task-number: QTBUG-58212
Change-Id: Ia29eae8b17a5fd46bec39e113aabf22e010217a4
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
The original implementation is only suitable as long as the only client
is the GL paint engine which will call the function with the GL context
current. In other cases this cannot be ensured. For instance, doing
triangulation on the gui thread in a Quick application using the threaded
render loop will have to deal with not having a current context on that
thread at all. Doing triangulation on worker threads has the same problem
as well.
In addition, in modern Qt versions a -no-opengl build does not imply no
accelerated graphics API.
Therefore, drop the ElementIndexUint check from qtriangulator.cpp and leave
it up to the caller to tell if uint indices are supported or not.
Change-Id: I7491d84981ee22d05c5fde08994dbb3a4e2432e9
Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
QImage::reinterpretAsFormat can be used to change the format of an image
without converting the data, to correct wrong formats or narrow the
format to an opaque one if found to be opaque.
[ChangeLog][QtGui][QImage] A new method reinterpretAsFormat is has been
added to change the format of a QImage without converting the data.
Change-Id: I5e15bc5a1c474a35d3921b06299008ab2effd945
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
[ChangeLog][QtBase][General] Removed support for WinRT/Windows Phone 8.1.
Task-number: QTBUG-57288
Change-Id: Ifd6d6780cbbdb710d99556ba3d2fb2e514d4f789
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Add new methods to QPlatformScreen that platform plugins can reimplement
in order to provide more information such as vendor, model and serial
number.
Expose that information as QScreen properties.
A use-case for this feature is a Wayland compositor that maps screens
to Wayland outputs hence it needs to replicate the information.
This information can also be added to the diagnostic output of qtdiag.
[ChangeLog][QtGui][QScreen] Add manufacturer, model and serialNumber
properties.
Change-Id: Ia6945f41023340602ef9d618e0d833a0c1825ab3
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
The setStops() docs state that the stops need to be sorted and the positions
must be valid. But the implementation sorts the stops and filters out invalid
ones, so we probably need to keep that behavior, which, however, causes memory
allocations and, potentially, O(N²) behavior, because setColorAt() uses a
form of Insertion Sort with linear scanning...
Add a fast-path for the common case that users adhere to the docs and pass
valid stops.
Change-Id: I93099a57bc4f37d1240a9e9f763618fd5095bc64
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
So that QFlags can use an (un)signed int matching the
underlying type as identified by the compiler and not by us.
Requires fixing a few warnings about sign conversion due to
QFlags misusages in qtbase that were either plain wrong, or
were relying on the enum being backed by an (un)signed int
when it wasn't.
Keep qtypetraits.h in the source tree in order to prevent
source breaks if some downstream #includes it (note however
that it did not contain any public API).
Change-Id: Ib3a92b98db7031e793a088fb2a3b306eff4d7a3c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Initial support for INTEGRITY to build QtBase
Change-Id: I18f36b4dea9107f01e1c281e4b62880590c777a1
Reviewed-by: Tuukka Turunen <tuukka.turunen@theqtcompany.com>
Reviewed-by: Nikola Velinov <nvelinov@ghs.com>
Reviewed-by: Risto Avila <risto.avila@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
The color components were not correctly shuffled to ARGB host-order
form.
Discovered and tested with tst_QPainter::blendARGBonRGB on ARM.
Change-Id: I2ef9b6129dd83f3c6be0b30c0a5e3684564e6b2f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
This patch improves the handling of mime type filters in QFileDialog.
The main change is in selectMimeTypeFilter(), which was just falling back
unconditionally on selectNameFilter(). Instead, mime type filters should
have an higher priority than name filters.
This patch also adds a new selectedMimeTypeFilter() method, which is used in the unit test.
Change-Id: Ice8bb08f5ff46e4a942d539f6001424eca878f74
Reviewed-by: David Faure <david.faure@kdab.com>
Most of these involved moving or removing extraneous
aide-memoir comments left by programmers between qdoc
comments and their functions. There were also some
cases where Q_CLANG_QDOC had to be tested to make
something visible to clangqdoc. And there were a few
functions that should not have been documented at all.
Change-Id: I3bf7c397a9e5ddbffc40cc1fee7f19cad71a1ae7
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Instead of falling back to createPlatformMenu() in client code.
Change-Id: Ia257449200f5c71f5e164072adce13d1137b1d87
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
The function was doing two things, both checking window ancestry and
whether or the window was a direct child of non-Qt window. The former
has now been split of in a QPlatformWindow::isAncestorOf(), which
simplifies the code in e.g. QApplicationPrivate::isWindowBlocked().
Change-Id: I259a190e03ef8def23356005474eeeee74c9ae89
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Split out the fast paths of fetchTransformedBilinearARGB32PM, so each
can be more easily read on its own, and to prepare for future AVX2
versions.
Change-Id: I1e9842a8928689823bf6d7d8a352625ed4b4b6c5
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
They were simply not postioned correctly relative
to the functions they were meant to document.
Change-Id: I6eef94b291ae4ffe343d2728cc32477f55b2a871
Reviewed-by: Martin Smith <martin.smith@qt.io>
Instead of returning 0, instantiate QPlatformAccessibility which
delegates the handling of accessibilty to accessibilitybridge plugins.
This makes it possible to implement entirely custom handling of the
accessibility events, making it possible to write for example in-process
screen readers.
Change-Id: I7bcfd83b769af8ca2689fb38add1345719cf804f
Reviewed-by: Jesus Fernandez <jesus.fernandez@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
It's useful to upload textures storred in .KTX files without dividing the layers.
It's also more efficient than uploading layer by layer.
Change-Id: I92d93c57514e2a3637d1202cb83bd72b8d277edf
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
For instance, if we are passed a QFile to a path that does not exist, being told
"No such file or directory" is significantly more useful than being told
"Device not writable".
Change-Id: I0cc72322f868f06ae2f77b3d0fac7e2094a1d2c7
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
No need to pollute the debug output when attempting to load a program
binary which then gets rejected, because this is not fatal. We will
simply recompile from source then.
Change-Id: I762b7c66fc1ccdf8ab73d720ee10a349c287628b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
It allows to set shortcuts for the standard buttons in
QDialogButtonBox.
Restore Qt4's behavior for the "Don't Save" button on macOS
by setting a shortcut for it (it was Cmd-D before Lion,
now it's Cmd-Delete).
Change-Id: I6b56f68f37670962178693a8983d9fe550540856
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Don't block the event that Qt depends on to close popups.
This is the same fix as 5b65698248,
but for touch this time.
Task-number: QTBUG-57292
Change-Id: I47bc19883c2e2b5dc9615c12dc6c198193c055cf
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This is a repeat of ae880beb7d, which had
fixed the problem for ICC 16. That commit was a repeat of
acf80b9a2b, which had fixed it for ICC 15.
As reported in ae880beb7, ICC doesn't like polymorphic exported classes
with inline constructors. That commit added the default constructor, but
we forgot the copy constructor. This constructor should have been
protected, so users are forced to use the virtual clone() function, but
we can't make it so in Qt 5 because MSVC encodes the protection and has
exported the inline function in debug builds.
qsvgiconengine.obj : error LNK2001: unresolved external symbol "const QIconEngine::`vftable'" (??_7QIconEngine@@6)
Change-Id: I427336c52fc342638c74fffd149033b990ea7ade
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Some formatting characters are replaced by ASCII in the output
from toPlainText(). Since this is a bit inconsistent, we should
document it.
Task-number: QTBUG-57552
Change-Id: I46033588d37517056a8d4668d1d16d48c72ee1b5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This is done by adding an API to QOffscreenSurface to enable setting a
native handle which can represent a native offscreen surface. When
using the TexureView it is necessary to render to SurfaceTexture objects
which are exposed as offscreen window surfaces. After wraping a
SurfaceTexture in a android.view.Surface object and passing it to C++
via the JNI, it is possible to get the needed ANativeWindow* handle
required to pass to eglCreateWindowSurface. So by setting this native
handle Qt can then render to this "native" offscreen surface.
Change-Id: If7fc5ac7ac588fe6c3a6fb883ea7e439d095470f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
We might run out of memory or malloc() or realloc() might fail for any
other reason. We want to crash cleanly with a clear message in that
case, rather than returning a null pointer.
Change-Id: If09c1b9e905fc60a5d9d45e598a418df433cf83b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Q_UNREACHABLE() isn't enough for some compilers, especially if it
expands to nothing.
warning #1011: missing return statement at end of non-void function "fetchPixel<bpp>(const uchar={unsigned char} *, int) [with bpp=QPixelLayout::BPPNone]"
Change-Id: I3e3f0326f7234a26acf5fffd148fecf0b72ea7e0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Q_UNUSED(cursor) was failing to compile when configured with
-no-pch.
Change-Id: I1da3c95c1636ca06f38a97052ee4360232520a8b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Private Use Area characters are quite valid input characters when used
in combination with a custom font. Joiners also serve an important language
purpose in semitic writing systems.
Note that there is a hack where we disregard any character produced
using CTRL or CTRL+SHIFT specifically because of German keyboards. I have chosen to
keep the hack in this patch to limit the change (though I have made an exception
for ZWJ and ZWNJ since both are produced using Ctrl+Shift on Windows), but it
will probably have to be reverted.
[ChangeLog][QtWidgets][Input] Accept characters in Private Use Area, as well as
zero-width joiners and zero-width non-joiners in input in QLineEdit and QTextEdit.
Task-number: QTBUG-42074
Task-number: QTBUG-57003
Change-Id: I73f3b7d587a8670de24e902dc52a51f7721dba5a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Fix the following warning by adding a const qualifier:
warning: No documentation for 'QPointingDeviceUniqueId::isValid()'
Change-Id: I1ebeda8f45e88efb7cb844b67409352c695e6354
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
It makes assignment a bit more succinct and efficient since they
are usually set together.
Since we store the diameters and the points separately, we
no longer need to worry about updating rects by moving their centers.
QGuiApplication and QApplication don't need to alter the diameters:
they are set once when the event is constructed.
Also fix the initialization of pressure and rotation:
418b6f6899 did it by casting a
double to qreal, whereas a plain integer constant will be
auto-converted by the compiler anyway.
Change-Id: Ib9956d2def21278b8ae042147d917da156e77e52
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
The ARGB32PM code-path doesn't have enough precision to accurately
render ARGB32 images, but the RGB64 code-path does. Since this is
already a slow configuration and the most costly part is the conversion
we can switch to the more accurate code-path for little cost.
Task-number: QTBUG-55720
Change-Id: Ifa0afba8d8cc0c2f699bb91f51726f4ee5228f3e
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Throw out unused code and simply format table to only care about bpp
and use it consistently for all bpp.
Also makes QImage use the 180 degree memrotate, and fixes the tiled
packed qt_memrotate270 so it can be put to use.
Change-Id: If4ef1666fca960ce8e4ce32d85dc5f347b6986f4
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Simplifies code that traverses the parent hierarchy, including transient
parents. For Qt6 we should merge the two parent() functions, adding a
default value for the mode, probably ExcludeTransients.
Change-Id: Ic9cdae3e31a3a8e140a5b175160f3b934d2b6e00
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
The prolog and epilog did not force RGB32 to be converted to RGB64 with
alpha fully defined like the middle optimized part.
Change-Id: If7c4829f2239f9a3c524f78b9ce269e2b0b5b150
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
this also removes the need for passing pre-processed options via
configure.cfg, so get rid of that.
a somewhat unfortunate side effect is that the android-style-assets
feature had to move back to the top level, as the licensing options
depend on it.
Started-by: Lars Knoll <lars.knoll@qt.io>
Change-Id: Id4d1e0ba18b3e3104400293b8f0c7f2f65e68dea
Reviewed-by: Lars Knoll <lars.knoll@qt.io>