Commit Graph

399 Commits (97269ab2949abc0deced5545ff14d41603f46d41)

Author SHA1 Message Date
Samuel Rødal 4db95ffd7d Added screenChanged() signal and handle screen destruction in QWindow.
It can be useful to get a signal when the QScreen changes, for example
when having bindings to QScreen properties in QML.

Change-Id: I919dd12c656485b28b393aec5eedac4c01593afc
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2011-11-29 14:00:01 +01:00
Alan Alpert ce829cbb85 Add some properties to QWindow
x,y,width,height,visible and orientation
Includes slot setters and notify signals for maximal QML compatibility.

Change-Id: I124399093c00f8ad1485d4fbae816dfbe3027eff
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-11-22 10:54:57 +01:00
Joona Petrell dc0b588162 Get rid of unused inputMethodEvent function
In Qt5 input method events are meant to be sent directly to
QInputPanel::inputItem() instead of the focused QWindow.

Change-Id: Idc8fe458973f066b578f6374ca33ce6f950bf9cf
Reviewed-by: Pekka Vuorela <pekka.ta.vuorela@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2011-11-21 14:24:36 +01:00
Jørgen Lind ef8da487a8 Adding a "helper assert" for when you can create QWindow
maybe if your trying to instansiate a QWindow before the QApplication has
been instansiated.

Change-Id: I68ed4ad1dbdfedc242a7cb27c1381d50a3d3dfa4
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-11-15 20:07:17 +01:00
Friedemann Kleint 4a788eb831 QWindow: Re-create platform window only if screen actually changes.
Change-Id: I3b7dd8b1307aa3cc9357dca861ea407644c5a2e9
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-10-22 20:50:37 +02:00
Lars Knoll 68dc5b90c0 Add virtual QWindow::focusObject() method
The method allows to retrieve the object that currently
has the input focus inside the Window. This is e.g.
required to correctly determine the context for keyboard
shortcuts.

Change-Id: I9e05ef62717973bac275ce34cc70fb86aa2d1e5b
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-10-22 19:18:20 +02:00
Samuel Rødal c66b7cf55b Added Orientation API to QScreen and QWindow.
QScreen now has a primary and current orientation, and a QWindow can set
its orientation as well. The current screen orientation is just a hint
to the application.

Change-Id: I4635982cfac2d16634d4edd5c6ab78e9d0ac55a4
Reviewed-on: http://codereview.qt-project.org/5988
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2011-10-07 22:23:30 +02:00
Samuel Rødal 11070a090a Added QWindow::isActive() and focus in / out events.
Renamed QGuiApplication::activeWindow() to
QGuiApplication::focusWindow(), implemented QWindow::isActive() as a
style hint, and added focus in / out events.

Change-Id: I71866e76c5a817def3e17bcc20a4fc32081a0e7a
Reviewed-on: http://codereview.qt-project.org/5811
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2011-10-05 12:49:29 +02:00
Alexis Menard de4c9b3e31 Implement showFullScreen, showNormal, and showMaximized/Minimized in QWindow.
The implementation was just missing to call the proper APIs.

Merge-request: 65
Change-Id: I52f7825360bf55d37762421562484af684bf2dc8
Reviewed-on: http://codereview.qt-project.org/5986
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-10-04 15:22:36 +02:00
Gunnar Sletta 0c59eb1156 Added QWindow::requestedFormat()
Change-Id: I9e69ddd8ceefeda87216fb3d2507c40bc7220cf5
Reviewed-on: http://codereview.qt-project.org/5846
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-10-03 07:57:41 +02:00
Jan-Arve Saether 87ae97c11a Refactor accessibility for Qt5
* Moved most stuff to gui\accessible
* Moved widget-specific stuff to widgets\accessible
* Moved platform-specific code to either the bridge plugin (this was already the case)
  or to the platform plugin.
