This is an alternative plugin for the windows platform. It shares most
code with the current windows plugin, but substitutes a direct2d-based
paint engine for window backing stores and pixmaps.
Change-Id: I78fafd9c5871fa090b49436f5b40ec80f8789f8b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Add a layer of abstraction in some spots where the Direct2D plugin will hook in.
Change-Id: Ifca7daf6ad0284af52a81822e970c2317d339234
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
If the file doesn't exist, open() will fail. But open() might fail
even if the file exists(), which would lead to bad follow-up code. In
any case, this saves one unnecessary stat(2).
Change-Id: Ic99507c9dc07a4387ee6a4fe9c24830fca54e095
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
With this patch all wheel events will be generated by XInput2 where
available. This enables higher precision and smoother scrolling
especially from input devices such as touchpads on laptops.
[ChangeLog][Platform Specific Changes][X11 / XCB]Support XInput2 smooth scrolling events
Change-Id: I3b069ed92ad5c53e08af64baaece32de82e9b5c4
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Add additional keyboard type and enter key support to
QQnxAbstractVirtualKeyboard and update the subclasses for PPS and BPS
to match.
Update the PPS handler to be more streamlined by adding a helper
function to write the encoder and convert from type to string.
Change-Id: I32dbf9d8c44694789b5e24b4f72da8455836ae32
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
File dialog APIs are being converted to QUrls as much as possible.
Task-number: QTBUG-35947
Task-number: QTBUG-35948
Change-Id: I98d86249ac5018c3b7439065ae6ad7f1c7422a08
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
The function is invoked from the QFileDialog constructor in
save file mode when passing a non-existing file.
Task-number: QTBUG-35703
Change-Id: I5c13efb9b6789404b28739f6ce88ed87b594b6e4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
- Sleep when there are no events to process. Otherwise, CPU usage remains
high all the time.
- Reorder processing so window events are processed after being collected
by the native event loop.
- Provide basic interrupt and WaitForMoreEvents flag support.
Task-number: QTBUG-35327
Change-Id: I8a5545cba5f3e65eafd0bb40695bf6ffde68bb04
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Processing the object file with ld strips away debug information for
the main() function, resulting in the debugger not being able to
break on specific lines of the function.
It also causes issues when externing sybols in main's object file.
We revert back to the approach of using the strings in-line in the
object file (which is why we keep the name the same length, 'qtmn').
Task-number: QTBUG-35553
Change-Id: I8b0acee36f48ecfefa2e4fd008a842365713d985
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Calling xcb_flush() right before QXcbConnection::sync() is pointless.
The flush sends all requests that were already queued to the server and
the call to sync() then just sends another request, flushes it and waits
for its reply. Having just sync() implicitly flush for us means less
overhead and has the same effect.
Another useless flush is in QXcbShmImage::put(). The only caller is
QXcbBackingStore::flush() and this calls put() in a loop. If we just
call xcb_flush() from flush(), then xcb can send more requests in a
single write() call again.
Finally, calling Q_XCB_NOOP() twice in a row without doing any
interaction with xcb in between doesn't help much, so remove one of the
two calls from QXcbShmImage::put()
Change-Id: Ia3d6945b8d961e2844fc3e31fdf8189c47b534d1
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
In qt_xcb_XPixmapFromBitmap(), a new pixmap is generated for the caller.
This pixmap has to be freed after use. However,
createNonStandardCursor() didn't do this and instead leaked the pixmap.
Change-Id: I6fee180ec6508db9e82a5bb028957e7d9f7a4632
Signed-off-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
When using a touch screen on a Linux machine, we receive both touch-events
and emulated mouse events from XInput, on top of that we synthesize mouse-
events ourselves for the touch events.
This patch grabs the touch device for touch events whenever it processes
a touch-begin thereby avoiding XInput from synthesizing mouse events.
Task-number: QTBUG-35157
Change-Id: I5849d5841be236d6719cd080af2e9e39eb9cdd84
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix QCocoaWindow::setGeometry() to respect WindowFrameInclusive
* Support fake fullscreen on 10.6 or WindowFullscreenButtonHint was not set on
10.7 and later
* Fix tst_qwindow on 10.6 and later
Task-number: QTBUG-23059
Task-number: QTBUG-34629
Change-Id: I6e032ca55b45674388b00506a424d3bd7ece429f
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2d05d3bd28 was not correct.
On OS X, when user uses CJK input method, only types single punctuation,
it was converted to CJK ones, and not showed in composing text.
Task-number: QTBUG-35700
Change-Id: I919edb3f5165bf943c0d90d06a788a2f335bb1ba
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Extends the Qt keycodes with four missing keys, common on remote controls:
Guide, Info, Settings and Exit.
Change-Id: I6789f13dbb662da4261a3c947757644e12306dd9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Fix a multiple define when Qt is configured to use both EGL and xcb-Xlib.
Change-Id: I6fdb282f575842711b3b5d377bbdf3bc9909bf0c
Reviewed-by: Christoph Cullmann <cullmann@kde.org>
Reviewed-by: David Faure <david.faure@kdab.com>
This coincidentally fixes a case of accidental BIC in qevdevtouch_p.h, where not
all users would necessarily define USE_MTDEV: having it centralized inside Qt
makes this now, blessedly, impossible.
Change-Id: I196a8f21742830705759aa917a823afdc94ba2b5
Done-with: Michael Brasser <michael.brasser@jollamobile.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
On non-Android systems hideCursor should default to false, just
like it is done in eglfs. This is especially useful on udev-less
systems where currently one has to resort to setting
QT_QPA_FB_HIDECURSOR to "0" to enable the mouse cursor. This is
not ideal. Defaulting to showing the cursor unless disabled by
the environment variable or, in absence of that, the lack of a
mouse reported by udev is a better choice.
Change-Id: I7362ac47046179d5eb8ed8b44cf2c36c0fc23432
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
move the dpy to the place where it is used inside the egl ifdef guard
fixes compilation on old distros not having egl
Change-Id: I7eebe5305f3a584c0c5da2ea7b9099fdd994249d
Reviewed-by: David Faure <david.faure@kdab.com>
logicalDpi() already has the logic to check m_forcedDpi, so let's reuse
it. I hope it's not a problem that we send a signal that it changed when
nothing changed.
[ChangeLog][Platform Specific Changes][X11 / XCB]Fixed a bug that caused
Qt applications to think the screen DPI had changed when it had not,
after connecting or disconnecting monitors.
Task-number: QTBUG-32683
Change-Id: I45dd27de5109e65e7599915f11cfdb633a65a67c
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
This was probably because of some forgotten braces, since the
indentation seems to indicate that.
The current behavior might cause a null rect to become not null, which
might cause for QRect::isNull() to give a false positive.
Worst case it might case a program to crash (i.e. div by 0)
Change-Id: Iba49699880250e605b427ff4c1228c68a3471a2f
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Adds the QPA side of the support for text highlighting during text
entry and for spell checking. The changes are compatible with
existing Qt text controls though require more advanced ones to have
any effect.
QQnxInputContext has three colors it can now use for highlighting
text during composition to represent the active region, auto
corrected text and reverted text. If any of these colors is invalid,
that form of highlighting is not used. By default, only the active
region color has a valid default which corresponds to the highlighting
capabilities of classes such as QQuickTextInput. The QNX QPA native
interface has been augmented with the ability to get a function
pointer that can be used to set any or all of the three colors. The
set of colors is reset to the default at any time that focus changes
to ensure appropriate behavior if there is a mix of controls.
It's worth noting that while the colors can be changed even when
used with one of the standard Qt text controls, the auto-correct
color will not show up since it is applied immediately before
committing the text. Appropriate display of this highlighting
requires that the control maintain the highlighting for a period
after committing the text.
Spell checking is provided via another function accessible through
the QNX QPA native interface. This takes a string and a callback
function to be called once spell checking is complete.
As a slightly unrelated change, toSpannableString now uses
toWCharArray to convert the QString to UTF-32 as required by IMF,
the previous code was invalid in the case of strings containing
UTF-16 surrogate pairs.
Removed some extraneous includes.
Change-Id: Ifdf3744d1990e0560d1923bca5db30953dea0192
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Then it's possible to embed native cocoa widgets without crashing.
Task-number: QTBUG-35629
Change-Id: Ic212c36178282b4d090c6ce0470012adc8e0c2bb
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
When we get a WM_CHAR message we do not need to add anything to the key
map as these messages already contain the character code in question.
Task-number: QTBUG-35532
Change-Id: If73993cd873b7c616876b9ba52ceba6b27a6a7b1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Querying the "extra" fallback fonts (which are hard-coded names, actually)
for family only makes sense for scripts that cover more than just a single WS;
these currently are Common (<-Inherited) and Han.
Change-Id: I37682f1ae51a476a21b933607de48b01255cf1c3
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Do exactly what windows font database does to determine
writingSystems in case of non-truetype fonts.
Task-number: QTBUG-13585
Change-Id: I4a1a48d74c36e403c31f20847cf80295d89a34bc
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Most devices that use tslib have the device path defined by
the TSLIB_TSDEVICE env. variable.
Change-Id: I89fc17cb2c7fba7741de2fd348aacd608cb21a2a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
For the linuxfb platform the screen was registered
before its geometry was calculated resulting that
the qpa controller will deal with a screen instance
that has geometry of QRect(0,0,1,1) .
This masks pretty much all the painting and the input.
The fix is to call screen init before registering
the screen instance to the qpa controller.
Change-Id: If84daca6587dc368301b578cdbf7b2a65a56a5b5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
QMacPasteboardMime is a public class in Qt 4. Qt 5 has
two copies, one public QtMacExtras and an internal
one in the cocoa plugin. This causes a symbol collision
when building statically.
Rename the internal copy to QMacInternalPasteboardMime.
Task-number: QTBUG-35310
Change-Id: I891787b451a0b342ed85aa7196e606bc11623e21
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Window buffers are currently always created with an alpha channel when
the underlying display supports them. This is the correct thing to to
in order to support translucency. However, the cost is that the
composition manager unconditionally performs blending even when the
use-case in the GUI doesn't make use of it. That is rather expensive,
particularly on hardware which doesn't have extremely efficient
dedicated 2D blitting hardware.
This patch adds inspection of the user's requested window format
and--if no blending is desired--sets an additional Screen window
property which permits Screen to skip blending on the window surface.
Change-Id: I83c100a351a00ef0e8bea1b1d1fec10b7218d1de
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
foreach already knows how to iterate over the values without the need to create an intermediate qlist
Change-Id: Icf6bacc3472e09fde6fe3735086cea289ca0fa96
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Prevents derefence of freed QNetworkConfigurationPrivate pointer in
QConnmanEngine::getConfigurations().
original submitter: Jakub Adam <jakub.adam@jollamobile.com>
Change-Id: Ib915c5a68aeb3196c6ac91c96338ebee9dad30b6
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This allows QNetworkAccessManager::get(..) to make a connection,
instead of failing.
Change-Id: If5af707f7e67946357f5530cac724b223441116a
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
This will tell QtQuick.Dialogs not to use native windows for dialogs.
Change-Id: Ie2e5878b84a9597e1f730d2cb1ebe2f59be6bc75
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
No need to tie the debug bit to OpenGL 3.0+. xcb is correct
in this respect, let's correct the windows plugin too.
Change-Id: I13ea48de067d3fb61575be8f71b97bb547d8eb02
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This patch removes the activaton aand deactivation of a window when we get the window group
activated event from the navigator. This event is sent to both the primary and secondary screen
and does not state if a window should be active from a Qt perspective.
A window should only be active if it has screen keyboard focus.
Change-Id: Ibbed0dd76a21d86f4b580265f996357a8eef5192
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
In layoutSubviews we take the root viewcontroller position into account
when determening the new QWindow geometry, but we were missing this logic
in displayLayer, and would assert if the in-call statusbar was visible.
Since we don't really need the position of the window in displayLayer,
we change the assert to only check the size of the exposed area, which
is independent of the position of the root viewcontroller.
Change-Id: I774b8d9b075518e729f488a789b3a9e584c3f4d3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Introduce a hint to QPlatformTheme to control the behavior.
Task-number: QTBUG-35231
Change-Id: Ia28e153a8dd3f1931321a222d8906ca87166ed62
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Added a Enironment variable to make it possible to disable the
automatic installation of EVDEV input handlers.
This is needed if you want to use your own generic plugin instead,
which also uses evdev
Change-Id: I17d47008c10999bf918db62a22a3b6a38d7abb80
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
In commit 0c936ca83c we fixed the case
where the window was maximized programmatically, but if the window gets
restored by clicking on the taskbar we don't get to set WithinMaximize
flag, since we immediately get the WM_GETMINMAXINFO request from Windows.
To reproduce the problem, run tests/manual/windowflags, remove frames,
maximize, minimize, and restore by clicking on the taskbar.
Task-number: QTBUG-8361
Change-Id: I8a7cf4fccbb2c3dac5f570848501ac1e8d2c2307
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
While QHostInfo and QNetworkInterface are implemented,
socket implementation is just a stub for now. Having
stub implementation is preferable over not having them
at all is because most applications will not build, if
sockets are not available. Even though they do not
do anything useful yet, applications can be compiled
and run to get an idea how network will work on WinRT.
Change-Id: I78ea88901a30280d4098b75ef7398c2628dd19c8
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Brings Windows QPA on par with other platforms.
[ChangeLog][Windows] Don't cover the taskbar when maximizing
frameless windows.
Task-number: QTBUG-8361
Change-Id: Iba35132f697cb7379650a4c883b616c5c2023d4c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
When the window is requested to be made active then it should check if
the window accepts focus or not. If it does not then it should ensure
it informs the underlying system that it does not accept the activate
event.
Change-Id: I3e6533be792d8bdbb2bfcdf3b9c1a93e2c67c75a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
If a platform window is created from a QWindow without setting a valid
size or position on the QWindow, the platform window is expected to
apply sane defaults. We use the baseclass initialGeometry() function
for this, similar to other platform plugins.
The default geometry unless otherwise set and/or calculated based on
size hints is that of the screen's available geometry.
An improvement to this is to detect whenever we apply the screen
geometry, and also apply the appropriate window state, but that
needs more testing.
Change-Id: I02b12064ce6d55c04fe0cc2cd1d2816ca1113f40
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
When sending expose events to Qt, Qt will ask us if we're exposed,
and we need to tell it that we're not, so that clients will not try
to makeCurrent on a CA layer that has a zero width and/or height.
Note that this only works because we flush expose events.
Change-Id: Idfbe03a2f35681084061376a3c650a8da027fda4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
QtAndroid::findClass uses loadClass methods to find Qt's java classes.
The documentation says that we should use a binary name.
Change-Id: I2146789235435b7052827cde58b7719b7d62dc1d
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Currently there is no way to always hide the statusbar
on iOS other than showing a window in fullscreen. This
patch will check if the statusbar is (initially) hidden
from the Info.plist, and respect that in the application.
SubAttack is an example of an app that (because
of styling issues with MainWindow margins) manually
sets the geometry larger than fullsreen, and calls
showNormal(). In that case we still want the statusbar to be
hidden.
Change-Id: Ia365d14971978360d0b39621ff0f8f82f74b57e2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Going through the platform window failed when the parent wasn't created
yet. We can still get the window state of an yet-to-be-created top level
window.
Change-Id: Iaa61ddc50df037ac0bd2fd0884884c2bfce1dd9a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This reverts commit 2eb1e28a90,
which makes several of the OpenGL examples crash on startup.
(textures, hellogl_es2)
Change-Id: Id47d2df6f57b2396c333e478b3c062f4cb4becb5
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Qt defaults to creating a QWindow as offscreen surface
if QPlatformIntegration::createPlatformOffscreenSurface
returns 0. Using an offscreen surface is often done
in a background thread, which is problematic, since then
a QIOSWindow will also be created in a background thread.
According to Apple docs, working with a UIView from other
threads than the main thread should not be done. In our
case, we instead hit an assert in QApplication that
checks for the same.
As a quick fix for Qt 5.2, we remove the offending call that
causes the assert, since we anyway will call the same function
lazily when becoming first responder.
Task-number: QTBUG-35378
Change-Id: Id35462f99783a9748c688b163f6497de9bfff73e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
The drag and drop event filters do not play nicely with touch events
or virtual keyboards.
Task-number: QTBUG-35348
Change-Id: Id4d079ae72882f48750d394f13e10700d60e4532
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Prevent the cocoa platform plugin from sending expose
events for windows that are off-screen or has invalid
geometry.
Differentiate between initial exposes and geometry
update exposes, in order that e.g. geometry updates
that happen before setVisible() don't trigger expose
events. After the initial expose geometry updates
to and from invalid geometry will trigger obscure
and expose events.
Task-number: QTBUG-35143
Task-number: QTBUG-35091
Change-Id: Ibbff20c69974f098ea7635e9ca38620597840a05
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Suppress warnings like:
QFontDatabase: Cannot find font directory '...' - is Qt installed correctly?
occurring for example when using qmlplugindump.
Add option flags (similar to Windows plugin) to the integration
class to be used for QT_DEBUG_BACKINGSTORE and other functionality.
Add a dummy font database with empty populate() function to be
used unless the debug flag for the backing store is used.
Task-number: QTBUG-33674
Task-number: QTCREATORBUG-10685
Change-Id: I7eaff3025de12e6b0471a3430f986b0cd810e22c
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
It turns out we cannot rely on QGuiApplication::focusWindow() to
be non-zero at all times (e.g when pop-ups are closing etc).
So instead use m_focusView.qwindow which points to a
valid QWindow. This window is the same as QGuiApplication::focusWindow
most of the time, except when a focus window closes.
For those cases we get a new call to scrollRootView immediately
after with m_focusView updated to reflect the new focusWindow.
Task-number: QTBUG-35339
Change-Id: Icb3a8d3140af1f1904495a9289c8c26ab79e70f6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
An application will sometimes crash if the keyboard
is told to hide while the application is about to
quit. This patch will ensure that we set m_qioswindow
(and [UIView qwindow]) to 0 when the window is destroyed.
We also check this pointer before telling QUIView to
resign first responder when closing the keyboard. The
latter will fix the crash.
Task-number: QTBUG-35356
Change-Id: I934088beb7e877c5b33d96225cb215a8ffd4dbb2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Move the EGL initialization code outside of the XLib ifdefs, so it
can be enabled for non-XLib builds as well
Change-Id: Ie025551e4e99bb0b365f025356bd9725f4283b82
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
QIOSInputContext controls QUIViews first responder status
based on whether or not the keyboard should be open.
But since QGuiApplication updates focusObject before
focusWindow (when e.g a popup closes), we sometimes ended up
activating the old window upon a call to becomeFirstResponder.
This in turn led the application to hang because of
recursive dependencies in qioscontext when the focus window
changed.
So the solution for now is to avoid activating the window
when the view becomes first responder. This should be
fine since we now activate the window from
QIOSWindow::requestActivateWindow (ref: 6272a816d1)
Task-number: QTBUG-35340
Change-Id: I3068c14fec18d84d4b0b348a043c4c054e366c75
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This patch tells the window system that it should create a mouse enter
event if a window was activated when the mouse was inside. This wasn't
working and was a regression.
Task-number: QTBUG-35109
[ChangeLog][Cocoa] Fix enterEvent not being called on activate.
Change-Id: I4e4662b4a4c58dafa8d0a2c09458ab88f678d243
Reviewed-by: Liang Qi <liang.qi@digia.com>
When the user added a custom paper size then it would be silently
ignored when printing on Mac. This now ensures that it is respected when
appropriate.
[ChangeLog][Platform Specific Changes][OS X][QtPrintSupport] Respect
the custom paper size settings when printing.
Task-number: QTBUG-34700
Change-Id: I08afe24e0e67a50e9301abf4642c6f65bb0df1fe
Reviewed-by: John Layt <jlayt@kde.org>
m_result is not used by qqnxfiledialoghelper_bb10.cpp, only by its playbook
counterpart.
Change-Id: I4fae924283560703393c5313527c5c9c2005d35b
Reviewed-by: Tobias Koenig <tobias.koenig.qnx@kdab.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
QFileDialog::show() no longer worked after the dialog had already been shown
and hidden before.
Task-number: QTBUG-34983
Change-Id: I7300374b74805308e0966db7b3545e5fd8470465
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
xcb and windows already do this. The default value is 1 so the
behavior on cocoa does not change when setSwapInterval() is not
called.
Task-number: QTBUG-31939
Change-Id: Id9d9204c9324f1cc187c6aee4286e7da42583759
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Ideally we'd have a callback from iOS when this happens, so we can also
react to changes done outside of Qt, but willChangeStatusBarFrame and
friends do not seem to give us what we want.
Change-Id: I686ce7950395a83c4257372363c773a95c3935ed
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The user may use QDesktopServices::setUrlHandler() in combination with
the appropriate Info.plist keys (CFBundleURLTypes, CFBundleURLSchemes)
to react to URL requests from other applications.
This is among other things useful for handling OAuth authentication from
applications such as Dropbox. See:
https://www.dropbox.com/developers/core/start/ios
We protect against recursive URL opening, but an application may still
redirect a request to open a URL by opening another URL, eg a website.
Task-number: QTBUG-35201
Change-Id: I9f1d246206c5594b1b65bb11fa98c6bcdefc443e
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
NSEvent needs to be copied.
Reference:
http://lists.apple.com/archives/cocoa-dev/2007/Dec/msg00678.html
Task-number: QTBUG-33533
Change-Id: I73709545573e59aab6875a8c3dd903cb171e858f
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
We require glx version 1.3 which is where fbconfig is first defined.
Also make use of the configure test and report the glx status.
GLX support should always take precedence when compiling the
xcb backend
Change-Id: Ie46834210bf5cd2ac4006ff08379e0d3434ffa2b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
This adds a new configuration parameter, xcb-xlib, which allows
overriding the configure test for that existing configuration option.
The use of xcb-xlib in the xcb platform plugin becomes the preferred path
for non-OpenGL ES 2 builds, while the EGL codepath is used otherwise.
This has the advantage that EGL can be used with Desktop OpenGL if Qt is
configured with -no-xcb-xlib.
Change-Id: I5018e31fe0399b94f020c671eff9414d00431c44
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
from QXcbNativeInterface. The QPlatformScreen is available from
QScreen::handle()
Change-Id: If81daf34c07f4a49c85c43d3755d1a9167626d6d
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Currently Qt::WindowFulscreenButtonHint is only
respected on window creation. But flags
can also be adjusted later on.
Further setWindowShadow can be removed from
within createNSWindow, as it operates on a Nil
object in that case. It is however called by
recreateWindow / setWindowFlags subsequently.
Change-Id: I507d6fde5ad2f0ee5b9db322325ede99b70e151e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
The bit should be set when QSurfaceFormat::DeprecatedFunctions is
_not_ specified. The documentation was correct, the implementation
was not.
Change-Id: If7202d3a59d5336fff255a290b65fb4bfa7b79c9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
The code assumes that there is a root window, and crashed
otherwise.
Task-number: QTBUG-35121
Change-Id: Idbf0e0bfc03cd427f0aab81db88b34fe94228c81
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
For the conflicts in msvc_nmake.cpp the ifdefs are extended since we
need to support windows phone in the target branch while it is not there
in the current stable branch (as of Qt 5.2).
Conflicts:
configure
qmake/generators/win32/msvc_nmake.cpp
src/3rdparty/angle/src/libEGL/Surface.cpp
src/angle/src/common/common.pri
src/corelib/global/qglobal.h
src/corelib/io/qstandardpaths.cpp
src/plugins/platforms/qnx/qqnxintegration.cpp
src/plugins/platforms/qnx/qqnxscreeneventhandler.h
src/plugins/platforms/xcb/qglxintegration.h
src/widgets/kernel/win.pri
tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
tools/configure/configureapp.cpp
Change-Id: I00b579eefebaf61d26ab9b00046d2b5bd5958812
As seen with Xcode 5.0.2.
qmacclipboard.mm:108:30: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
promiseKeeper(paste, (PasteboardItemID)promise.itemId, flavor, this);
^
qmacclipboard.mm:316:56: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
PasteboardPutItemFlavor(paste, (PasteboardItemID)itemID, QCFString(flavor), 0, kPasteboardFlavorNoFlags);
^
Change-Id: I94b8ea2ff32d606d4cab28981b26c2ef516035dc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-[QNSListener notificationHandler:] was declared as not taking any parameter,
but used as taking a single NSNotification. This would lead to an 'unrecognized
selector' exception raised by Cocoa.
Task-number: QTBUG-26844
Change-Id: I56d03a7738c2a1b9dcf3cdecc696b01e65d7b233
Reviewed-by: Liang Qi <liang.qi@digia.com>
When setting a new window state. Otherwise we set the geometry based on
the old screen properties, and then rely on the properties causing
another window layout, which may not always happen. We also need to
explicitly update the screen properties when the statusbar changes
visibility, as there are no callbacks from iOS that consistently gives
us that information.
Change-Id: I1c3328aa3f34d294bc7db8884e611d205fd2c761
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
A window that was resized to the full screen size of the screen would
otherwise always stay in full screen, even if the window state was
maximized.
Change-Id: I4720f7b6ad1d85658ea96c6da0515693e8c827f3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
QtWidgets uses stale geometry data to do its backingstore resizes in a
lot of places, eg QWidgetPrivate::setGeometry_sys() and show_sys(). As
the resize doesn't have any effect for our GL backingstore anyways
we can skip the warning to keep console noise down.
Change-Id: Ie578f7faf35985708fddd0bfca4a7080820192c5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
It's only available on iPhone/iPods.
Change-Id: I61b45c84ddb2b3db46fff36286a6582406fa7d26
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
When iOS transfers focus from one view to another, it
asks the new view for its UIKeyInput properties before
deciding how the keyboard should be configured.
For Qt, the same QUIView is used for the whole QWindow
which means that UIKit will not change the keyboard
configuration just because we change the focus object
in Qt, since the UIView does not change.
There seems to be no way to tell UIKit that the
keyboard needs to change becuse the UIKeyInput
properties has changed. To work around this, we
briefly resign first responder status, and grabs it
again, for the same QUIView.
Change-Id: I2d15cc0c928deb023e7da58ad4669b7099dce2cf
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Configure QUIView text input traits from IM hints
returned by the focus object when the view becomes
first responder. This will affect the layout of the
virtual keyboard.
Change-Id: Ib140ba69d01cc747f3ac3cdd70dd2e7daede26b0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
CGRect and CGPoint consist of CGFloat variables. So
we should convert to QRectF and QPointF rather than
QRect and QPoint.
Change-Id: I76f180e4064f54d5810c49b88fdbbcd914bdb686
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
If the inputItem moves, it typically means that the user
scrolls or flicks the focus item around. In that case
we should avoid scrolling the screen, otherwise they
will "cancel out" each other. Besides, when the user
flicks, he takes control over the whereabouts
on the screen anyway.
Change-Id: Iad0762965f9dcdbcca934ce6d90a8c1413ce3ca2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This change will let QIOSInputContext scroll the root
view when the virtual keyboard is open, so that the input cursor
is not obscured.
Change-Id: If0758f4bf04c2b8e554e0196451154def7e3cb86
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This restores the ability from the Qt 4.x series to honor the static
contents region in the backbuffer when resizing a widget. The fix
only applies when running under Windows.
Task-number: QTBUG-34799
[ChangeLog][QtWidgets][Windows] Update QWidgetBackingStore and QWindowsBackingStore to support Qt::WA_StaticContents
QWidgetBackingStore::staticContents() was updated for windows to *not* unconditionally return false. It now
returns true if it has a non-empty static widgets list. QWindowsBackingStore::resize(...) was updated to honor
the provided static contents region. It now copies the static region into the new backbuffer in a manner similar
to what was done in Qt4. The difference is that this version accounts for the possibility of the new buffer having
a smaller region than the old buffer. In Qt4 the ::prepareBuffer method was only called when the buffer was resized
larger.
Change-Id: I135ff8fb16f52759089f1e7353426303c4504db3
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Certain key sequences (like press alt, press left, release left,
release alt) can cause an assert in qwindowskeymapper. This
behavior was introduced in change
I4f7709a90906b03f4504deea1ff5c361e9f94b3f (Fix virtual key
mapping on MS Windows). The place that seems to cause the new
behavior is changing the bitmask for obtaining the event's scancode.
With the changed bitmask releasing the alt key in the given
key sequence causes the WM_KEYUP event to trigger a WM_CHAR event
which should not happen there. To be honest I don't know how having
the extended bit inside the scancode fixes the behavior but it seems
to do and I could not find another place which might cause the
breakage.
Task-number: QTBUG-35005
Change-Id: Ia18c2681ea311196441a5cd15017e220ac095674
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Plain QNX 6.5.0 does not have a libpps, the new QNX
has a libpps and BlackBerry has it as well. So we need
a configure check to not open another mkspec for this
platform. This fixes the plain QNX 6.5.0 build.
Change-Id: Id4b3876f2385bcb5f3df426945532e7e26133f24
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
In QNX 6.6, libclipboard isn't part of the base SDP, and QT_NO_CLIPBOARD
is set unconditionally on plain QNX anyway. The clipboard-based implementation
isn't compiled when QT_NO_CLIPBOARD is set, so only try to link libclipboard
when actually building with clipboard support (BB10).
Change-Id: I54eb4fadb6bf239a83884796f5758cb79a5677ef
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
The previous patch removed a call to setGeometry, and now only calls
setGeometryHelper. This means the screen window will be resized, but
Qt won't know about our new window size. The scene graph of a QtQuick2
application would layout and render to the wrong target size.
Fixed by adding a call to QWindowSystemInterface::handleGeometryChange
if we decide to use a different geometry than suggested by the window.
Task-number: QTBUG-34930
Change-Id: Ie91c2edc45c47f5bf1d45aed981b969fcc3f40dd
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Having it disabled caused issues with our backing-store implementation,
which assumes that the backing store is retained, but for us is backed
by a GL context.
Change-Id: I18d05e226c7cf949adcd3b71801ffd845fa6d83d
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
QWidget::show_sys() assumes synchronous geometry behavior by trying to
resize both the platform window and the backing store if the widget's
view of what the geometry is doesn't match the platform window's.
The problem with that is that it's the widget which is not up to date,
not the window, as the widget is not waiting for resize events before
applying any resize logic. Instead of trying to fix widgets, we throw
our hands in the air and give QtWidgets the synchronous behavior it
assumes from the platform.
Change-Id: I1b9241b9b13df661dc7f41c4cb8ecd02f5572256
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The QBackingStore API doesn't require clients to precede flush() with a
beginPaint() call, but our backingstore is backed by a GL context, so
it's up to us to ensure it's current before swapping.
Change-Id: Ia6119bf0e835448b1fd383d933df6f88fa4f298a
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Matches the Android behavior, and gives an easy and predictable way to
show true fullscreen windows that is similar to how one would do it on
a desktop platform.
We keep the statusbar visibility in sync with the window state of the
active window.
Change-Id: Ia4b99e03f83e19f9ef56cc99b9d477cc6da4c734
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
When setting the geometry on our UIView, or when reporting it back to Qt
in our layoutSubviews callback, we need to take into account that the
root viewcontroller may be not be positioned at 0,0 in the screen's
window. Even when using the wantsFullScreenLayout property of the view
controller this may be the case on iOS7 when the in-call status-bar is
visible.
Change-Id: I0ca706c1c9aff8ba4f3b4ccdf83dba713bd5c9c2
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Geometry changes may come from Qt itself, or spontaneously from the windowing
system. In both cases we deal with them through the layoutSubviews callback,
which we now ensure gets called after we set a new geometry on the UIView
frame, by using the setNeedsLayout message.
We take care to persist the requested geometry from Qt immediately in our
setGeometry() function, so that subsequent calls to QWindow::geometry()
will report back the requested geometry. Clients can however not rely
on this geometry until they've received a corresponding resize event,
which we trigger from layoutSubviews.
Since the new geometry reported in layoutSubviews may be different from
what the user requested, we ensure to pass on both the new and the "old"
geometry, so that Qt will send the appropriate resize and move events.
Instead of building expose events on top of the existing layout
mechanism provided by iOS, we hook into the more logical point,
which is the display-phase. Since a EAGL view normally doesn't
need to "display" anything this takes a few overrides on UIView.
Once we have the hooks we need, we can distinguish between a QWindow
backing needing layout, and needing displaying.
Finally, we flush both the resize and expose events, as that's what
iOS expects of us when asking us to layout or display. The result
is that Qt is able to synchronously resize subwindows and prepare
new GL rendering for the next frame.
Change-Id: I4c03e3db3fe886163284ba1a342699e217e88cbb
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The default font size turned out to be slightly too small for
comfort on touch devices. This tweaks the size from a 12-point equivalent
to a 14-point equivalent. (Point sizes aren't real point sizes because of
compatibility with iOS.)
Change-Id: I6d970fdd5bba8199cabdf1aaaaac10d19c53c654
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
The file "locale.alias" (located in the same directory as "compose.dir"),
contains following text:
"This file contains alias name of locale.
Each alias name is described within one line.
The first word is the alias name (simplified locale name)
the second word is full locale name."
Therefore, if initial search in the compose.dir fails to find a match we
make sure that a 'full locale name' was used in the initial search, if not,
we try again.
Task-number: QTBUG-32461
Change-Id: Ie7766658f22433524bd6e4bc829e32c6e3a0cbd0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This fixes a regression introduced by
be405c86f8.
Task-number: QTBUG-34988
Change-Id: Id825b51d4d94826819d2405bb711886db3db8bc8
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Since we guard against overriding the geometry in setGeometry() when a window
has a window state, we need to use a custom method to lay out windows that
calls applyGeometry() instead.
Change-Id: I6508e6aac6746c024a6172f709b8339b35b40994
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Task-number: QTBUG-34868
Change-Id: Ia86877550884a3037b9ddedf5d8e227ec1ead2d6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This fixes a recent regression following the integration of
change:
7cc1656fef21e6bdc044968a79f0a41155357c29
(Make sure menu bar has a parent window ...)
As it now consistently crashes on mac in several of the
Qt Quick Controls examples, it is critical that it gets into
the release branch.
Change-Id: If3db1025229a7f7fd4e7ecc703d5f655db73964d
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
On BlackBerry the first window shown is treated as root window and
should be displayed full screen. The geometry has to be adjusted
properly to achieve this.
Task-number: QTBUG-34930
Change-Id: I6c011620116cc463e16dd352521b2b901a9f9f69
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
The ShowIsMaximized and ShowIsFullscreen style hints were not granular
enough to build a default behavior from that would be correct for all
platforms. The recent Android patch that excluded dialogs from being
shown maximized (Ia249e93dbbea1) has now been moved into a platform
override in the Android integration plugin, leaving other platforms
to the default behavior of using the style-hints. We still special
case popup-windows though, as that behavior has been there for a
while.
Task-number: QTBUG-34969
Change-Id: Id36346d71bfc46171383ffe334592ca0b94e456f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
It breaks down when the view-controller is fullscreen and we want to
take statusbar height into account as well. Unfortunately we can't
use constraints either, as it's iOS6+.
The approach of managing the geometry manually is closer to what
Android does as well.
Change-Id: Ib521ba0f50b110c440ab68aacef5a524d5d41154
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Instead of hard-coding it to assume the properties of the main/device
screen.
Change-Id: I94c978d4334cae5be9d1094a0c315031e54e8e1f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
As tested and assumed by tst_QWindow::isActive().
Change-Id: I8d09263ce0acc9c3390a70b4089396257197a1be
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
We might have more of them in a multi-screen setup or when implementing
support for modal windows using sub-viewcontrollers.
Change-Id: Ibe98273a13af981fffe2704a2c05bfd9d3f3e9e0
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
This mechanism is used by QtWebEngine to extract the platform GL
context. In the QNX case, the platform context is an EGL context, so
the resource you need to ask for is the "eglcontext". Compare to the
xcb native interface which has a similar implementation already.
Change-Id: I873eaadf96898abb24de347ac624c88cd54254cb
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
When you move a dockwidget from one screen to another then it needs to
be kept at the same position on the new screen, i.e. with the mouse
pointer. This fix ensures that this is happening including when the
screens may not 100% align up with each other.
Task-number: QTBUG-33369
Change-Id: If414effdd0e0415629ca31a86f8bbe382dd29f80
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The code was using the "long" type when a 32 bit type was actually
needed. This can cause bugs in those systems where "long" is 64 bits
wide, such as Linux x86-64 (which is LP64).
Task-number: QTBUG-34861
Change-Id: Iab289b2af3847dd62d8b4ecea51896936ca4c7a2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Be more rigorous about checking if we're in a session before invoking IMF functions. In
particular the code would call initEvent if a key was received while no text field had focus
leading to a crash.
Also closeSession is now always called when a session is terminated rather than just
setting sInputSession to 0 and hasSession is always called to check for a valid session.
Change-Id: I22ce1c9bcdf8dd130f05ae319c4cc1e01afc4456
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
We report our swap-behavior as QSurfaceFormat::DoubleBuffer, which means
there's no point in using retained backing. This was a left-over from
when we reported single-buffered swaps, which didn't work to well as
clients would wrongly assume swap was not needed at all.
Change-Id: Id26df2f8b282892c720d48cfe85eb9e010f1500d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This is an improvement over 6800728d where we only fixed it if
the window was in "normal" state (Qt::WindowNoState) before
minimizing.
With this patch, if the window was previously maximized or
full-screen it will also get the expose events when being
restored.
Change-Id: I4a30423145e0999c5d0a5ee2a989730b83f4e3f2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
This ensures that the possible window flag combinations are respected
where possible in Cocoa.
Task-number: QTBUG-34645
Task-number: QTBUG-31616
Change-Id: I6be8ca666b7cbc397575e97cd95ea298f52a7113
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
qcocoaapplication.mm:118:61: warning: cast to 'id' from smaller integer type 'int' [-Wint-to-pointer-cast]
id a1 = ([args->arg1 isKindOfClass:[NSNumber class]]) ? (id)[args->arg1 intValue] : args->arg1;
^
qcocoaapplication.mm:119:61: warning: cast to 'id' from smaller integer type 'int' [-Wint-to-pointer-cast]
id a2 = ([args->arg2 isKindOfClass:[NSNumber class]]) ? (id)[args->arg2 intValue] : args->arg2;
Change-Id: Ibcf3d5d5698ff863f3c9bd65e0388ccca147f419
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
It was providing all possible types, but now MessageDialog is a new
native dialog type, and only on Android at the moment.
Task-number: QTBUG-34784
Change-Id: I2fb288c8d5e176ca4dafbbc310de2f29bbcfc000
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
This was actually causing test failures in qtdeclarative
and blocking the CI there.
Change-Id: I4538342f16b6468ad60b283c19948863b20ad5d4
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
The xcb QPA plugin uses a separate thread for getting events from the
X11 server in a race-free manner. This thread has to be stopped when
shutting down. This is done by causing the X11 server to send a special
event that causes the thread to exit when it sees it. (Also, the thread
exits if the xcb connection goes into an error state, but that does not
matter here)
So this event listener window is only needed when Qt is sending events
to itself. This means that it does not have to be kept around and
instead can be created only when needed.
Since this window does not stay around for long, it does not need a
name. However, it does need the list of screens to find the correct root
window, so destroy screens later.
Change-Id: Ib4104cbc3f372fa5d1391bcf5a633a158409862f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Touch positions reported by libscreen have to be adjusted relative to
the window position to be properly interpreted by Qt.
Task-number: QTBUG-34812
Change-Id: I68744dc9da95fb1d0d1704d12154fb24c148fe03
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
This is used by QML comboboxes, menu buttons, etc.
Task-number: QTBUG-31420
Change-Id: I6d3f32fd80ce91c4be34eae636d1b95a4e251a49
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Since the Qt input method queries only give us information
on the position within the block, moving to the same position
in a different block will be interpreted as not moving.
The quick fix is to send a fake position before the real one in
this case.
Task-number: QTBUG-34845
Change-Id: I5d62bdffc283e41d0384c60a0b69c01811caa629
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Use the same variable in QAndroidPlatformWindow.
Task-number: QTBUG-34764
Change-Id: Idf33707e81cf7306663196f3c17735d8dc1dde5d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This will make Qt Quick use consistent timing which
prepares animation frames for the time they go to
screen, rather than the current time at the time of the
animation tick, which can be quite jerky in many situations.
Change-Id: I1bbd4394db0c757553ee406d416fccb3ef937db8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
QWindow::setParent() is documented to imply that the geometry of the
window is in the parent's coordinate system and that the window is
clipped to the parent.
Instead of always enabling clipping of subviews for our UIView subclass
we dynamically detect if we have QWindow children and enable/disable it
on the fly.
Change-Id: If83de94c55cbd19de401ab835e86bb7be5999d71
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
They were handy while debugging the iOS platform plugin, but should not
affect users who link against debug libraries, so let's just remove them.
Change-Id: I61b157e81130e5d951c22892e00f71e593082b1d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
We don't use separate pools anwyhere else, and this was copied straight
from the UIKit plugin. Unless there's a good reason for having it in this
particular place we should keep things consistent.
Change-Id: I9a3f83bcc5894a2cdfd9af7818b46d6c0f8448da
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
A QWindow may be created() and destroyed() multiple times in the lifetime
of the window, each time resulting in a new platform window (QIOSWindow)
being created. This QIOSWindow is backed by a new UIView each time, hence
it needs a new FBO and renderbuffer-mapping, since the previous
renderbuffer was mapped to the old UIView.
This fixes a bug where a QWindow would not render after a destroy()
unless it was resized (which triggered new FBO/renderbuffers).
We need to inherit QObject so that we can watch the destroyed() signal.
Change-Id: I93172dd6280b86b49755bf7abddf061d7e6b66f1
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
The default UIWindow may not be the only UIWindow around in a multi
screen setup.
Change-Id: Ia7243190321a1416e577634bf5e010dd67d482e6
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
We don't need to cache the device-pixel-ratio, as we can ask the UIView
directly. We do need to set it though, as the default behavior of
matching the screen scale does not apply for EAGL-backed views,
but the ratio needs to match the current screen the view is on.
Change-Id: I29e4a4fa4f4b767d86265ec899fb43a355b5c3a3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Implement swap interval support for EGL, GLX and WGL.
The environment variable QT_QPA_EGLFS_SWAPINTERVAL is renamed to
QT_QPA_EGL_SWAPINTERVAL and can be used to override the applications'
setting of the swap interval.
Task-number: QTBUG-31939
Change-Id: I644325d5d3306b7604bffd7efccda3c00ed37d36
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This patch does following things:
* Remove the root window: First window which is created will serve as a root window
* Allow creation of more than one application window (with every app window having
an own window group) on one screen
* Fixes a bug when reparanting an EGL window
Change-Id: I1afd64a813bc084c0893b958aa191d4a25c32b9d
Reviewed-by: Matt Hoosier <matt.hoosier@garmin.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
When the EAGLView view changes its layout, it must send the expose event
along with the geometry change. It is important to notify the render loop
of the scene graph that the windows's geometry has changed. The render loop
is waiting for the WM_Expose event and updates the scene's window size accordingly.
See QSGRenderThread::event for reference.
Without this notification, the geometry of window is updated, but the scene is rendered
incorrectly, for example when the orientation of screen changes.
Change-Id: If102014313de455cb1f44d772b478d2feae6dacf
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
QFileSystemWatcher causes sandboxing errors since its backend uses
POSIX API in a relatively liberal way.
Also, Cocoa already acts as a file system watcher, and calls
-[QNSOpenSavePanelDelegate panel:shouldShowFilename:] on each
file. From a logical point of view, caching the directory content
can be replaced by testing the current file against the filter
setting. We expect Cocoa to cache results, and by using NSFileManager
things should remain relatively fast.
Task-number: QTBUG-34107
Change-Id: Ia872b9b1244f7b390d173a498011379b9309b3c6
Reviewed-by: Cyril Oblikov <munknex@gmail.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Keeps the internal state of QtGui sane when it comes to which buttons
are active, etc.
Change-Id: Ic63e74d2546469e085ec46b74f4cf159dd409b07
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Matches the cocoa QNSView and highlights the relation to UIView.
Change-Id: Idcdb17bff994c1e0aef099400c21915a7041e44c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Matches the wording using in QWidget.
Change-Id: Ifbb4e5ffa90b47a7c179cf9ec52cb46126d7bccc
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Pixel positions have to be set in relation to screen size in pixels,
not the physical size to calculate the normal position in the
range 0..1.
Change-Id: I6880fb64b7c3049d657fd081b564b945399b5865
Reviewed-by: Frank Osterfeld <frank.osterfeld@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
The library needs to do Q_INIT_RESOURCE for all resources it uses
internally, otherwise static linking will fail, and the user has
no idea how to rectify it as the name of the missing resource is
not known. The Q_INIT_RESOURCE needs to happen outside of any
namespace, hence the use of static initResources() functions.
Change-Id: I8f7d36b440b05809d97dd489cf8789f345633cec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
We did not do this from before. Instead we would activate
the window when it's view became first responder. And this
would happen when the input panel was told to open.
That behavior is a fragile, since other layers higher
up (qml) would not open the input panel unless the window
was active, which also makes sense. A classic chicken and
egg problem.
So to play more along with how Qt is expected to work, we
change behavior to instead activate the window directly
when requested to do so (which also includes when the user
touches the window directly). This will also work better
for "keyboard" events like Key_VolumeUp, once implemented.
The down side is that Qt will give focus to widgets/items
(and as such, open the keyboard) whenever you touch the
window. But that is easier to fix, and will be dealt with
in later patches.
Change-Id: I9bbeb0205e7ea3c5079100c07e40ddb1c60b476b
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Make sure that resize events are delivered when the platform
plugin overrides the geometry set in setGeometry().
This fixes a race condition where a widget was resized to its
sizeHint() while the window was maximized, and the content was
shown scaled on the screen.
The problem is that the widget gets the wrong size from
QWidget::setWindowState() (which calls adjustSize() in order to support
normalGeometry). This size is used to resize the backingStore. When the
QWindow is resized, it calls QEglFSWindow::setGeometry() which corrects the
size to screen()->availableGeometry(), and triggers a GeometryChangeEvent
since the size was corrected.
This ends up in QGuiApplicationPrivate::processGeometryChangeEvent() which
will not send a resize event, since the size has not changed (it is always
availableGeometry()). Therefore the widget is never resized, and the
backingStore remains the wrong size.
Task-number: QTBUG-34421
Change-Id: Iee49c53cc529de36010db2695d838d8c2284edd4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
On API-11+ if there is no hardware menu button show the action bar.
Fix menu when using the opengl android plugin.
Task-number: QTBUG-32002
Change-Id: I45bd49107621e4cab85eb6411897229e20bb8281
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
We would spam the debug output on devices with api < 16 with some
warnings that the super class a11y delegate could not be found and
others.
Instead check the runtime version before trying to load the JNI code and
only load the delegate if api is new enough.
Change-Id: I52286cb99924b034b9b58c53566f15030939b0c9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>