summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidget_qpa.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QPA: update backingstore also when moving QWindowsRichard Moe Gustavsen2012-11-301-1/+3
| | | | | | | | | | | | | When moving QMdiSubWindows that contains native widgets (e.g QGLWidget) inside a QMdiArea, garbage is drawn to the screen. The reason is that since we use native QWindow backed widgets, QPA will assume that it does not need to update/scroll the backingstore. But since the backingstore can be shared among several windows, we need to do this to ensure that exposed areas behind the moved QWindow will be updated. Change-Id: I35f4d4069a73ab6cd6d610e25c176c752789a927 Task-number: QTBUG-26162 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Do not hide fullscreen widgets having a 0x0 geometryOliver Wolff2012-11-221-1/+1
| | | | | | | | | | | | It is possible that the widget which is to be shown full screen has a 0x0 geometry if an empty layout with 0 margin is set there. In that case the widget should not be hidden. Task-number: QTBUG-27602 Change-Id: I87fd20cc3a5bac89ceccdf639780c4bc721ce860 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Rename all QWindow properties that have "window" in themShawn Rutledge2012-11-071-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* QPlatformWindow: change API for QPlatformWindow::setWindowStateRichard Moe Gustavsen2012-10-171-73/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation requests the platform window to set the window state if it can, and return the actual window state back. The problem with this approach is that the platform window is created as late as possible, so a call to QWindow::setWindowState would in many (most?) cases never be forwarded to the platform window (instead, the platform window is responsible to check the current window state upon creation). As such, the window state might be left unsynched with the platform window. This patch suggests removing the return value from QPlatformWindow::setWindowState. This will at least be consistent, so that setting/getting state would produce the same result independent of delayed window creation. If needed, we can later add new API to QPlatformIntegration or QPlatformWindow for querying supported/actual window state. Change-Id: Ie43f56169656854a765ce88b47a808f8f3d51bb4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix setting custom cursor for widgets and windows before showing themMiikka Heikkinen2012-10-161-0/+3
| | | | | | | | | | | | If custom cursor was set before the window was created, it didn't actually get set, and in some cases even caused a crash. Fixed by making sure the cursor is correct when showing widget/window. Task-number: QTBUG-27535 Change-Id: I3bc946a9c406c96af5b86869a3a54893f8980aba Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Show widget cursor after restoring last override cursorMiikka Heikkinen2012-10-041-7/+2
| | | | | | | | | | | | | | | | qwidget_qpa.cpp was setting cursor directly to platform window, so QWindow didn't actually know what cursor was supposed to be shown. Since QWindow now supports setting cursor and has override cursor handling there, set cursor via QWindow instead of platform window. Also changed QGuiApplication override cursor handling so that it will query the cursor from QWindow if there is no override cursor. With these changes, widget's custom cursor will be properly shown when final override cursor is restored. Task-number: QTBUG-24674 Change-Id: I2d2bb1027779256f9d6de560b6533f45e205ffe9 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* fix QWidget::setWindowFilePath on Mac OSJoerg Bornemann2012-10-021-0/+10
| | | | | | | | Task-number: QTBUG-27299 Change-Id: I4dddbb9690aac327ad33477d8cea9afa84d10eb3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Redirect keyboard/mouse grab to the widget parent window.Friedemann Kleint2012-09-221-19/+22
| | | | | | | | | | | | Use the native parent's window if the widget in question does not have one. This should be in line with Qt 4.8 using effectiveWinId(). Remove redundant code in grabMouse(QCursor). Change-Id: Id6ab192e739221fe89f865f4d2f7a6d4671a190b Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | 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>
* Fix mapping to/from global coordinates for child/embedded windows.Miikka Heikkinen2012-09-181-0/+8
| | | | | | | | | | | | | | | | | | | | | QWidget's mapToGlobal() and mapFromGlobal() functions assumed that if the widget reports it's a window or if it has no parent widget, it must be a top level window whose coordinates are in global coordinates. This is not true for child QWindows or embedded native windows (QAxWidgets). Changed the logic for mapping coordinates to use equivalent methods from QWindow if widget has a window handle, and changed QWindow's methods to map coordinates using native methods if window is embedded. Also fixed newly failing accessibility autotest. The geometry related failures there popped up because now the position of the rect returned by accessible interface is actually correct while widget geometry still reports position 0,0 before widget has shown up. Task-number: QTBUG-26436 Change-Id: I658fafd0ce01eb1604ba255efeeba3073ca0189f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Do not call requestActivateWindow() on popups.Friedemann Kleint2012-09-101-4/+7
| | | | | | | | | | | | | | | Showing a compo dropdown would cause the parent to become deactivated (Windows). Introduced by: 8368557b9c0010fb205969d010c9d8549fbee0ae for QTBUG-25852 , QTBUG-23699 . Task-number: QTBUG-27145 Change-Id: I7b89697a2c55d58cc0ab184b61a0cff8bf2275ec Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Jonathan Liu <net147@gmail.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Propagate initial size constraints to QWidgetWindow.Friedemann Kleint2012-08-211-1/+6
| | | | | | | | | | | Size constraints set on a widget before the creation of the QWidgetWindow were lost (for example, Qt Creator's preference page). Task-number: QTBUG-26745 Change-Id: I7c2f5aed9c8817795603e5ad3c24418d66627bab Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: hjk <qthjk@ovi.com>
* fix QWidget::activateWindow for child widgetsJoerg Bornemann2012-07-311-2/+4
| | | | | | | For child widgets we must use the windowHandle of the toplevel widget. Change-Id: If7bad8ed4bba694806a2c8b77bae3d25cc200b8b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix rendering glitches when using native widgets in MDI subwindowsMiikka Heikkinen2012-07-181-2/+3
| | | | | | | | | | | | | | | | | | | | When mixing native and regular widgets in same QMdiArea, some subwindows didn't properly get set native. This was because when a native parentless widget was given a parent, it wouldn't enforce native window on the new parent and its ancestors. This happened because window flags were adjusted too late in relation to createWinId() call in setParent_sys(). Fixed by moving the createWinId() call to its proper place. Also removed some old Q_WS_* ifdeffing in QWidget::setParent() that masked some native enforcement code. Additionally removed few QEXPECT_FAILs from QWidget autotest now that those cases work correctly. Task-number: QTBUG-26424 Change-Id: Ib6f9d0531e5c7299e2c307734d49c81f1ffa9713 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* QWidget::showFullScreen fixed for widgets with valid size hintJoerg Bornemann2012-07-161-0/+4
| | | | | | | | | | Ensure the initial size is valid, since we store it as normalGeometry below. Task-number: QTBUG-26226 Change-Id: I3a55c389a48504699942930063089c80657687a0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Don't set the resize and move flags when activating fullscreen modeThomas McGuire2012-07-111-0/+8
| | | | | | | | | This fixes tst_QWidget::movedAndResizedAttributes() for platforms that don't have support for QPlatformWindow::setWindowState(). Change-Id: Id0f123d11b08a75c0c131080d509e6b23b281600 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix showNormal() and friends for platforms with fullscreen hintThomas McGuire2012-07-101-1/+1
| | | | | | | | | | | | Don't call show() inside of QWidget, as that might make the window fullscreen due to QStyleHints::showIsFullScreen(). This regression was introduced earlier when QWidget::show() gained support for the hint. No auto test caught the problem, as the affected platforms (EGL and QNX) are not CI-tested. Change-Id: I647c2362ac5b53ced562f1d77848552cc122fba0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix focus handling when the application has QAxWidgets.Miikka Heikkinen2012-07-031-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Removed old defunct platform specific code from QWidget::isActiveWindow() and added call to QPlatformWindow::isActive() instead. This is done because the embedded native windows inside QAxWidgets can have focus but are not part of the parent application's Qt window hierarchy, so native methods are required to determine if they are part of the active window or not. QWidgetPrivate::setFocus_sys() was implemented to activate the window of the focused widget if the focus was elsewhere. This is required because embedded native windows can steal the focus from the main application window. Focus event handling in Windows platform adaptation plugin was fixed to correctly identify the active window in cases where the are embedded native widgets that can have focus. Also fixed three test cases that were affected by these changes. Task-number: QTBUG-25852 Task-number: QTBUG-23699 Change-Id: I817e0ce4317e88955bb49b034eacd630a876ccf0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* revive the noPaintOnScreen fix on WindowsJoerg Bornemann2012-07-031-0/+19
| | | | | | | | | | | | | | | | | | The original commit message follows. Fixes: Fix the windows PaintOnScreen issue once and for all Details: To allow both the case where X11 people accidentally set PaintOnScreen (which should not have any effect on windows) and where people set it and subclass with paintEngine() { return 0 } to use GDI / DirectX we do this rather nasty hack. Original commit in Qt4: 07a2f68bd5869152471e4ffc4a63c683ef141ae8 Autotest: tst_QWidget::paintOnScreenPossible Change-Id: Ifbb7dc4611959be3ecc362c29a1c3436b0e0fa82 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Further fixes to widget maskingMiikka Heikkinen2012-06-281-0/+3
| | | | | | | | | | | | | If mask was set to a widget before the widget was shown, the mask was not applied. Also, if toplevel widgets were set a mask in Windows, the mask was applied to frame coordinates instead of client coordinates. Ported relevant code from Qt4 to fix these issues. Change-Id: Id6187cf4952b81b5b60c167e2fd284b7dc83ed9c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Widgets: Apply masks to native windows only.Friedemann Kleint2012-06-271-10/+2
| | | | | | | | | | Do not go searching for a parent window handle in setMask_sys() as this causes for example MDI areas to set masks that show the child only. Fix breakage introduced by 8e280d1e187b09651c7036bd76272342d52ce401 . Change-Id: I57de41d16985ebc8d3fc81153a671f2e2807b1eb Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Fix raising and lowering native widgetsMiikka Heikkinen2012-06-271-2/+2
| | | | | | | | | Raising or lowering a native widget needs to raise or lower the associated platform window, too. Task-number: QTBUG-26344 Change-Id: Ib847d97df86857d92bcc4c9c0dd51219575d8db1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* QPlatformWindow: Add Window masks.Friedemann Kleint2012-06-261-3/+18
| | | | | | | | | 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>
* Fix: Widgets that become top-level widgets may crash the applicationBerthold Krevert2012-06-151-1/+5
| | | | | | | | | | | | | | | | | You can reproduce the bug with the QMainWindow demo application: Just dock the toolbar on the left side, then try to drag the bar back to the top and observe that the application crashes. This happens, because the toolbar becomes a top-level widget during the dragging action and therefore some data structures like a window are created. After the toolbar has been docked, it loses its top-level state and the window object is destroyed. The same is not true for the backing store structure, which still keeps a pointer to the destroyed window. When the toolbar is dragged the next time, a new window object is created, but the backing store tries to access the deleted one. Crash occurs. Change-Id: I0d1ffc04c19ec14654ceb62a0d3cf7cf65cb952d Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* QWidget::destroy(): Release mouse and keyboard grab.Friedemann Kleint2012-06-091-0/+4
| | | | | | | | | This used to happen in the platform widget code. Task-number: QTBUG-26079 Change-Id: Id6de7473c2fa4381a39114d5122e06e3bde159fa Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix a crash when calling effectiveWinId() on parentless widgets.Friedemann Kleint2012-06-081-2/+5
| | | | | | | | | | Remove the assert as it also triggers when the widget is one that currently has no parent (setParent(0)). Check that the WinId is != 0 in the cursor code. Change-Id: I711fc600f1d803c8f01c15df87984e742a4c23d2 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix parent-children relationship of QWidgetWindowsDebao Zhang2012-06-041-4/+5
| | | | | | | | | | | | For a native child widget, widget->nativeParentWidget()->windowHandle() should always equal to widget->windowHandle()->parent() Change-Id: I2560689d32b0cb2834ed33f96c1c70ef3c14342d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* QtWidgets: Make QWidgetWindow disappear when its associate QWidget hidesDebao Zhang2012-06-041-3/+2
| | | | | | | | Task-number: QTBUG-25980 Change-Id: I572eb9dd175121b1f1b6070e1849247000b48961 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Implement QWidgetPrivate::setWindowIcon_sys()Corentin Jabot2012-06-021-1/+4
| | | | | | | | | | * The widgets icon are correctly set, through the QPA plugins * Removing QTLWExtra::iconPixmap that was only used in some platforms in Qt 4.7, so if that wariable is still needed somewhere, it sould be declared in the concerned QPA plugins Change-Id: I85f50726cce3578b66c09c327767111f09935075 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix some painting issues with native widgetsMiikka Heikkinen2012-05-291-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWidgetPrivate::drawWidget was missing an important line about marking native widgets dirty compared to 4.8, which caused all other widgets besides the native one to not repaint unless window was resized in such a way that the widgets would get hidden and then re-exposed. The above didn't fix repainting issues when moving native widgets (e.g. widgets in QMdiArea subwindows or just calling QWidget::move()). Added setting widgets dirty to QWidgetWindow::handleExposeEvent to address this issue. If there is one native widget, Qt enforces that all widgets in same parent hierarchy are native - presumably to get overlapping widgets drawing correctly. However, qapplication_qpa.cpp set the attribute Qt::AA_DontCreateNativeWidgetSiblings for all applications, which caused only the parents of native windows be forced native, leading to drawing artifacts related to siblings of native widgets (e.g. overlapping QMdiArea subwindows). I don't see a reason for setting this flag indiscriminately for all applications, so removed it. Also added setting newly created QWindow visible if associated widget is already visible, which can happen if regular widgets are shown before the first native widget is shown and retroactively forces other widgets native. Task-number:QTBUG-25805 Change-Id: Ib133dae9b13cc6e7155e7cae00fc1339d3b5ae86 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Don't create QBackingStore for QDesktopWidgetGirish Ramakrishnan2012-05-211-1/+1
| | | | | | | | | | QDesktopWidget doesn't need a backing store since it cannot be painted on. Since the QDesktopWidget is always created, this change avoids any resources created in the QPlatformBackingStore contructor. Change-Id: I33679c98363f9c0d7ea64d9c5e27327679ad92a0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Make sure QWidgetPrivate::hide_sys() really hidesBradley T. Hughes2012-05-091-11/+9
| | | | | | | | | | | | | When commit 55fa3c189f88933d390177ad5606d3de9deacf93 was merged from api_changes, the conflict resolution left it possible for hide_sys() to leave a visible window on screen. This happens when Qt::WA_DontShowOnScreen is set on a visible widget. hide_sys() needs to always hide the platform window if it is non-zero. Change-Id: I3a1a882b66954e90d6ba80c657de69cae32e75a7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Improve widget geometry.Friedemann Kleint2012-05-091-5/+49
| | | | | | | | | | | | | | | | | | | | | | | | - 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>
* Expose QPA API under qpa/*Girish Ramakrishnan2012-05-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Merge remote-tracking branch 'origin/api_changes'Lars Knoll2012-04-171-4/+9
|\ | | | | | | Change-Id: I964b0a6f5c38351fdfafb8a2a128a349ff8c89d1
| * Merge remote-tracking branch 'origin/master' into api_changesLars Knoll2012-04-161-5/+20
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure src/corelib/io/qurl.cpp src/gui/kernel/qwindow.cpp src/tools/moc/generator.cpp src/widgets/kernel/qwidget_qpa.cpp src/widgets/styles/qstyle.h src/widgets/widgets/qtabbar.cpp tests/auto/corelib/codecs/utf8/tst_utf8.cpp Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
| * | Got rid of Map / Unmap events in favor of Expose event.Samuel Rødal2012-03-221-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since change 2e4d8f67a871f2033 the need for Map and Unmap events has gone away, as now the Expose event is used to notify the application about when it can start rendering. The Map and Unmap events weren't really used except by QWidget to set the WA_Mapped flag, which we now set based on the expose / unexpose. Also guarantee that a Resize event is always sent before the first Expose, by re-introducing an asynchronous expose event handler. Since an expose is required before rendering to a QWindow, show a warning if QOpenGLContext::swapBuffers() or QBackingStore::flush() if called on a window that has not received its first expose. Change-Id: Ia6b609aa275d5b463b5011a96f2fd9bbe52e9bc4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* | | Add QPlatformWindow::setWindowModified(bool)Bradley T. Hughes2012-04-171-0/+1
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | Mac OS X provided a platform API for marking a window/document as modified. This previously worked in Qt 4, so we need to have an interface to keep this working in Qt 5. If the platform window does not provide an implementation, fallback to setting the window title. Note that this does not add any QWindow API, it's only in QPlatformWindow. Change-Id: I84c5a5df8536859157f2b1fa9e4cc647a09fd06d Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* | QWidget: allow modal top-levels to have WA_DontShowOnScreenBradley T. Hughes2012-04-111-7/+22
|/ | | | | | | | | | | If a modal top-level widget has WA_DontShowOnScreen set, we need to call QGuiApplicationPrivate::showModalWindow() and hideModalWindow() ourselves, since we will not be calling QWindow::setVisible() (which would normally do the call for us). Change-Id: I1b22dd177c5956a2290f3ee031c95ab50d88f153 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* QCursor: Associate cursor with screen.Friedemann Kleint2012-03-071-9/+5
| | | | | | | | | | | | | | | | | | | | | | - Introduce cursor() accessor to QPlatformScreen. - Remove screen member of QPlatformCursor (a cursor can be shared by multiple screens of a virtual desktop). - Add QCursor::pos()/ QCursor::setPos() taking a QScreen-parameter, use primaryScreen() for old overloads. QCursor::pos() can then query the platform cursor for the position and return the position even if the mouse position is outside the windows owned by the Qt application. - Fix tests Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Task-number: QTBUG-22457 Task-number: QTBUG-22565 Task-number: QTBUG-20753 Change-Id: Ia69f37343f95772e934eab1cd806bd54cbdbbe51 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Re-add default positioning for Widgets.Friedemann Kleint2012-02-101-1/+17
| | | | | | | | | | Center widgets on the screen in show_sys() in case they are top levels that have not been moved yet. This was previously done in platform-specific code on Window creation. Change-Id: I191f20c0105ed3f27274c6505852b212d400b395 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Use available geometry when maximized.Rafael Roquetto2012-02-061-1/+9
| | | | | | | | | | | | | Use the available geometry as a maximized window would fit on the desktop in the available area (some space is used up by task bar, system menu, etc.) as opposed to the fullscreen geometry which would be the entire screen. Change-Id: Ifa7046c5b13e162727a9b3a54178690c631cc969 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Anselmo L. S. Melo <anselmo.melo@openbossa.org> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update year in Nokia copyright headers.Jason McDonald2012-01-101-1/+1
| | | | | | | | The previous change missed some headers from years prior to 2011, and a few new files were merged after the previous change. Change-Id: Ib7d1a2b7062228c2a5373da64242b2ee1f0981e1 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Improved logical and physical DPI APIs.Samuel Rødal2011-10-061-8/+15
| | | | | | | | | | | | | | Made physicalSize() return QSizeF instead, to prevent rounding errors. Added logicalSize() as the base to compute font pixel sizes instead, and added convenience functions in QScreen to access the logical and physical sizes and DPI metrics. Task-number: QTBUG-21736 Task-number: QTBUG-21737 Change-Id: Ic705dc98eb3632617659e65a0c9a552673dc0c65 Reviewed-on: http://codereview.qt-project.org/5888 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Implemented QWidget's move() vs setGeometry() distinction in QWindow.Samuel Rødal2011-09-231-0/+2
| | | | | | | | | | | | | | 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>
* Patch toward fixing tst_QWidget::windowState().Samuel Rødal2011-09-231-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | In QWidget::setWindowState() there was some code to emulate window states when they're not supported by the backend, by hiding the window on minimize or using the screen geometry and the frameless window hint to manually try to make a window fullscreen. However, some of this code was being run even when the backend does support setting window states, specifically calling setParent(0) to force a re-creation of the platform window and calling show(). These led to the window getting the wrong position after being minimized or fullscreen and going back to the normal state. Apart from storing the normal geometry of a widget when going away from the normal state we shouldn't do any magic when the call to QPlatformWindow::setWindowState() succeeds. tst_QWidget::windowState() still fails due to calling move() to set the position of the widget including the frame, when QWindow currently only supports setting the position of the widget excluding the frame. Change-Id: I1c1a337d3c15f14c1c842bd1e347f94e6b67d7eb Reviewed-on: http://codereview.qt-project.org/5367 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Copy core GL functionality to QtGui with QGL -> QOpenGL naming.Samuel Rødal2011-08-291-2/+2
| | | | | | Change-Id: Ibc989afa4a30dd184d41d1a1cd89f97196e48855 Reviewed-on: http://codereview.qt.nokia.com/3710 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Retrieve QPlatformScreen from top level when querying widget metrics.Friedemann Kleint2011-07-261-1/+9
| | | | | | | | | | Check for 0 and use primary screen as default. Change-Id: Ib4d0d3f507e7fb17687f5e126b49f98cfdbead6c Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/2166 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>