Commit Graph

83 Commits (cebdd91f8bbebf43fd2ec3c4dd2f49f46172d47e)

Author SHA1 Message Date
Friedemann Kleint cebdd91f8b Windows: Add platform plugin parameter for tablet absolute range.
Make the range for detecting relative (mouse mode) configureable
using  -platform windows:tabletabsoluterange=50

Task-number: QTBUG-36937

Change-Id: I44f928e53cb41b246c44554ec7f71bfbdf03c147
Reviewed-by: Arthur Krebsbach <Arthur.Krebsbach@Wacom.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-02-27 13:28:23 +01:00
Laszlo Agocs 97c187da3c Dynamic GL switch on Windows
The patch introduces a new build configuration on Windows which
can be requested by passing -opengl dynamic to configure.

Platforms other than Windows (including WinRT) are not affected.
The existing Angle and desktop configurations are not affected.
These continue to function as before and Angle remains the default.

In the future, when all modules have added support for the dynamic
path, as described below, the default configuration could be changed
to be the dynamic one. This would allow providing a single set of
binaries in the official builds instead of the current two.

When requesting dynamic GL, Angle is built but QT_OPENGL_ES[_2] are
never defined. Instead, the code path that has traditionally been
desktop GL only becomes the dynamic path that has to do runtime
checks. Qt modules and applications are not linked to opengl32.dll or
libegl/glesv2.dll in this case. Instead, QtGui exports all necessary
egl/egl/gl functions which will, under the hood, forward all requests
to a dynamically loaded EGL/WGL/GL implementation.

Porting guide (better said, changes needed to prepare your code to
work with dynamic GL builds when the fallback to Angle is utilized):

1. In !QT_OPENGL_ES[_2] code branches use QOpenGLFunctions::isES() to
differentiate between desktop and ES where needed. Keep in mind that
it is the desktop GL header (plus qopenglext.h) that is included,
not the GLES one.

QtGui's proxy will handle some differences, for example calling
glClearDepth will route to glClearDepthf when needed. The built-in
eglGetProcAddress is able to retrieve pointers for standard GLES2
functions too so code resolving OpenGL 2 functions will function
in any case.

2. QT_CONFIG will contain "opengl" and "dynamicgl" in dynamic builds,
but never "angle" or "opengles2".

3. The preprocessor define QT_OPENGL_DYNAMIC is also available in
dynamic builds. The usage of this is strongly discouraged and should
not be needed anywhere except for QtGui and the platform plugin.

4. Code in need of the library handle can use
QOpenGLFunctions::platformGLHandle().

The decision on which library to load is currently based on a simple
test that creates a dummy window/context and tries to resolve an
OpenGL 2 function. If this fails, it goes for Angle. This seems to work
well on Win7 PCs for example that do not have proper graphics drivers
providing OpenGL installed but are D3D9 capable using the default drivers.

Setting QT_OPENGL to desktop or angle skips the test and forces
usage of the given GL. There are also two new application attributes
that could be used for the same purpose.

If Angle is requested but the libraries are not present, desktop is
tried. If desktop is requested, or if angle is requested but nothing
works, the EGL/WGL functions will still be callable but will return 0.
This conveniently means that eglInitialize() and such will report a failure.

Debug messages can be enabled by setting QT_OPENGLPROXY_DEBUG. This will
tell which implementation is chosen.

The textures example application is ported to OpenGL 2, the GL 1
code path is removed.

[ChangeLog][QtGui] Qt builds on Windows can now be configured for
dynamic loading of the OpenGL implementation. This can be requested
by passing -opengl dynamic to configure. In this mode no modules will
link to opengl32.dll or Angle's libegl/libglesv2. Instead, QtGui will
dynamically choose between desktop and Angle during the first GL/EGL/WGL
call. This allows deploying applications with a single set of Qt libraries
with the ability of transparently falling back to Angle in case the
opengl32.dll is not suitable, due to missing graphics drivers for example.

