Commit Graph

7587 Commits (ca3a7efffd350b27c05e07f7ea73cc7a7bbeeb08)

Author SHA1 Message Date
Morten Johan Sørvig caa74f16d4 wasm: support rendering to multiple canvases
Qt (via the the qtloader.js API) now supports rendering
to multiple canvases. The application sees each canvas
as a QScreen.

Make qtloader.js support multiple canvases:

  var qtloader = QtLoader({
    canvasElements : [array-of-canvas],
    showCanvas: function() {
      // make canvas(es) visible
    },
 });

The canvases were previously created/returned by showCanvas(),
however this function is called after the Qt app has
been started and adding screens that that point is
too late. (This worked before since there was only one
screen, and no need to connect each screen instance
to specific canvas.)

Remove QWasmScreen, QWasmCompositor, and QWasmEventTranslator
singletons from QWasmIntegration. These are are now
crated per-screen and are owned by the QWasmScreen.

Task-number: QTBUG-64079
Change-Id: I24689929fd5bfb7ff0ba076f66937728fa4bc4e4
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-03-08 10:09:57 +00:00
Lorn Potter 452c644c5c wasm: make wasm platform target a specific canvas instead of default
This allows for multi canvas use

Task-number: QTBUG-64079
Change-Id: I69c998aa4c2869bb5b7f14ba65bb63284365ad70
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-03-08 10:09:46 +00:00
Liang Qi b51fbd72b9 cmake: build qmacstyle
Change-Id: I1fa0196036ffd31b5961bb5b73ff21123a818af8
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
2019-03-06 13:18:36 +00:00
Liang Qi 32c59d6856 cmake: fix cocoa and graphics on macOS
Change-Id: Ia956c74a54874f91cc0ea8e5105164de88890ff2
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2019-03-06 13:18:20 +00:00
Liang Qi 2add2dbdaa Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/network/access/http2/hpacktable_p.h

Change-Id: Ie0c296667dfdebba84f4858056a1ac80c24ee7df
2019-03-06 12:31:50 +01:00
Gatis Paeglis 856fb1ab44 xcb: check for nullptr when reading AT_SPI_BUS property
We always have to check the return value of xcb_get_property(),
but this code did not do it. These xcb functions do not check
for validity of the pointer, so we have to make sure that we pass-in
something valid:

 void *
 xcb_get_property_value (const xcb_get_property_reply_t *R)
 {
    return (void *) (R + 1);
 }

 int
 xcb_get_property_value_length (const xcb_get_property_reply_t *R)
 {
    return (R->value_len * (R->format / 8));
 }

Fixes: QTBUG-74067
Change-Id: Iabbc81e6079d96c7314d16dd78783de07f9ad629
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-03-06 07:59:50 +00:00
Tor Arne Vestbø 4eda22ea0d macOS: Improve mouse logging
Change-Id: Icc81f73e728d9b3669afc37b0c1ef73588f24749
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-05 22:30:05 +00:00
Friedemann Kleint f792fed2ff XCB/libxkbcommon input context: Fix crash when invalid local is set
Fall back to querying the locale.

Fixes: QTBUG-74216
Change-Id: Ibd60572454741e64f649ecc3e37f593a8e2b2bda
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-03-05 18:34:19 +00:00
Tor Arne Vestbø 65d2f0d173 macOS: Modernize qnsview_dragging.mm
Style fixes, modern Objective-C usage, and use of convenience APIs.

Change-Id: I04801b0b5f0d2213b4bcf1b0158fc32e57432d28
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-03-05 14:40:01 +00:00
Morten Johan Sørvig 070f75d3b0 wasm: improve clipboard fallback path
This improves handling of cut/copy/paste clipboard events,
ands allows clipboard access via the common keyboard
shortcuts.

Make the canvas be eligible for clipboard events by
setting the contenteditable attribute. Install clipboard
event handlers directly on the canvas.

Suppress Ctrl+X/C/V key event handling in the keyboard
event handler in order to make the browser generate
clipboard events. Send synthetic key events from the
clipboard event handlers to make the app copy/paste
to Qt’s clipboard at the correct time.

Access the system clipboard data using event.clipboardData.

Task-number: QTBUG-64638
Change-Id: I584b78ffa2b755b1b76e477b970255c6e5522f6a
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-03-04 08:21:28 +00:00
Qt Forward Merge Bot 84e15d6f48 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Ic0037eac1d85a0e60e7b1a590d49b5ee6205bfc8
2019-03-03 01:00:25 +01:00
Tor Arne Vestbø a74b2b5f15 macOS: Initialize QNSView mouse related members with other mouse logic
Change-Id: I4ff67028823d62ed67bf4303a58bee127bd76501
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-03-02 00:47:46 +00:00
Qt Forward Merge Bot 607338f98f Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I83f6ed9480bf21020ce7a9431010d87a88df84a1
2019-03-02 01:00:08 +01:00
Gatis Paeglis 2065bc070d platforminputcontexts: use libxkbcommon compose key API
Our implementation of compose table parser was added on Mar, 2013.
libxkbcommon added APIs for the same thing in Oct, 2014 (ver: 0.5.0).
After removing RHEL 6.6 from the list of supported platforms we were
able to move the minimal required libxkbcommon version to 0.5.0. Now
we can use the xkbcommon-compose APIs on all supported platforms.

With this patch we can drop nearly 1000 lines of maintenance burden.
This patch fixes user reported issues with our implementation.

Known issues:

- Testing revealed that xkbcommon-compose does not support non-utf8 locales,
and that is by design - https://github.com/xkbcommon/libxkbcommon/issues/76
Our implementation did work for those locales too, but it is unclear
if anyone actually uses non-utf8 locales. It is a corner case (work-arounds
existing) and likely a configuration error on the users' system.

- Looking at the release notes for versions above 0.6.1, only one issue
that stands out. Compose input does not work on system with tr_TR.UTF-8
locale, fixed in 0.7.1. Compose input works fine when using e.g. en_US.UTF-8
locale with Turkish keyboard layout.

Note:

With Qt 5.13 we have removed Ubuntu 16.04 and openSUSE 42.3 from CI:

Ubuntu 16.04  - 0.5.0
openSUSE 42.3 - 0.6.1

CI for Qt 5.13 has:

Ubuntu 18.04  - 0.8.0
RHEL-7.4      - 0.7.1
openSUSE 15.0 - 0.8.1

Currently the minimal required libxkbcommon version in src/gui/configure.json
is set to 0.5.0, but we could bump it to 0.7.1 to avoid known issues from above,
but that is a decision for a separate patch.

[ChangeLog][plugins][platforminputcontexts] Now using libxkbcommon-compose
APIs for compose key input, instead of Qt's own implementation.

Fixes: QTBUG-42181
Fixes: QTBUG-53663
Fixes: QTBUG-48657
Change-Id: I79aafe2bc601293844066e7e5f5eddd3719c6bba
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
2019-03-01 14:31:37 +00:00
Gatis Paeglis a34e81ab8b platformsupport/input: add xkbcommon utilities lib
xcb/eglfs/wayland - all use XKB keyboard configs and APIs. There
is a lot of duplicated and naturally a diverging code. This patch
adds a helper library to avoid all the mentioned problems and unify
feature set between these platforms.