* Added several classes and functions. These have not yet gone through an API
  review. The plan is to do that in a later commit.
  Classes:
   - QPlatformAccessibility
   - QWindowsAccessibility
  Functions:
   - QWindow *QAccessibleInterface::window();
   - QPlatformAccessibility *QPlatformIntegration::accessibility()

* The bridge code can now either be a plugin or integrated into the platform plugin
* Mac accessibility is left out for now. Unix "should still work" (tm). These platforms
  should be fixed soon.

Change-Id: Ib49ffa73b647ee0af90864544c2769440157f562
Reviewed-on: http://codereview.qt-project.org/5330
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
2011-09-29 13:32:59 +02:00
Samuel Rødal 0bc19b4997 Implemented QWidget's move() vs setGeometry() distinction in QWindow.
QWidget's move() sets the position of the window including the window
frame, unlike setGeometry(). There was no equivalent for this in
QWindow, so several QWidget auto-tests were failing. Now we add
setFramePos() to achieve the same purpose in QWindow.

This fixes tst_QWidget::windowState(), which uses move().

Change-Id: I9a3e558bd615a8f0234cc3dd94fbb2bf5ecbc148
Reviewed-on: http://codereview.qt-project.org/5405
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2011-09-23 11:31:21 +02:00
Samuel Rødal 37f338e5ed Fixed geometry issues.
We need to compare against the window's currently known geometry to know
when to send resize and move events. Also make sure at least one resize
event is sent, instead of sending one before each expose.

Change-Id: Id7ebe4c1c0e723af9198c668a0c736d64efdbf3e
Reviewed-on: http://codereview.qt-project.org/5364
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2011-09-23 11:30:38 +02:00
Lars Knoll 21747af805 Return the correct geometry
When the platform window is created, it is the
authorative source for geometry information.

It would however be better if we could completely
avoid duplicated places for the geometry data.

Change-Id: Id90b24b9c40acb57f3d11b8b927292c06bac335e
Reviewed-on: http://codereview.qt-project.org/5258
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-09-21 12:07:19 +02:00
Jan-Arve Saether df5111165e Say hello to QWindow::accessibleRoot()
Change-Id: I1efa71f01f8af46c9addf2aae21e4b6fc086ad2e
Reviewed-on: http://codereview.qt-project.org/5087
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
2011-09-19 12:06:13 +02:00
Jason McDonald 0b788682d2 Fix stale license headers from refactor branch
Change-Id: I38cd941202641f50bf632af35165a944d03a20e3
Reviewed-on: http://codereview.qt-project.org/4848
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2011-09-15 03:27:45 +02:00
Jani Uusi-Rantala 5234824e8f Fix try #2 at QSurface missing a virtual destructor
All virtual base classes with accessible destructor should declare
the destructor as virtual too.

