With the right guards for isContentView() we can use m_view.window
directly. The only instances left of m_nsWindow are during window
creation, which will be removed in a followup.
Message send syntax for reading or writing Objective-C properties
has been replaced with dot syntax where appropriate.
Change-Id: I86925753612516625c93ea5bbedc98a3ddd8fec4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
And unify all of them to use regular pointer check syntax, to stay
consistent with other uses of non-smart pointers.
Change-Id: Ic55d7a16f2010120aaa8eac5b2df8189490671a2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Some AMD cards have been reported to not update otherwise.
Task-number: QTBUG-60527
Change-Id: I84d57a57eb2b76fb31255ae42b79b96ab7b257c9
Reviewed-by: Kimmo Leppälä <kimmo.leppala@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The m_nsWindow member both indicates whether or not the QCocoaWindow
represents the content view of a NSWindow, and provides access to that
NSWindow. The former is better expressed through isContentView(), which
allows us to then replace m_nsWindow entirely in a followup with access
though m_view.window, removing the need to cache the NSWindow.
Change-Id: I6e7de4b6d64b29fc9023222be045254f18be28cd
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This part has not been implemented before.
Also replace deprecated android.text.ClipboardManager with modern
android.content.ClipboardManager.
Task-number: QTBUG-58548
Change-Id: I190208042af8a6c87ed391c6c72f3f51e58dfad3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Retrieve and parse EDID blob.
Return screen product information from EDID.
[ChangeLog][Platform Specific Changes][Linux/XCB] Add screen product
information from EDID.
Change-Id: Ic54429cdc90c41342c37511bcaebce95c175f517
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Significantly reduces the number of objects left to rot in the root pool,
which is only drained on application shutdown.
Change-Id: Iad7520ab083715416d95413a63474b9153f22fb5
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
When handling WM_NCCALCSIZE in a global filter, the associated platform
window needs to be assigned to platformWindowPtr so that its frame
margins can be updated on return.
See also 3035400f36, which introduced the
platformWindowPtr out parameter for this purpose.
[ChangeLog][Platform Specific Changes][Windows] Fixed frameMargins for
WM_NCCALCSIZE when handled inside with QAbstractNativeEventFilter.
Change-Id: I7827b81d30a5c80dad591206a88712169dea0108
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Retrieve and parse EDID blob.
Return screen product information from EDID.
[ChangeLog][QPA][eglfs][kms] Add screen product information from EDID.
Change-Id: I766999afd9298e82f6147fdeba5d14757bfb4b03
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Tablet events compression has been missing since commit
60cd1c6775 in 5.6.1, and there's
no way to bring the old behavior back. Since tablet events are
not taken into account by AA_CompressHighFrequencyEvents on
purpose, we introduce this new flag.
This new flag is conditional to AA_CompressHighFrequencyEvents
being set in order for it to be effective.
[ChangeLog][QtCore][Tablet support] If the application attribute
AA_CompressTabletEvents is set in addition to AA_CompressHighFrequencyEvents,
even the QTabletEvents will be compressed (only on the X11 platform so far).
AA_CompressHighFrequencyEvents does not enable compression of tablet events
by itself, because paint applications typically need to process
all possible tablet events in order to draw the smoothest curves.
Change-Id: Ie7434ab4f9a4c64f2626c75e661cfd0d6cd22896
Task-number: QTBUG-44964
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Wayne Arnold <wayne.arnold@autodesk.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Better than going half way and not quite finishing, and nicer results.
Change-Id: If6bf005182534f6fbfc13544d4190d3e54a272e9
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
If vaoHelper is not valid the vao variable was being initializated with
a random value.
Change-Id: I44962841baeb1a1cff3124d6126e19c791feaea3
Coverity-Id: 171484
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
CID 178811 (#1 of 1): Resource leak (RESOURCE_LEAK)
25. leaked_storage: Variable dptr going out of scope leaks the storage it points to.
Change-Id: I3354fe46cfb08701f387f65aaaa5c4f235079501
Coverity-Id: 178811
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
EGLNativeDisplayType is void* on NVIDIA systems but the backend may get compiled
on others where it is something else. The function definition does not match
the proto on these so it is time to correct this.
Change-Id: I569d9f8f3fcba7b2a4672d83606dfdc7bb18a1f0
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
The system tray icon implementation relied on QMenu. After
the introduction of QPlatformSystemTrayIcon::contextMenuRequested(),
the code can be moved into the plugin, making use of native menus
when enabled or falling back to QMenu.
This enables the SystemTrayIcon QML Type to work.
[ChangeLog][QtGui][Windows] A native system tray icon is now
available for SystemTrayIcon.
Change-Id: I0fdbfb5cbb815c1ea6fb19305a9bceb9c5bcc034
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Add simple Win32-API based menus (not owner-drawn).
Native menus are implemented using Win32 API and are simpler than
QMenu-based menus in for example that they do allow for placing widgets on
them or changing properties like fonts and do not provide hover signals.
They are mainly intended for Qt Quick. By default, they will be used if the
application is not an instance of QApplication or for Qt Quick Controls
2 applications.
In addition, the command line option -platform windows:menus=native
will unconditionally activate them and -platform windows:menus=no
turns them off.
[ChangeLog][QtGui][Windows] Native menus have been implemented.
Task-number: QTBUG-55967
Change-Id: I439a7d949745debea3eb0e5789cf42288a0d526f
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
The text member was never filled and thus was not set in onKeyUp.
Change-Id: I0d0094745c385e0942635da643d863868b010c2a
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
The event's count parameter is used to determine the number of keys
involved in the key event, not the repeat count of the key press.
The desktop windows implementation does not pass the "count" parameter,
so we omit it as well.
The tryShortcutOverride parameter is only used on macOS and thus can be
omitted as well.
Change-Id: Id7554e43cc73ec616f68444e82a38418e622e20a
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
This should not change the result since fixed1616ToReal also divides
by 65536. It's just to make it consistent with the other places that
we use fixed1616ToReal.
Change-Id: I96b3a07d1cbc98d7bdbe7a3b6035b196e34a5abc
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
We might call updatePreeditText from the QCoreApplication dtor by
running an event loop from inside a "post routine" added with
qAddPostRoutine().
Task-number: QTBUG-60000
Change-Id: I04c08fe36bfa63ac345a06e50952d2ec83a78ac0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Change-Id: I58a2bd715ff1767571d076a881872bd5eab2caec
Reviewed-by: Stephan Binner <stephan.binner@basyskom.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Even for compilers that don't yet support C++14 constexpr,
this should improve performance of searches a lot, if,
indeed, Boyer-Moore still is an optimization over linear
searching at all in these days of hardware prefetchers
and deep CPU pipelines, because the setup cost is only
incurred once. As function-statics, we also don't care
about startup ordering and cost.
It's a pity that the platform that would benefit the most
- Windows - doesn't have constexpr support, yet.
Change-Id: I827df135854fd6fbd6546e248dc37ef0fbaf1792
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Tablet vendors allow user configurable pen buttons
where the user may assign a logical mouse button to
a given physical button.
In the case of Wacom tablets this mapping is not reflected
in the buttonMask API, which returns the state of
the physical buttons.
Use NSEvent buttonNummber instead, which returns the
logical button number, after applying user mappings.
Unifiy button state stacking with the mouse handlers.
Handle a special case where buttonNumber returns 0
for tablet right mouse presses. We get these events
via rightMouse* event handlers and can hardcode the
button number.
Change-Id: I06b9b1aa98c49b84f7e3871e694c22c7ad0169d6
Task-number: QTBUG-57487
Task-number: QTBUG-54160
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
C++11 deprecated 'register' as a storage specifier, and C++17 removes
it.
Fixes GCC 7.0 warning-turned-error:
nativepainting/qpixmap_x11.cpp:2013:25: error: ISO C++1z does not allow ‘register’ storage class specifier [-Werror=register]
Amends 07942adb77.
Change-Id: Ideb674d903e5e6eb5ae92cfc3979ff59b243520c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit revives the old native QPixmap and QPaintEngine
implementations that were present in Qt4. The backing store supports
regular raster windows in this commit. Support for render-to-texture
widgets and OpenGL compositing will be added in a follow-up commit.
Change-Id: I80a9c4f0c42a6f68f571dfee930d95000d5dd950
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
As for the formatting code, de-duplicate the parsing code by only
parsing char*s, converting QChars to Latin-1 first in a small buffer.
The QUuid(const char*) ctor performed no length checking, relying
instead on the checks performed within _q_uuidFromHex(), which
includes an implicit check for premature end (because NUL is not
a valid token for the parser).
The (QString) and (QByteArray) ctors did perform length checking.
To the extent possible, this is removed, since it is handled by
_q_uuidFromHex(). Failure cases need not be optimized. Only the
QLatin1String overload needs to do some checking, because views in
general are not NUL-terminated. The QStringView overload can just
append a NUL when it converts to Latin-1.
The only check I added to _q_uuidFromHex() is that for src ==
nullptr. It would otherwise be duplicated in several callers.
While touching the internal functions, port to passing and returning
by value.
Saves 1.6KiB in text size on optimized GCC 6.1 Linux AMD64 builds,
even though we added new API.
Port some users to the new functions. Expand fromString() test.
[ChangeLog][QtCore][QUuid] Added fromString(QStringView/QLatin1String).
Change-Id: I519339419129550c86e0ea80514865cd6a768f5d
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
We don't need to defer to NSWindow creation before determining the initial
window geometry, and we don't need to redetermine each time we re-create
an NSWindow for a QCocoaWindow.
Change-Id: Ie13380830b44e96670ff16513f29deef5f5ae313
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
CoreWindow::GetAsyncKeyState returns flags and not enums so checking
equality does not give the needed result.
As seen in qwindowskeymapper.cpp key events that only contain a modifier
key should not have the key itself as a modifier when calling
handleExtendedKeyEvent.
With the current approach the modifier states are the same as
on desktop Windows.
Task-number: QTBUG-58750
Change-Id: Ie0f3e1d3e8294e1a6b41c9223a7a5153306579f6
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
CorePhysicalKeyStatus::KeyStatus does not give the information we are
after so we have to keep track of "auto repeat" state of the keys
ourself.
Task-number: QTBUG-59232
Change-Id: I22aa185780e5fa1f7f3c23c2deb2a0dde0c4a582
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
This patch updates the Windows QPA backend code to use QRegularExpression
in place of the deprecated QRegExp.
Change-Id: Ib45c374578bed5b9f2771df1ca04cc09cab6e7c9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reasons:
* Tag means nothing to the platform, tag is something
the Qt side code will store and then restore, but it's meaningless
for the platform, since it can be either the pointer to an
action (qmenu.cpp) or an item count (qcombobox.cpp)
* Since it's meaningless to the platform you don't know what
to do when trying to implement a platform, this shows in how
the field was being initialized, some initialized to this,
some initialized to 0
On a followup commit we will remove the virtual tag but first
need to fix up other QPAs that don't live in the main repo
Change-Id: I15ac83f3bf7e4c741153d31ac761dbbe6f4b1b52
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
This will add copy/paste/dnd support for QPixmap and QImage
to all darwin platforms (and not just macOS, as it is today).
Task-number: QTBUG-57428
Change-Id: Iefc876c0a347077322f195b55c49f2c1c4b4a34b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
A QVariant can only be converted to a QByteArray if it has user type
QMetaType::QByteArray or QMetaType::QString. The way it stood, we
always tried to convert the mime data to a QByteArray, and
then put the result into a QVariant. This would fail if the mime
data contained e.g a QPixmap.
This patch will inspect what kind of data the QMimeData contains, and
convert it to a QVariant using the expected API.
Task-number: QTBUG-57428
Change-Id: I67054424fe8c45873bab8305e7b44de939aae0fb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
drmEventContext has grown by one pointer, so the build fails with an
error about a member without initialization.
qeglfskmsgbmdevice.cpp:147:5: error: missing initializer for member ‘_drmEventContext::page_flip_handler2’ [-Werror=missing-field-initializers]
Change-Id: I0e1a09998253489388abfffd14b6014b1ddc90e1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This enforces decoupling and in the case of QMacStyle, isolates
QtWidgets and therefore end user applications, from Carbon/HITheme.
Windows and Fusion are platform independent, so they remain built-in
(but mostly because the Windows style is tightly coupled to other styles
like QStylesheetStyle).
Task-number: QTBUG-59428
Change-Id: Id6519fe0c5269c1bce5b5921f9db06257032a1c9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Later, the Windows XP style will be removed entirely by means of
being merged with the Windows Vista style (which inherits from the
XP style).
There was actually no reason for these styles being separate
classes in the first place, because both result in the same
appearance for controls on the running version of Windows.
Therefore, the windowsxp style merely appears as a "broken"
version of the windowsvista style, with only minor differences
based on the additional metrics that the vista style provides.
The windowsxp style does NOT, and never did, allow users to get
a Windows XP style appearance on Windows 7 and above (which is
currently Qt's minimum supported platform). Therefore, now that
Qt no longer supports Windows XP, the windowsxp style is unusable.
[ChangeLog][QtWidgets] The windowsxp style is no longer available
as a separate style, because it did not (and cannot) actually
provide an XP-style appearance on currently supported Qt platforms.
Change-Id: I513d9bce3f247f97cfb28dfee88fe888469e0a6f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>