qlibinputkeyboard:

Added a fixup for 2803cdf758. From
spec: "keysyms, when bound to modifiers, affect the rules [..]",
meaning we can't look at keys in isolation, but have to check if
bounding exists in the keymap. This is done by using
xkb_state_mod_name_is_active() API, but that API has its limitations -
https://github.com/xkbcommon/libxkbcommon/issues/88
I will fix this separately in the LTS (5.12) branch.

We need to read the modifier state before the key action. This
patch fixes a regression introduced by aforementioned patch, which
caused modifiers being reported wrongly in QKeyEvent::modifiers().

qtwayland:

Moved toKeysym(QKeyEvent) from qtwayland repository into this library.
For this and other key mapping functionality wayland was duplicating
the key table. All of that will be removed from qtwayland, and calls
will be replaced to use this lib. Adjusted toKeysym() to fix QTBUG-71301.
Qt keys don't map to ASCII codes, so first we need search in our key
table, instead of mapping from unicode.

lookupStringNoKeysymTransformations():

fixed off-by-one error, where we were including terminating NUL in
QString.

Fixes: QTBUG-71301
Task-number: QTBUG-65503
Change-Id: Idfddea5b34ad620235dc08c0b9e5a0669111821a
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
2019-03-01 14:31:28 +00:00
Qt Forward Merge Bot 7aa204d5b3 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Icec0aa703d8a13efa9f1634a1a353eb9d63685c8
2019-03-01 01:00:54 +01:00
BogDan Vatra 8880ef7931 Terminate Qt gracefully
When the application is closed via the task manager on Android
then we need to ensure that that the application can close down
any running event loops. So we wake up all the event loops and
then call quit() directly on the application object to start a
graceful termination of the application.

In order to aid the graceful termination of Qt then a check is
added to ensure that it does not try to create a new surface when
the application is suspended. This prevents it from locking
while trying to create a new surface when this is not possible.

Fixes: QTBUG-70772
Change-Id: I6795b3d280e178d7f1207004a1b965a31a0cc9e9
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2019-02-28 13:43:21 +00:00
Qt Forward Merge Bot 55b4641962 Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13 2019-02-28 01:47:50 +00:00
Qt Forward Merge Bot 043f99954f Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Icc9b061c56e969756f0351c936cdeb8063c86079
2019-02-28 01:00:15 +01:00
Lorn Potter 15adc79bbc wasm: fix clipboard use
Change 5242126a inadvertantly removed clipboard functionality

Change-Id: Ie15e08470dd51d1c166063bbd443fd04416b2786
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-27 23:37:43 +00:00
Lorn Potter f6ce77f3e4 wasm: activateWindow when needed
Task-number: QTBUG-74066
Change-Id: I6babab888de118c8c881fd8a18a90049563d7a23
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-27 18:20:49 +00:00
Elena Zaretskaya ca991ee22d Segfault when the exiting the application under platform eglfs
If you run an application under eglfs, it falls with segfault on the
exit. For example, examples/gui/analogclock,
examples/widgets/widgets/analogclock, examples/opengl/cube,
examples/opengl/qopenglwidget, etc. (I have added the function
keyPressEvent to exit  by qApp->quit(), if needed).
It isn't appear in applications using QQuickView or QGLWindow.
This is because QCoreApplication destructor, where the variable self = 0
(therefore, qGuiApp = 0), is called before than
QOpenGLVertexArrayObject::destroy(), where qGuiApp is accessed
(qGuiApp->thread()).

Task-number: QTBUG-73824
Change-Id: I1dc55d5e811bfe8a8ea2178752e8771f8644d356
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-27 15:30:40 +00:00
Albert Astals Cid ca1113728e cmake: Make it so that eglfs plugin doesn't hang on make -jN
Since the dependency on moc is in CorePrivate (o Core) we need
the target to depend on it otherwise cmake will try to use moc before
it is built.

This is because what we do with cmake is say "moc is in this
path, you can use it", but it's actually not built yet so
we need to depend on a target that depends on moc directly otherwise
cmake will trust us and try to use a cmake that doesn't exist and just
hang forever when running make -jN

Change-Id: Icf55c62092fd3fd3754a4f4f28c8c313bf374615
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-27 15:06:21 +00:00
Albert Astals Cid 31e1dda94b cmake: Give the egl_x11 test the necessary libs to compile
And add the eglfs_x11 plugin

We need to actually try to compile the test as the comment it it says
that having x11 and egl is not enough since sometimes they are actually
incompatible

Change-Id: If6bdc08c21b91fa9c41663f2fa653fd59e5ddd2e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-27 15:04:59 +00:00
Friedemann Kleint 2c31516a1e Windows QPA: Fix override cursor when modal window is present
Handle WM_SETCURSOR to apply override cursors to window that do not have
mouse capture (as is done in Qt 4).

Fixes: QTBUG-58590
Change-Id: I7ff6f799da1b8d4b4396c0a6137778a11a192617
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
2019-02-27 08:10:49 +00:00
Qt Forward Merge Bot c6fc2bc3e2 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I14eaabe98845445a9ea5266872cc1797786cfe04
2019-02-27 01:00:45 +01:00
Allan Sandfeld Jensen 96f6cab22c Blacklist nouveau and llvmpipe for multithreading
After removing Mesa drivers from being blank blacklisted, we still need
to blacklist nouveau specifically due to their lack of proper locking:
https://bugs.freedesktop.org/show_bug.cgi?id=91632

llvmpipe is similarly blacklisted for now, as we lack enough information
to know if the underlying issue behind QTCREATORBUG-10666 has been solved.

Fixes: QTBUG-73715
Change-Id: I1a60b562cd9db94fa8462b922d6bfeebf0088dc5
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-26 18:10:03 +00:00
Friedemann Kleint 9694d754b8 Haiku: Fix mis-spelled module in .pro
Fix warning:
Project ERROR: Unknown module(s) in QT: eventdistpatcher_support-private

Change-Id: Ic74481621c541fc0a13640c5e5cae2df44ffb091
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-26 12:16:09 +00:00
Gatis Paeglis 58cad5caf2 build compose input context plugin not only for XCB platform
It can be used by any platform that uses xkbcommon for keyboard
input: wayland, eglfs.

Change-Id: Iba7d8989f922063cdceb94c1c4bcd8d8e4ae294e
Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
2019-02-26 11:46:12 +00:00
Qt Forward Merge Bot 04479f1952 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Id511850002d9274d17891c063376ac4b3ff939dd
2019-02-26 01:00:19 +01:00
Shawn Rutledge 2f4c658236 Mark QEglFSKmsEglDeviceIntegration::presentBuffer as override
clang complains; this makes it build

Change-Id: I874c51ea4500edcf3f0bb9c79f0ef0f36309d579
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-25 20:10:44 +00:00
Andre de la Rocha 00cfb4d780 Windows QPA: Generate proper event when dragging item outside window
When an item was dragged outside the window, the mouse release event was not
being properly delivered and the item would stick to mouse cursor after
moving it back into the window.