Task-number: QTBUG-36483
Change-Id: I716fdebbf60b355b7d9ef57d1e069eef366b4ab9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-02-14 10:51:44 +01:00
Louai Al-Khanji bd9e1f3915 Improve direct2d backing store implementation
Add a per-window swap chain to a QPlatformWindow subclass instead of tying
it to the backing store. This is needed to support native widgets (as
opposed to alien widgets).

Change the backing store to draw to an intermediate pixmap and flush to
the requested window by using the per-window swap chain. This also opens
the door for faster window presentation later on by using the swap chain
more intelligently.

Also add a changelog entry for the direct2d plugin, which was omitted
earlier.

[ChangeLog][QtGui][Windows]
Introduce experimental direct2d platform plugin for Windows. This plugin
shares most code with the current windows plugin, but substitutes a
direct2d-based paint engine for window backing stores and pixmaps.

Change-Id: I5f54e7e4c1fb15b1639bd26b712fb40ac141e4ac
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-27 09:09:13 +01:00
Friedemann Kleint db51ffc0d1 Port Windows QPA plugin to new logger API.
Introduce logging categories and change most debug statements
to qCDebug().

Retrieve the filter rules from the environment variable
QT_QPA_VERBOSE (should be removed once the logging framework
offers a more convenient way of configuring).

Replace the old per-category variables controlling verboseness
of the output by a single variable which can be set on the command
line.

Change-Id: Iae55ecdb0e150efd165b7d3e90b371f72853f194
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-22 12:12:17 +01:00
Friedemann Kleint 7622049a71 Windows: Remove rarely used integration/theming logging categories.
Preparing the introduction of the categorized logging system for the
plugin.

Change-Id: I2b180d88cf508559f495d39d4e1d36b8f3da7051
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-01-15 18:43:20 +01:00
Louai Al-Khanji 5a2fc4c367 Shuffle things around in preparation for Direct2D platform plugin
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>
2014-01-10 15:10:29 +01:00
Sergio Ahumada da0cb32b8e Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2013-10-09 15:50:11 +02:00
Laszlo Agocs 94abcf9817 Allow OS synthesized mouse events by default on Windows
https://codereview.qt-project.org/#change,66028 fixes Quick2 apps so
there will be no need to ignore mouse events synthesized from touches
by the OS. The mousefromtouch plugin parameter is changed to
nomousefromtouch since mousefromtouch becomes the default.

This will restore the OS-provided functionality, like translating
tap-and-hold to right clicks, for Quick1 and widget apps.

Change-Id: I5554a91a54365b9c72c3ad304010b9fc4e53ab24
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-10-08 07:19:36 +02:00
Tor Arne Vestbø 999e5162ec QPA: Fix semantics of GUI event dispatcher ownership in platform plugins
The QPlatformIntegration::guiThreadEventDispatcher() function acted as an
accessor to event dispatchers created in the constructor of each platform
plugin, but the logic and semantics of event-dispatcher handling in Qt
itself (QCoreApplication/QGuiApplication) still assumed both ownership
and control over the event dispatcher, such as when to create one, which
one to create, and when to delete it. This conflicted with the explicit
calls in the platform plugins to QGuiApplication::setEventDispatcher(),
as well as left a possibility that the event-dispatcher created by
the platform plugin would never be deleted, as none of the platform
plugins actually took full ownership of the dispatcher and deleted it
in its destructor.

The integration function has now been renamed back to its old name,
createEventDispatcher(), and acts as a factory function, leaving
the logic and lifetime of event dispatcher to QtCoreApplication.

The only platform left with creating the event-dispatcher in the
constructor is QNX, where other parts of the platform relies on
having an event-dispatcher before their initialization. We then
need to manually take care of the ownership transfer, so that the
event-dispatcher is still destroyed at some point.

Change-Id: I113db97d2545ebda39ebdefa865e488d2ce9368b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-09-30 16:32:29 +02:00
Samuel Gaist ac0bacc8af Port of Qt 4's Windows session management
This patch aims to implement the session management for Windows.
Based on the Qt 4 QApplication windows specific code

