Commit Graph

3643 Commits (4aba2d07d2fe67beaf544a4b38c5b9aa8b8ec39b)

Author SHA1 Message Date
lasconic 4aba2d07d2 Use metrics returned by GetGlyphOutline in GGO_METRICS mode
GetGlyphOutline Windows API returns wrong values when used with an
OpenType PS font and in GGO_NATIVE mode. It causes problem when
exporting to PDF. The fix changes the GetGlyphOutline call to use
GGO_METRICS instead.

Task-number: QTBUG-12799
Change-Id: I47d6d16b6e7819b51bc444420ada4a47d5f24f4e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-09-18 17:44:37 +02:00
Dyami Caliri 82dbea55a7 OS X: Add scan code mappings for Escape, Return and function keys.
In OS X, certain keyboard layouts (such as Japanese) do not produce
unicode character conversions for Escape and other keys. In these cases
the code uses a fallback scan code check to map the key. The scan code
mapping had the function keys, but there are several other important
keys it can map.

Task-number: QTBUG-41090
Change-Id: I624793c9bb28ae8c98b54539c277943905cac7e2
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-09-17 22:35:16 +02:00
Andreas Hartmetz 33e7093a84 Set WINDOWPLACEMENT::length as required by the documentation.
Found this while debugging something else in Dr. Memory.

Change-Id: Id295ddf4e07088684ecf91e3c2e0a156bf6054cb
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-09-11 23:14:25 +02:00
Richard Moe Gustavsen 8e7cb47a34 QIOSPasteboard: handle zero-pointer argument to setMimeData
QClipboard sends QPlatformClipboard a zero pointer to
QMimeData when it's told to clear. So we need to check
for this to avoid a crash.

Change-Id: I570ed727029ca699673d7b2e989bdff44df8e161
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-11 22:35:01 +02:00
Paul Olav Tvete 395d865b80 Android: fix inputmethod race conditions
focusObjectInputMethodQuery() and sendInputMethodEvent() were not
thread safe. Remove them, and replace with thread safe versions
based on the same principle as queryFocusObjectThreadSafe().

Task-number: QTBUG-40995
Change-Id: Idb6f0c6d3963b7e8e73e029e83d0367088146ca8
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-09-10 20:35:59 +02:00
Tor Arne Vestbø 2368e62f32 qpa: Make screen geometry updates (full and available geometry) atomic
Updating the geometry and available geometry in two steps means that
QScreen will be in an inconsistent state when emitting the geometry
change signal, as the available geometry has not been updated yet.

Piggy-backing changes to the availableGeometry based on the virtual
geometry changing does not make sense, so we now tie geometry and
availableGeometry (and their size variants) to their own separate
geometryChanged and availableGeometryChanged signals.