Fixes: QTBUG-72994
Change-Id: Ibce990390c866e16d58f7d969673dd05e862d97e
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-02-25 14:26:09 +00:00
Robert Loehning 85b0ce8ca3 Fix can not -> cannot
Change-Id: Ie9992f67ca59aff662a4be046ace08640e7c2714
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-02-25 13:03:45 +00:00
Mikhail Svetkin 1be070a2be qtlite: Fix build the source code with -no-feature-shortcut
Change-Id: If47149466a5da901e3eb6e6f2dcfb0a7816bc60b
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2019-02-25 12:20:36 +00:00
Qt Forward Merge Bot 2a1292b916 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I4b56ce8c76729d9fc60995564299f8f27336fcde
2019-02-22 19:59:08 +01:00
Qt Forward Merge Bot 64085d9b2f Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I9e7cb1b131b7b216aad8ed1b1536669fd1557c21
2019-02-22 01:00:27 +01:00
Morten Johan Sørvig b5c16921cc wasm: make setting the cursor shape work again
Commit 960af0d64 ported away from EM_ASM but also
changed the logic. Set the canvas.style.cursor property,
like it originally did.

Change-Id: Ie4b23abeae54173894bff1db000a305c459684bb
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-02-21 17:27:07 +00:00
Gatis Paeglis 3d7616a316 offscreen: remove false condition
This plugin does not use any XCB libs.

This patch amends 94a4f06fb8
and 744be250bf

Change-Id: I33e2647ace3d9f32a420551b3b198e33a182a06f
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2019-02-21 16:26:48 +00:00
Jan Grulich 1d3a162bfe Properly convert filename to bytearray when sending over portal
We should be using QFile::encodeName() to properly convert filenames
from string to bytearray. This takes user's locale into account.

Change-Id: I090f73f21feb73af166e88baa0e7f4a595cdb25b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-02-21 10:53:19 +00:00
Qt Forward Merge Bot 2e8987b7ec Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13 2019-02-21 01:34:52 +00:00
Qt Forward Merge Bot 0c0c4a23bc Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I830beea26863323ab78a5d4b093f7763d77ad3da
2019-02-21 01:00:08 +01:00
Lorn Potter ca32a373b3 wasm: fix crash on window close
Change-Id: I07d6edfbfbf056240262b833ccb708dc15f830a3
Fixes: QTBUG-73678
Task-number: QTBUG-73678
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-20 23:03:06 +00:00
Qt Forward Merge Bot 035f934d7a Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp

Added tests/auto/testlib/selftests/expected_crashes_5.txt to work
round the output of the crashes test (which exercises UB, see
QTBUG-73903) being truncated on one test platform.

Change-Id: I9cd3f2639b4e50c3c4513e14629a40bdca8f8273
2019-02-20 09:51:12 +01:00
Tor Arne Vestbø 10565c5ef3 macOS: Decouple screen property updates from application delegate
Change-Id: I489c37131bf715d45f147964de4a8cd8c02adbcb
Fixes: QTBUG-72966
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-20 07:46:51 +00:00
Tor Arne Vestbø 2fc4635e98 macOS: Remove special handling for hiding tool windows on application hide
The code was needed when we had QCocoaWindow::hide(), that guarded the
ordering out by checking the visible state of the NSWindow. We no longer
have that method, and setVisible doesn't have the same guard.

Added a comment in setVisible to prevent future travelers from adding
logic that introduces the same situation.

Change-Id: I0514619a303daceb1cd7d334f0de4bfce6c3e96f
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-20 01:30:01 +00:00
Andy Shaw 8796e3016f Android: Add support for getting the UiLanguages
From API 24 it is possible to get the UiLanguages correctly from
Android so if API 24 or later is available we should use this. If it is
not available, then it will fallback to the original behavior of using
the system language.

Fixes: QTBUG-68019
Change-Id: I4cfbc2b807b361c08da56a74100ba59abf5f2d0f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-02-19 06:57:59 +00:00
Qt Forward Merge Bot 67c70b22f6 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Ifa143cc462301aaa305c9c85360e543553a751f0
2019-02-19 01:00:08 +01:00
Tor Arne Vestbø 0a2e91328e macOS: Set up platform window reference before initializing QNSWindow/Panel
Initializing the window will end up in [NSWindow _commonAwake], which calls many
of the getters. We need to set up the platform window reference first, so we can
properly reflect the window's state during initialization.

Change-Id: I5349273b1930ee8a57dc518db74be90d2426f61c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-18 22:58:07 +00:00
Tor Arne Vestbø 7319c342c3 macOS: Implement QNSWindow/QNSPanel mixin using preprocessor includes
We want to share the implementation between the two classes, but
Objective-C doesn't natively have a mixin-feature. Instead of using
dynamic super-calls at runtime (which worked fine, but added
complexity), we now do the mixin at compile time using the
preprocessor.

The dynamic-super feature is left in, in case we need it in other
areas in the future.

Change-Id: I95dfa7f18cba86cc518e963dd018944ef113ac06
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-18 22:57:53 +00:00
Lorn Potter 5242126a61 wasm: improve key handling
Allow for extended non English keys

Task-number: QTBUG-68189
Task-number: QTBUG-69392
Change-Id: I12187ebc1250a5c29022cd2d3ad3a77eb45c06a8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-18 18:54:44 +00:00
Tor Arne Vestbø 6273b484b3 macOS: Remove redundant tracking of modal sessions in QCocoaWindow
Change-Id: I43a40889b0731e4b480155256fc51eaa836e62a3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-18 16:45:48 +00:00
Tor Arne Vestbø c36c5e9b55 macOS: Modernize worksWhenModal handling
The code in QCocoaEventDispatcher was dead and could be removed.

Change-Id: I0c57e64791045d65033376c096220983059028ba
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-18 16:45:48 +00:00
Tor Arne Vestbø 025128a7e0 macOS: Simplify QCocoaWindow::setVisible
We don't need all the checks for the event dispatcher, it should
always be there.

Change-Id: Ib89a9c1c5524b49c2d85fae12425d19ced960597
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-18 16:45:48 +00:00
Tor Arne Vestbø c7318e899e macOS: Remove dead code in window activation handling
Change-Id: I321ab68b51c4ba63204c0e15fec74164e2c93d34
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-18 16:45:43 +00:00
Michal Klocek 94a4f06fb8 Add run-time qpa offscreen glx support selection
Introduce QT_QPA_OFFSCREEN_NO_GLX to run offscreen qpa
without glx even if compiled with x11 support.

Task-number: QTBUG-63346
Change-Id: I647bf5df27f095c3dd27a90415cc9c445df93fd1
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-18 15:37:43 +00:00
Albert Astals Cid af7fe32ebd cmake: build eglfs_emu
Change-Id: I793865f55114d08c342477f4e786d1089239ace4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:42 +00:00
Albert Astals Cid df17678ab1 cmake: build eglfs_kms_egldevice
Change-Id: Ib224140d64efdc9c7190add7b568484313ecd7a3
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:28 +00:00
Albert Astals Cid d03b915c20 cmake: build eglfs_kms plugin
Change-Id: I362c17a67c2cb4c243c39f760c598bfc7e1071bd
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:18 +00:00
Albert Astals Cid b56d9916d9 cmake: build eglfs_kms_support
Change-Id: I0c1cca14756519f60f71143150e56380fa3a6289
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:07:08 +00:00
Albert Astals Cid 697f358466 cmake: add deviceintegration/CMakeLists.txt
Change-Id: I2b30c27bb4f17f40143a66e89b3d5986375a76a6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-18 08:06:36 +00:00
Albert Astals Cid a9d3baa9f4 cmake: Add the eglfs platform plugin
Change-Id: I1caef781db690a3c25e871947c11175cde5cc97b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-15 15:08:29 +00:00
Lorn Potter 2c6c724949 wasm: add clipboard support
This feature uses the js Clipboard API and is supported only in Chrome,
as Firefox only supports reading the clipboard in browser extensions.