Task-number: QTBUG-28228
Task-number: QTBUG-33032
Change-Id: I7059298ad9661aebd51e77a03f55a7a04f461479
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-09-21 07:45:44 +02:00
Friedemann Kleint 560de9725d Windows: Add command line parameter enabling OS-synthesized mouse events from touch.
Applications launched with -platform windows:mousefromtouch will
receive OS-synthesized mouse events.

Task-number: QTBUG-31386
Change-Id: I1c49486589c4a7fa4fb5525f7a5adca09b1cfb89
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-09 14:49:33 +02:00
Friedemann Kleint 95e880bd9d Windows: Handle Qt::ForeignWindow.
Task-number: QTBUG-33079

Change-Id: Iec2ddfe07b07b3a921098c7147f26aff316bf6e6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-08-21 23:00:32 +02:00
Friedemann Kleint 1828ab8557 Windows: Send a geometry change after Window creation.
Task-number: QTBUG-30996

Change-Id: I03b5e1fdbbdd779f86541291c13e9eb6840ff3c6
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-06-07 11:47:12 +02:00
Friedemann Kleint de3d449dcf Windows: Suppress mouse events synthesized by OS.
Change the hint for
QPlatformIntegration::SynthesizeMouseFromTouchEvents to false
for Windows and suppress the events synthesized by OS.

The synthesized events cause touch events to generate 2 clicks
in Quick2.

Leave code as is for Windows CE.

Task-number: QTBUG-31386
Change-Id: Ia0987342dcdd55c8540810da5e4b90518a501ce6
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-05-30 12:49:54 +02:00
Friedemann Kleint 155ff13bb6 Implement QApplication::beep().
Invoke slot "beep" on QPlatformNativeInterface. Implement for
Windows and X11.

Task-number: QTBUG-30416

Change-Id: I2be651165b899e5147818a012001d354827bb090
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
2013-04-19 20:10:46 +02:00
Friedemann Kleint 9b7c66ac7f Windows: Ignore mouse events generated by Windows.
Task-number: QTBUG-29946

Change-Id: Idef0e7cc8bc407377e60e4a9d67c3ba78b347b76
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2013-04-05 15:05:24 +02:00
Frederik Gladhorn e65cd6f379 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/concurrent/doc/qtconcurrent.qdocconf
	src/corelib/doc/qtcore.qdocconf
	src/corelib/global/qglobal.h
	src/dbus/doc/qtdbus.qdocconf
	src/dbus/qdbusmessage.h
	src/gui/doc/qtgui.qdocconf
	src/gui/image/qimagereader.cpp
	src/network/doc/qtnetwork.qdocconf
	src/opengl/doc/qtopengl.qdocconf
	src/opengl/qgl.h
	src/plugins/platforms/windows/qwindowswindow.cpp
	src/printsupport/doc/qtprintsupport.qdocconf
	src/sql/doc/qtsql.qdocconf
	src/testlib/doc/qttestlib.qdocconf
	src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf
	src/widgets/doc/qtwidgets.qdocconf
	src/xml/doc/qtxml.qdocconf

Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
2013-02-14 14:24:57 +01:00
Bjoern Breitmeyer b06363886d Fixed QT_NO_DRAGANDDROP build for the windows plugin
Change-Id: Ieb987105bdcc08118a1b83cf3b74a93fa402264a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-02-07 18:22:08 +01:00
Friedemann Kleint 38f740e4de Windows tray icon: Fix reinstalling after restart of Explorer.
Use a normal instead of a HWND_MESSAGE-window since the latter
do not receive the "TaskbarCreated" message. Provide an invokable
slot in the native interface to register a window class for that
purpose.

Task-number: QTBUG-29160
Change-Id: Ic25222d08d21867f7d882a9e19d8aaf50f3f47cf
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-01-30 21:50:00 +01:00
Frederik Gladhorn 02ba93dd3d Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I12b4d8b99bdccae53b1a978cd6eb8f4ac6fb3c76
2013-01-28 11:10:29 +01:00
Sze Howe Koh 63569a68d2 Doc: Fix module name format
Follow the conventions at
http://qt-project.org/wiki/Spelling_Module_Names_in_Qt_Documentation

