summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Accessibility Windows: Improve MenusFrederik Gladhorn2014-04-251-2/+0
| | | | | | | | | | | | | | This would especially trigger when moving the focus between menus - after the right menu got the focus we would send another event for the QMenuBar, preventing the screen reader from reading the actually selected menu, announcing the menu bar instead. [ChangeLog][QtWidgets][QMenu] Accessibility: Menus are read by screen readers with more reliability. Task-number: QTBUG-38498 Change-Id: Ie4028120b234949380315296bf07ca53863d0ad8 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Update tooltip palette when receiving a theme change notification.Friedemann Kleint2014-04-252-4/+11
| | | | | | Task-number: QTBUG-38183 Change-Id: Ia86ae698ae4afcf9d5c361f178f3ca44ae9a3ee5 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* Restore Qt 4 behavior in default double click handlerLaszlo Agocs2014-04-171-1/+3
| | | | | | | | | | | | | | Revert 3bb902495291c50a2f06e8e03a62a647db3e5cd4. That fix was an attempt to handle the issue that has been fixed in 5.3 by 9063edef796ad10eb9ac2229627f36d60168f0e2 and should have been reverted when the new approach, that restores Qt 4 behavior for widgets, was introduced. Task-number: QTBUG-38242 Task-number: QTBUG-36423 Change-Id: I8f8a82da22605fac90543492e9b2cd2b568544e7 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Doc: document obsolete QApplication::setGraphicsSystem()Marc Mutz2014-04-101-0/+9
| | | | | Change-Id: I5a87564d2dbfa5e739d1ca40db480e8e0c1b7fdf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Fix crash in qt_try_modal.Friedemann Kleint2014-04-091-2/+1
| | | | | | | Task-number: QTBUG-34580 Change-Id: Idc549116fa99aa49ac7c67dcfc76d32ca71f3c76 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* QOpenGLWidget: Avoid crashing if updateGL is called before the first resizeJocelyn Turcotte2014-04-091-0/+3
| | | | | Change-Id: I9e7788334de98b35dc5d6beee97a63783a1fe267 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Forward "_q_platform_*" QWidgets's properties to QWindow.Tomasz Olszak2014-04-092-0/+7
| | | | | | | | | | | This way we can customize QPlatformWindow by using dynamic "_q_platform_" properties in corresponding QWindow. Change-Id: I987b7a17d252541fe766af6aa37a6cffb67f1807 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Fix a crash on startup with QOpenGLWidgetJocelyn Turcotte2014-04-071-1/+2
| | | | | | | | | | | After c4aabeb2b82d777bb555f836f55e1f7ae4fb4581 we now try to access q_ptr in QWidgetPrivate::setRenderToTexture. QOpenGLWidget needs to delay this call after the QObject constructor is done to make sure that setTextureChildSeen doesn't dereference q_ptr before it has been initialized. Change-Id: Icaee82c8b806f42bc7614b0ac6fe4e6026331750 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Improve QWidget::metric for PdmDevicePixelRatio.Morten Johan Sørvig2014-04-051-6/+9
| | | | | | | | | | | | | | Use QWindow::devicePixelRatio() which is the most accurate devicePixelRatio accessor since it can ask the platform native window directly Fall back to qApp->devicePixelRatio() if the window pointer is not valid. Task-number: QTBUG-37606 Task-number: QTBUG-38078 Change-Id: Ief1468a0c6ced07439f55329ab056883016241cc Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* QNX: Surpress manual window activation during showFullScreenFabian Bumberger2014-04-051-0/+3
| | | | | | | | | | When a window is shown, libscreen will give it keyboard focus. Requesting the activation right after the window is created (and before libscreen activated the window) causes problems on some devices e.g. Q10. Change-Id: I29f7a38990ea4259a8b0c6624f70e31d7291af00 Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
* Make it possible to render QtWebEngine in QOpenGLWidgetJocelyn Turcotte2014-04-041-0/+2
| | | | | | | Setup the GL context as shared with the Qt global share context. Change-Id: I199cfc7d290466d0ad99294bcffcd738b615862b Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Don't assume qt_tablet_target widget exists from one event to the nextShawn Rutledge2014-04-041-10/+2
| | | | | | | | | | | | | | | | In this scenario there is a widget with a button inside, and you click the button with the tablet. The target of the event is the button, but when you click it, the parent (or ancestor) is destroyed. Commit 2bac49265efcf8faabc3756d1a3e405a3d336f68 took care of the case when the parent is a window, but it is not always a window which is being destroyed. So the approach of using a QPointer is better because it should take care of all the cases when the qt_tablet_target is destroyed during the course of a tablet event sequence. Task-number: QTBUG-36848 Task-number: QTBUG-38040 Change-Id: Ia0e861f2cb2fbc30234aa596f3a36ddd0835a9af Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Avoid double clicks confusing popupsLaszlo Agocs2014-04-031-1/+1
| | | | | | | | | | | | Setting qt_button_down on DblClick is dubious and breaks popups like menus since they won't appear correctly on every click anymore when clicking on them rapidly several times. Task-number: QTBUG-37891 Change-Id: Ic6cbbbe8b42891d2f9fa2ff66aa42bb89230d896 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Rick Stockton <rickstockton@reno-computerhelp.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Enable the depth and stencil buffers by default in QOpenGLWidgetJocelyn Turcotte2014-04-021-1/+1
| | | | | | | | | | | | | QGLWidget rendered to the default framebuffer, which had a depth and stencil buffer attached by default. Keep this behavior by adding the attachments to the FBO by default in QOpenGLWidget. Change-Id: I6f72a444eac3d8eabb7a539ad12216f1e5d2183d Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* When looking up the window hierarchy, stop at foreign windowsAlberto Mardegan2014-04-011-2/+9
| | | | | | | | | | | If the window being activated is an embedded window, the parent window will be a foreign window (usually not even belonging to the current process); we shouldn't attempt to focus it. Task-number: QTBUG-37984 Change-Id: I2ea03a86b30bbc43cde643e18e0e1d020e5f2c84 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Propagate textureChildSeen properlyLaszlo Agocs2014-03-311-1/+1
| | | | | | | even if setParent() is not called afterwards. Change-Id: Ie54e227c7adda2710fbd46176e9a15252aef2985 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Send touch update events to widget if there is a gesture pending for it.Friedemann Kleint2014-03-313-1/+12
| | | | | | | | | | | | Otherwise, touch update/end events were ignored and the gestures were never triggered (unless a native widget was used). Task-number: QTBUG-37759 Change-Id: I4b0145ffe535065e1458164b67bc8d9e33a4af97 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Pass events to QGestureManager from the main (GUI) thread only.Friedemann Kleint2014-03-281-9/+12
| | | | | | | Task-number: QTBUG-20946 Change-Id: I964452c1e97bd3d3a521e33abeb2f7d8cdbc89a9 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Streamline code in standard gesture recognizers.Friedemann Kleint2014-03-271-27/+8
| | | | | | | | | | Always initialize result variable, make static casts to QTouchEvent * local. Task-number: QTBUG-37759 Change-Id: Ib48034906afae8090a3be965a11f17d7d119bc5f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Make QWidget::render() work correctly with all paint devicesLars Knoll2014-03-272-23/+8
| | | | | | | | | | | | | | | | | Make sure QWidget::render takes correct code paths with all kinds of paint devices. Correctly restore the inRenderWithPainter flag. The old code would not correctly restore the flag, likely leading to inconsistencies. Remove the unused last parameter in QWidgetPrivate::render. Remove the special handling for QPrinter in the same method. Task-number: QTBUG-26564 Change-Id: Iba43269b090abd8dd88c5225b75e1ee9239d58f9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* QPA: Fix QPlatformTheme::Palette enum value spellingGabriel de Dietrich2014-03-211-1/+1
| | | | | | | | | We keep the old value for source compatibility, but it should probably be removed at some point as the QPA API is semi-public only. Change-Id: I06e4c9ca1d8bb878411ad79ef409d60ce2d29f4a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QApplication: fix scroll phase handling for wheel eventsJ-P Nurmi2014-03-201-2/+2
| | | | | | | | Set scroll phase correctly for propagated wheel events, and do not let Qt::ScrollBegin/End steal focus when using Qt::WheelFocus policy. Change-Id: Ia38b64059d96a228c3b83c9b455db6e30dfb9a46 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* QOpenGLWidget retina support.Morten Johan Sørvig2014-03-201-1/+1
| | | | | | | Use device pixels where appropriate. Change-Id: Ia953e6da4034eecbfccf798701ec1b850eea9d5b Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Delete the OpenGL context before the window.Morten Johan Sørvig2014-03-201-4/+2
| | | | | | | | Fix a crash-on-exit on Mac, where deleting the context references the attached NSView. Change-Id: Iac38184dab7a406e4072452fd9a6b175e6968ade Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* QNX: Fix QToolTipFabian Bumberger2014-03-191-2/+21
| | | | | | | | | The problem is that on QNX the window activation and focus events are delayed. QToolTip can not handle this and would hide the tool tip right after it is created. Change-Id: I6045d1d277b73508c24174d72a05e0baa4ae6e7f Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Repaint widgets on screen change.Morten Johan Sørvig2014-03-142-0/+15
| | | | | | | | | | | | | | | | | Add a screenChanged handler slot to QWidgetWindow, which calls markDirty() on the backing store with the BufferInvalid and UpdateNow flags set. Update CocoaBackingStore to create a new buffer on window devicePixelRatio change. Use the QCocoaWindow::devicePixelRatio() implementation instead of a duplicate implementation in the backing store. The plan is to replace this implementation with one based on QUpdateWindowRequestEvent for Qt 5.4 Change-Id: I8e521c53df4ac90815613e730fe821996334721f Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* docs: QApplication::startDragDistance default value is 10Shawn Rutledge2014-03-141-1/+2
| | | | | | | | This comes from QPlatformTheme::defaultThemeHint(). Change-Id: I12a9add3af65e819a06b66d958acb8f21cfe0e13 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QQuickWidget: fix crash on exitPaul Olav Tvete2014-03-131-1/+12
| | | | | | | | | | Make sure that the correct context is current when freeing GL resources. Otherwise, on shutdown, QOpenGLVertexArrayObject would try to use the previously current context, which mmay already have been deleted. Task-number: QTBUG-37385 Change-Id: Ib2332f54636738a1a4b1041a7dcbffd0af00261d Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QQuickWidget move/resize fixPaul Olav Tvete2014-03-131-2/+7
| | | | | | | | | | Make sure the alphamask in the backingstore is updated whenever the geometry of a QQuickWidget/QOpenGLWidget child changes. Task-number: QTBUG-37372 Change-Id: I70e94664bd7da774694645f604e1a7277fe563c7 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
* Avoid using direct OpenGL calls in gui and widgetsLaszlo Agocs2014-03-101-7/+10
| | | | | Change-Id: I5d88a2e204ca23e178a4e3044b9cb13392c3e763 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Destroy backingstore before windowPaul Olav Tvete2014-03-081-4/+6
| | | | | | | | | | | | The window is created before the backingstore, so the destruction should happen in the reverse order. Also, the backingstore is created based on a pointer to a QWindow, so the dependency is from backingstore to window. Thirdly, this fixes a crash when using QQuickWidget/QOpenGLWidget. Task-number: QTBUG-37045 Change-Id: I6e782c553fddfeef877be30ca2610aff75a425a0 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Window change notification QQuickWidgetPaul Olav Tvete2014-03-061-0/+23
| | | | | | | | | | QQuickWidget and QOpenGLWidget needs to know when the window changes so it can use the correct GL context. Task-number: QTBUG-37045 Change-Id: Ib98b18e721908017398518f73226cb3731886927 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Tablet target widget isn't always the same as its widget windowShawn Rutledge2014-03-061-2/+8
| | | | | | | | | | | | | In this scenario there is a widget with a QPushButton inside, and you click the pushbutton with the tablet. The target of the event is the pushbutton, but when you click it, the window is destroyed. The widgetwindow destructor cannot check the pushbutton's window() because it has already been destroyed. So it seems we have to store both widgets: the actual target and the parent widget which has the window. Task-number: QTBUG-36848 Change-Id: I37d8fb03743f3e501d695342edc42de104777b18 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix issue where revealed widget children do not receive paint event.Chris Colbert2014-03-042-13/+2
| | | | | | | | | | | | | | | | | | | | When a child of a widget is spontaneously revealed due to a call to the parent 'resize' method, the child will not receive a paint event if it has the WA_StaticContents and WA_OpaquePaintEvent flags set. This is caused by the backing store being pre-emptively resized by the call to setGeometry_sys, which causes QWidgetBackingStore::sync to skip the block which handles the static contents. There doesn't appear to be any reason to preemptively resize the backing store, since it is always resized as-needed during the the 'sync' method. This change-set removes the code which preemptively resizes the backing store. Task-number: QTBUG-35282 Change-Id: Ie9942854ca5322dfe0f98ed8100810161576be80 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Doc: fix warning: No documentation for 'QApplication::palette()'Marc Mutz2014-03-041-1/+1
| | | | | | | Hide the forwarder function from QDoc. Change-Id: I2ea5cce0e68a5803cd4a24cefbbd50fc6c5ffb94 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Revert "Propagate synthesized mouse events in parallel (lock-step) with touch"Eskil Abrahamsen Blomfeldt2014-03-042-95/+0
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 7808ec795c5831d56dae9c4f9f7e1306489864aa. The commit interferes with the mouse event synthesizing which was introduced in e50416066cab4be7df8382bd224d9e4ddd7a903a, and which claims to solve the same original problem: Synthesizing mouse events should be moved out from the platform plugin. The issue with 7808ec795c5831d56dae9c4f9f7e1306489864aa is that mouse events which are stolen by event filters will never get composed double click events (this is done in the QGuiApplication code), so double clicking on item views does not work with synthesized mouse events. This makes e.g.directory pickers unusable on a touch display. The test cases introduced in the original patch still pass. Task-number: QTBUG-36974 Change-Id: I0ec7c65d2a77589e60408623c2c0b20d427f0cfa Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Fix use uninitialized, detected by GCC 4.8Thiago Macieira2014-03-041-1/+1
| | | | | | | | | | If the widget \a field is not present on this form, getWidgetPosition might not fill in the role variable. GCC is correct. qformlayout.cpp:1690:19: error: ‘role’ may be used uninitialized in this function [-Werror=maybe-uninitialized] Change-Id: Ia67991a71e8f1ceacb9d6370c7028c454ef630c6 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QQuickWidget show/hide/raise fixPaul Olav Tvete2014-03-011-2/+13
| | | | | | | | | Make sure the alphamask in the backingstore is updated whenever the state of a QQuickWidget/QOpenGLWidget child changes. Task-number: QTBUG-37062 Change-Id: Iffa80fc8993499a15bc9e773a162a3f98b81ae03 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Make bool arguments to QWidgetBackingStore::markDirty enumsJorgen Lind2014-02-283-56/+73
| | | | | | | | This is so we get some typesafty when refactoring, and I think it makes the code more readable Change-Id: Ia7531950d5f780dc98f4eb435c1e0050d76cdb5f Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Widgets: Pass on mouse event source when translating mouse events.Friedemann Kleint2014-02-271-0/+3
| | | | | Change-Id: I70dacc2f96552e08dd71d5cbd63fb4cf9916c11f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Make closeAllWindows() close real windows only.Morten Johan Sørvig2014-02-251-1/+2
| | | | | | | | | | | | | | | | QApplication::closeAllWindows() is documented to close all top-level windows. If the widget has WA_DontShowOnScreen set then that is a strong indication that this widget is, in fact, not a top-level window. [ChangeLog][QtWidgets][Mac] QWidgets embedded in QGraphicsProxyWidget are no longer sent close events when the app is closed. Task-number: QTBUG-33716 Change-Id: I0925ed67a2d2088ca9f950a4a43bc2729b88a86c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Compile fix for QT_NO_OPENGLPaul Olav Tvete2014-02-242-3/+11
| | | | | Change-Id: I5ea962b0d77198945a4f87ad821d3c3dcffd260c Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QWidget: do not allocate a QOpenGLContext unless needed by QQuickWidgetPaul Olav Tvete2014-02-222-9/+10
| | | | | | Task-number: QTBUG-36871 Change-Id: I739f270e9344f888593e04c6221807dbcf6cb55e Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Normalize signal & slot signatures in connectionThiago Macieira2014-02-221-1/+1
| | | | | | | | | | | Profiling showed that Qt Creator spent 2% of its load time normalizing signals and slots. By pre-normalizing everything, we ensure that there is no runtime cost. Profiling after this commit and the others in this series shows that the cost dropped down to zero. Change-Id: Ifc5a2c2552e245fb9a5f31514e9dd683c5c55327 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Only do a repolish() of the widget if it was already polishedAndy Shaw2014-02-201-1/+2
| | | | | | | | | | | By ensuring that the widget is already polished before doing a repolish it means that if you reset the stylesheet then it unsets any changes that the stylesheet had applied to the widget. Task-number: QTBUG-18958 Change-Id: Ie0aeda0dac9f2211b7feca138c115cf2b48aac80 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Exclude widgets without associated QWindow in QApplication::shouldQuit().Friedemann Kleint2014-02-151-3/+5
| | | | | | | Task-number: QTBUG-35986 Change-Id: Ibeb425fe054af163b86b2142028b3ea744cb9820 Reviewed-by: David Faure <david.faure@kdab.com>
* Close widgets properly from session management.Friedemann Kleint2014-02-142-18/+39
| | | | | | | | | | | | | | | | Introduce new virtual QGuiApplicationPrivate::tryCloseAllWindows() which allows overriding the behavior in QApplication to properly close the widgets first. Without this, QGuiApplication closes the widget windows leaving a stale window handle behind in the associated QWidget which then causes the application not to terminate since QApplication::shouldQuit() stills finds the affected widgets to be visible. Task-number: QTBUG-35986 Change-Id: I19ac4b5a19250ee68d09e461c03dbace458c98e4 Reviewed-by: David Faure <david.faure@kdab.com>
* QOpenGLWidget and new-style compositing on eglfsLaszlo Agocs2014-02-132-2/+53
| | | | | | | | | Integrate with QOpenGLTextureBlitter, QOpenGLWidget and friends. Change-Id: Ic2867b713a21a3d2820d546174fc9164b3dd220c Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Move setWindowIcon() up to QGuiApplication.David Faure2014-02-123-18/+26
| | | | | | | | | | [ChangeLog][QtGui][QWindow]QWindow::icon() now defaults to the application icon, which can be set with QGuiApplication::setWindowIcon(). Change-Id: Id1974e5cda81775e515c14b294f67fb99351c6c9 Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Enabling QQuickWidget and QOpenGLWidgetPaul Olav Tvete2014-02-129-14/+486
| | | | | | | | | Enable child widgets (without a native window) that render to an FBO and are composed with the raster backingstore by the platform plugin. A preliminary version of QOpenGLWidget is included as private API. Change-Id: I8f984a4d7db285069ce3d6564707942c823d890d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>