It also requires https or localhost access, otherwise access to the
clipboard is blocked by chrome.

Chrome users will be able to copy/paste text to and from the system
clipbaord.
Other browsers will be able to use the clipboard from within the same
application.

Currently only supports text and html.

Task-number: QTBUG-64638
Change-Id: Ie6de9d10812b776519bd6115593b433fe77059fe
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-15 12:46:57 +00:00
Qt Forward Merge Bot ef2ddcf551 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I8cad26f17834dbc9f7151edc0f17786f9e32025d
2019-02-15 01:00:51 +01:00
Oliver Wolff a2c9f9433a winrt: Handle WaitForWindowExposed
As winrt does not have native windows, exposure check was just done by
checking, whether the window is the active window. If a window is shown
fullscreen though, winrtscreen will be resized. This resize triggers a
resize of every maximized or fullscreen window that is shown.
If we enter or leave full screen mode, we have to wait until the screen
resize and the subsequent window resizes are done and only then we can
consider the windows properly exposed.

This patch reverts 54bcb9d42f  and thus
unblacklists tst_QGraphicsItem::cursor on WinRT.

Fixes: QTBUG-73545
Change-Id: If469fce319ed6b3a5d56b7bf3cbc11929b72bb11
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2019-02-13 14:04:58 +00:00
Michal Klocek 6bad49308a Fix handling of glxconfig and glxcontext in offscreen plugin
Return glxconfig and glxcontext, it is needed by
share context in chromium.

Task-number: QTBUG-63346
Change-Id: Ief15bf7170af9cf61a71453043a2629a4bcbcdc2
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-13 11:33:44 +00:00
Michal Klocek 652e9146ac Fix incorrect surface type in offscreen plugin
In case we use glx backend set correct surface.

Task-number: QTBUG-63346
Change-Id: I5827bf5b8e4ed60b933c25ce234fdd4a3dd20c88
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-13 11:33:31 +00:00
Michal Klocek 48f5b671a3 Add native handle for context in offscreen plugin
Offscreen plugin can be compiled with x11 support.
In case of glx add missing native handle for context.

This fixes crashes of running web engine with offscreenplugin
(with glx support).

Task-number: QTBUG-63346
Change-Id: Ia717ad2551536fbfdfb6633e506704a3ebe42a2b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-13 11:33:22 +00:00
Volker Krause 7d2d1eb9e0 Add file engine for Android content URLs
The "file dialog" on Android returns such URLs, which so far required
special-casing this in application code. With this change QFile can
consume those URLs directly.

Change-Id: I489c0db112cf1dc7497e7a90f0e9a79ea8fa5237
Reviewed-by: Nicolas Fella <nicolas.fella@kdab.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
2019-02-13 10:31:59 +00:00
Lorn Potter 960af0d64d wasm: remove EM_ASM calls in wasm platform plugin
Change-Id: I8453836b6730d18eaaa4ffe1fb9cb3933079ebee
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-13 04:12:53 +00:00
Tor Arne Vestbø 81fd7f4c8a macOS: Add auto-release pool during QCocoaScreen::deliverUpdateRequests()
Checking the application's keyWindow will autorelease the window, and
there's no root pool in place when called from the display-link thread.

Change-Id: Ic43164ad6397c92b858fb549f7a00e28b6110849
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-12 22:19:38 +00:00
Andre de la Rocha 3850404114 Windows QPA: Handle mouse input using legacy messages
This change reverts to using legacy mouse messages when handling mouse
and touchpad input, while using pointer messages to handle touchscreen
and pen input. The use of pointer messages to handle everything, added
in 5.12.0, caused issues in some particular cases, due mainly to
differences in behavior or bugs in the pointer messages, which required
workarounds in the Windows QPA, which didn't work well in all cases and
led to additional issues. For instance, DoDragDrop() does not work when
called by pointer (or touch/pen) handlers, but only after OS-synthesized
legacy mouse messages are generated. Also, in some cases pointer messages
for mouse movement are generated as non-client for client area events.
Modal loops like the ones in window resize/move and menu handling caused
some issues with pointer messages, as well. Also, we have to handle the
OS-synthesized legacy mouse message generated for touch and pen. Ignoring
them while letting the gui layer synthesize mouse events for touch/pen
may break Drag and Drop by triggering DoDragDrop() before legacy messages,
which can result in a hang inside the DoDragDrop() modal loop. This change
should fix most regressions related to pointer messages, while keeping
the enhancements in pen and touch input.

Fixes: QTBUG-73389
Fixes: QTBUG-72624
Fixes: QTBUG-72801
Fixes: QTBUG-73290
Fixes: QTBUG-72458
Fixes: QTBUG-73358
Fixes: QTBUG-72992
Change-Id: I919f78930d3965270ef2094401e827ab87174979
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-02-12 22:17:54 +00:00
Tor Arne Vestbø 77389ad8ff macOS: Remove screen-update disable during resize
It was needed as a workaround for the window border and window content
becoming out of sync when we were drawing and flushing to the layer
from another thread using OpenGL. Since we've disabled ThreadedOpenGL
we can remove this workaround for now.

The workaround also had other problems, as windowWillResize: did not
turn out to be a reliable signal to know when a window was about to
resize. Since we override windowWillUseStandardFrame:, we would not
get the callback when zooming windows. Conversely, if we removed the
windowWillUseStandardFrame: override, we would get a single callback
for windowWillResize:, and then multiple callbacks that the window
had resized. In addition, windowWillResize: is not only used as a
callback, but also as a way to let the window delegate restrict the
size, so it's called when e.g. AppKit determines the standard frame
of the window -- an operation that doesn't involve an actual resize
operation.

If we re-introduce a workaround using screen-update disabling we need
a better hook than windowWillResize:, and we need to track when we
disable screen updates so that we can pair them up with corresponding
screen update enables, otherwise we'll get log messages in the console
about "SLSReenableUpdate: unbalanced enable/disable update".

Change-Id: Ifca8892083c8666976391a4ada8f8d1471493943
Fixes: QTBUG-73726
Task-number: QTBUG-69321
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-12 18:34:29 +00:00
Tor Arne Vestbø 0ad651579f macOS: Don't rely on QGuiApplication::instance() during CVDisplayLink callback
The display-link callback comes in on a secondary thread, so there's a possible
race in using QGuiApplication::instance() to check whether or not we're on the
main thread.

Change-Id: Ic26bca8f5f54847a1e1b11dc92e786693c86e9de
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-12 18:34:28 +00:00
Tor Arne Vestbø 6b8610f4e8 macOS: Add explicit auto-release pool for requestActivateWindow
The API is often called from main before entering the event loop,
and the making the window first responder and key will autorelease
both the window and view.