QtCore         -> Qt Core
QtDBus         -> Qt D-Bus
QtDesigner     -> Qt Designer
QtGui          -> Qt GUI
QtImageFormats -> Qt Image Formats
QtNetwork      -> Qt Network
QtPrintSupport -> Qt Print Support
QtScript       -> Qt Script
QtSql          -> Qt SQL
QtSvg          -> Qt SVG
QtTest         -> Qt Test
QtWebKit       -> Qt WebKit
QtWidgets      -> Qt Widgets
QtXml          -> Qt XML

QtConcurrent   -> Qt Concurrent (partial)
QtQuick        -> Qt Quick      (partial)

Also, distinguish between "module" and "library"

Change-Id: Icb8aa695ae60b0e45920b0c8fce4dc763a12b0cd
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2013-01-25 17:27:44 +01:00
Frederik Gladhorn c608ec8254 Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
	src/corelib/io/qsavefile_p.h
	src/corelib/tools/qregularexpression.cpp
	src/gui/util/qvalidator.cpp
	src/gui/util/qvalidator.h

Change-Id: I58fdf0358bd86e2fad5d9ad0556f3d3f1f535825
2013-01-22 18:40:13 +01:00
Sergio Ahumada 48e0c4df23 Update copyright year in Digia's license headers
Change-Id: Ic804938fc352291d011800d21e549c10acac66fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2013-01-18 09:07:35 +01:00
Friedemann Kleint f5fd534603 Fix frame of Aero-Style wizards.
Add custom frames which are added to the system frame to
the platform plugin. Make them settable when creating a platform
window using dynamic properties and per window properties
of the platform native interface.

Use this in favor of the native event handling changing the frame
in wizard_win.cpp since that caused the frame/backing store sizes
of the QWindow to be wrong.

Task-number: QTBUG-28099

Change-Id: Idd6416cf1b0eb629f56663088b0ce17162e1739d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-01-09 20:53:57 +01:00
Andreas Holzammer 0cac0796a0 WINCE: Follow new library naming schema
Change-Id: Iad85e64bf504053e21cad809d2435c1ca239201b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2013-01-03 16:15:37 +01:00
Shawn Rutledge cd34da5426 Rename all QWindow properties that have "window" in them
windowTitle, windowModality, windowIcon and so on are named that way
to be similar to the ones in QWidget.  However QQuickWindow inherits
all of the declared properties, and we would like to have shorter
property names in QML.  If you are working with a Window then it's
obvious the title property is the window title.  Unfortunately,
there must be patches in many other modules which depend on this one.
In order to avoid the need to merge them all at the same time,
there is also patch https://codereview.qt-project.org/#change,39001
which temporarily adds backwards-compatible accessors, which can be
removed after the other modules are able to build without them.

We should not rename windowState to state, because in QML, state
usually drives the state machine for animation transitions etc.
(although QWindow is not an Item, a user might get confused about it).

Related patches are
https://codereview.qt-project.org/#change,39001
https://codereview.qt-project.org/#change,37764
https://codereview.qt-project.org/#change,37765
https://codereview.qt-project.org/#change,37766
https://codereview.qt-project.org/#change,37762

Change-Id: Ie4424ec15fbdef6b29b137f90a2ae33f173edd21
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
2012-11-07 21:26:08 +01:00
Samuel Rødal 300534fc21 Added MultipleWindows platform capability.
Several platform plugins, like eglfs, kms, etc don't support multiple
windows as there's no system compositor, they're rendering directly to
a single back buffer. By adding a platform capability we'll be able to
provide better error reporting when an application tries to create
multiple QWindows on a single-window platform. Also, QML apps can use
this capability to figure out whether they should create a QWindow for
dialogs / popups / menus, or whether to just create items in the same
scene, that are shown on top of the rest of the content.

