summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
Commit message (Collapse)AuthorAgeFilesLines
* qopenglcontext_p.h: Fix Clang warning about include resolutionFriedemann Kleint2017-10-111-1/+1
| | | | | | | | | | | | kernel/qopenglcontext_p.h included opengl/qopengl.h as "qopengl.h", triggering: In file included from ..\..\include\QtGui\5.11.0\QtGui\private/qopenglcontext_p.h:1: ..\..\include\QtGui\5.11.0\QtGui/private/../../../../../src/gui/kernel/qopenglcontext_p.h(58,10): warning: #include resolved using non-portable Microsoft search rules as: ..\..\include\QtGui/../../src/gui/opengl/qopengl.h [-Wmicrosoft-include] Task-number: QTBUG-63512 Change-Id: I867a8f2ceeb8a9369dfe0163c179572feadc033e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix build with -no-opengl and on watchOS in generalJake Petroules2017-10-062-0/+4
| | | | | | | | | This fixes a regression introduced in 8e70241dcc. Task-number: QTBUG-63631 Change-Id: I5a2c23e06b790a482e1542ac2db3dcf25927caf2 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Let QPlatformBackingStore handle its own QOpenGLContextTor Arne Vestbø2017-10-052-0/+8
| | | | | | | | | | | | | | | | | | | | | The resources allocated by QPlatformBackingStore are owned by the class, and should be allocated in a context the class also owns. This removes the asymmetry of having to pass in a context to composeAndFlush, while having to make the same context current before destroying the platform backingstore. The context owned by QPlatformBackingStore is shared with the associated window though a new QWindowPrivate::shareContext() API. The result is that on e.g. iOS, the backingstore does not need to tie the resource allocation of QPlatformBackingStore to the global share context, but can instead tie them to the per-window context, and hence clean them up after each window is closed. Task-number: QTBUG-56653 Change-Id: Ic1bcae50dafeeafaa8d16a7febd83b840ec6367a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* macOS: Tighten up window icon and represented filename handlingTor Arne Vestbø2017-10-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Window icons on macOS are tied to document windows, and should not show up unless a represented filename has also been set according to the HIG. We follow this, and no longer create a document button based on the window title if one did no exists. We also fall back to using the filename of the file if a title has not been set, including being able to restore this default title after setting a custom title. The icon is no longer reset to nil after setting a QIcon(), which would remove the icon completely, but instead we restore the default behavior of showing the default filetype icon of the file. Finally, the two callbacks in QNSWindowDelegate dealing with the document icon/title popups and drags have been taught to look for spaces in the represented filename. This allows clients who really want the old behavior of setting an icon without caring about the filename to set the filename to a single space character, which will prevent the dropdowna and drag from occurring. The reason for not tying this behavior to the existence of the file in the filesystem is that being able to represent a file that is yet to be saved is a valid usecase. Task-number: QTBUG-63338 Change-Id: I7d4377c6358226fb6058f8c2b3c28588eec77ce5 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* The desktop is called Plasma nowAlbert Astals Cid2017-09-291-1/+1
| | | | | Change-Id: Ic07b45491a13bc4136e5259d45232297b7b25d8f Reviewed-by: David Faure <david.faure@kdab.com>
* Fix BIC issue with QNativeGestureEventJan Arve Saether2017-09-282-7/+16
| | | | | | | | Problem was for 32 bit macOS, or if QT_COORD_TYPE was configured to be float. Change-Id: I0a3d3d305f2e8a0f9be7c40f4fef7eabf4643d05 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Reset QWindowPrivate::platformWindow during destruction before deleting itTor Arne Vestbø2017-09-261-2/+7
| | | | | | | | | Otherwise the deletion of the platform window may result in platform events that then conclude the QWindow has a valid platform window and calls into it, when it's been half-way destroyed. Change-Id: If9eaad1b4e6aa414ba0f96475756a2146e0c01d5 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* QNativeGestureEvent: Fix documentationFriedemann Kleint2017-09-251-3/+10
| | | | | | | | | | Fix qdoc-warnings: src/gui/kernel/qevent.cpp:2772: warning: Undocumented parameter 'dev' in QNativeGestureEvent::QNativeGestureEvent() src/gui/kernel/qevent.cpp:2794: warning: No documentation for 'QNativeGestureEvent::device()' Change-Id: I845b0925ad4f1d8602455444ebbd4ec6320ebae7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Avoid window geometry jittering when changing geometry from JavaScriptRainer Keller2017-09-251-2/+2
| | | | | | | | | | | | | | | The QML API allowed only separate setting of geometry parameters which causes flickering when all parameters need to be changed. By exposing the setGeometry function it is possible to set all of these at once using an imperative setGeometry call from JavaScript. Note that bindings for x/y/width/height are still evaluated sequentially, resulting in four calls to the platform window's setGeometry. This patch only introduces an imperative workaround for that issue. Change-Id: Ie9b0d3c39434740e50757ba7cff0385ae80f47f4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* add back the device-less QNativeGestureEvent (deprecated)Shawn Rutledge2017-09-222-0/+16
| | | | | | | | | | It was an oversight in 83729ad7a1e2d9c75ddf7238ab7c91b514dcebcf that this constructor is still in use in other modules. And in fact we cannot remove public constructors without deprecating them first. Task-number: QTBUG-63355 Change-Id: I64dbf9bc54c0bf6be7157f047b548d3b2c5bc2ed Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* make the QTouchDevice available in each QNativeGestureEventShawn Rutledge2017-09-218-14/+36
| | | | | | | | | | | | | | QtQuick is beginning to have a use for this, to distinguish native gestures which come from actual trackpad rather than from the "core pointer". It might as well use a real device ID instead of making one up, as it has to do for the core pointer. So far on macOS, the device ID isn't a real one; but that can be fixed, as the qCDebug lines demonstrate (different trackpads have different IDs). Change-Id: I5841deb1c4cc0b77a3b1df70904f70b3d2d71853 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add QGuiApplication::screenAt()Tor Arne Vestbø2017-09-112-31/+34
| | | | | | | | | [ChangeLog][QtGui] It's now possible to retrieve the screen at a given point via QGuiApplication::screenAt(). Change-Id: Ic09514ec731d8cce5d453833e98fcd118a70600e Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
* Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-09-061-4/+4
|\ | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/qopenglwidget/main.cpp src/3rdparty/pcre2/src/pcre2_printint.c src/plugins/platforms/cocoa/qnsview.mm src/widgets/widgets/qcombobox.cpp Change-Id: I37ced9da1e8056f95851568bcc52cd5dc34f56af
| * Pass m_drag_icon_window to getNativeMousePos instead of Event QObjectÀlex Fiestas2017-09-041-4/+4
| | | | | | | | | | | | | | | | | | | | The QWindow passed to eventFilter is static so it might be in a different screen when we call getNativeMousePos, resulting in negative position and all sorts of glitches. Change-Id: Ibc848c6d85d8b6932ee379aa77851094212a0db2 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-311-0/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
| * QWidget: Call appropriate QWindow method from setGeometry_sys()Gabriel de Dietrich2017-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling resize() from showEvent(), we'd set the full geometry on the widget's QWindow. This resulted in the top-level window being moved to the top-left corner, even though no other call to move() or setGeometry() had happened before. The solution consists on calling the proper QWindow methods depending on whether setGeometry_sys() is called for a move, a resize or both. Furthermore, this needs QWindow::resize() to set its position policy to frame-exclusive. The documentation states that is already the case and we're setting the full geometry on the platform window, so we need to convey that bit of information. This also solves the age-old conundrum: "### why do we have isMove as a parameter?" Change-Id: I2e00fd632929ade14b35ae5e6495ed1ab176d32f Task-number: QTBUG-56277 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Block input to a window shown while an application modal dialog is visibleAndy Shaw2017-08-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | Although the window is refused input for the most part from the system, it does not act like that it is blocked by the application modal dialog. This ensures that it is the case and prevents things like being able to double click on the title bar to maximize the window on Windows. Task-number: QTBUG-49102 Change-Id: If1582819b90cb2ec9d891f664da24f13bfec7103 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Revert "macOS: Create NSView as initially hidden, to match QWindow behavior"Shawn Rutledge2017-08-181-8/+1
| | | | | | | | | | | | | | | | | | | | It seems to break the ability to grab an offscreen QQuickView. That in turn breaks the tst_qquickimage::hugeImages autotest. This reverts commit 096b56f336e5bb994d46f073d55496d36d38e6b1. Task-number: QTBUG-62548 Change-Id: I11ce452341bfc2cc3cbc832b613c7366049b31d5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-151-1/+1
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenu.h src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/cocoa/qcocoawindow.mm src/widgets/styles/qstylehelper_p.h Change-Id: I54247c98dd79d2b3826fc062b8b11048c9c7d9bb
| * Fix reset with qoffscreensurface destruction with multimonitor supportMäättä Antti2017-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The qoffscreensurface::setScreen crashes in create if application is closing. This happens in multimonitor setup when one of the screens is already destroyed and qoffscreensurface handles the screenDestroyed signal. In this case the QGuiApplication::primaryScreen returns non-null surface and selects the codepath that recreates the surface. The create function calls the qGuiApp->thread function, which crashes since the application instance has already been set to nullptr. Prevent this in qoffscreensurface by checking the application instance in the setScreen function. Task-number: QTBUG-62222 Change-Id: Ibb11a270c23a39e66009b45ab83dd7d47d5ccb1f Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | macOS: Create NSView as initially hidden, to match QWindow behaviorTor Arne Vestbø2017-08-111-1/+8
| | | | | | | | | | Change-Id: I25af6635ea9b6aa3fcc642fa2da0553341aabda8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | Add override keyword to QPlatformSurface derived classesJesus Fernandez2017-08-112-4/+4
| | | | | | | | | | Change-Id: I9ce58fb48fd41f4fc340188c1df358d9ef215c3f Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devThiago Macieira2017-08-081-2/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/kernel/qwidget.cpp This merge also extends the expected output of the pairdiagnostics teamcity output (added in dev in commit c608ffc56ab37f9a9d5b9c34543126adb89e2b08) after the recent addition of the flowId attribute to the teamcity output (commit 8f036562119dd35ce51dc9230304d893b906bd37 in 5.9). Change-Id: I3868166e5efc45538544fffd14d8aba438f9173c
| * QWindowSystemInterfacePrivate::toNativeTouchPoints(): Add missing scalingFriedemann Kleint2017-08-021-2/+2
| | | | | | | | | | | | | | | | Scale velocity and raw positions as does QWindowSystemInterfacePrivate::fromNativeTouchPoints(). Change-Id: I4c9e03e4c2f4ca807319b1a7d1f4a9e56a25b06c Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | xcb: don't rely on _NET_WORKAREA for available geometry on multi-head systemsGatis Paeglis2017-08-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On X11, QScreen::availableGeometry() is broken with multi-head systems, and there doesn't seem to be a real fix for this due to limitation in the protocol and therefore support in WMs (more details in the patch). In Gnome this issue is more visible because on this DE the _NET_WORKAREA rectangle represents the intersection of the available geometries on all monitors. This results in a big area of "dead space" on the secondary screen, when primary screen is positioned lower in the virtual space. If menu is opened by clicking in this dead space, the menu is awfully misplaced (qmenu uses availableGeometry() to calculate the position of menu). On Ubuntu with Unity (same is true for KDE Neon+Kwin and LUbuntu+Openbox), _NET_WORKAREA returns a bounding rectangle containing all monitors. Which does not cause the menu misplacement as "dead space" is outside clickable area. But this does not mean that the QScreen::availableGeometry() reported values are correct. With the same setup as described above, QScreen::availableGeometry() thinks that we have a tool panel on the right screen, when in reality it is on the left screen. AwesomeWM for example does not set _NET_WORKAREA at all, which means QScreen::availableGeometry() == QScreen::geometry(). I am not aware that it would cause any issues for popup/menu window positioning in Qt (Qt positions these windows manually by bypassing WM (via Qt::BypassWindowManagerHint) and using availableGeometry for calculations. With this patch, we would take the same code path as if _NET_WORKAREA was not set (where we know that_NET_WORKAREA is cleary wrong). The solution here is to recognize _NET_WORKAREA as true available geometry only in specific cases (cases where the meaning is cleary defined by the specification) and adjust the documentation accordingly. Not knowing the true available geometry on X11 is mitigated by WMs. Window manager can position windows as it wants. WMs are smart enough not to place windows on top of reserved areas at edges (even if user has explicitly requested this via setGeometry based on inaccurate information from availableGeometry()). [ChangeLog][Platform Specific Changes][Linux] The _NET_WORKAREA atom is used for calculating QScreen::availableGeometry() only on systems with one monitor. In all other cases QScreen::availableGeometry() is equal to QScreen::geometry(). To restore the legacy behavior with untrustworthy values in QScreen::availableGeometry() set QT_RELY_ON_NET_WORKAREA_ATOM=1 environment variable. Task-number: QTBUG-60513 Task-number: QTBUG-29278 Task-number: QTBUG-43768 Task-number: QTBUG-18380 Change-Id: I7e0f62f81d1444991b8a6c007c2527d8f96088c2 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devOswald Buddenhagen2017-08-021-4/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
| * Fix QHighDpi::fromNativeLocalExposedRegion rounding errorsTor Arne Vestbø2017-07-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling bottom/right/bottomRight on a QRect is discouraged, as it does not give the true bottom-right corner of the rectangle, instead giving a point one unit to the left and top of the true bottom right. Dividing this point by a scale factor of e.g. 2, and then using qCeil on the bottom right x and y coordinates would result in a pointRegion that was 1x1 * scaleFactor larger than it should, manifesting as rendering issues at later stages. We can get away from the whole problem by initially converting the QRect to a QRectF, and basing the pointRegion's rect on the scaled size instead of bottom-right coordinates. Change-Id: I4d4895660655cfa8749c93c7d2573ae79cd7898b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | doc: minor cleanup in QPlatformWindow::setGeometry()Gatis Paeglis2017-07-251-2/+3
| | | | | | | | | | | | | | | | | | | | This patch amends a4c8129. This is more consistent with other parts in QPlatformWindow docs. Change-Id: I26d7a91849f3fde3ab2a0f3c81e00a5f9c830707 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Add QPlatformWindow::initialize() for two-step window creationTor Arne Vestbø2017-07-173-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QWindow::create method calls createPlatformWindow, and assigns the result to d->platformWindow. If the platform sends any sort of events synchronously during the creation, the event will be delivered to a QWindow that doesn't have a handle() yet, resulting in noop handling of the event, or crashes. To mitigate this situations, platforms should do as little a possible in the QPlatformWindow constructor, and leave initialization to the new method, where the QWindow will have a handle(). The macOS platform plugin still has a m_initialized guard, to prevent sending geometry changes during initialization, as this will result in a resize event before a show event. This forced behavior seems dubious, but is left for a followup patch. Task-number: QTBUG-61977 Change-Id: I04d32d93391e89d068752b719270438e7024ad46 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Document expose event behaviorMorten Johan Sørvig2017-07-112-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | Document that "visible"-but-obscured windows may not get expose events for various audiences: QTestLib users, platform plugin authors and on the QExposeEvent itself. QWindow::exposeEvent() already has this documented and is not changed. Task-number: QTBUG-50414 Change-Id: I91042e8b1c70e48f10e692b2e80367d242a8ccbe Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Ensure all platforms send geometry events if request was not fulfilledTor Arne Vestbø2017-07-074-28/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic of deciding whether or not to send resize and move events has been centralized in QGuiApplication. This ensures that if a window with geometry 100,100+200x200 is moved and resized to e.g. 0,0+100x100, but the window manager denies the request (because the window would e.g. overlap with system UI), and issues a geometry update with the original geometry, 100,100+200x200, we will still treat that as warrant of a move/resize event to the application, so the application knows that its position and size is as before. [ChangeLog][Qt Gui][QPA] QWindowSystemInterfacePrivate::handleGeometryChange no longer takes the old geometry as an argument. Task-number: QTBUG-57608 Change-Id: I1d471cc7a257fef958bdb1e56184fa95489403a3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Relieve platform plugins of having to persist geometry on WM callbacksTor Arne Vestbø2017-07-072-4/+19
| | | | | | | | | | | | | | | | | | We can offload this to QGuiApplication, just like the geometry of the QWindow is set. This ensures that all platforms behave the same, and that the documentation of QPlatformWindow::setGeometry is adhered. Change-Id: I19dbc32cb4fb146d716ec289c28030a547d3afaa Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-07-048-34/+34
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qprocess_unix.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbwindow.cpp src/widgets/util/util.pri tests/auto/corelib/thread/qthread/qthread.pro tests/auto/corelib/thread/qthread/tst_qthread.cpp Change-Id: I5c45ab54d46d3c75a5c6c116777ebf5bc47a871b
| * Convert features.whatsthis to QT_[REQUIRE_]CONFIGStephan Binner2017-06-294-5/+5
| | | | | | | | | | | | | | Move feature definition to gui/configure.json Change-Id: I00b35c0e259d0a695d84a9bf6803eba74d41465a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.tabletevent to QT_CONFIGStephan Binner2017-06-286-17/+17
| | | | | | | | | | Change-Id: Ibd7ed7f269a64afddadee70979b20f1c58398378 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.wheelevent to QT_CONFIGStephan Binner2017-06-285-12/+12
| | | | | | | | | | Change-Id: I46083a9115c199d1ebe024ed5f64b160a27462f1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Remove requirement to call QWindow::setMask after creating windowTor Arne Vestbø2017-06-281-5/+2
| | | | | | | | | | | | | | | | | | | | | | Like other QWindow properties we can just store it, and the platform window should pick it up on creation like other properties. [ChangeLog][QtGui][QWindow] setMask() no longer requires the window to be created to have an effect; it can be set at any time. Change-Id: I55b616363801b770bd61bda5325b443013b99866 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | QKeySequence: let Private::decodeString() take QString by valueMarc Mutz2017-06-202-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | It calls toLower() on it, and the existence of two strings in scope has already caused some latent bug where sizes of the two were mixed. Taking by value means we can use the rvalue-version of toLower(). While that does not guarantee no allocations, we can make sure that at least in QKeySequence::assign(), we hand in unshared data, by using std::move(). Change-Id: Ic4a18486a6f4528eba36109dec1a47082cf57055 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Fix some qdoc warnings for 5.10Friedemann Kleint2017-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix comments for QRandomGenerator. src/corelib/io/qprocess.cpp:453: warning: Cannot find 'startDetached(...)' in '\fn' bool QProcessPrivate::startDetached(const QString &program, const QStringList &arguments, const QString &workingDirectory, qint64 *pid) src/corelib/tools/qstringiterator.qdoc:122: warning: Cannot find 'QStringIterator(...)' in '\fn' QStringIterator::QStringIterator(QStringView string, QStringView::size_type idx) src/corelib/global/qrandom.cpp:902: warning: Can't link to 'QRandomGenerator' src/sql/kernel/qsqlerror.cpp:123: warning: Unknown command '\other' src/network/kernel/qhostinfo.cpp:296: warning: Unknown command '\other' src/gui/kernel/qplatformcursor.cpp:97: warning: Cannot find 'QPlatformCursor::OverrideCursor' specified with '\enum' in any header file src/network/access/qnetworkreply.cpp:307: warning: Can't link to 'QNetworkAccessManager::setRedirectsPolicy()' src/network/access/qnetworkreply.cpp:307: warning: Can't link to 'QNetworkRequest::RedirectsPolicyAttribute' Change-Id: Ibc2455b1b657716dfb6192615738dc7f924dbab3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-06-192-1/+12
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qprocess_unix.cpp src/corelib/io/qprocess_win.cpp src/plugins/platforms/android/qandroidplatformintegration.h src/plugins/platforms/windows/qwindowscontext.cpp src/plugins/platforms/windows/windows.pri src/tools/uic/cpp/cppwriteinitialization.cpp src/widgets/doc/src/widgets-and-layouts/gallery.qdoc Change-Id: I8d0834c77f350ea7540140c2c7f372814afc2d0f
| * winrt: doc: Update platform limitations for UWPMaurice Kalinowski2017-06-141-0/+11
| | | | | | | | | | | | | | | | | | UWP only allows clipboard access when the app is active and has focus. Task-number: QTBUG-60900 Change-Id: Ia69642740d894106875cef77adf48e934bae9c87 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
| * QKeySequence: fix size mismatchMarc Mutz2017-06-081-1/+1
| | | | | | | | | | | | | | | | | | 'accel' is 'str.toLower()' and as such may have a different size, so don't use str.size() to index into 'accel'. Change-Id: I6a140ded45ecedd811b9618e1facb63d522eb235 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QPlatformCursor: Add functions for setting/clearing override cursorsFriedemann Kleint2017-06-133-4/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QPA is modeled on the assumption that the cursor is a property of the window and therefore sets the override cursors on all windows. However, on macOS and Windows, the cursor is set per application (or screen). On these platforms, the per window cursor setting needs to be emulated which is a source of bugs especially for override cursors. Add new virtuals to QPlatformCursor allowing to set override cursors which can be implemented by directly setting the cursor on those platforms. Task-number: QTBUG-40122 Task-number: QTBUG-61133 Change-Id: I31d6a927128d22bb1620a8ace35988c0e126236e Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | QKeySequence: remove a clause guarding an impossible conditionMarc Mutz2017-06-081-1/+0
| | | | | | | | | | | | | | | | | | | | | | All code paths leading up to this line unconditionally dereference the pointer, so it cannot be nullptr. Remove the check. It only confuses readers of the code and probably will trigger warnings with tomorrow's compilers. Change-Id: I31a643738e951da9c04f0091645016276b047761 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | qpa: start using QT_DEPRECATED_SINCE to increase visibilityGatis Paeglis2017-06-022-11/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... when platform plugins are using compatibility APIs. Even though QPA is not a public API and does not promise source/binary compatibility, we still try to not break things when possible. Eventually deprectated APIs will be dropped (e.g between major Qt versions). Having deprecation warnings here would help maintainers to notice API changes even before their code stops compiling due to removed QPA APIs. This will also ensure that we won't forget to remove compatibility APIs. Change-Id: If13786eb7d42a595708ace00b2ddea5209df18db Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-05-292-1/+15
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf mkspecs/common/msvc-desktop.conf mkspecs/win32-g++/qmake.conf mkspecs/win32-icc/qmake.conf src/platformsupport/fontdatabases/mac/coretext.pri src/plugins/platforms/cocoa/qcocoawindow.h src/plugins/platforms/cocoa/qcocoawindow.mm Change-Id: I74a6f7705c9547ed8bbac7260eb4645543e32655
| * HiDPI: Scale mouse position on enter eventBłażej Szczygieł2017-05-191-1/+2
| | | | | | | | | | | | Task-number: QTBUG-60892 Change-Id: If800ecaadc5b19c10a954658ece484f30b7f313f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QGuiApplication: Initialize and clear static variablesFriedemann Kleint2017-05-191-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running: tst_qapplication focusMouseClick touchEventPropagation produced: FAIL! : tst_QApplication::touchEventPropagation() 'window.seenMouseEvent' returned FALSE. () since QGuiApplicationPrivate::mouse_buttons was not cleared when destroying and re-instantiating QGuiApplication. Add more initialization and clear screen list on exit. Change-Id: I0d814852c362d4a86f1ff5d6a94ab00d32ed30b9 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | Add debug operators for QOpenGLVersionProfile QOpenGLContext(Group)Friedemann Kleint2017-05-172-0/+62
| | | | | | | | | | Change-Id: I2bf06761bc3a19aa1f0973d9b2f32cec4cbdca0c Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Make QWindow::setVisible() work for widgetsMorten Johan Sørvig2017-05-112-65/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWidget has its own setVisible() code that needs to be run in order to correctly transition widget visibility. It is desirable to be able to show and hide (native) widgets also from the QWindow side, for example from the platform plugin, or from generic QWindow handling code in QtGui. Add a new virtual QWindowPrivate::setVisible() and move the QWindow visibility implementation there. Subclasses can now override this function to add custom code. Make QWidgetPrivate::show/hide_sys() call the QWindowPrivate setVisible implementation instead of the QWindow setVisible public API. Change-Id: I082f174b100659e1221d5898b490f8a9f498abdf Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>