Change-Id: Ie2a7dc14652015cbe802b57696e4a82d564e2dc0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-12 18:34:21 +00:00
Liang Qi 93bcd488af Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13 2019-02-12 18:13:34 +00:00
Albert Astals Cid d523a642dc cmake: enable vnc platform plugin
Change-Id: I5015681aff3c9ceb5c0b72571bc8756f3ada104c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 17:02:02 +00:00
Albert Astals Cid 6235fd68d5 cmake: FindWrapOpenGL->WrapOpenGL
Change-Id: Ic44d3ee806cf287a2c3cb36811b99418ea92d8a0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 17:01:02 +00:00
Dominik Holland df2b76046d eglfs: Add vsync support when using NVIDIA eglstreams
Similar to the kms backend a flip event handler can be retrieved using
the drmEvent API to implement vsync.
For this to work the acquire calls need to be done manuallly and the
automatic acquiring needs to be disabled.

Change-Id: I670d288ef68eb49846108db2a31993c6167d9313
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-12 15:10:28 +00:00
Simon Hausmann 519ef817ff Fix Desktop GL/EGL/GLESv2 linkage
This change fixes a few things in one go:

  * cmake's FindOpenGL cannot be used reliably to detect EGL. So use a
    custom module for that.
  * Added a custom module for GLESv2 detection, as cmake's FindOpenGL
    does not support that.
  * Map CONFIG += opengl to a WrapOpenGL target, which links against
    either GLESv2 or libGL - just like mkspecs/features/*/opengl.prf
  * cmake's FindOpenGL remains in use solely to detect the availability
    of desktop gl.

Change-Id: I9315e5ad1fd88e1b7dc7e920053e98fb51fea7fc
Reviewed-by: Volker Krause <volker.krause@kdab.com>
2019-02-12 14:57:30 +00:00
Albert Astals Cid 6424e70bbe cmake: compile the networkmanager bearer plugin
Change-Id: Ia744afec6114266fcb693702db257fe36ba94b92
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:34 +00:00
Albert Astals Cid 8fdebd5e37 cmake: build the connman bearer plugin
Change-Id: I034ac995e231e7ad380ca9680e72037a573a1003
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:25 +00:00
Albert Astals Cid 1126485a57 cmake: Build the generic bearer plugin
Change-Id: I3ab356e23e22499be98a626d043e2cfb9fc51105
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:40:07 +00:00
Albert Astals Cid 0a14d13b30 cmake: Find and build odbc plugin
Change-Id: I479d2b1cc897f601ef68b10272c9396e52228201
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:39:50 +00:00
Albert Astals Cid 11acba6504 cmake: Find and build psql plugin
Change-Id: I8cbc8ab0061f67824d78198cbb926f0625fc7e41
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 14:39:33 +00:00
Liang Qi f94fdb3537 cmake: add TODOs in plugins/platforms for future
Change-Id: I472b87cdd4f87633df7867c161ab861fba519bd3
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-12 14:35:51 +00:00
Albert Astals Cid 9bef044a0b cmake: Search and enable the sqlite[3] plugin
Added to QtFeature.cmake a way to be able to run feature_module begin
and end without having an actual module by passing NO_MODULE

Change-Id: Ib708bd3878e2591da193d18563c8932cc4b75e7f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 14:02:22 +00:00
Nicolas Fella 2c60844bad [platform/android] Add native file dialog
Add basic native file open dialog on Android. Not all features of QFileDialog can be mapped to the
Android file dialog.

Most notably there is no "Save" dialog. The dialog returns a content:// URL. Patch 251038 adds
support for those to QFile.

Change-Id: I13d02103edcd9a089afcce8193432f24b2e0fe43
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-02-12 13:03:17 +00:00
Michal Klocek 3fe9f245e8 Add platform native interface to offscreen plugin
Adds trival support for querying "display" and "glxconfig" in case
offscreen plugin is compiled with xlib support.

This is required so this plugin could work with webengine.

Taks-number: QTBUG-63346
Change-Id: Ie0f29385cb44429ddf383ad459e0c9f3263ccffe
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-02-12 12:57:26 +00:00
Qt Forward Merge Bot d3b3be6865 Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Iad53d4f21263718b8ecf15fd2d1170d24c7b675d
2019-02-12 13:53:22 +01:00
Laszlo Agocs 2e12bfdc1e eglfs: avoid breaking builds without EGL_EXT_platform_base
Change-Id: I9183e17b42c00435f20c00a414e1f20aa3972351
Fixes: QTBUG-72559
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
2019-02-12 10:50:52 +00:00
Albert Astals Cid 3882e9ea09 cmake: Find Cups and enable its plugin
Change-Id: I44bf176587331d86eb147d106f28deb0a6618ab4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-12 09:20:20 +00:00
Albert Astals Cid 8d05d88ab9 cmake: imageformats plugin needs an if guard
And add TODO for all the other missing plugins

Change-Id: Ic1d3cb7398198aea37ccb4ed6c16fc64e454036a
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-12 08:49:36 +00:00
Albert Astals Cid d6aed4b3d0 cmake: enable the compose plugin
Change-Id: I0201b37531f7ba7380b2ca2f221283dda9a601a0
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-11 17:17:41 +00:00
Albert Astals Cid dee2413bfc cmake: build the ibus plugin
Change-Id: Ib2846204cc89b538ffe3b2282f7890f3de6ef33d
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 17:17:28 +00:00
Albert Astals Cid 8927c4de70 cmake: enable the xdgdesktopportal plugin
Change-Id: I97454ea918e3b34ca8a33bf221bcf9a0f5fa56f8
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 17:17:00 +00:00
Albert Astals Cid ac96d08b9d cmake: find gtk3 and build the gtk3 platformtheme
Change-Id: I7db7321a2fd5ea0eda1924f3dece3b1c86d87d10
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-11 17:16:28 +00:00
Albert Astals Cid f18db41f85 cmake: Find tslib and build the tslib plugin if found
Change-Id: I7119ddf473a3ede29bbfef23cffb08a4fcbd5681
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-11 17:16:17 +00:00
Liang Qi 08cefb6e63 cmake: build the offscreen platform plugin on macOS
This amends beace29a57.

Change-Id: I38fef70687f36d3b2ab4ff9cd001dc35cc79942d
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-11 16:51:10 +00:00
Albert Astals Cid 391ceb1d76 cmake: build libinput plugin
Change-Id: If263e6fa212f5349ad5e75252ff77ce0c92c5b75
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:37:43 +00:00
Albert Astals Cid a3506fd4df cmake: build the tuiotouch plugin
Change-Id: I3e448fa8c21651a31429a87ee0b209eaea0fe1b1
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:37:05 +00:00
Albert Astals Cid 9dbcbeb1de cmake: enable evdevtablet plugin
Change-Id: Ia2d8c88b4c36c7c6e71a49f42398ebd0378239c1
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:36:57 +00:00
Albert Astals Cid db8e4077d1 cmake: Enable evdevkeyboard plugin
Change-Id: I74b000ce657dbc0573f97a095391902917fe8f80
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:36:01 +00:00
Albert Astals Cid 3e18790103 cmake: enable evdevtouch plugin
Change-Id: I7c8a7bd6ce79ca6823c0e517ef80c9418b91e552
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:35:51 +00:00
Albert Astals Cid 6f5e8c8e18 cmake: Enable evdevmouse plugin
Change-Id: I5c213a946d6127d635cd76bc827201e379e75aa9
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:35:40 +00:00
Albert Astals Cid 4ac0afb8ba cmake: build the minimalegl platform plugin
Change-Id: I5c509efa30257be6ccc3455dd40bef3882b7e1da
Reviewed-by: Liang Qi <liang.qi@qt.io>
2019-02-11 16:35:21 +00:00
Simon Hausmann a372783f66 Fix linkage against freetype
Target "XcbQpa" links to target "Freetype::Freetype" but the target was not

There was indeed a find_package(Freetype) missing

Change-Id: I486adbcf3b4ed0ae849a11294e2b83d2dc45d66f
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2019-02-11 15:00:41 +00:00
Albert Astals Cid beace29a57 cmake: build the offscreen platform plugin
Change-Id: I6ccd430a2779fb889329cd411221c29b2601acfb
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-11 14:01:25 +00:00
Albert Astals Cid 7edcdd7ac0 cmake: build minimal platform plugin
Change-Id: Icd80b33e2840ab1d34d2502bfdc3cb9116bdfba4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-11 14:00:54 +00:00
Albert Astals Cid 324bf0f344 cmake: build linuxfb platform plugin
Change-Id: I74c84ca410bdcf9c46828c5da903e241b2fa5d0d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-02-11 13:25:52 +00:00
Gerry Boland 8c73ddd8e3 qpa: remove mirclient
The Mir display server is now Wayland compatible, so a
dedicated Mir client library is no longer necessary.

[ChangeLog][Platform Specific Changes][Mir] The Mir platform plugin has been
removed: use the Wayland plugin when connecting to a Mir display server.

Change-Id: Ibc77698dd45a1afaf29f0d57b5e5cf7bd91735f5
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
2019-02-11 10:40:28 +00:00
Albert Astals Cid 810c5be5be Fix xcb platform linking when compiling the nativepainting code
Change-Id: I9bc435d27bf4abf1ff4cbfebb981ab701a5d17ec
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2019-02-11 09:28:05 +00:00
Tor Arne Vestbø 9f22ac0aa0 macOS: Don't send redundant geometry change events for top level windows
Top level windows already get their geometry changes via windowDidMove
and windowDidResize.

Change-Id: Ie6370aa290ef48c8b3ac770e77adb57ce43cbb47
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-11 01:42:04 +00:00
Tor Arne Vestbø 17e5158570 macOS: Treat default swapInterval (-1) as vsync-enabled display-link
Change-Id: I6d3d241d3813bfac36155ad219d4a338cb1ef6f7
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-11 01:41:56 +00:00
Tor Arne Vestbø 21e25ff38b macOS: Simplify mouse tracking
We don't need to react to updateTrackingAreas, as we only have a
single tracking area that we can add once and forget. By asking
AppKit to track all events in the visible rect, we can also pass
a zero-rect for the tracking area.

Change-Id: I2545712adc49b51904d5adc11f1faca36901b49d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-02-11 01:41:51 +00:00
Tor Arne Vestbø 4697467e98 macOS: Explain QNSViewMouseMoveHelper for future generations
Change-Id: I61f38ee38d5afb657cd8b76b2b9dba1dac7167b4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-02-11 01:41:44 +00:00
Liang Qi fbfacd33be Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/android/templates/AndroidManifest.xml
	src/network/ssl/qsslsocket_mac.cpp
	src/widgets/styles/qstylesheetstyle.cpp
	tests/auto/corelib/kernel/qtimer/BLACKLIST
	tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
	tests/auto/testlib/selftests/expected_blacklisted.lightxml
	tests/auto/testlib/selftests/expected_blacklisted.tap
	tests/auto/testlib/selftests/expected_blacklisted.teamcity
	tests/auto/testlib/selftests/expected_blacklisted.txt
	tests/auto/testlib/selftests/expected_blacklisted.xml
	tests/auto/testlib/selftests/expected_blacklisted.xunitxml
	tests/auto/testlib/selftests/expected_float.tap
	tests/auto/testlib/selftests/expected_float.teamcity
	tests/auto/testlib/selftests/expected_float.txt
	tests/auto/testlib/selftests/expected_float.xunitxml

Done-With: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Done-With: Edward Welbourne <edward.welbourne@qt.io>
Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io>
Change-Id: If93cc432a56ae3ac1b6533d0028e4dc497415a52
2019-02-08 12:31:02 +01:00
Allan Sandfeld Jensen 90a8de656f Long live QColorSpace and friends
Adds QColorSpace and QColorTransform classes,
and parsing of a common subset of ICC profiles
found in images, and also parses the ICC profiles
in PNG and JPEGs.

For backwards compatibility no automatic color
handling is done by this patch.

[ChangeLog][QtGui] A QColorSpace class has been added,
and color spaces are now parsed from PNG and JPEG images.
No automatic color space conversion is done however, and
applications must request it.

Change-Id: Ic09935f84640a716467fa3a9ed1e73c02daf3675
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-02-08 10:12:05 +00:00
Oliver Wolff bf7458c76f winrt qpa: Remove last windows phone leftovers
WINAPI_PARTITION_PHONE_APP is defined for all our winrt mkspecs nowadays
so the code can be used unconditionally.

Change-Id: I4f2b60a0b9bba5b407ebbc213c44a0e5b4057855
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2019-02-08 08:59:56 +00:00
Oliver Wolff 5f384bd39c winrt: Warn if OpenGL ES version is set to a value > 3.0
Our bundled ANGLE library only partially supports OpenGL ES > 3.0 so warn
users that there might be dragons.

Change-Id: I16711fe9f449e85dd8b2369e1fcec6c9f81d5ae0
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
2019-02-08 08:59:55 +00:00
Oliver Wolff 932b13d3ec windows: Support OpenGL ES versions > 3.0 with ANGLE
Even though our ANGLE versions only partially supports OpenGL ES > 3.0,
there are users who want to use functionality that is available. By
setting major and minor version we can support this use case.

Fixes: QTBUG-72762
Change-Id: I9a1d3009355693baa971deb3c4bbf14c595edf0b
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
2019-02-08 08:59:54 +00:00
Oliver Wolff 1036c45086 Revert "winrt: Skip context validation in ANGLE"
Our current ANGLE version (chromium/3280) relies on validation to be done
when doing the rendering, as the validation at the same time completes the
caching. Skipping the validation caused asserts and rendering issues.

The part of the validation that failed before is now deactivated in Qt's
copy of ANGLE as it is not relevant for our use case, so that validation
can be re-enabled now.

This reverts commit a1dec825f9.

Fixes: QTBUG-73317
Change-Id: I5fd176eaa0bc28d93ca93019b7092211fe5bcce5
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
2019-02-08 08:59:53 +00:00
Oliver Wolff 86cf366a30 winrt: Use ES3 ANGLE code path when blitting widgets
We run into validation issues when using the ES2 code path when blitting
widgets on winrt. By using ES3 we not only avoid this issue, but there
might also be performance gains.

We now call window()->format() instead of window()->requestedFormat as the
latter will not respect the values that were set on initialization of the
native window (which is done in QWinRTWindow's constructor).

Change-Id: I5ed7a9326691375f9c9cb5d8d22ee8d1b643fbd0
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Miguel Costa <miguel.costa@qt.io>
2019-02-08 08:59:51 +00:00
Morten Johan Sørvig de4f256d48 Wasm: enable thread support
configure.json: Make the “thread” feature be allowed
for wasm but disabled by default.

Change qmake.conf and wasm.prf to enable Emscripten
pthreads mode:
- Add USE_PTHREADS=1 linker flag
- Add PTHREAD_POOL_SIZE linker flag with a default pool size (4).
- Add TOTAL_MEMORY linker flag to set available memory (1GB)

It is possible to override options such as PTHREAD_POOL_SIZE
from the application .pro file using QMAKE_WASM_PTHREAD_POOL_SIZE
To change TOTAL_MEMORY, use QMAKE_WASM_TOTAL_MEMORY

Make qtloader.js work in pthreads mode:
- The Module.instantiateWasm callback must provide the module
  in addition to the instance to Emscripten.
- Set Module.mainScriptUrlOrBlob so that the pthreads web workers
  can access the main script

Task-number: QTBUG-64625
Change-Id: I1ab5a559ec97c27c5fc24500ba5f863bcd275141
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-02-07 16:13:26 +00:00
Friedemann Kleint a6f25dedd8 Windows style, themes: Fix deprecation warnings
Fix:
qwindowstheme.cpp:287:77: warning: 'const QBrush& QPalette::background() const' is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations]
qwindowstheme.cpp:336:37: warning: 'const QBrush& QPalette::foreground() const' is deprecated: Use QPalette::windowText() instead [-Wdeprecated-declarations]
qwindowstheme.cpp:861:102: warning: 'static bool QPixmapCache::find(const QString&, QPixmap&)' is deprecated: Use bool find(const QString &, QPixmap *) instead [-Wdeprecated-declarations]
qwindowsvistastyle.cpp:635:56: warning: 'const QBrush& QPalette::background() const' is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations]
qwindowsvistastyle.cpp:707:60: warning: 'static bool QPixmapCache::find(const QString&, QPixmap&)' is deprecated: Use bool find(const QString &, QPixmap *) instead [-Wdeprecated-declarations]
qwindowsxpstyle.cpp:743:58: warning: 'const QMatrix& QPainter::deviceMatrix() const' is deprecated: Use deviceTransform() instead [-Wdeprecated-declarations]
qwindowsinputcontext.cpp:448:49: warning: 'const QBrush& QPalette::background() const' is deprecated: Use QPalette::window() instead [-Wdeprecated-declarations]

Change-Id: I00a52a27b066caeb135ad4124f71ef3e09beafbf
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
2019-02-06 22:11:56 +00:00
Gatis Paeglis 27065bdc50 ibus: allow filterEvent() from QWindowSystemEventHandler::sendEvent()
The async mode, which is also default mode will recurs if
QIBusPlatformInputContext::filterEvent() is called from
QWindowSystemEventHandler::sendEvent() callback.

The sync mode works fine without this patch.
Modes can be toggled via IBUS_ENABLE_SYNC_MODE envvar.

Removed redundant #ifndef and renamed one variable to
something more meaningful.

Change-Id: I8773445cef10212464cff09e3a70487fb38ac3fd
Reviewed-by: Takao Fujiwara <takao.fujiwara1@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-02-06 22:11:49 +00:00
Gatis Paeglis c0ebec51e3 xcb: respect big-request encoding in max request size
From big-request specification:

"This extension defines a mechanism for extending the length
field beyond 16 bits. If the normal 16-bit length field of the protocol
request is zero, then an additional 32-bit field containing the actual
length (in 4-byte units) is inserted into the request, immediately
following the 16-bit length field."

Meaning that the request requires 4 additional bytes. This patch provides
a convenience API for calculating maximum request data size.

Besides fixing QTBUG-73044, it was also discovered that calculations
for xcb_image_put (in QXcbBackingStoreImage::flushPixmap) were wrong.
The code assumed that xcb_get_maximum_request_length() returns bytes,
but what it actually returns is length which is measured in four-byte
units. This means that we were sending 4x less bytes than allowed by
the protocol. Furthermore, use the actual 'stride' (bytes per line) value
when calculating rows_per_put. The new stride value was introduced
by 760b2929a3, but was not updated in
rows_per_put calculations.

Fixes: QTBUG-73044
Done-with: JiDe Zhang <zccrs@live.com>
Done-with: Mikhail Svetkin <mikhail.svetkin@qt.io>
Change-Id: I06beb6082da3e8bc78225a87603914e796fe5878
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: JiDe Zhang <zccrs@live.com>
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2019-02-06 22:11:44 +00:00
Karim Pinter 8a7c373f8e QNX QPA: Add support for Qt Virtual Keyboard
If the QT_IM_MODULE environment variable is set, then it loads the
IM module accordingly, otherwise it is using the PPS one, if it is
available.

Task-number: QTBUG-54576
Change-Id: Icb8b474805053d8297029096365783c2cabc2cbc
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
2019-02-06 22:11:11 +00:00
Boubacar DIENE b319d14110 Fix "error: too many arguments to function media_get_entity_by_name()"
Since the official v4l-utils-1.12.0 release, media_get_entity_by_name() function expects
only two arguments instead of three as in older versions thus breaking build of eglfs_kms_vsp2
backend.

Cf. https://git.linuxtv.org/v4l-utils.git/tree/utils/media-ctl/mediactl.h#n253

Fixes it by creating an overloaded wrapper function that will choose the right
version based on the signature of the media_get_entity_by_name function pointer
argument.

Fixes: QTBUG-73427
Change-Id: Idab52558b6f2f23137456c21e33ece1ef0e9aa4e
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
2019-02-06 07:36:34 +00:00
Joerg Bornemann 05bcfb9011 Normalize some SIGNAL/SLOT signatures
...for a minor performance gain.

Change-Id: I4bef867055e069926fdc24fa98a6f94b6a0630e2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-02-06 07:17:44 +00:00
Tor Arne Vestbø 850c922036 macOS: Don't deliver update requests for windows that need display
If a window needs display due to e.g. being resized, we need to wait
until the corresponding expose event has been delivered before we
resume update requests, otherwise the update requests may result
in partial paints that do not fully cover the area needing display.

Change-Id: Ibfb54bfe3c2e85b606ef67d34a6a5fdb85456edd
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-02-04 21:53:54 +00:00
Christian Ehrlicher daee9af969 QtGui: mark obsolete QPixmapCache::find() functions as deprecated
QPixmapCache::find(QString) and QPixmapCache::find(QString, QPixmap&)
are deprecated since Qt4 times.
Explicit mark them as deprecated so they can be removed with Qt6.

Change-Id: Iaf185f69afe02203559a1c812fbb4a95c9049a1d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-02-02 12:49:25 +00:00
Albert Astals Cid 6d51f69bbf cmake: Build src/plugins/imageformats
Change-Id: I4bf09c50eebf71255590e9b17e637ce621d3cd40
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-01 12:27:27 +00:00
Albert Astals Cid 70419e31f9 cmake: Fix build of xcb platform plugin when vulkan is available
Change-Id: I79760aa0cb08752cfc20aabc1a890f60c91c9dfd
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-02-01 12:27:11 +00:00
Timur Pocheptsov 8915904e2a QMacStyle - fix a weird NSBox geometry
For some reason, displayRectIgnoringOpacity renders NSBox with a
smaller height than we asked. So let's ask for more and translate.

Change-Id: I6e03ad99d1ccf746c89d58dd37d53d0087f15282
Fixes: QTBUG-71741
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-01-31 04:43:51 +00:00
Allan Sandfeld Jensen 744be250bf Fix building offscreen QPA with Qt XCB
Only builds without XCB or with system XCB

Change-Id: I1161c5b78c92308ac63c2e2907b9a5d8477ab2f0
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2019-01-29 21:33:31 +00:00
Morten Johan Sørvig a4767bb9e0 Wasm: remove debug output.
Change-Id: Ieb9c06203626854f9b7c561563c3261510230803
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-01-29 18:52:03 +00:00
Morten Johan Sørvig 64e8e69d25 Cocoa: Don’t cache accessibility role
The object role may in some cases (e.g. when using
Qt Quick Loaders) be changed after construction, and
we don’t have RoleChanged events.

Change-Id: Idb246c1c1206221cacd93c83cbd07a0e3d98cb0e
Fixes: QTBUG-72967
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2019-01-29 18:39:31 +00:00
Tor Arne Vestbø cf53ed97a1 macOS: Apply alpha channel to surface format even when non-default
Relying on QSurfaceFormat() to check whether or not we should set
the alpha channel size makes it impossible to tweak other properties
of the surface format without also having to set the alpha. There's
no need to do such as broad comparison, we can check the alpha channel
size for its default value instead.

Change-Id: Iac31d37c9460eb3e7ec5ee15902f7e5addb48178
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-01-29 11:12:41 +00:00
Friedemann Kleint 61d50cbc96 Windows/Direct2d QPA: Use nullptr
Change-Id: I6ce01caa58de78e0eb61e243ee1e7b05cc1f5568
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-01-28 21:14:58 +00:00
Andre de la Rocha 850858cce6 Windows QPA: handle pointer messages received during a drag and drop
It seems the pointer message handler was skipping the handling of touch
and pen messages during a drag and drop operation, preventing the
generation of events that quick was expecting and triggering a crash
inside MouseArea.

Fixes: QTBUG-73120
Change-Id: I2921e38dd7e44846607e6c614d7393cfa5664c69
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-01-28 16:42:30 +00:00
Andy Shaw cf184f1dd4 Android: If there is no surrounding text then don't try to delete it
If there is no surrounding text then we can save time by not sending an
event to delete it as there is nothing to be deleted. This prevents the
underlying widget from being confused as to where the cursor and anchor
is later on when entering in new text.

Fixes: QTBUG-65584
Change-Id: Ic6325c119327048dffd2baa68520871fb56370d5
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-01-28 15:26:33 +00:00
Mikhail Svetkin 3b514f8535 qtlite: Fix build libs with -no-feature-regularexpression
Change-Id: I427ff1f8f4986fbf466aba60a9d3de614c1e006f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-01-27 21:01:53 +00:00
Samuel Gaist de3716f0ba Fix QMacStyle QPalette warning
The code was still using QPalette::background. It's now using window.

Change-Id: I9a47018d559d638ff69b1e4b2d7e2335e04a2a3a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-01-26 13:18:57 +00:00
Liang Qi 980567b3a3 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	src/android/templates/AndroidManifest.xml
	tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp

Change-Id: I4c9679e3a8ebba118fbf4772301ff8fde60455b9
2019-01-26 08:35:40 +01:00
Alexander Volkov 730cbad882 xcb: Avoid repaint lags with DnD
The lags can be seen when dragged data is requested for a
MIME type. This leads to calling QXcbClipboard::waitForClipboardEvent()
which runs a loop in the GUI thread and processes events from
QXcbEventQueue. The loop ends when a corresponding event is
received, otherwise it makes a delay of 50 ms before the next
iteration.

Sync with QXcbEventQueue thread by QWaitCondition instead
of using the delay. This way the loop will end as soon as
possible and Expose events will be processed with minimal
delay.

Task-number: QTBUG-44849
Fixes: QTBUG-55442
Fixes: QTBUG-62344
Fixes: QTBUG-73253
Change-Id: Ie18d63b51a7260c83d53ffe1169b25e5135dd73b
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-01-25 15:59:51 +00:00
Elena Zaretskaya c9b9a0ea2f Ability to switch language under platform eglfs/linuxfb
I need to change keymap under platforms eglfs and linuxfb (without wayland).
I use the function QEglFSFunctions::loadKeymap(const QString&), but there's
no way to switch between english and another language than to press AltGr as
a modifier. I added the function that allows to change the language. And also
added the ability to switch the keymap and language for the platform linuxfb

and also added the ability to switch the keymap and language for the platform linuxfb

Task-number: QTBUG-72452
Change-Id: I37432cf60d375555bea2bf668ec1387322b4964f
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-01-25 15:00:07 +00:00
Timur Pocheptsov c4e7f3ab65 QMacStyle: fix PE_PanelLineEdit and PE_FrameLineEdit handling
NSTextField (or its cell) that we use to paint PE_FrameLineEdit overpaints
whatever fill color QCommonStyle::drawPrimitive(PE_PanelLineEdit) found
in opt->palette and using for PE_PanelLineEdit. As a result the ability
to customize widget's colors is lost - we always use the system default
colors on top of the custom background color. It's not a problem
in 'Dark' mode apparently (controls are transparent there anyway).
If it's not 'Dark' mode and common style, indeed, wants from QMacStyle to
draw PE_FrameLineEdit - we set the correct background color there.

Change-Id: Idad853257f637b028af4bd1181d78afdf079f455
Fixes: QTBUG-73183
Fixes: QTBUG-72662
Fixes: QTBUG-72428
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2019-01-25 11:21:43 +00:00
Andre de la Rocha 4c46e3189a Windows QPA: Cache "forcedScreenForGLWindow" to avoid overhead
The fix for QTBUG-50371 caused an overhead when you hover over a
secondary window like a tool tip, menu or combo box due to the
forcedScreenForGLWindow() function being called, which loads
dx9.dll and sub-dlls and unloads them afterwards. This fix
caches the required info on the first call, and only refreshes
it when required by a display/settings change.

Fixes: QTBUG-73008
Change-Id: Ie604ba4034ad8041b971f5aa46bd43ae03decd55
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-01-24 23:00:42 +00:00
Friedemann Kleint c154766630 Windows QPA: Move the code installing the filter for WM_TASKBARCREATED
Previously, the code was in the constructor, where hwnd was 0 and
ChangeWindowMessageFilterEx() failed. Move it into
QWindowsSystemTrayIcon::ensureInstalled() after the creation of the message
window.

Change-Id: Iff4c6d6d6b11bdcace7514ad421c96c94e52bbba
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-01-24 22:06:23 +00:00
Friedemann Kleint 4aa0bcf5f5 Windows QPA: Fix tray icon becoming visible before show
Use the NIS_HIDDEN flag of the NOTIFYICONDATA structure to prevent it from
becoming visible before show when calling NIM_ADD with the icon data.

Fixes: QTBUG-73185
Change-Id: If5cc5a4930a889623a5cac84138185ad04765ece
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-01-24 22:06:17 +00:00