Change-Id: I15b8d21ee2bc4568e9d705dbf32f872c2c25742b
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
2012-11-02 12:17:27 +01:00
Friedemann Kleint d402d0c3e3 Bring back native dialogs for Windows XP.
The  CLSID_FileOpenDialog, CLSID_FileSaveDialog-based dialogs
are available from Windows Vista on only, the old Shell-function
based ones are required for Windows XP.

Add a command line argument to switch dialog types.

Extract some common functionality for both dialog types.

Task-number: QTBUG-27621

Change-Id: I224c5c4574c2ff54daf354f00d3d1f82abc6f459
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
2012-10-30 11:07:27 +01:00
Miikka Heikkinen c4109fe103 Fix crash when handling WM_PAINT during COM operations
Synchronous expose corrupts painter state if it is done during existing
paint operation, which can happen e.g. when requesting some value from
dumpcpp generated wrapper inside a slot.

Fixed by implementing support for setting asynchronous expose and
doing expose according to the setting in handleWmPaint().

Task-number: QTBUG-27209
Change-Id: I89b5aa823fda947d26b1a4757f129e7c31ea408b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-10-25 14:10:04 +02:00
Jason Barron 0693082c95 Pass the correct handle to the Windows EGL context constructor.
We should pass the shareHandle here instead of the handle for the
context since that's what it expects.

Change-Id: If851758817057ecc3c3646cba2354becf5a8a839
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-10-22 17:41:47 +02:00
Friedemann Kleint 23c19acc59 Windows QPA plugin: Parse arguments from list passed to factory.
Using dynamic properties on the native interface is deprecated.

Change-Id: Ia3411780dad15af61d4805c0d9fabf00dba92301
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
2012-10-18 15:13:11 +02:00
Friedemann Kleint c6cc55c9fe Windows: Document WinAPI usage for the various compilers.
Change-Id: I139c6546cb84a1fa93920a501cd15eb11fdadbb8
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
2012-10-16 11:03:26 +02:00
Oliver Wolff 9e44b76093 Added possibleKeys(QKeyEvent *) to QWindowsIntegration
Task-number: QTBUG-26902
Change-Id: I08d244816eae8794b52f244f049ee1fb825dac8b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-10-13 05:51:19 +02:00
Kai Koehne 0189315c8c WindowsPlugin: Fix MinGW warnings
Fix warnings:

Change-Id: Ia68607f72087c0085e528fee0e6270b80692e389
warning: enumeration value 'SynthesizeMouseFromTouchEvents' not handled in switch
warning: suggest parentheses around assignment used as truth value
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2012-09-27 14:59:13 +02:00
Andreas Holzammer 03f4930eca Try to auto-detect the font rendering for WinCE
Native font rendering is broken for QML applications, use free type
rendering for those scenarios. Use native rendering for all other
applications.

Use a workaround to find out if we are running a QML application on the
target.

Related to QTBUG-24205.

Change-Id: I653ea579098db1e58af8176cb2c3f943be0b9602
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2012-09-24 18:02:13 +02:00
Iikka Eklund be15856f61 Change copyrights from Nokia to Digia
Change copyrights and license headers from Nokia to Digia

Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
2012-09-22 19:20:11 +02:00
Paul Olav Tvete 3d0af143ca Revert "Move QWindowSystemInterface out of qpa."
This reverts commit 784a877d3c.

Conflicts:

	src/plugins/platforms/cocoa/qcocoawindow.mm
	src/testlib/qtestkeyboard.h
	src/testlib/qtestmouse.h
	src/testlib/qtesttouch.h

Change-Id: Iebfed179b3eb7f30e4c95edcae5a8ad6fd50330e
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-08-03 00:38:09 +02:00
David Faure 1603ba2365 Provide public API for native event filtering, moved up from QPA.
The previous API was hard to use (global function, no type safety,
manual chaining), and confusing (app vs dispatcher split only made
sense on Windows). Installing and removing out of order would have
the risk of setting back a dangling pointer (crash). Meanwhile QPA
added type safety, and this new API models the QObject::installEventFilter
API for ease of use. The virtual method is in a new interface,
QAbstractNativeEventFilter.

