| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
qmake/generators/makefile.cpp
qmake/generators/makefile.h
Change-Id: I4c2deac4f6376c85f5e4fe7fb0ccc9ab9a013cd7
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
screen() may return a null QScreen pointer during
screen initialization.
Fixes: QTBUG-78118
Change-Id: Ide26eb3f06861c38cd7ae56789dd010d4cd7e572
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
The compositor context is not current during the resize()
call, but will be during updateTexture().
Change-Id: I29c2e06aa251b564b5d622dc9380ec994e15aab0
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
mkspecs/win32-clang-msvc/qmake.conf
src/corelib/tools/qlist.h
src/gui/painting/qcompositionfunctions.cpp
src/gui/painting/qtriangulator_p.h
src/gui/text/qfontengine_p.h
src/network/kernel/qhostinfo_p.h
src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io>
Change-Id: Ib8a0308cf77224c4fbdcf56778fdac4a43e37798
|
| |\
| | |
| | |
| | | |
Change-Id: I4c0fd501db974fb8339944b8df845336776d80a9
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Also sanitize the initial WebAssembly hack. Both eglfs and wasm lack the concept
of true raster windows. A QWindow with RasterSurface is rendered with OpenGL
no matter what. The two platforms took two different approaches to work around
the rest of the machinery:
- wasm disabled the QOpenGLContext warning for non-OpenGL QWindows,
- eglfs forced the QWindow surfaceType to OpenGLSurface whenever it was
originally set to RasterSurface.
Now, the latter breaks since c4e9eabc309a275efc222f4127f31ba4677259b7, leaving
all raster window applications failing on eglfs, because flush in the backingstore
is now checking the surface type and disallows OpenGLSurface windows. (just like
how QOpenGLContext disallows RasterSurface windows)
To solve all this correctly, introduce a new platform capability,
OpenGLOnRasterSurface, and remove the special handling in the platform plugins.
Change-Id: I7785dfb1c955577bbdccdc14ebaaac5babdec57c
Fixes: QTBUG-77100
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: Ic6cfe08dbda1dc92b969e67063f805df63ba0fcf
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Emscripten has changed the key code to include the string 'Digit'
on numerals. We use this to detect and translate any Dead keys that
may be pressed.
Fixes: QTBUG-77041
Change-Id: I054e98a6cf66390b1154f25fe385e5b12840851f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This matches what translateDeadKey() returns for unhandled keys, and
processKeyboard() checks for when replacing qtKey with the result of
translateDeadKey().
Change-Id: I1500576b7b31047a7a35633a15cd6975b77d842d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The mapping is static, but a dynamic (even mutable) container was
used.
Fix by using C tables and liner scan, which will be just as fast or
faster than a hash lookup, for the maximum of six entries of each
table.
Change-Id: I899d5b1428dc82cf58862f238595a266aef8279f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The first one is trivially correct: it clearly doesn't modify the
container under iteration.
The second is a bit more subtle, because drawWindow() could be
expected to call a paintEvent and this could theoretically lead to
lowering, closing, or opening of a window. But this function just ends
up blit()ting, so it doesn't call into user code.
Change-Id: Id15e0102e9c8aa12516af27d771104e9993c48a1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The content is static, so a dynamic container is overkill. Use a C array.
Don't make it static, as that creates more problems than is solves (static
initialization).
Change-Id: I07534c3336efbb6bbc19bfa1b8dad0c578d4e274
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
qmake/generators/makefile.cpp
qmake/generators/unix/unixmake2.cpp
src/corelib/thread/qthread_unix.cpp
tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
Change-Id: I1df0d4ba20685de7f9300bf07458c13376493408
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If the mouse button is held and mouse moves from over the window, that
window would never register the button up event, and cause issue like
being able to move a dialog around by simply moving the mouse around.
Change-Id: I1363ac9c9f4113a79bf6863668ba74b90b1cea4a
Fixes: QTBUG-75951
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/plugins/platforms/wasm/qwasmintegration.cpp
src/plugins/platforms/wasm/qwasmintegration.h
Change-Id: Idf4c7936513fb1f21daa8f6105b8545f13447bb8
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We don’t need the contextLost callback since we can
poll for the “lost” status in isValid()
Recreating the native context is not very helpful,
since it destroys all current context state. Remove
this logic.
Support makeCurrent() on different surfaces, as long
as they refer to the same screen. Create the native
context (and record which screen) on the first call
to makeCurrent()
Task-number: QTBUG-75463
Change-Id: I6eb830df14578ffdbed5b0505fe860ce433e4f9b
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Freeing OpenGL resources requires a current context,
which (on wasm) requires a screen.
Add a destroy() functions to QWasmScreen, QWasmCompositor, QWasmWindow,
and QWasmBackingStore which facilitates OpenGL cleanup before we start
deleting screen objects.
Task-number: QTBUG-75463
Change-Id: I9954b536416b9147965c74459ccad838d1578778
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This no-op implementation is sufficient to support OpenGL cleanup
use cases, where the OpenGL context needs to be made current at times
where we don't have a window available.
A specific requirement on WebAssembly is that the context is tied
to one specific screen; which is an extra requirement on QWasmOffscreenSurface,
compared to the other platforms.
Task-number: QTBUG-75463
Change-Id: Ie3658cb235bf342be66f19dfe981e3a56a90e1b6
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The target position is the position on the canvas,
not the global position on the page.
Task-number: QTBUG-75463
Change-Id: I4ea2c9afacd2065fa975f6fa2e6a93d98f637854
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We can get draw calls in between creating the platform
window and the platform backing store.
Task-number: QTBUG-75463
Change-Id: If0b67d40fac84e466f204ec23a267aa4c6121cbd
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Install one browser window resize handler instead of
per-canvas resize handlers, which avoids having to
uninstall on QScreen destruction.
Task-number: QTBUG-75463
Change-Id: I8345262a906ed735f8e9e146f1e963f515cf0d25
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: Ic9812421b2a79a33bb138f448fe132dab141b724
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
|\| | |
| | | |
| | | |
| | | | |
Change-Id: Ia279fc4a8226626041c772902a07b2f90f37b53b
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When runing the scenegraph example sgengine, gets rid if this error:
QSGContext::initialize: stencil buffer support missing, expect
rendering errors
Change-Id: I7f3a82409bc2cf81cf8217876e527f9c45be3bf4
Fixes: QTBUG-74694
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change-Id: I454ab677cad25b50ba7b03ef2c4b6046e1227ce8
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The CMake configure_file command is commonly used copy & modify template files
during the build process. One limitation, thought, is that configure_file
expect the variables to be replaced to be encoded using either a @APPNAME@ or
${APPNAME} convention.
This commit therefore changes "APPNAME" to "@APPNAME@" in wasm_shell.html to
make the HTML template file compatible with CMake configure_file.
With this commit, it becomes possible to write the following CMake function
that mimics what QMake is already doing:
function(copy_html_js_launch_files target)
set(APPNAME ${target})
configure_file("${_qt5Core_install_prefix}/plugins/platforms/wasm_shell.html"
"${target}.html")
configure_file("${_qt5Core_install_prefix}/plugins/platforms/qtloader.js"
qtloader.js COPYONLY)
endfunction()
Change-Id: Ic38abdc498ba03b8d21f1b9b70aa1d480ae7f362
Reference: https://cmake.org/cmake/help/latest/command/configure_file.html
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
|\| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/corelib/global/qfloat16.cpp
src/corelib/global/qfloat16.h
src/plugins/platforms/windows/qwindowswindow.cpp
Change-Id: I0938aaa6a9771f55e48c95ed29f6f5291431b947
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We have not really been able to determine what the
default DPI should be, so make it configurable with
API on qtloader.js:
qtLoader.setFontDpi(72);
Also lowers the default DPI to the standard value of
96 (down from Qt default 100).
Task-number: QTBUG-75510
Change-Id: Ica1164c8d80bb06519233adebf2c9e400c0991ce
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/tools/qstring.cpp
Change-Id: I81dbf90fc936c9bf08197baefa071117bddb1c63
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Also define our default font so as to return something we actually have
Task-number: QTBUG-75587
Change-Id: I26e3c62921d369c3017af9796c0a20f7ac06d07c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/corelib/kernel/qobject.cpp
src/corelib/kernel/qvariant.h
src/corelib/tools/qlist.h
Done-With: Milian Wolff <milian.wolff@kdab.com>
Done-With: Allan Sandfeld Jensen <allan.jensen@qt.io>
Change-Id: I6803f7239aa137a51a7467fab7cc7a01302a848d
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-75530
Change-Id: Ic0f0bd8ce863f55d737d96bbf9e5473466381c9b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-74868
Change-Id: Ibbbac1ece66c8978440a282bf6949a82fb64d216
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
|/ /
| |
| |
| |
| | |
Change-Id: Ib2d77331b33cac97e819e8273362703fcd80886c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-75263
Change-Id: I099f76114f876b3d6d81df3efb94db126db6a806
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
targetX and targetY are canvas-local coordinates,
while Qt generally works with window-local and global
coordinates.
Add coordinate mapping calls where needed and make
sure we pass correct coordinate types to Qt.
This starts mattering when we have canvases which
are not located at (0, 0).
Change-Id: I28563310ca17d0cc5535317cff99fcd82d3723db
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Another side effect of setting contenteditable on the
canvas. Seen on Firefox.
Change-Id: I789ba4d7e6fbbdbf14b66fe1ae57183ec04e04bb
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| |
| |
| |
| |
| |
| |
| | |
Call window.open(url, ”_blank”) for a new tab.
Change-Id: I227904f905262c7aedd086203ed816b53f66359c
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(fullscreen as in use the entire canvas area, without
showing window decorations)
This is a better default for Qt on the web where window
decorations are not common. We also avoid the “window
close” trap, where there is no way to re-open a closed
main window.
Change-Id: Ie0fbf6ada3f49244bee765ea882acb473809e715
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
HTMl does not have per-element resize events, which
means Qt has not way of knowing that a canvas has been
resized and that the canvas buffer size should be updated.
Depending on the use case, the hosting JavaScript code
that caused the canvas resize could also inform Qt
that the canvas has been resized. Add API to do this,
which calls the existing canvas/screen resize implementation.
Other solutions taken/not taken:
- browser window resize events: these are available,
and we install an event handler in qwasmeventtranslator.cpp.
- DOM mutation events: would detect changes to the
the size attributes themselves, but not if the size
indirectly changed, e.g. “width: 100%” depends on the
parent width. Not implemented.
Change-Id: Ib324bb30f523e9fceea68000b95bf857a1d36b6c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add qtloader API:
addCanvasElement()
removeCanvasElement()
These functions call the corresponding add/remove screen
functions on QWasmIntegration.
Task-number: QTBUG-64079
Change-Id: I537c11f3b5fb9240cca9b6313dd45f803d865ac6
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Prevent namespace collisions and make sure Qt functions
are grouped together.
Change-Id: I217188ee93e4300e273d10a79d6014179fc5a1ef
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Ibef29f0fd2cb2012a05400a855cb4985f9164d92
Fixes: QTBUG-74601
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Enabling makes QtQuick to attempt to access window.devicePixelRatio
[via QWasmWindow::devicePixelRatio()] from a web worker.
Change-Id: I957df29060c7eb8c47d02bc67c8c5c2219b570f4
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/gui/kernel/qplatformintegration.cpp
src/gui/kernel/qplatformintegration.h
src/plugins/platforms/wasm/qwasmintegration.cpp
src/plugins/platforms/xcb/qxcbconnection_screens.cpp
Change-Id: I15063d42e9a1e226d9d2d2d372f75141b84c5c1b
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QWindowSystemInterface is the de facto API for any plumbing going from
the platform plugin to QtGui. Having the functions as protected members
of QPlatformIntegration was idiosyncratic, and resulted in awkward
workarounds to be able to call the functions from outside of the
QPlatformIntegration subclass.
The functions in QPlatformIntegration have been left in, but deprecated
so that platform plugins outside of qtbase have a chance to move over to
the new QWSI API before they are removed.
Change-Id: I327fec460db6b0faaf0ae2a151c20aa30dbe7182
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
emscripten sends a touchstart event for every touch point when a new
touch point happens, so this makes them moved or stationary if already
known.
This allows QtQuick PinchArea to work.
Task-number: QTBUG-72214
Change-Id: I8e7c0cd2d78b07cfeae21491846cc31092359050
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This allows for multi canvas use
Task-number: QTBUG-64079
Change-Id: I69c998aa4c2869bb5b7f14ba65bb63284365ad70
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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>
|