summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Fix composition for windows with alphaLaszlo Agocs2014-08-132-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | While we will cover the entire surface with our textured quads, the clear is still necessary in order to make top-levels with TranslucentBackground render correctly: We don't want to blend transparent areas with undefined content that is in the surface's framebuffer. Blending is problematic for alpha values. We now prevent the blended alpha from being written out. This ensures that in examples like qquickviewcomparison, where the backingstore image contains an alpha of 0.5 while the QQuickWidget texture 1.0, the result is still an alpha value of 1.0 in the final image. Writing out an alpha of 0.5 would break on systems where windows get an alpha buffer by default. hellogl2 can now take a --transparent parameter which makes the QOpenGLWidget being cleared to transparent in order to verify it works in combination with Qt::WA_TranslucentBackground. The swapped red and blue problem is also corrected. RGBA8888 does not need swizzling. The only format that needs this is RGB32. Task-number: QTBUG-40716 Change-Id: I54a9fd3a91a1b59575b38cdb908835315514e40f Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Fix msaa in QOpenGLWidgetLaszlo Agocs2014-08-113-6/+34
| | | | | | | | | | | | | | Take the correct number of samples from the widget's context, not the tlw's context. The original implementation did the blit only after paintGL(). This is not sufficient for applications that override paintEvent() and do QPainter calls in there (e.g. the 2dpainting example). Therefore the approach is changed to perform the resolving of the samples in a function that is invoked by QWidgetPrivate every time a paint event is sent. Change-Id: Iae0b2c30f6070ec75201339a848854e4582a9c0c Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Fix crash in QOpenGLWidget when changing the TLWLaszlo Agocs2014-08-081-1/+19
| | | | | | | | The documentation was also somewhat incomplete when it comes to widgets that change their tlw multiple times. Change-Id: I09dd70167804c50a5283ab3709162c93a3827e9b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Add default format to QSurfaceFormatLaszlo Agocs2014-08-081-3/+16
| | | | | | | | | | | | | | | | | | | | | | Add defaultFormat() and setDefaultFormat() statics to QSurfaceFormat. These define the default values for the requestedFormat members of QOpenGLContext, QWindow and QOpenGLWidget (and implicitly QOpenGLWindow, QQuickWindow, etc.) This replaces QQuickWindow::setDefaultFormat() which can now be removed. The main inspiration here is not the convenience (avoiding setFormat() calls for all windows/widgets), but robustness: by setting the format once at the start of the application, all windows and contexts, including the internal share context used by QOpenGLWidget and QQuickWidget, will use the same format, eliminating the possibility of failing due to trying to share between incompatible contexts. Furthermore, since such a functionality is anyway mandatory for QQuickWindow (due to the possibility of creating windows from QML code), extending it to QSurfaceFormat and QOpenGLContext/QWindow is the next logical step. Change-Id: Ie94486adc489d17fecfcebb7050fecedffd2688b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Avoid crashing in QOpenGLWidget::metricsLaszlo Agocs2014-08-071-1/+2
| | | | | | | | | When creating child widgets in the derived class' constructor, the screen cannot be retrieved via window() since it still returns null. Handle this case properly. Change-Id: I65bf7f9c338ce8a3ddab8ad7886cfe2f1f253c82 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Enable devicePixelRatio for non-Apple platformsPaul Olav Tvete2014-08-061-6/+0
| | | | | | | | | Remove #ifdef Q_OS_MAC around devicePixelRatio code. We are planning to make it available on other platforms. Task-number: QTBUG-38858 Change-Id: I25230cb53ea1291095335ef5883b15087e44f6b8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Add missing devicePixelRatio multiplication in QOpenGLWidget size checksLaszlo Agocs2014-08-061-1/+1
| | | | | Change-Id: I142cbe536f90eca242d08b34e5f9042076525c7b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Restrict tooltips triggered by mouse move events to widget area.Friedemann Kleint2014-08-061-1/+2
| | | | | | | | Tooltips may occur outside the widget area when it has mouse grab. Task-number: QTBUG-40261 Change-Id: I68c1e28ad264fc5aaeb7d96273342f1d4bca8ce6 Reviewed-by: David Faure <david.faure@kdab.com>
* Enhance QOpenGLWidget docs about resource managementLaszlo Agocs2014-08-051-3/+54
| | | | | Change-Id: Idd1181a34055237b13643dbc58e855db411d0a7c Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devFrederik Gladhorn2014-08-053-25/+1
|\
| * Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-08-043-25/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/arch/arch.cpp src/opengl/qgl_qpa.cpp src/widgets/kernel/qapplication.cpp Change-Id: I80b442a4c2c9632743a5b5c7319ff201ec5bc4fd
| | * Merge remote-tracking branch 'origin/stable' into 5.3Oswald Buddenhagen2014-07-303-25/+1
| | |\ | | | | | | | | | | | | Change-Id: I2a044d44ca991ba20ddd710053b85afb51e362d3
| | | * Fix warning message when re-setting text on tooltipJoni Poikelin2014-07-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix warning message that gets printed when changing tooltip message without rect and widget parameters for already shown tooltip widget. Task-number: QTBUG-39550 Change-Id: I69ed8747e5e77ca618525d74479c72e02b7ab897 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| | | * move loading of testability driver from QApplication to QGuiApplicationMichael Zanetti2014-07-032-24/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful without QWidget too. Change-Id: Ic7857e52e4a8f57c1205615a1f30323b486814af Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Alberto Mardegan <mardy@users.sourceforge.net> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | | Rename globalShareContext to qt_gl_global_share_contextJocelyn Turcotte2014-08-041-1/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it easier to forward-declare the exported symbol from other Qt modules without having to include the private headers. This keeps the old API until dependent submodules are updated. Change-Id: I08310a684b79f2f612f2ce897a601ff74178bee6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Make QOpenGLWidget publicLaszlo Agocs2014-08-017-153/+966
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QOpenGLWidget is now public. In addition Qt::WA_AlwaysStackOnTop is introduced to support the special case of semi-transparent QOpenGLWidget or QQuickWidget on top of regular widgets. hellogl_es2 becomes the qopenglwidget example. This example performs painting both via QPainter and native GL commands and has the OpenGL widget combined with other, normal widgets. The widget stack receives some changes when it comes to renderToTexture widgets like QQuickWidget and QOpenGLWidget. Calling update() will now result in a paint event, which is essential for QOpenGLWidget since we want it to behave like a regular widget. The dirty region handling is extended specially for such widgets due to performance reasons. (an OpenGL content update must not result in any backingstore painting, and is thus handled as a different kind of dirtiness) [ChangeLog] Added QOpenGLWidget. This widget serves as a replacement for QGLWidget. Task-number: QTBUG-36899 Task-number: QTBUG-40086 Change-Id: Ibf7f82fea99b39edfffd2fc088e7e0eadbca25cf Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | | add buttons to QTabletEventShawn Rutledge2014-07-282-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, it has been necessary for tablet-oriented applications which care about multi-button styli to reject each tablet event and wait for the mouse event in order to know which buttons are pressed. This patch adds the new API and also the X11/xcb implementation. [ChangeLog][QtCore][Tablet support] Added buttons to QTabletEvent Task-number: QTBUG-39458 Change-Id: If2c9ec1ceacc1700a82686c5fc6f568f9111055a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-221-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/kernel/qwidget_qpa.cpp src/widgets/widgets.pro Change-Id: I697eec936c4e1a6c360edc8f0b472e23c0461ecb
| * | Ensure transient parents are top level widgets.Friedemann Kleint2014-07-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a dialog was parented on a native child widget, its window handle was used as a transient parent. This confused QPlatformWindow::initialGeometry() among other things. Use top level window as is in Qt 4. Task-number: QTBUG-40195 Change-Id: Ic82adc276175f92adde825fb2551274351e41f30 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Implement QApplication::topLevelAt() using QGuiApplication::topLevelAt().Friedemann Kleint2014-07-181-10/+3
| | | | | | | | | | | | | | | | | | | | | | | | Reducing code duplication, preparing for High-DPI support. Task-number: QTBUG-38858 Change-Id: Id0ed12db4b5cadd0eef79afd0ac62f58a7b01901 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-0/+3
|\| | | | | | | | | | | Change-Id: Ia12ffdb27ecdf25c2a2bdb0eed1945387502108a
| * | Document QApplication::cursorFlashTime() can return -1İsmail Dönmez2014-07-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | On Windows QApplication::cursorFlashTime() can return -1 if keyboard blinking is disabled. Add documentation for that case. Change-Id: I1e5d683573e55b045e2d9bd9804daf4be579fd02 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* | | QWidget: Set screen on top-level windows only.Friedemann Kleint2014-07-081-1/+2
| | | | | | | | | | | | | | | Change-Id: Iea7fbe253ff3144d9988fd14790296e211075d3b Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devFrederik Gladhorn2014-07-041-0/+4
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-031-0/+4
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/accessible/qaccessiblecache_mac.mm src/gui/accessible/qaccessiblecache_p.h src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm src/widgets/kernel/qwidget_qpa.cpp Manually moved change in qwidget_qpa.cpp to qwidget.cpp (cd07830e3b27da7e96a0a83f91ba08c168b45e62) Change-Id: Ia51f471f9b53de2f3b07d77ea89db9303ac8961d
| | * | Cocoa: Handle Qt::WA_ShowWithoutActivatingMorten Johan Sørvig2014-07-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Forward the flag to QWindow by setting the _q_showWithoutActivating property on the window in QWidgetPrivate::create_sys(). Implement by refusing to become the key window or first responder during QCocoaWindow::setVisible(). Task-number: QTBUG-19194 Change-Id: I8446927ec510d7226a5a7b51b7be49d2f9bfd098 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | | | Fix compiling with -no-openglNiels Weber2014-07-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-39982 Change-Id: Ib3fc49c89472fbaf77abea0b463e380725440613 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | | Implement QWidget::grabCursor(const QCursor&).Friedemann Kleint2014-07-031-15/+44
|/ / / | | | | | | | | | | | | | | | | | | | | | Implement using QGuiApplication::setOverrideCursor(). Task-number: QTBUG-39311 Change-Id: I83e289bfd5e911c31f08df9a4fc17fb8a0cf27f2 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-011-1/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/qnx-x86-qcc/qplatformdefs.h src/corelib/global/qglobal.h src/network/socket/qnativesocketengine_winrt.cpp src/plugins/platforms/android/androidjniaccessibility.cpp src/plugins/platforms/windows/qwindowswindow.cpp Manually adjusted: mkspecs/qnx-armle-v7-qcc/qplatformdefs.h to include 9ce697f2d54be6d94381c72af28dda79cbc027d4 Thanks goes to Sergio for the qnx mkspecs adjustments. Change-Id: I53b1fd6bc5bc884e5ee2c2b84975f58171a1cb8e
| * | Revert "Suppress move/resize events if they are the result of call to ↵Friedemann Kleint2014-06-131-10/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | move()/resize()." This reverts commit a1c5198387fdb7db44a02bb94c56187874e67304. The idea of detecting non-spontaneous events by comparing against the widget's crect has problems when sequences of programmatic resizes occur. In addition, QWindowSystemInterface's queueing of events is problematic for this. Task-number: QTBUG-39611 Task-number: QTBUG-32590 Change-Id: I4674d8d5d5d432d938f7226b5790543335665c1f Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| * | Revert "Revert "Fixed duplicate QMoveEvent generated for each QWidget::move ↵Friedemann Kleint2014-06-131-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | call"" This reverts commit c3e416296a1026d7ba99cf209f5e0720ff5050b1. The idea of detecting non-spontaneous events by comparing against the widget's crect has problems when sequences of programmatic resizes occur. In addition, QWindowSystemInterface's queueing of events is problematic for this. Task-number: QTBUG-39611 Task-number: QTBUG-32590 Change-Id: I9ff8049add147be23e064a513e8645ae04577c6c Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| * | Merge "Merge remote-tracking branch 'origin/stable' into 5.3" into ↵Sergio Ahumada2014-06-112-6/+11
| |\| | | | | | | | | | refs/staging/5.3
| | * Suppress move/resize events if they are the result of call to move()/resize().Friedemann Kleint2014-06-061-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWidget::resize() or QWidget::move() set the new size/position values and send events. The spontaneous events generated by the platform should be ignored in that case. Task-number: QTBUG-30744 Task-number: QTBUG-38768 Task-number: QTBUG-32590 Change-Id: I9c0ae38842ed76a8a88ca64fdc9bbe106b2766b7 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| | * Revert "Fixed duplicate QMoveEvent generated for each QWidget::move call"Friedemann Kleint2014-06-061-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A better fix is to check whether the widget already has the requested geometry when receiving the spontaneous event from the platform in QWidgetWindow and to suppress that. This reverts commit 72259baa76a0f1faa1983c720621676e9c15e15f. Task-number: QTBUG-32590 Change-Id: I4d7a9b4c340c2d6a427727ecb8de50c3d199f7a9 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
| * | QWidget: fix documentation for isEnabledTo(0)David Faure2014-06-111-1/+7
| |/ | | | | | | | | | | | | | | It is NOT always the same as isEnabled(). Added a unittest to prove it. Change-Id: I7717126835923e8c091249bfcdf81767c44fb5f7 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* | Enablers for QQuickWidget render() support.Paul Olav Tvete2014-06-302-3/+8
| | | | | | | | | | | | | | | | | | Add a QImage based fallback for renderToTexture widgets, and use that when rendering to something else than a QWidgetBackingStore. Change-Id: I415a3a27c4ecb4ddbac45181c5a568b01ac5cb7a Task-number: QTBUG-39562 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Silence warnings about not supporting setMask on platforms like eglfsLaszlo Agocs2014-06-261-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Showing warnings based on an (otherwise unused) WindowMasks platform capability is wrong. The default implementation of setMask() shows a warning anyway so it is safe to call it in any case. On top of this, platforms like eglfs may want to avoid showing any warnings, since they are completely useless for end users and pollute their debug output and Creator panes. The standard way is to provide an empty implementation for the function. This cannot work however if there are hardcoded warnings generated in the common widget code. Change-Id: I842a96b5b84c50b7caa59bdd48107785b21ab5af Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Improve docs for QWidget::accessibleName/DescriptionFrederik Gladhorn2014-06-261-5/+21
| | | | | | | | | | Change-Id: Ie898c49ed10b9598a0482ecadb18bbadb586d7a9 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devJ-P Nurmi2014-06-056-6/+37
|\| | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/qt.prf src/plugins/platforms/xcb/qxcbwindow.h src/tools/qdoc/qdocindexfiles.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I214f57b03bc2ff86cf3b7dfe2966168af93a5a67
| * QApp: Method to check for native style usage.Christoph Schleifenbaum2014-06-052-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | Adds QApplicationPrivate::usesNativeStyle to check whether the QApplication is using the native platform style. This can be needed internally to decided whether to let the platform plugins do stuff or do it interally, style dependent. E.g. letting the platform plugin popup a QMenu vs. letting the style draw one. Change-Id: Ibb5e11a4d9d1d2824685ff146786a9354ceef43c Reviewed-by: BogDan Vatra <bogdan@kde.org>
| * Move native subwidgets in QWidget::scroll().Friedemann Kleint2014-05-282-6/+6
| | | | | | | | | | | | Task-number: QTBUG-38999 Change-Id: Ie22dcf61895bbfc575eaae4d1929516a8749de39 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
| * WinRT: Fix compile warningsMaurice Kalinowski2014-05-261-0/+3
| | | | | | | | | | Change-Id: If223dd73b9558a0f5144be38f19a61316f8c807b Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
| * Fix loss of precision warningsFrederik Gladhorn2014-05-261-1/+1
| | | | | | | | | | | | | | | | Found by http://www.viva64.com/en/b/0251 Change-Id: I2a0c3dba74fef07c3119c9e57b343a8253ee7daa Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-05-221-6/+0
|\| | | | | | | Change-Id: Ia36e93771066d8abcf8123dbe2362c5c9d9260fc
| * Avoid setting unnecessary parameters in QOpenGLWidgetLaszlo Agocs2014-05-161-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QOpenGLFramebufferObject sets the texture parameters already, do not set them again. Especially not GL_REPEAT, which is wrong and breaks on devices that do not support REPEAT on NPOT textures. What QOpenGLFramebufferObject does is just fine (it sets NEAREST/ NEAREST and CLAMP_TO_EDGE). This is important for WebEngine where the QWidget-based web view is using QOpenGLWidget. Change-Id: I264d30118ce7adf50f68f2c7b9a5599a406b4362 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | qpa: Rename qwidgetwindow_qpa_p.h to qwidgetwindow_p.hTor Arne Vestbø2014-05-207-9/+9
| | | | | | | | | | Change-Id: I24835b86194653e89c0bacefd22ddbff06b6e97b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | qpa: Merge qapplication_qpa.cpp into qapplication.cppTor Arne Vestbø2014-05-203-505/+419
| | | | | | | | | | | | | | The variable 'appFont' was removed as it was not used. Change-Id: I8dfa8382b3f30b72490fd22b4e0a27e991318a9c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Remove friends of QEvent.Friedemann Kleint2014-05-182-2/+2
| | | | | | | | | | | | | | | | Introduce function to set the spontaneous flag to QCoreApplicationPrivate to solve a few cases. Change-Id: I7c1f1f3644defe00deea9cecb244ca258afd5b94 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove friend class QETWidget.Friedemann Kleint2014-05-163-3/+0
| | | | | | | | | | | | | | The class no longer exists in Qt 5. Change-Id: Icd98c151f8e06910a3240d0bec6fff333a8ef3e3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | qpa: Merge qwidget_qpa.cpp into qwidget.cppTor Arne Vestbø2014-05-154-1125/+1033
| | | | | | | | | | Change-Id: I8424ec7290b366f4c76999a956fce1428fc56626 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>