QPA was even calling the dispatcher event filter with QPA-private event
classes, which made no sense (refactoring leftover from when the code
was in the dispatcher). Now the QPA plugins trigger the qcoreapp event
filters with the actual native events directly.

Change-Id: Ie35e47c59c862383bcaf857b28d54f7c72547882
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-07-20 18:34:08 +02:00
Stephen Kelly 784a877d3c Move QWindowSystemInterface out of qpa.
Public QtTest headers require it, so all unit tests would have to use private Qt
headers otherwise, which is not practical.

Change-Id: I5d4466ec30b6a57ebdfc34413e716e657eb51368
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
2012-07-19 15:28:18 +02:00
Friedemann Kleint e8aa56b74b Add stylehint to use querying RTL keyboard support.
Change-Id: Ic58ed7cb64cc7fe60b4d431e9f29e389c62265fc
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
2012-07-11 14:52:17 +02:00
Girish Ramakrishnan 122741c671 Suppress QWindowSystemInterface inclusion warnings.
Since QWindowSystemInterface is now part of QPA API. The correct
inclusion is:
    #include <qpa/qwindowsysteminterface.h>
    #include <qpa/qwindowsysteminterface_p.h>

Bulk of the work was done by:
    find . -type f | xargs sed -i -e 's,#include <\(QtGui/\)\?QWindowSystemInterface>,#include <qpa/qwindowsysteminterface.h>,g'

Change-Id: If75fc32611e72ef1cf58505794def375b1acf74a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-07-03 14:24:20 +02:00
Friedemann Kleint 8e280d1e18 QPlatformWindow: Add Window masks.
Add functionality for window masks to QPlatformWindow, which is
required to implement QWidget::setMask() in order to fix
the regression in functionality from Qt 4.8.

Change-Id: I2c2d5629f0b4c6d90e52595ad70b13559aab1f41
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-06-26 14:40:26 +02:00
Friedemann Kleint e4505acd12 Windows: Fix MinGW warnings.
- Missing initializers for structs
- Missing enumeration value
- Mixing enumeration/ints in operator ?

Change-Id: I149ab01ad2ebd04f89e5c699905d5ba724828e0f
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Reviewed-by: Jonathan Liu <net147@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-06-20 03:17:49 +02:00
Friedemann Kleint e7f1106edb Windows: Add ANGLE support.
- Add QWindowsEGLContext usable for ANGLE and Windows CE.
- Add QWindowsEGLStaticContext containing the display
  for resource cleanup.
- Add EGLSurface to QWindowsWindow.
- Add a -angle option specifying the path to the external
  ANGLE installation to configure, add libraries to
  the mkspecs.

Initial-patch-by: Jabot Corentin <corentinjabot@gmail.com>

Task-number: QTBUG-24207

Change-Id: I5f80b1efb6996da7c5d70aa3720f7801c9e4c6af
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
2012-05-31 09:13:01 +02:00
Friedemann Kleint 97659d87be Windows QPA plugin: Add \internal to class documentation.
Prevent the classes from appearing in the Qt documentation.

Change-Id: I62abff0c57effdf16629f9d5a0dc384ea2c43d5a
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-29 20:12:24 +02:00
Friedemann Kleint 41b18267a1 Windows/MinGW: Fix warnings about missing enumeration values.
Change-Id: I8fa6456e517d670a4d463fdc589cb32e4f79843c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-21 16:02:06 +02:00
Friedemann Kleint 61ebcc3ae7 Windows: Query mouse double click interval from system.
Change-Id: I6bfd19a76bf3fde1344760d7f216a2dffa4b9018
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-14 21:33:48 +02:00
Bjoern Breitmeyer 9b9895de8d Fix for windows platform plugin to work with WINCE.
Made opengl optional.
Made Clipboard and Accessability optional.
Moved internal mime data into its on source file,
was implemented in the clipboard source
which is just strange.