Change-Id: Iee0ced642cbb91c470cb54bc507d2c0512482c13
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-09-10 14:31:35 +02:00
Tor Arne Vestbø 2d2dc976d8 iOS: Move accessibility/textinput includes in quiview.mm
Change-Id: Id982afb06f164bd398a6e642a48a85f277075e74
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-10 14:31:29 +02:00
Alexander Volkov 3203239bd8 xcb: fix getting a XdndAware property if a proxy window exists
According to the XDND standard (http://www.newplanetsoftware.com/xdnd/)
if the proxy window exists then it should be checked for the XdndAware
property rather than the target window directly.
c3f9de6296 introduced the mistake.
In the old code the proxy window was used.

Change-Id: I83b66d4b1f08a1f44d5c1451d0f1735c084bcf09
Spotted-by: Alexander Smirnov
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-09-09 20:59:43 +02:00
Laszlo Agocs 289e9af668 Define EGL_EGLEXT_PROTOTYPES for ANGLE
Otherwise the protos are not pulled in so the ANGLE-only build cannot
suceed (unless the flag is defined from somewhere else).

Task-number: QTBUG-41164
Change-Id: I959d154da88f7ccc8159ec7e810ffdba0e7f50ea
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-09-06 22:39:48 +02:00
Robin Burchell 93560de9de kms: Move debug output behind a category.
Change-Id: I5b2bb8631a33b577afca1a0852abe4cabae1e254
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-09-05 22:18:46 +02:00
Alexander Volkov f721a85b1e xcb: fix coordinates of touch points
Fix conversion from FP1616 to qreal.
Use 16-bit mask 0xFFFF instead of 8-bit mask 0xFF.

Change-Id: I0ee39b2e298b7ff7d7a67981925374d6a18f1474
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-09-05 15:23:30 +02:00
Friedemann Kleint eac2876d55 Windows: Move dock windows automatically when screen is disconnected.
Windows does not automatically move WS_EX_TOOLWINDOW type windows.

Task-number: QTBUG-39320
Change-Id: If9804f32beb534a27ba649abf5eaceb686af8f50
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-09-05 15:21:39 +02:00
Paul Olav Tvete 675d354815 Avoid deadlock when suspending device
Don't wait for the GUI thread when it's already waiting for us.

An application that uses the virtual keyboard may get an inputmethod
query just when it is being suspended. If the GUI thread is already
blocking on a semaphore at that point, waiting for the android thread,
we really do not want to wait for the GUI thread...

Task-number: QTBUG-40955
Change-Id: Iea2cf0dd058a41a897d596c4bcf16f0508adb20b
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-05 14:04:34 +02:00
Paul Olav Tvete d98df9e929 Android: don't recreate surface on shutdown
When we suspend the app, we destroy the surface to save resources.
We don't want to create it again just as we are shutting down.

Task-number: QTBUG-41072
Change-Id: I7a616249bee869b92716d0911201a80d73c2f8da
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-05 14:04:27 +02:00
Tor Arne Vestbø 59385ff2ca iOS: Update QIOSScreen::nativeOrientation() for iOS8
For iOS8 and up [UIScreen bounds] changes based on the interface orientation,
so we need to use [UIScreen nativeBounds] instead.

Change-Id: I3fc12cfa417df26ca94c803e970bc2dc18a94378
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-09-04 18:15:51 +02:00
Louai Al-Khanji 2f0fa59d59 Add KMS hooks for EGLFS plugin
Change-Id: Ic703334e52726cdd815cccf152d9d01aa63c803c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-04 15:23:30 +02:00
Laszlo Agocs 0bb2b62135 windows: Fix dynamic opengl build
Cannot call WGL or EGL functions directly anymore.

Change-Id: I0d5c6217679d87a2092c945a9b841dfd7b6c299a
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-09-03 18:13:51 +02:00
Laszlo Agocs 38ea5428c4 Enable QT_ANGLE_PLATFORM selection in dynamic builds
Change-Id: I8ebe62ec1e024e8a0a0f9e8aeac6fb81b1095e72
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-09-03 18:13:47 +02:00
Andrew Knight 20ea0cbaba direct2d: Work around ClearType rendering bug in translucent mode
This switches the font rendering to use gray scale antialiasing when in
translucent rendering mode. It does so by adding a flags argument to the
paint engine, allowing for future expansion in communicating render hints
from the device to the engine.

Task-number: QTBUG-41002
Change-Id: I0265154716a12060e851b603a109e9c693f5e843
Reviewed-by: Louai Al-Khanji <louai.al-khanji@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-03 17:50:11 +02:00
Andy Nichols c68ef6d2c0 DirectFB: Add QT_DIRECTFB_BLITTER_DEBUGPAINT environment variable
This environment variable will paint an overlay on each paint command
that is using the accelerated blitter path for DirectFB.  This is useful
when you want to assure that you are taking advantage of the DirectFB
blitter.

Change-Id: I6e374754825794daf9c1bf40bee2b963e752a8e9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-03 17:07:52 +02:00
Laszlo Agocs 5b2f77c598 eglfs: Fix regression in config selection
During the introduction of context adoption support the config choosing got
broken for context creation, at least for hooks that return a customized
format in surfaceFormatFor(). The returned format is the one that needs
to be passed to chooseConfig(), not the original.

Change-Id: Iae203cbbf7b39c462386611dd3744f048116df13
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-09-03 16:27:52 +02:00
Paul Olav Tvete 7e1e42cbf2 Android: Avoid deadlocks on suspend
Get rid of the rendezvous at shutdown: the android thread does not
need to wait for the GUI thread. Since the GUI thread frequently does
blocking calls to the android thread, this fixes several known and
potential deadlocks.

Task-number: QTBUG-41072
Change-Id: Ia6fa8da026b1727e7352b22f4df4d72b63b8c847
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-03 15:18:49 +02:00
Paul Olav Tvete d450eb5e6d Android: Guard against invalid surfaceID
Do not try to resize or destroy invalid surfaces.

This caused update problems with all GL apps after suspend,
since we would forget the dummy view that we always keep
around so we get proper transitions on shutdown.

Also make sure that we don't mess this up even if we try to destroy a
non-existing surface. This would have fixed the bug by itself, but
then we would still be stuck with the annoying warning message.

Task-number: QTBUG-41093
Change-Id: I83299e93eb9ac5357b98ca47014789b56c91b35a
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
2014-09-02 22:00:02 +02:00
Andrew Knight a8b243b42e windows: Allow selection of ANGLE's renderer
The default behavior of ANGLE is to use D3D11 before falling back to D3D9.
This change improves flexibility the platform plugin to explicitly create
a D3D11, D3D9, or D3D11 software (WARP) context by setting the
QT_ANGLE_PLATFORM to "d3d11", "d3d9", or "warp", respectively.

Task-number: QTBUG-41031
Change-Id: Ie1d399c1cb0e360e5b3a6d9f2a4b28745d86cc71
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-09-02 21:55:48 +02:00
Tor Arne Vestbø 8a7fcf0a7d iOS: Don't store UIViewAnimationOptions value as UIViewAnimationCurve
We pull out the magic UIViewAnimationCurve of the keyboard animation
when the keyboard is about to show, but we need to defer the shifting
of the value 16 bits, as that turns it into a UIViewAnimationOptions,
which we can't store in a UIViewAnimationCurve member.

Change-Id: Id35dae1ec487951df749dfffb6118b572c28b103
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-02 16:13:18 +02:00
Tor Arne Vestbø 942c6910d1 iOS: Get rid of markedTextFormat global static variable in IME
Preperation for IME refactor.

Change-Id: I0832c174d05d019d69ef7c01c45aaedc6e4d9468
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-02 16:13:12 +02:00
Tor Arne Vestbø fea21655a8 iOS: Add support for QWindow::setOpacity()
Change-Id: I027154aef35d219f08915e195f2baf8595ef7343
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-09-02 16:13:06 +02:00
Andrew Knight 1cdcf64ad5 direct2d: Fix translucent/frameless window rendering
When using WA_TranslucentBackground/FramelessWindowHint, the backing
store must paint to an offscreen texture instead of the swap chain in
order to achieve the desired results. This texture is then presented to
the screen using UpdateLayeredWindowIndirect().

As the swap chain is not needed in this mode, its construction is skipped
if indirect rendering is active.

Furthermore, the layering options were updated to fix an issue with
transparent layers overpainting the background. The layer options were
switched to D2D1_LAYER_OPTIONS1_NONE, which appears to work for both
translucent and non-translucent rendering modes.

Task-number: QTBUG-40601
Change-Id: I656f7cdfb424d1eda6f82c2c69500e78d8c1726a
Reviewed-by: Louai Al-Khanji <louai.al-khanji@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-01 18:08:43 +02:00
Andrew Knight fc3acdd9d2 winrt: Fix mouse coordinates on high-DPI displays
The scale factor was only being applied to touch coordinates.

Change-Id: I7fc2793b1514c73986a574a95478306c1eb54c5e
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-09-01 18:08:27 +02:00
Laszlo Agocs 6ae01c72e1 Fix no-opengl build
Change-Id: I577bd5d10e52571c95c9e646327264cf95ac6eb1
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-01 14:29:36 +02:00
Laszlo Agocs da2b3c4479 Prevent current context from becoming inconsistent upon create()
Platform plugins have a tendency to make the newly created native
context current with a temporary surface. This is usually needed to
query some information related to the new context. Afterwards most of
them just reset to having nothing current.

This has two issues:

It unexpectedly changes the current context/surface. A call into
QOpenGLContext::create() does not imply that the current context will
get changed. This is the minor issue and we could probably live with
it (at least if it had been documented).

However, the real issue is that QOpenGLContext::currentContext() will
become inconsistent: it will still report whatever was current before
the create() even though on the EGL/WGL/GLX level that's not the case
anymore.

To prevent all this confusion the platform plugins can easily be
changed to restore whatever context/surface was current before they
altered it.

Change-Id: I6a5b4597c86571327524ddb13e0d02538593cc7b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2014-09-01 14:10:12 +02:00
Tor Arne Vestbø d06fb5609c iOS: Initialize QScreen properties before setting up root viewcontroller
Change-Id: I5fd899030b0557e9b0d96f2c065c8be5cfadd5de
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-09-01 13:19:07 +02:00
Friedemann Kleint 78ee759748 Windows QPA plugin: Streamline code to find window at a position.
Task-number: QTBUG-40815
Change-Id: I0efcc2cfcafdee04bda20afa88a7f6aaabd57210
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-09-01 13:08:41 +02:00
Maks Naumov 1812bb968c Remove superfluous "break" in QWindowsNativeFileDialogBase::setLabelText()
Change-Id: I889dfa00daf60e393e3d95ee2d0ecb73f7871e4c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-09-01 05:51:14 +02:00
Maks Naumov 8785cf3a01 Fix memset() for "alphaValues" in supportsSubPixelPositions()
Fix reversed memset arguments.

Change-Id: I1601fecb24068fa601e919a9fd8bb1e991ef70ec
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-31 23:05:16 +02:00
Daniel Teske e5f3a25253 IBus Input Method: Check in commit whether we need to commit
Task-number: QTBUG-40755
Change-Id: I283d48cc6d4390a02d0df63ac6e38fa5f73a0ec0
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
2014-08-31 11:48:51 +02:00
Friedemann Kleint 83dab766fc Windows: Fix QPlatformCursor::pos()/setPos() for DPR scaling.
Task-number: QTBUG-38858
Change-Id: Ibb0355ae19a382e4eb3805fe6d6afab2a2a603e6
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2014-08-29 09:51:48 +02:00
Friedemann Kleint 1b32e8d7d4 Windows: Detect Surface Pro 2 tablets.
Task-number: QTBUG-39571
Change-Id: I9cb7fe2dee9a0701912ea639cdcc66a198e5b65c
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-28 16:43:30 +02:00
Friedemann Kleint 4354fef3d4 Windows: Prevent hidden transient children from being re-shown by Windows.
Bring back code from Qt 4 to handle WM_SHOWWINDOW / SW_PARENTOPENING
correctly.

Task-number: QTBUG-40696
Change-Id: If018bf90573f495dbe32d0c46f522ccde0691ebb
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-28 13:26:06 +02:00
Marc Mutz e311f7ac8b QWindowsNativeInterface: don't allocate memory just to compare strings
Change-Id: I691d2629a78aaaee3d1741b9ab4c55b16c95bde9
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-28 09:53:23 +02:00
Tor Arne Vestbø 852dbe7658 iOS: Use dispatch_async instead of performSelectorOnMainThread for IME
Gets rid of awkward wrapping of Qt::InputMethodQueries as integer in a
NSObject.

Change-Id: Ia7e368fc12ec7957ca8ab602d8cec1e0a071af1d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 18:13:04 +02:00
Tor Arne Vestbø ad120dbf13 iOS: Add UIResponder helper to get current first responder
Change-Id: I422d45860a52861893d963fabbecd4ac30477272
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 18:12:50 +02:00
Frederik Gladhorn 910c639db6 Accessibility iOS: Fix crash after deleting a view
Change-Id: I64e8357fcbf7f312308490351b7c692d31db5a43
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 16:40:46 +02:00
Friedemann Kleint c47b04696a Add devicePixelRatio support to the Windows QPA plugin.
This adds support for the environment variable
QT_DEVICE_PIXEL_RATIO for the Windows platform plugin.

Task-number: QTBUG-38993
Task-number: QTBUG-38858
Change-Id: I6831eb6d3a09a80be7bbef46395e91531b61cc50
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 21:21:27 +02:00
Allan Sandfeld Jensen 8f547c4252 Avoid crash if querying device that has gone away
A device removed very fast after being inserted might disappear while
we are still seting it up. We must therefore check if we indeed still
get a matching device

Task-number: QTBUG-40820
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-25 20:42:52 +02:00
Laszlo Agocs a4f50269f8 Support QOpenGLWidget and QQuickWidget on Android
It gets somewhat complicated due to the fact that a RasterGLSurface window
(i.e. any widget window since 5.3) may behave either like an OpenGLSurface
or a RasterSurface, and the expected behavior may change on each backingstore
sync.

This does not fit designs where the platform window implementation is separated
and there is different behavior for raster and GL windows.

Therefore QAndroidPlatformOpenGLWindow is now made capable of behaving like the
raster one, based on a flag communicated from the widget stack via QWindowPrivate
(since the plugin knows nothing about widgets).

This means that widget windows that do not have renderToTexture children (QOpenGLWidget,
QQuickWidget) will go through the raster path, while the ones that have will behave
like an OpenGL window with the actual rendering happening in
QPlatformBackingStore::composeAndFlush().
The surface type is RasterGLSurface in both cases nonetheless.

Task-number: QTBUG-37907
Change-Id: I6f9261fc0fd993afcda7f30d379c5410069033d3
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 17:40:23 +02:00
Shawn Rutledge 9d9ef74a6c OS X QColorDialog: emit reject() when closed by the titlebar button
but only if there is a Cancel button.  A color dialog without a cancel
button might be kept open and apply to various selections, so it
doesn't make sense to reject such a dialog, only to close it.

Task-number: QTBUG-40855
Change-Id: Ifffb4ae81307c72259ed388a4776ba09543603e7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-08-25 17:04:37 +02:00
Andy Nichols 5afebb05b4 DirectFB Fix issue with showing dialogs
If the window was not visible when the geometry was set, then the
DirectFB window would not be resized.

Change-Id: I7790c90ed0fb755aebee0e32c877ebd9e48417cd
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:25 +02:00
Andy Nichols 6e7e73c014 DirectFB Unbreak mouse input for child windows
The local and global coordinates for mouse events were being translated
incorrectly from the native DirectFB events.

Change-Id: Id904a4335459b87c92f4b8b46d535c78fb7dad8c
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:18 +02:00
Andy Nichols 3fcebba79c DirectFB Make usable again with QWidget
Previously when we created any QWidget based application a
QDesktopWidget would be created as a physical window like any other, but
this window would steal input from the application.  We now create a
DirectFB window for the Qt::Desktop type of widget now, but it does not
receive input events and can not be painted to or displayed.

Change-Id: I6a090c5384b1f83383e40680dbede5d0edc41983
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:14 +02:00