The QWidget overload of qWaitForWindowExposed waits for the widget's
top level QWindow, which for the viewport is the graphics-view.
We want to explicitly wait for the viewport to be exposed, as the
viewport is covering the whole graphics-view, preventing it from
being exposed. See a6991376c.
Change-Id: I86df43871126562f09e4ce14931bc6fc7f06263d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: I7dbe9c7a91301e0002f9e1827f6d0b495d2b9ec5
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The QWindow::create method calls createPlatformWindow, and assigns the
result to d->platformWindow. If the platform sends any sort of events
synchronously during the creation, the event will be delivered to a
QWindow that doesn't have a handle() yet, resulting in noop handling
of the event, or crashes.
To mitigate this situations, platforms should do as little a possible
in the QPlatformWindow constructor, and leave initialization to the
new method, where the QWindow will have a handle().
The macOS platform plugin still has a m_initialized guard, to prevent
sending geometry changes during initialization, as this will result
in a resize event before a show event. This forced behavior seems
dubious, but is left for a followup patch.
Task-number: QTBUG-61977
Change-Id: I04d32d93391e89d068752b719270438e7024ad46
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
By deferring the image resizing until the first beginPaint after the
resize we can be sure to have a platform window, simplifying the logic.
Change-Id: I5409522563a62794b111dac7f817bc3cae6bf4e8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
.. thus making it purely into a _runtime_ check of XInput 2 version.
If Qt was build with -no-xinput2, it does not make sense to compile
in code that always returns "false". Simply exclude code that is not
relevant for -no-xinput2 builds with XCB_USE_XINPUT2 ifdefs. In
addition, this improves readability of the code.
Now, trying to use ::isAtLeastXI21() in a -no-xinput2 build will
result in the following build error:
error: ‘class QXcbConnection’ has no member named ‘isAtLeastXI21’
Change-Id: If242510d43d71829b327edc1f76322f3a0db0e08
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
The tests uses QWindow::requestActivate() to verify that a window does
not become active when a modal dialog is running, but on macOS we have
no guards for this, so the test can potentially fail.
In addition, due to a bug in QCocoaEventDispatcher, we end up waiting
5 seconds for that failure to manifest.
Task-number: QTBUG-61965
Task-number: QTBUG-61964
Change-Id: I2f1b62d953e9b6dabf2df0c3023564f27919c498
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
There is no need to check for it explicitly.
Change-Id: I66958bf1ff4539ee75fec635c96f056524da8ddb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Some of the functions had wording that suggested people subclass
QBackingStore, probably because the docs came from QWindowSurface
in QWS times.
Clarify the role of the region, window, and offset arguments
to flush(), in the case of flushing child windows.
Document that paintDevice() is only valid after calling beginPaint(),
and should not be cached.
Although our own QRasterWindow, and the rasterwindow example, both
allow backingstores for child windows, and it works in practice on
a few platforms, we keep the documentation stating that they should
only be used for top level windows, until we've verified and
formalized support for this across platforms.
Change-Id: I7b4d6128a0cd2faeb2af9405ac1bcca46440ead1
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The square root of a sum of squares is easier to read and should be
computed more accurately if done for us by hypot(). Variables set
only once should be set as an initializer and declared const, to make
clear this is what's happening. Loop variables can be local to loops.
Adding a value to, or subtracting one from, a multiple of itself just
multiplies it be one plus (or minus) the multiplier; assigning the
result to the same variable is clearer as a *= (especially when the
factors are now overt numeric constants). An array of 16k floats all
updated in locksteck to the same value can be replaced by a single
float that holds that value. Simple things should not be needlessly
made more complicated - especially in example code, which should be
pedagogic.
Change-Id: Idab585cd7df1399c250d4b9f1396a085ae8f3864
Reviewed-by: hjk <hjk@qt.io>
The test assumes that resizing a QWidget to 0x0 will result in the
QWindow ending up with that size, and hence not being exposed, but
this is not the case. On a QWindow level we treat 0x0 as a trigger
for the platform layer to set the default size, and the window
ends up exposed.
Ideally QWindows should allow 0x0 sizes, but this is a bigger change.
In the meantime, we skip the tests so that other changes can be
integrated without the test failing.
Task-number: QTBUG-61953
Change-Id: Ib17187b4afd1b06eaa76653be18e93abea555b59
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
By printing the corresponding QPlatformWindow and QWindow for a given
QNSView we make it easier to track issues regardless of which of the
views/windows are being logged.
Change-Id: I4a42eff7f87cf3c8e722cd6ad8baccd4eeab8eb3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
It was used in QWS to account for window decorations, but hasn't been set
to anything since 2011, when the code that set it was removed in 6ce6b8a3.
Change-Id: Ibfd37b37c2055221029341443fb768ad620effa2
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The references to the this pointer look somewhat alien in the
documentation, because it isn't part of the signature. Rather make
the relationship explicit.
Change-Id: I6de516e165ea6e9c4ee2898836e9490fbaf4545c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Consider the raw string \\\\. The previous algorithm would consider
the last 3 \ to be escaped because the previous character is a \ and
thus calculating a maxLength of 3.
But this should be treated as two escaped \ with a maxLength of 2.
Change-Id: I6c4b8d090a2e1c6e85195d5920ce8b80aea1bc2d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Things that were broken:
- The return values of XIQueryVersion interpreted wrongly. BadRequest
means no XI2 support on the server. Nesting more XIQueryVersion
calls to check for lower minor version of XI2 in this case does not
make sense. On Success, server's supported X Input version is returned.
Server's supported version can be lower than the version we have announced
to support. In this case Qt client will be limited by X server's supported
version (which is ok, as we do check the available version at runtime via
QXcbConnection::isAtLeastXI2*).
- The code was _always_ announcing to X server that we support XI 2.2,
by ignoring what actually is supported in the specific build (see
XCB_USE_XINPUT ifdefs).
- qCDebug messages and logging categories were wrong too.
Change-Id: Ia84457f125474aa851b7a91ed19fc5b904ac359e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This includes:
- Better sharing of common code.
- Less argument passing.
- Improved code readability:
It is somewhat confusing to read when QXcbWindow::handleEnterNotifyEvent
calls connection()->handleEnterEvent().
- Better organizing of ifdefs.
Change-Id: I4405390cada13b51db78f9fd30e26bb1793395ff
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
... as XI2 reuses device ids and we might end up with some bogus
objects in m_touchDevices (the same touch device after reconnecting
might have a new device id).
With this patch, m_touchDevices is handled similarly to tablets
and scolling devices. This patch also removes unnecessary calls
to X (XIQueryDevice). We already have device information available
for all devices when populating m_touchDevices list, so calling
XIQueryDevice again for every device id (which we haven't already
concluded to be a tablet device) is a redundant round trip to X.
For consistency with other device types, extend touch device data
structure to store the necessary device details, instead of holding
pointers to XIDeviceInfo. And allocate touch device objects on
stack instead of heap, also for the consistency reasons (this way
we won't need to special case m_touchDevices when running some
management task on _all_ devices, e.g. removing a device with id=n
when it was disconnected).
Change-Id: I9f6edfaf24da911dd21ec45cd48dfdd6d0dcdf8b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
The documentation claims that QGuiApplication forwards the top-level
windows. However this appears to be a search & replace mistake from the
QApplication <> QGuiApplication separation times. Only QApplication
forwards the event to top-level widgets and changeEvent() is a virtual
method of QWidget. Nothing is implemented for plain QGuiApplication and
QWindow.
Change-Id: I71b05ecebc90f7c28e150590764438ebaa90e88f
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Change-Id: I419f884f4145dbe2b60751bf6cde3968cf34fe4a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: Ia4f4f62675a2c2e63e36c5fbf6d869e0ab8e1a9f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change-Id: If0dc8f90c657e09fc71bfae1fbffe6be980453da
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
When you are using a query that pulls from a number of different tables
then it can be ambiguous as to which table a particular field belongs to.
So this will make it possible to determine the table that a given field
belongs to if it is set.
Task-number: QTBUG-7170
Change-Id: I49b7890c0523d81272a153df3860df800ff853d5
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
QVariant claims to be able to QVariantHash and QVariantMap, but the
actual conversion implementation is missing.
Task-number: QTBUG-61471
Change-Id: I0cba74642aa77dc423effed289bc7619922a89eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Clip buffers being converted to those being worked on so we don't write
outside the lines.
Task-number: QTBUG-61863
Change-Id: Icc7c6c0946fa522b5afeca0663fc2b45151b1897
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Use QT_ARCH instead of legacy QMAKE_TARGET.arch, which is not
defined for MinGW.
Change-Id: I5a1298321f696cf1bc30613283174ecfa0139600
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Document that "visible"-but-obscured windows may not
get expose events for various audiences: QTestLib
users, platform plugin authors and on the QExposeEvent
itself. QWindow::exposeEvent() already has this documented
and is not changed.
Task-number: QTBUG-50414
Change-Id: I91042e8b1c70e48f10e692b2e80367d242a8ccbe
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The child viewport window covers the entire client
area of the parent window, which prevents the parent
window from being exposed.
This worked by accident until now, and was uncovered
by changes to the cocoa platform plugin implementation.
Change-Id: I0d62a1a33f125e5a9030c8def452a49886e54956
Task-number: QTBUG-50414
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
setDoubleStep works in the same manner as for setIntStep in that it is
just available for input dialogs getting a double.
[ChangeLog][QtWidgets][QInputDialog] Added setDoubleStep to enable
changing of the step amount for getDouble().
Task-number: QTBUG-17547
Change-Id: I5cabcfceb23324f8045f2b1e49017644418db01a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
We know the resulting screen based on the geometry mappings we now do, so
no need to wait until expose to deliver the screen change.
Change-Id: Ibb84948ab091d8f74d31cdd2d300b381e2e1e7cc
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
The tests (and Qt) should be able to handle occlusion of windows.
Change-Id: I5e93e032f6a5282f19a20d0e230863d2a165f4e3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Several tests are not valid for 1.1 anymore:
1. SSL2 was removed, but there is no OPENSSL_NO_SSL2 and the 'protocolServerSide'
test is trying to use QSsl::SSLv2 and thus is failing.
2. We now use the generic TLS_server/client_method instead of version specific
methods we have in pre-1.1 back-end. So, for example, a client socket with
QSsl::TLS_V1_0 in its SSL configuration will be able to negotiate
TLS 1.2 if our server socket wants it, while with TLSv1_client_method
(OpenSSL < 1.1) our test was expecting SSL handshake to fail.
Change-Id: I18efd5921c79b189e4d9529be09299a361a8a81d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
On VMWare Workstation 12 it will indicate OpenGL 2.1 support but it is
not sufficient enough as it is lacking things needed to use QtWebEngine
without crashing. Falling back to d3d9 works fine in this case as d3d11
also crashes.
Change-Id: I404867045a74f37d3ecc7e04e669dd305570deeb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Older versions of CMake expanded `@var@` in CMake code, so this could be
expanded at this location rather than the `string(CONFIGURE)` call if
`module` were set inadvertently. Instead, hide the literal `@` symbol
from CMake, but not from the string.
This avoids a CMP0053 warning for projects using Qt5 with a minimum
version set lower than 3.1 and silent bugs with projects explicitly
setting CMP0053 to OLD.
Change-Id: I0e4a86469fdf69b8706387799ab9b17498b8d1ca
Reviewed-by: Stephen Kelly <steveire@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Qt 5.9 introduced a QByteArray::toHex() overload that
inserts a separator char after each byte. The function
colonSeparatedHex() could not be replaced completely,
as it skips leading zeros also.
Change-Id: Ic1d5d4771a0a5171f0e7e9813b83eb4c1f59f085
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
It's a Linux-specific call that was added to the kernel in pre
historical times (before Git). Sqlite3 uses mremap(2) but it has its own
checking. Nothing else in Qt uses this.
Looks like the last user was the QPF font engine, removed in commit
d7e424ee66 almost four years ago. And
that's considering that the QPF font engine wasn't in use since Qt 5.0
because QWS was no more...
Change-Id: Idaa189413f404cffb1eafffd14ceee7488514c1d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This was accidentally removed when we revamped the document
mode tabs appearance.
In retrospect, we should also consider adding CE_TabBarTabIcon
so that we can set the relative position of the icon w.r.t.
the tab title.
Change-Id: Ic8c3a69c31837018bfdd60f8084120cae47e91f8
Task-number: QTBUG-61092
Task-number: QTBUG-61742
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>