Change-Id: I2b07c7e824612af072d7802095d958dca8cc34c8
Reviewed-on: http://codereview.qt.nokia.com/4274
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-09-06 17:21:40 +02:00
Samuel Rødal 6e28e8441b Copy core GL functionality to QtGui with QGL -> QOpenGL naming.
Change-Id: Ibc989afa4a30dd184d41d1a1cd89f97196e48855
Reviewed-on: http://codereview.qt.nokia.com/3710
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2011-08-29 10:25:24 +02:00
Gunnar Sletta a001bde5bf QWindow::mapToGlobal/mapFromGlobal and move()
Change-Id: If1909b9ce468a8708cb25d5a2fbe8ebd90bd958a
Reviewed-on: http://codereview.qt.nokia.com/3702
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-08-29 08:30:00 +02:00
Gunnar Sletta b6ef26adce Preliminary change to get resizeEvents for QWindow::resize() calls
Change-Id: I43e1d7fb98f1b20939dba8cdccffa4dcb99a7369
Reviewed-on: http://codereview.qt.nokia.com/3453
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
2011-08-24 12:22:43 +02:00
Olli Werwolff c7bbf22132 Fixed empty if statement in QWindow.cpp
Change-Id: Ib324eb30da1e16f01b9655ed293244fb50b621b8
Reviewed-on: http://codereview.qt.nokia.com/3289
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2011-08-22 09:42:41 +02:00
Gunnar Sletta 46c9f4c212 Implement "quit on last window closed" logic for QWindow
Change-Id: Ide33578ad60796f3e267b09be76cda87eaf873d0
Reviewed-on: http://codereview.qt.nokia.com/2827
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
2011-08-11 08:20:55 +02:00
Samuel Rødal 24c7776c62 Made QWindow::setVisible() send show and hide events.
Change-Id: Ideae15f7bd6801d7afe2354627c0893b0b6a32ca
Reviewed-on: http://codereview.qt.nokia.com/2741
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
2011-08-10 08:17:41 +02:00
Gunnar Sletta 2a682d2418 Added some convenience to QWindow
Change-Id: I367f5e3f586661322184cfa5f7653814569cb6e3
Reviewed-on: http://codereview.qt.nokia.com/2611
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-08-05 10:42:47 +02:00
Friedemann Kleint 833090abb9 QWindow: Do not call setters for window state, type etc in creation.
Remove the need to do housekeeping and comparison of window types,
etc in the platform window setters. They can safely assume the flags
have really changed and something (potentially recreating the
window) has to be done.
createPlatformWindow() must then query all parameters from
QWindow and apply them.

Change-Id: I497060ba46a955cad1fa3cbb5eb91438a420b80e
Reviewed-on: http://codereview.qt.nokia.com/2198
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2011-07-26 14:58:54 +02:00
Samuel Rødal c3da77798b Added workable QScreen API on top of QPlatformScreen.
QPlatformIntegration::screens() no longer has to be implemented,
implementations should call QPlatformIntegration::screenAdded() for each
screen instead. This is for being able to support adding screens at
run-time later on, by connecting it to a signal in QGuiApplication.

The QGuiGLContext API has changed a bit, by not sending in all the
parameters in the constructor but instead having a create() function.
The createPlatformGLContext() factory in QPlatformIntegration takes a
QGuiGLContext * instead of a QSurfaceFormat and a share context, similar
to how the window and backing store factory functions work.

The XCB plugin has experimental support for connecting to multiple X
displays simultaneously, creating one or more QScreen for each.

Change-Id: I248a22a4fd3481280710110272c04a30a8021e8f
Reviewed-on: http://codereview.qt.nokia.com/2103
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
2011-07-25 13:52:09 +02:00
Morten Sorvig def5901955 Reintroduce QWindow::SurfaceType
On Cocoa it makes sense to distinguish between the
two window types.

Reviewed-by: Samuel
2011-06-22 14:10:26 +02:00
Samuel Rødal 18c1d67137 Made QExposeEvent public and added exposeEvent() in QWindow.
This is needed for applications that use QBackingStore directly.
2011-06-22 09:41:10 +02:00
Samuel Rødal 176f30b137 OpenGL API refactor.
Rename QGuiGLFormat to QSurfaceFormat, and make QWindow sub-class of
QSurface and QPlatformWindow sub-class of QPlatformSurface, instead of
having QPlatformGLSurface accessor in QWindow.
2011-06-21 14:02:22 +02:00
Samuel Rødal 6ce6b8a378 Rename QWindowSurface -> QBackingStore and split into platform / public.
Also get rid of GL window surface and related classes.
2011-06-21 09:04:01 +02:00
Laszlo Agocs c84346ddff Make glx wayland backends working. 2011-06-20 10:30:30 +02:00
Samuel Rødal 6b0cd62e5e Added frameMargins() API and support in XCB plugin. 2011-06-10 12:40:56 +02:00
Samuel Rødal 4a189c188c QWindowContext / QWindowFormat refactor.
To enable having a single GL context used for multiple drawables we need
to de-couple the context class a bit more from the window class in the
plugin API. Now contexts are created stand-alone based on a GL format
and a share context, and when calling makeCurrent() a desired surface
is specified. This maps well to GLX, EGL, Cocoa, AGL, and WGL, which all
support this use case.