Change-Id: I6ddf0c656533bd45e22e24492fc2254d15b7822f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-10 22:56:25 +02:00
Friedemann Kleint b316c3ac5e Improve widget geometry.
- Rename posFromMove to posIncludesFrame in Widgets and
  make the handling more fine-grained; try to clean it up
  as soon as the frame margins are known
  in QWidgetPrivate::fixPosIncludesFrame().
- Implement QWidgetPrivate::updateFrameStrut().
- Windows: Handle posIncludesFrame in window creation,
  notify changed geometry after setting window flags.
- XCB: Do not change the window gravity in propagateSizeHint()
  as this causes the window to jump around. Determine
  the gravity in window creation, leave it constant and
  fix the geometry when setting instead.
- Store the normal geometry when maximize/fullscreen
  state change events are received.
- Remove xfails from fixed tests

Task-number: QTBUG-25331
Task-number: QTBUG-24905
Task-number: QTBUG-24294

Change-Id: I89c7229d86aaf88f02247d63915da7905e4a27ea
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-05-09 13:40:16 +02:00
Girish Ramakrishnan 36547f4eff Expose QPA API under qpa/*
The main reasons for doing this are:
1. _qpa.h end up in the master QtGui include file. QtGui is meant for
userland applications. qpa code is neither binary nor source compatible.
Inadvertant use of QPA api makes the user code binary-incompatible.
2. syncqt creates forwarding headers for non-private header files. This
gives people the impression that this is public API.

As discussed on the mailing list, even though QPA api is internal and subject
to change, it needs to  treated differently from private headers since they
will be used by  in-qtbase and out-of-qtbase plugins.

This commit does the following:
1. The _qpa in QPA header files is dropped.
2. syncqt now treats any file with qplatform prefix as a special file and
moves it to qpa/ directory. The recommended way of using QPA API in plugins
is: #include <qpa/qplatformfoo.h>. This allows the user include QPA API
from multiple modules (for example, qplatformfoo might be in QtPrintSupport)
3. The user needs to explicitly add QT += <module>-private to get access to
the qpa api.
4. Creates compat headers for the olden style qplatformfoo_qpa.h and QPlatformFoo
includes.

This commit does not change the cpp filenames. This requires a more careful
merging of existing non qpa cpp files and existing cpp files on a case by
case basis. This can be done at anytime.

The following files are not renamed as part of this changed but will be fixed
as part of a future change:
src/gui/kernel/qgenericpluginfactory_qpa.h
src/gui/kernel/qgenericplugin_qpa.h
src/gui/kernel/qwindowsysteminterface_qpa.h

files were renamed using

    for x in `find . -name "qplatform*_qpa.h"`; do git mv $x "${x/_qpa.h/.h}"; done
    for x in `find . -name "qplatform*_qpa_p.h"`; do git mv $x "${x/_qpa_p.h/_p.h}"; done

includes were renamed using script

for file in `find . -name "*.h" -or -name "*.cpp" -or -name "*.mm"`; do
    sed -i -e 's,.*#.*include.*<\(Qt.*/\)\?\(QPlatform.*\)>,#include <qpa/\L\2.h>,g' \
        -e 's,.*#.*include.*"\(Qt.*/\)\?\(QPlatform.*\)",#include <qpa/\L\2.h>,g' \
        -e 's,.*#.*include.* "\(qplatform.*\)_qpa.h",#include <qpa/\L\1.h>,g' \
        -e 's,.*#.*include.*"\(qplatform.*\)_qpa_p.h",#include <qpa/\L\1_p.h>,g' \
        -e 's,.*#.*include.*<\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)>,#include <qpa/\2\3>,g' \
        -e 's,.*#.*include.*"\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)",#include <qpa/\2\3>,g' \
        $file
done

Change-Id: I04a350314a45746e3911f54b3b21ad03315afb67
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2012-05-07 20:25:24 +02:00