summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Respect minimum size of heightForWidth layoutsPaul Olav Tvete2014-10-221-9/+0
| | | | | | | | | | | | | | | | | | | | | | Since we cannot support heightForWidth constraints on toplevel windows, it is impossible to solve this perfectly: if the window is resizable at all, the user will be able to resize it too small. Our old solution was just to give up and allow completely free resizing, even down to 0x0. This makes very little sense. It is clearly better to use the minimum size that we have already computed, even though it is not perfect. This reverts a behavior change introduced in commit 36e9516f85fbb9c9a236f5ca034d5a0126d86c12 (September 9th, 2002) [ChangeLog][QtWidgets][QLayout] Widgets and dialogs containing layouts with heightForWidth (such as a label with word wrap) will no longer get a minimum size of 0x0. Task-number: QTBUG-37673 Change-Id: If26b7ef9c80edbf9d54c6519b36646df408b7652 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* Windows: Implement Qt::WA_ShowWithoutActivating.Friedemann Kleint2014-10-221-2/+0
| | | | | | | | | | Set dynamic property for all platforms and query it in QWindowsWindow::show_sys(). Task-number: QTBUG-19194 Task-number: QTBUG-34504 Change-Id: I4199a2ed835d3de928405d470a81c54da93cc768 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Set correct transient parent in q_createNativeChildrenAndSetParent().Friedemann Kleint2014-10-211-5/+5
| | | | | | | | | | | Fix warning: void QWindow::setTransientParent(QWindow*) ... must be a top level window. which occurred for example when parenting a QMenu onto a native child widget. Task-number: QTBUG-41898 Change-Id: Icc25fb2108bd68b2d9c0e551949b90fc7a82d358 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Always report focusObjectChanged on QWidget::clearFocus()Tor Arne Vestbø2014-10-201-4/+13
| | | | | | | | | | | | | The focusObject() of a QWidgetWindow is based on the focusWidget() of the top level widget of the window, which is resolved through the focus_child chain of the widget. This is not the same thing as the focusWidget of the application. The hasFocus() function of a QWidget queries the latter, so we can't put the focusObjectChanged signal inside hasFocus() when we unconditionally clear the focus_child chain (and hence the focusObject) earlier in the function. Change-Id: Iae39da5d6031d22b21e9dc9f18e5fe6e6fd11a5c Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* Clear specific QWindow::focusObject() on QWindowPrivate::clearFocusObject()Tor Arne Vestbø2014-10-201-2/+4
| | | | | | | | | | The focusObject of a QWidgetWindow is the focusWidget() of the top level widget, so when clearing the focus object of the window we should clear focus of the same focusWidget, not the application-wide focus widget, which may live in another window. Change-Id: Ib9162418865c225e23aac7987e119b3b651983eb Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Widgets: only update IM if the widget is the current focus objectRichard Moe Gustavsen2014-10-191-4/+6
| | | | | | | | | | | | | | | QInputMethod works on focusObject, not focusWidget. These two are not always the same, and sometimes the focusObject is also NULL. In either case, we should not tell QInputMethod to commit, reset or otherwise emit signals based on the internal state of widgets that are not the focus object. This led to a crash on iOS, since we got a call to cursorRectangleChanged when focus object was NULL, which the code didn't (and shouldn't need to) take into account. Change-Id: I54e40d7ec35210ba6599a78c5a8c7f982a1c3dbb Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* QSizePolicy: remind to mark as Q_PRIMITIVE_TYPE in Qt 6Marc Mutz2014-10-191-0/+4
| | | | | Change-Id: I1f18b4cd99f37aadf199e70d3acade9c8f5f9799 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid breaking BC with new virtuals in QOpenGLPaintDeviceLaszlo Agocs2014-10-161-11/+22
| | | | | | Task-number: QTBUG-41046 Change-Id: Iab628d2d6811d528e2cc513b6f8a74baa628541d Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Fix QOpenGLWidget on Cocoa when used as viewportLaszlo Agocs2014-10-142-4/+68
| | | | | | | | | | | | | | | | | | | | | | | Having a QOpenGLWidget as a graphics view viewport was not functioning on OS X: it was showing incomplete content due to accessing the texture attached to the framebuffer object before the rendering is complete. On the normal path, when rendering is done via paintGL(), the flush was there. When used as a viewport however, this path is not used. The missing flush is now added for the other case too. For performance reasons, we will not flush on every paint engine end(). Instead, the flush is deferred until composition starts. QGLWidget also featured a weird on-by-default autoFillBackground concept. To maintain compatibility with apps that used QGLWidget as the viewport for QGraphicsView, we will now do the same for QOpenGLWidget, but only when it is used as a viewport. For regular QOpenGLWidgets autoFillBackground defaults to false, like for any other widget. The docs are extended with a small section about differences between QGLWidget and QOpenGLWidget. Task-number: QTBUG-41046 Change-Id: I42c2033fdd2ef5815783fd640fe11373761061e0 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Add a warning when using QOpenGLWidget as a native childLaszlo Agocs2014-10-101-0/+6
| | | | | | | | | Just like it is done for QQuickWidget. Task-number: QTBUG-41779 Change-Id: I1b27c2ed34ecb2520edf82843b675dbf6b0eab8e Reviewed-by: Michael Bruning <michael.bruning@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* QSizePolicy: remove an outdated commentMarc Mutz2014-10-041-1/+0
| | | | | | | The change asked for by the comment is apparently done. Change-Id: I7ef2b58eb8c38192904e83b1c2386d3c762e0bed Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4Gabriel de Dietrich2014-10-012-1/+17
|\
| * Merge remote-tracking branch 'origin/5.3' into 5.4Gabriel de Dietrich2014-09-292-1/+17
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qnativesocketengine_unix.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I6f1aa320d5ca66cd92d601a95885aeaab0abb191
| | * OS X: Fix menu item shortcuts without modifiersEskil Abrahamsen Blomfeldt2014-09-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A regression was introduced by bdebec4e2ef79f1771d2dcc22f9a919eb4487567. The intention of the change was to avoid using Qt's shortcut mechanism to trigger menu items which were already triggered through the regular menu API in Cocoa. However, Cocoa has trouble with key equivalents that do not have any keyboard modifiers. Thus, we have to allow these particular key sequences to go through the regular system. I've verified that the original bug is still fixed with this change. [ChangeLog][OS X] Fixed menu item shortcuts without keyboard modifiers. Task-number: QTBUG-41192 Change-Id: I8f5a9cbc7a448b3cb0519baed95be5cbb630205c Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| | * Make sure we don't delete child QWindows if they have WA_NativeWindow setGabriel de Dietrich2014-09-221-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deleting a QWindow automatically deletes its child windows because they are in the QObject hierarchy. However, if the user sets both WA_NativeWindow and WA_DontCreateNativeAncestors, we can't just delete that widget's QWindow. First because the widget doesn't get notified (and maybe it should be), and then because we may invalidate any reference to the QWindow the user may have kept. Our solution is to reparent the child QWindows into the new parent's closest QWindow. We must, however, take the precaution of not keeping any reference to the backing store in the platform window. Reparenting operations can trigger repaints on the platform window, but the backing store is not set and flushed until later. Task-number: QTBUG-38377 Change-Id: I353f5528f227a227b6d10419367cbe1d5d07a94e Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | | Doc: Use title case in section1 titlesNico Vertriest2014-09-301-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Using Python script title-cased.py Task-number: QTBUG-41250 Change-Id: I00d3d7a0b30db7304a7904efd6d63abd9a7b493b Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | Fix losing dirty state when calling update() from paintGL()Laszlo Agocs2014-09-301-1/+6
|/ / | | | | | | | | | | | | | | | | | | | | | | When the paint for the QOpenGLWidget was in invoked on the fast path, where only that widget was dirty, the resetWidget call after sending the paint event removed the widget from the dirty list, making it impossible to schedule an update during the event handling. The correct way is to clean the list and then send the paint events. Change-Id: Icdad5686ded7944fd1c8af56496f725e163a60e6 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Generate Show/Hide events for widgets when minimized state changes.Friedemann Kleint2014-09-241-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a regression against Qt 4, where Show/Hide events were received when the minimized state changed. It is restricted to QWidget so as not to introduce additional events to QWindow (which already has signal visibilityChanged()) and cause unexpected side effects in QQuickWindow. Task-number: QTBUG-41312 Change-Id: Ib165a5daf7a7e5d8231ef8a94b70e8a2a3253057 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Update license headers and add new license filesMatti Paaso2014-09-2462-1175/+679
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* | Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4Frederik Gladhorn2014-09-248-41/+97
|\ \
| * | Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-09-238-41/+97
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The isAlwaysAskOption was removed in 38621713150b663355ebeb799a5a50d8e39a3c38 so manually removed code in src/plugins/bearer/connman/qconnmanengine.cpp Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qcollator_macx.cpp src/corelib/tools/qstring.cpp src/gui/kernel/qwindow.cpp src/gui/kernel/qwindow_p.h src/gui/text/qtextengine.cpp src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h src/plugins/platforms/android/qandroidinputcontext.cpp src/plugins/platforms/xcb/qglxintegration.cpp src/plugins/platforms/xcb/qglxintegration.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/testlib/qtestcase.cpp src/testlib/qtestlog.cpp src/widgets/dialogs/qfiledialog.cpp src/widgets/kernel/qwindowcontainer.cpp tests/auto/corelib/tools/qcollator/tst_qcollator.cpp tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
| | * Avoid adding widget to its own layoutThomas Fischer2014-09-055-39/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Widgets and layouts added or inserted to a layout are checked for: - Not being NULL - Not being the parent widget of a layout or the layout itself, respectively Without this commit, adding a widget to its own layout would result in a CPU-hogging infinite loop. Now, a warning is written to stderr and the add or insert function call is ignored. The checks are implemented as public functions of QLayoutPrivate and thus accessible in QLayout's descendants to be used in various "addWidget", "insertWidget", etc functions. Unlike 'classical' layouts like QGridLayout, QFormLayout does indeed accept widgets that are NULL. To not break this behavior, any call for the check functions first tests if the widget or layout, respectively, to test is NULL or not and calls the check only in the latter case. Automated tests for QBoxLayout, QGridLayout, and QFormLayout were added. For an unpatched Qt 5.3, each of those automated tests will freeze as explained in QTBUG-40609. For a fixed version, warning messages about invalid parameters to addWidget/addLayout/... calls will be read by QTest::ignoreMessage, resulting in a passed test. Change-Id: I1522d5727e643da3f7c025755975aca9f482676d Task-number: QTBUG-40609 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| | * Add missing private headers warningSamuel Gaist2014-09-042-0/+22
| | | | | | | | | | | | | | | Change-Id: I7a4dd22ea3bcebf4c3ec3ad731628fd8f3c247e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Make QWindowContainer handle drag'n'dropAllan Sandfeld Jensen2014-08-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drag'n'drop events were not propagated by a the QWindowContainer to the embedded QWindow. This patch makes the widget accept the events and pass them on Task-number: QTBUG-40603 Change-Id: I97320fbcad27f7c6aa48c95c90bb42dda634764e Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * Fix build with QT_NO_MDIAREASérgio Martins2014-08-121-2/+5
| | | | | | | | | | | | | | | Change-Id: I456fea53f641476ea63cbe170cc65811c92eb290 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Fix emission of QDesktopWidget::workAreaResized().Friedemann Kleint2014-09-223-3/+12
|/ / | | | | | | | | | | | | | | Connect to QScreen::availableGeometryChanged(). Task-number: QTBUG-32567 Change-Id: I2097d80faa83ae062f7e149122fba26d23432e95 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Keep a source of propagated mouse eventsAlexander Volkov2014-09-191-0/+1
| | | | | | | | | | | | | | | | | | Synthesized mouse events should not cause mouse events which look like they were obtained from the system. So set the source of generated events from the original event. Change-Id: I862829446ac6ef664e1b8e4a5b54ed11926a1d4b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Update widget winId when screen changesDyami Caliri2014-09-191-0/+6
| | | | | | | | | | | | | | | | | | When a window's screen changes it may recreate the platform window. In that case, update the winId in the widget to keep it in sync. Task-number: QTBUG-40681 Change-Id: Iec815320214832bb63952de3a5bd1340a04dacd4 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | QOpenGLWidget: Play nice with empty paintGLLaszlo Agocs2014-09-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | Applications that do not override paintGL() (may happen in some test code) will not perform any GL rendering, not even clearing. This is fine, but to be safe we need to do a clear right after creating the FBO in order to prevent showing garbage. Task-number: QTBUG-38327 Change-Id: If062901bb18724f961e41856085470e37b49abbe Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Add a note about winId() to QOpenGLWidget docsLaszlo Agocs2014-09-181-0/+3
| | | | | | | | | | | | Task-number: QTBUG-40765 Change-Id: I0dbb010bb96c6b41c67392b8846782a354481e5e Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Propagate swap interval from QOpenGLWidget to the tlwLaszlo Agocs2014-09-181-1/+15
| | | | | | | | | | | | | | | | | | | | | | Otherwise it is impossible to set a swap interval different than the one set by QSurfaceFormat::setDefaultFormat(). Both windows and xcb will pick up the updated interval from the window on the next frame. Change-Id: I55a59f83a62d3adcea687adf28639646b576ed58 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Do not drop the context when sharing globallyLaszlo Agocs2014-09-151-0/+6
| | | | | | | | | | | | | | | | | | There is no point in recreating the QOpenGLWidget's context when it shares with all top-levels' shareContext(). Change-Id: I659a8ef6563de0cc1e833198af4dfb8c705e40d8 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Fix drag and drop with createWindowContainerLaszlo Agocs2014-09-151-0/+11
| | | | | | | | | | | | | | | | | | Forward dnd events to the QWindow, exactly like QQuickWidget would do. This of course requires setting setAcceptDrops(true) on the container widget. Task-number: QTBUG-39213 Change-Id: I8ea49e630b071dc0aacd53f798d9b46b03502365 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Doc: Fixed broken links introduced by "OS X" doc change.Jerome Pasion2014-09-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | -qtdoc repo uses "OS X" instead of "Mac OS X" and this caused broken links. -more comprehensive change still needs to be done but the new name is used in the page to maintain consistency. At least within the page or class. Change-Id: I8a5650046fc0413cbb18359b743ecd30fd62e417 Task-number: QTBUG-40759 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Update QOpenGLWidget paintDevice devicePixelRatio when recreating fboDyami Caliri2014-09-101-0/+1
| | | | | | | | | | | | | | | | The QOpenGLWidget's paintDevice needs to update devicePixelRatio when changing screens. Change-Id: Iec6e7157f22ff99e04f81347cbbf70f3fc3ff424 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Expose screen change event to widgets so that they can check the dprLaszlo Agocs2014-09-103-4/+28
| | | | | | | | | | | | | | | | | | | | Unlike ordinary widgets, the ones that have OpenGL framebuffers must know about screen changes because the device pixel ratio may be different on the new screen. Add an internal event, ScreenChangeInternal, as the counterpart to WindowChangeInternal. Change-Id: I5e55999838e4c0284e7d9832299f7cc6b541ee3f Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Add an option to share between TLWsLaszlo Agocs2014-09-101-6/+19
| | | | | | | | | | | | Task-number: QTBUG-41191 Change-Id: I510d1631926ed0d9e371703d22229aed92432aa6 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Fix garbled resize with QOpenGLWidget when using multi-sampling.Dyami Caliri2014-09-101-0/+1
| | | | | | | | | | | | | | | | If you configure QOpenGLWidget to use sampling, the 'resolvedFbo' isn't updated during resizing. This leads to garbled views. Change-Id: I9f9265520134bcf12436778773507df936c5fbb6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Improve QOpenGLWidget docs regarding fb preservationLaszlo Agocs2014-09-081-1/+17
| | | | | | | | | | | | | | | | QOpenGLWindow already has some notes regarding this. It must be mentioned in QOpenGLWidget too. Change-Id: I0af90c9410a1c44cb9dd9ce58aa0371a58c57f65 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Fix a conversion of coordinates of a TouchBegin eventAlexander Volkov2014-09-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | To convert coordinates to a parent's coordinate system one should translate them by an offset of a child widget relative to it's parent widget. QRect::moveCenter() doesn't translate, it sets the coordinates of the touch point's center to this offset. Change-Id: I9d823784803bd1448c0d665944090674d3ff518b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | Bump version of QWidget geometry serialization to 2.0Friedemann Kleint2014-09-051-6/+6
| | | | | | | | | | | | | | | | | | | | It was decided not to port the handling of the saved screen size to Qt 4.8, so, bump the major version to ensure Qt 4.8 bails out. Task-number: QTBUG-38858 Change-Id: Ia870519553172cd383830d9a722b0fada180ee1b Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
* | QSwipeGestureRecognizer: Use qAbs() to check distances.Friedemann Kleint2014-09-031-1/+1
| | | | | | | | | | | | Task-number: QTBUG-15768 Change-Id: Idc6c6687430365a015fb2c15f4e4dcae6a687f9f Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | Fix no-opengl buildLaszlo Agocs2014-09-013-0/+19
| | | | | | | | | | | | Change-Id: I577bd5d10e52571c95c9e646327264cf95ac6eb1 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | QWidget::save/restoreGeometry(): Check screen size.Friedemann Kleint2014-08-281-4/+27
| | | | | | | | | | | | | | | | | | | | | | Bump minor version of the saved geometry and append the screen width in version 1.1. Use that to check and bail out should large differences occur due to scaling or different levels of DPI awareness. Task-number: QTBUG-38858 Change-Id: Iad8ae0705297118b4237c9a41469cb97d7eab549 Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
* | Close popup widgets when wheel events are receivedFriedemann Kleint2014-08-261-0/+9
| | | | | | | | | | | | Task-number: QTBUG-40656 Change-Id: I134b07705744c23af9718dee486ab5e9ad4352cf Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Send QWindow::focusObjectChanged when clearing widget focusTor Arne Vestbø2014-08-261-0/+5
| | | | | | | | | | | | | | | | | | | | We do this for QWidget::setFocus(), but were missing a call on clearing the focus widget. Since QWidgetWindow::focusObject() will fall back to returning itself if there is no focus widget, we need to pass the result of window->focusObject() to the change signal instead of 0. Change-Id: I52a5519a19bb20e74b4a7c2a1abc9d47e2ea1315 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Support QOpenGLWidget and QQuickWidget on AndroidLaszlo Agocs2014-08-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It gets somewhat complicated due to the fact that a RasterGLSurface window (i.e. any widget window since 5.3) may behave either like an OpenGLSurface or a RasterSurface, and the expected behavior may change on each backingstore sync. This does not fit designs where the platform window implementation is separated and there is different behavior for raster and GL windows. Therefore QAndroidPlatformOpenGLWindow is now made capable of behaving like the raster one, based on a flag communicated from the widget stack via QWindowPrivate (since the plugin knows nothing about widgets). This means that widget windows that do not have renderToTexture children (QOpenGLWidget, QQuickWidget) will go through the raster path, while the ones that have will behave like an OpenGL window with the actual rendering happening in QPlatformBackingStore::composeAndFlush(). The surface type is RasterGLSurface in both cases nonetheless. Task-number: QTBUG-37907 Change-Id: I6f9261fc0fd993afcda7f30d379c5410069033d3 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | OS X: Fix pan gestures.Morten Johan Sørvig2014-08-251-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QPanGesture recognizer requires single-point touch events. The touch implementation in Qt 4 would test Qt::WA_TouchPadAcceptSingleTouchEvents and forward single touch events if set. Making this work in Qt 5 is a little bit more involved since the platform plugins don't know about widgets. Change the Cocoa touch implementation to send single-point touch events to QWidgetWindow windows only. Make QApplication forward single-point touch events only if the target widget has the Qt::WA_TouchPadAcceptSingleTouchEvents attribute set. Task-number: QTBUG-35893 Change-Id: I68712a5e3efb4ece7a81ca42f49c412e525eeb3a Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
* | 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>