QWindowContext is renamed to QGuiGLContext, and QWindowFormat is renamed
to QGuiGLFormat. We have the ability to introduce a pbuffer or similar
other offscreen GL drawable abstraction in the future.
2011-06-10 09:24:56 +02:00
Samuel Rødal 078e4ef6c7 Made tst_QWidget::updateWhileMinimized() pass.
This requires adding a couple of window system interface events, namely
Map, Unmap, and Expose. When a widget is minimized on X11 it is
unmapped, and thus update requests should not be delivered. Instead the
event will delivered when the widget is mapped, which causes an Expose
event to be sent. The Unmap and Expose event thus need to be handled in
QWidgetWindow, and Map is also added for the purpose of API symmetry
(and for future needs).
2011-06-06 16:03:38 +02:00
Laszlo Agocs 1f456b4cbb Add support for mouse and keyboard grab.
Reviewed-by: Samuel Rødal
2011-06-03 11:59:15 +02:00
Laszlo Agocs 589a562c01 Fix isTopLevel() in QWindow.
This also makes modal hints set properly for dialogs so the
additional checks during active window change are not needed
anymore.

Reviewed-by: Samuel Rødal
2011-05-31 10:45:24 +02:00
Samuel Rødal 1894da8186 Added QWindow::setTransientParent().
Make the transient parent relationship explicit instead of having it
encoded through the window flags.
2011-05-23 13:46:18 +02:00
Samuel Rødal c5d1f23942 Remove superfluous setter / getter for QWindowFormat in QWindow. 2011-05-23 09:52:14 +02:00
Lars Knoll fd7bfc6184 Add QGuiApp::topLevelAt and fix visibility flag
Add and remove windows to the list of top level windows.
Correctly set the visibility flag for windows and implement
a QGuiApplication::topLevelAt() method that uses the
QPlatformScreen.
2011-05-22 13:52:17 +02:00
Samuel Rødal af4e5576f4 Added QGuiApplication::activeWindow(). 2011-05-20 13:45:55 +02:00
Samuel Rødal ea7277690d Better setWindowFlags() support in XCB window.
We need to re-create the native window in setParent, as used to be done
in QWidgetPrivate::setParent_sys in qwidget_x11.cpp.
2011-05-19 10:53:30 +02:00
Samuel Rødal 516f4e283b Add QWindow::setWindowModality().
Also set corresponding window manager hints in xcb plugin.
2011-05-18 09:32:17 +02:00
Samuel Rødal 10a3b10726 Re-implement transient window support in XCB backend.
If a QWindow has a parent but is top-level the corresponding
QPlatformWindow should not be re-parented but instead be made transient
for the parent window if possible.
2011-05-16 17:28:56 +02:00
Samuel Rødal 25f70314e0 Implement QWindow minimum/maximum/base size hints and size increments. 2011-05-16 16:40:32 +02:00
Samuel Rødal 850b602c7a Initial QPlatformWindow window state setting API and xcb implementation. 2011-05-13 15:13:15 +02:00
Lars Knoll e577d02cc9 move files in src/gui into their final locations
Rename the guikernel subdir to kernel
and guiutil to util.
2011-05-11 20:18:42 +02:00
Lars Knoll 401f078386 split kernel/ up according to the future library split
Create a guikernel/ directory that contains the files that'll go
into libQtGui. What remains in kernel/ will go into QtWidgets.
In addition to that image/, painting/ and text will end up
int QtGui.
2011-05-04 12:50:14 +02:00
Lars Knoll 492bbdefd3 Remove more QApp dependencies
platformIntegration() lives in QGuiApplication
QFont and QFontDatabase can live with QGuiApp only
as well.
2011-05-04 09:11:33 +02:00
Lars Knoll ac6878a2f1 rename qwindow_qpa to qwindow 2011-05-03 20:31:37 +02:00