summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
* xcb: Remove unused QXcbNativeInterface::locateSystemTray()Alexander Volkov2018-07-102-21/+0
| | | | | | | It was forgotten to be removed in 8f9a72c39df46e94b38dd804b7cdffaed9f340b9. Change-Id: I028bea448a2c99cdbdfa0db07de2b1fcd50c93b2 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* QSystemTrayIcon/X11: Move platform-specific calls to the xcb pluginAlexander Volkov2018-07-108-130/+9
| | | | | | | | | | | | | | | | | | | | | - Detect the tray icon window in the platform plugin by the object name. This way we don't need QXcbWindowFunctions::requestSystemTrayWindowDockIdentifier(). - Get rid of unused calls QXcbIntegrationFunctions::xEmbedSystemTrayVisualHasAlphaChannel() and QXcbWindowFunctions::setParentRelativeBackPixmap(). - Mark the tray icon window as embedded to be able to get the correct result from QWindow::mapToGlobal(). It allows to drop QXcbWindowFunctions::systemTrayWindowGlobalGeometry(). This change allows to remove the intermediate level between the QSystemTrayIconSys widget and the xcb plugin. The code looks clearer. Change-Id: I7d067131287a6dec162b36f0bddc8cb518aaa38c Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* xcb: Fix artifacts on the tray background with lock screensAlexander Volkov2018-07-107-29/+260
| | | | | | | | | | | | | | | | | | | | | With the current method of painting the tray icon with 24 bpp visuals we grab the window's background once on the first show and then use it in all paint operations. This leads to a wrong background if an application shows the system tray icon when the lock screen is active. We can avoid this by painting with XRender when it's available. This change introduces QXcbSystemTrayBackingStore and moves the selection of a suitable painting method from QSystemTrayIconSys into it. In addition the visual for the window is selected according to the system tray specification and the platform window for the tray icon is created without needless OpenGL and Vulkan support. Task-number: QTBUG-55540 Change-Id: Ib3ca42bc02dcbdd4ccfe5d6e23f870ef22f0d25a Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* xcb: Set WM_CLIENT_MACHINE propertyAlexander Volkov2018-07-093-0/+9
| | | | | | | | | | | | | | | It can be useful to detect that a window belongs to an application running on a remote host. E.g. a window manager may display the name of the remote host in the window title. Or it can detect whether a client can be killed. This property is set by Xlib's function XSetWMProperties(), which is called by GTK and Qt 4, so it's also good to do for consistency. Change-Id: I0693156635cb2696b2fbe7006cbecb25d2680513 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* macOS: Remove dead updateRequest code based on setNeedsDisplayTor Arne Vestbø2018-07-093-38/+1
| | | | | | | We're no longer using this code path for QWindow::requestUpdate() Change-Id: I000304a4f1a6ea2c3a4e8268ae978dedd968e07c Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* macOS: Remove dead accessibility debug code in QNSViewTor Arne Vestbø2018-07-082-24/+0
| | | | | Change-Id: I00d7f59576d8315f47ea70404460a6e2d133dd1f Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Organize QNSView accessibility code like the rest of the classTor Arne Vestbø2018-07-083-18/+19
| | | | | | | Drive-by style-fixes were applied as well. Change-Id: I22c17925be41eeaac692ab776dd5b46791265cb3 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Add missing m_ prefix to QNSView currentWheelModifiers memberTor Arne Vestbø2018-07-082-5/+4
| | | | | Change-Id: I057db59797f1e18c3a8fc5386f7e1295fe352e02 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Remove unused QNSView member 'currentCustomDragTypes'Tor Arne Vestbø2018-07-082-26/+18
| | | | | Change-Id: Id2e37cc81c24edce37cac2bfa843ee669fd13d98 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Merge the two QNSView initializersTor Arne Vestbø2018-07-081-30/+22
| | | | | | | | We never call [QNSView init] directly, so there's no point in splitting up the logic. Change-Id: Ie40705a3a78c0d732a3f3378c6e8fa76dc6c68e7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Deliver update request via CVDisplayLink if swapInterval > 0Tor Arne Vestbø2018-07-074-4/+228
| | | | | | | | We use GCD for marshaling the display link update over to the main thread, as Qt requires that the update request is delivered there. Change-Id: I318a5b8f27dc5094ce71244401308a4044c41b39 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Move wantsBestResolutionOpenGLSurface logic to QNSView initializerTor Arne Vestbø2018-07-072-13/+12
| | | | | Change-Id: If9d76a8e82ce034eccc5130e036dfeae12377cac Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Remove explicit call to setWindowIcon in QCocoaWindow ctorTor Arne Vestbø2018-07-071-3/+1
| | | | | | | | | Window setup should happen in QCocoaWindow::recreateWindowIfNeeded(), and there we already call setWindowFilePath(), which takes care of setting the window icon. Change-Id: Iaa2f42c694cf8d251703cc56648e5819edd79bec Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* macOS: Remove declarative override of -[NSView wantsLayer]Alexandru Croitor2018-07-052-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | The -[NSView setWantsLayer:] method may have side effects that extend beyond just setting an internal boolean property, so we need to ensure it gets called. This was observed on e.g. macOS 10.12.5, where the method ends up creating the internal backing layer. On later macOS versions the method just emits KVO notifications for wantsLayer, but these may in turn result in similar logic being triggered. The issue was masked somewhat by AppKit itself calling the method from e.g. -[NSWindow setContentView:], so we still got the backing layer created. The problem appeared when running binaries built against an older SDK (10.6 in this case), which triggered AppKit to not call -[NSView setWantsLayer:], due to __NSViewLayerBackWindowFrame() in that case returning false. This change removes the overridden -[NSView wantsLayer], and replaces it with an explicit call to -[NSView setWantsLayer] when creating a new QNSView, essentially revering c8c8cc790a315710b0dae2282dc32. Task-number: PYSIDE-724 Task-number: PYSIDE-734 Change-Id: Idaff4ed38838311b37da4925b1eec241e077dbcc Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Make QQnxIntegration a singletonJames McDonnell2018-07-055-48/+50
| | | | | | | | | Turn all the static members and functions into regular members and functions. Change-Id: Ib37d9bdd1a84e512013af7d334e04cd2b1da640e Reviewed-by: Dan Cape <dcape@qnx.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* xcb: Refactor align of xcb eventsMikhail Svetkin2018-07-054-13/+5
| | | | | | | | | Use C++11 alignas instead of a union to pad the xcb_*_event. It allows using the struct directly without accessing a union member. Change-Id: I221a6708ef7af844bd6b71a57dcbab75e1319c72 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-07-0235-202/+378
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qnsview.mm src/plugins/platforms/cocoa/qnsview_dragging.mm src/plugins/platforms/ios/qiosinputcontext.mm src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/platforms/xcb/qxcbwindow.cpp src/tools/androiddeployqt/main.cpp Was moved from qttools into qtbase in 5.11. So re-apply 32398e4d here. tests/auto/corelib/global/qlogging/test/test.pro tests/auto/corelib/global/qlogging/tst_qlogging.cpp tests/auto/corelib/io/qfile/tst_qfile.cpp tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp tests/auto/corelib/thread/qthreadstorage/test/test.pro tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp tests/auto/widgets/kernel/qapplication/test/test.pro Done-with: Gatis Paeglis <gatis.paeglis@qt.io> Done-with: Mårten Nordheim <marten.nordheim@qt.io> Done-with: Oliver Wolff <oliver.wolff@qt.io> Change-Id: Id970486c5315a1718c540f00deb2633533e8fc7b
| * Fix automatic showing/hiding of the Windows 10 on-screen keyboardAndre de la Rocha2018-06-283-38/+74
| | | | | | | | | | | | | | | | | | | | | | | | The automatic showing/hiding of the built-in on-screen keyboard in touchscreen-based Windows computers, like the Microsoft Surface line, has stopped working after recent Windows updates. The OSK no longer seems to rely on UI Automation properties to detect text widgets. However, it can be triggered by showing an invisible caret. Task-number: QTBUG-68808 Change-Id: Ia604d21e314965dcdc61f1ced050cc3ed771f567 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * macOS: Guard non-reentrant uses of NSOpenGLContextTor Arne Vestbø2018-06-271-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NSOpenGLContext should be re-entrant, but is not in practice, resulting in deadlocks when there are two render threads, eg: thread #23, name = 'QSGRenderThread' frame #0: 0x00007fff5c6dda4e libsystem_kernel.dylib`__psynch_mutexwait + 10 frame #1: 0x00007fff5c8a5b9d libsystem_pthread.dylib`_pthread_mutex_lock_wait + 83 frame #2: 0x00007fff5c8a34c8 libsystem_pthread.dylib`_pthread_mutex_lock_slow + 253 frame #3: 0x00007fff31ebb52e AppKit`flush_notify + 110 frame #4: 0x00007fff3e75ee2a GLEngine`glSwap_Exec + 186 frame #5: 0x00007fff3e740797 OpenGL`CGLFlushDrawable + 59 frame #6: 0x00007fff31ad43ac AppKit`-[NSOpenGLContext flushBuffer] + 27 ... Task-number: QTBUG-69040 Change-Id: I6f28b4cc5faf61ae93f66353ce2abdf8c223d994 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Windows QPA/GL: Fix build with MinGW/g++ 8.1 x64Friedemann Kleint2018-06-263-25/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix warnings about invalid function type casts (return types conflicting with the PROC returned by wglGetProcAddress()) like: qwindowsglcontext.cpp:1250:138: error: cast between incompatible function types from 'PROC' {aka 'long long int (*)()'} to 'GLenum (*)()' {aka 'unsigned int (*)()'} [-Werror=cast-function-type] m_getGraphicsResetStatus = (GLenum (APIENTRY *)()) QOpenGLStaticContext::opengl32.wglGetProcAddress("glGetGraphicsResetStatusARB"); by introducing nested casts. Task-number: QTBUG-68742 Task-number: QTQAINFRA-2095 Change-Id: I7c51836f2b9f7e2a6fa17c5108d59b23c42fb99d Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
| * Do not update scroll coordinates on ignorable enter eventsAllan Sandfeld Jensen2018-06-221-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This greatly reduces how often we reset the scroll evaluators, especially with non-focused windows in KWin which sends an enter for every wheel events in that case. The update of the evaluators also has race conditions with the normal events, and thus reducing them fixes odd scrolling behavior with rapid firing mouse wheels. Task-number: QTBUG-42415 Task-number: QTBUG-68734 Change-Id: I1c14ca3352bf9c6e57e47ad3aaee1712fe6ba30b Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * Fix ico.json to avoid returning an empty mimetypeDavid Faure2018-06-221-1/+1
| | | | | | | | | | | | | | | | | | QImageWriter::supportedMimeTypes() had an empty mimetype name in the list because the mimetype for the key "cur" was missing in this json file. Change-Id: I4eae4275cb04c4d640dbcac76cd9dc99baa4f0a7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Recognize X11/XCB keysyms Undo, Redo, Find, CancelJonathan Marten2018-06-221-0/+7
| | | | | | | | | | | | | | | | | | Convert these keysyms into the corresponding Qt::Key_ enum values, so that they can be part of a QKeySequence and used by applications. Task-number: QTBUG-69062 Change-Id: I6f2e28191dd8dacd63d4bf710e1714fc5dcce75f Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * xcb: add qt.qpa.input.events logging of wheel eventsShawn Rutledge2018-06-211-0/+2
| | | | | | | | | | | | | | | | | | | | This is comparable to what we do on macOS, except that the scroll phase and inverted state are missing. Task-number: QTBUG-38570 Task-number: QTBUG-56075 Change-Id: I27502e1e2667317ab701f30f1fc601ae1e0591d0 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * Windows QPA: Fix crashes when processing native eventsFriedemann Kleint2018-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | Change a0a22037cdacbf51a2db560ff902a5a341561b15 wrongly introduced a level of indirection when passing the MSG * as void * to QWindowSystemInterface::handleNativeEvent() in QWindowsContext::filterNativeEvent(). Remove the indirection. Task-number: QTBUG-67095 Change-Id: Ibc2db7ae56bca38f79bafabfabb6127d6ff8cf09 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * Cocoa: handle WindowMaximizeButtonHint as wellMorten Johan Sørvig2018-06-211-0/+2
| | | | | | | | | | Change-Id: I6af265d48e83fc3fc0ce86903820c2b37db05f03 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Cocoa: Tool windows should always be resizableMorten Johan Sørvig2018-06-211-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Undocked dock windows have the following flags: Tool|X11BypassWindowManagerHint|WindowTitleHint| WindowSystemMenuHint|CustomizeWindowHint|WindowCloseButtonHint CustomizeWindowHint with no WindowMaximizeButtonHint means that we disable window resize in order to remove the zoom button (this is perhaps questionable, but is established behavior). That will however break dock windows: add exception for Qt::Tool. After refactoring we discover this special case, again. See previous fix in d37643c43. Change-Id: I67a09341e75b92fdb3108ea93901295c39107fe1 History-repeats: QTBUG-46882 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * cocoa: Don’t trigger security dialog on dragMorten Johan Sørvig2018-06-211-1/+5
| | | | | | | | | | | | | | | | | | macOS 10.14+ will display an “Accessibility Access” security dialog if we generate mouse events, so don’t. Task-number: QTBUG-68830 Change-Id: If832ca3cd49ec6bdad1a8188feab884b6562e9d2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * QWindowsFontDatabase/QWindowsXPStyle: Fix compilation with g++ 8.1/MinGWFriedemann Kleint2018-06-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Silence warnings about copying/clearing memory types which g++ considers non-trivial, for example: windows\qwindowsfontdatabase.cpp:1003:75: error: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'class QChar' from an array of 'const ushort' {aka 'const short unsigned int'} [-Werror=class-memaccess] memcpy(faceNamePtr, faceName.utf16(), sizeof(wchar_t) * nameLength); qwindowsxpstyle.cpp:946:46: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct ThemeMapData'; use assignment or value-initialization instead [-Werror=class-memaccess] memset(&data, 0, sizeof(data)); ^ qwindowsxpstyle.cpp:1053:38: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct ThemeMapData'; use assignment or value-initialization instead [-Werror=class-memaccess] memset(&data, 0, sizeof(data)); by introducing a cast. Task-number: QTBUG-68742 Task-number: QTQAINFRA-2095 Change-Id: I160eb5fc7b64a2bc404e1fa61d306af2662d1252 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * Merge remote-tracking branch 'origin/5.11.1' into 5.11Qt Forward Merge Bot2018-06-1918-126/+215
| |\ | | | | | | | | | Change-Id: I9a4571ccf826a86e055dfbba23b5e5cbd8ea55e8
| | * xcb: add QT_XCB_NO_MITSHM envvar for disabling MIT-SHM extensionGatis Paeglis2018-06-151-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We had something like this already in Qt4: QT_X11_NO_MITSHM The logic from 67227aeffdf94be8d177309d27291d5b3247586c not always works. There can still be cases that xcb_shm_attach_checked() returns with no errors on remote clients. Task-number: QTBUG-68783 Change-Id: Idd27ac66eb8f1114e3d1e1ddaaab2b00f235c561 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | * Access private properties via sandbox-safe API on Apple OSesTor Arne Vestbø2018-06-141-23/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We detect whether or not we're running inside a sandbox and bail out if so. We use runtime lookup of the property, so that static analysis of the application will not mistakenly think we're using the API in sandboxed situations. Change-Id: I5f5c42f5a4a44b62de061d945b62ac63167ece09 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| | * xcb: fix regression with remote X11 clientsGatis Paeglis2018-06-113-53/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were several issues here: We were attempting to use MIT-SHM functions over SSH connection, which is not supported. X server should detect this and return with an appropriate error message. It does actually return BadAccess for non-fd code path, but Qt was stubbornly trying to repeat this action and always falling back to malloc (during window resizing). For fd code path we were hitting X server bug, which would result in window freeze [1]. During the initialization we check if xcb_shm_attach_checked() fails, and disable MIT-SHM if it does. We use this logic to detect if we are running remotely, as there are no public APIs for it. This way we can avoid X server bug and avoid needless calling of code path which will _always_ fail on a remote X11 connection. [1] https://lists.x.org/archives/xorg-devel/2018-June/057011.html Task-number: QTBUG-68449 Task-number: QTBUG-68783 Change-Id: I7ab3dcf0f323fd53001b9f7b88c2cb10809af509 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| | * Revert "xcb: round down the scale factor for values < 0.8"Mitch Curtis2018-06-091-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 23b139038a1dc9a769a358ab112453abcdd39290. The commit causes a regression on Ubuntu where the DPI setting of the display is ignored. Task-number: QTBUG-68620 Change-Id: Id176f8cda0daef1755abb3aa9382476cc4ed7d71 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| | * xcb: fix mouse event compression with certain configurationsGatis Paeglis2018-06-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug was that we are accessing memory beyond 32 bytes. It is not safe to cast xcb_generic_event_t to Xlib's XI2 structs before we have memmoved bits to the expected layout (for details see QXcbConnection::xi2PrepareXIGenericDeviceEvent). We do this memmove later in the stack, when processing the XI2 events. Here at the compression step we can simply extract the necessary sourceId by reading the sourceId offset in the data. Task-number: QTBUG-68033 Change-Id: I6962bbb8f8b0834d6f780f62017fefa2de7f47df Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
| | * Merge 5.11 into 5.11.1Oswald Buddenhagen2018-06-074-11/+26
| | |\ | | | | | | | | | | | | Change-Id: I28f48e980a9e23ddde5251608dd9d1d83df65392
| | * | iOS: Guard all uses of APIs not available in application extensionsTor Arne Vestbø2018-06-0512-30/+88
| | | | | | | | | | | | | | | | | | | | Change-Id: Ic058a0c07f6cdd0a015f46db96fce1536a712711 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | * | macOS: Manually compute frame rect for zoomed/maximized stateTor Arne Vestbø2018-06-051-11/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot rely on AppKit to compute the zoomed frame for us, as it will not allow borderless windows to be zoomed, and also has bugs in corner cases with multiple screens, where the zoomed window jumps from the current screen to a nearby screen. The latter happens when the zoomed rect overlaps more with a nearby screen than it does with the current screen. In this case AppKit zooms the window on the nearby screen, but this is unexpected from the user's perspective, who zoomed the window on the current screen, so we make sure to always keep the window on the current screen by repositioning the window correspondingly. Task-number: QTBUG-67543 Change-Id: I8762c5cbf2e3b317a6caf11d820712596e15114a Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * | | ibase: Silence warning about incompatible function typesAndy Shaw2018-06-151-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This correctly silents the warning about incompatible function types, it amends the previous fix - 6108d8f515d7911427b764647f1d6ab487ad5203 Task-number: QTBUG-68330 Change-Id: I9eda42817740f491b16ac19c553f35fb1c7aa755 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
| * | | QNX: Add QQnxEglWindow::format() overloadTakumi ASAKI2018-06-081-0/+2
| | |/ | |/| | | | | | | | | | | | | | | | | | | QQnxEglWindow should return correct QSurfaceFormat. Task-number: QTBUG-64306 Change-Id: I3ba2a9d84f39af66c3b8f58ae3e26edc695f5612 Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
* | | xcb: move XSync extensions initialization to QXcbConnectionGatis Paeglis2018-06-286-18/+19
| | | | | | | | | | | | | | | | | | | | | | | | ... where we do initialization of all other extensions. Having this code in QXcbVirtualDesktop does not make sense. Change-Id: I3bf3034b4a24e06aa5792e7d49133f46c5728b07 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Fix minor stuff in Windows UI Automation supportAndre de la Rocha2018-06-2737-230/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | Adding missing "override" keywords in overridden interfaces, using "#if QT_CONFIG(accessibility)" instead of "#ifndef QT_NO_ACCESSIBILITY", and other minor bits. No change in behavior expected. Change-Id: Ief0e23cb7b577dd3e4af21750b6beccc80d6a2f8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | xcb: rely on WM_SIZE_HINTS gravity to handle x,y positioningGatis Paeglis2018-06-262-45/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original code was added by b316c3ac5e4acac75505bfd77677cecc181599a (in 2012). This patch changes two things: 1) We now rely on WM to position a window based on the set gravity. It should not be necessary to calculate coordinates manually as was done in windowToWmGeometry(). We don't even know the decoration size before the window is mapped. 2) We now update gravity whenever needed instead of hardcoding based on what Qt APIs (setGeometry vs setFramePosition) where used to set the initial window position. The patch from b316c3a says: "Determine gravity from initial position. Do not change later as it will cause the window to move uncontrollably" Since it did not elaborate on the situation, we can only assume that it was caused by another bug in Qt at the time or perhaps a broken WM. From [1]: "Applications are free to change their win_gravity setting at any time. If an Application changes its win_gravity then the Window Manager should adjust the reference point, so that the client window will not move as the result." Tested on Ubuntu/Unity, KDE/KWin, Gnome-shell/Mutter, Lubuntu/OpenBox. Works as expected everywhere expect Unity. Unity seems to ignore XCB_GRAVITY_STATIC and treats it as XCB_GRAVITY_NORTH_WEST, which means that setGeometry/setFramePosition produce the same placement on this WM (the behavior was the same also before this patch). P.S. Also renamed xRect -> rect, which was a leftover from ae5f2a66720a4bb22c120bd7d1564652cac00367 With this change we can un-blacklist QWidget save/restore geometry auto tests. [1] https://specifications.freedesktop.org/wm-spec/latest/ar01s09.html Task-number: QTBUG-66708 Change-Id: I381eef5d34dddb04de16a897ce5540b9c430b216 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
* | | dnd: send DragEnter and DragMove on DnD startGatis Paeglis2018-06-252-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was a regression from Qt4 and also is the documented behavior. In addition this patch fixes various issues with cursor shape updating that were discovered along the way and that are necessary for testing the new changes. The code in QGuiApplicationPrivate::processDrag() also needed a fixup, particularly the resetting of QGuiApplicationPrivate::currentDragWindow. Without this fix we would get DragMove (the one that immediately follows the DragEnter) only for the first DragEnter event. For example when dnd starts on mouse press then for mouse click we would get: <click> DragEnter->DragMove->DragLeave <click> DragEnter->DragLeave but the expected is: <click> DragEnter->DragMove->DragLeave <click> DragEnter->DragMove->DragLeave Task-number: QTBUG-34331 Change-Id: I3cc96c87d1fd5d1342c7f6c9438802ab30076e9e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | QByteArray: add compare() with case sensitivity optionsThiago Macieira2018-06-221-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Need to do the same for startsWith() and endsWith(). indexOf() is a lot harder. [ChangeLog][QtCore][QByteArray] Added compare(), which takes Qt::CaseSensitivity as one of the parameters. This function is more efficient than using toLower() or toUpper() and then comparing. Change-Id: Ib48364abee9f464c96c6fffd152e69bde4194df7 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | | xcb: add static overload for setting window nameGatis Paeglis2018-06-224-63/+40
| | | | | | | | | | | | | | | Change-Id: Ib581a582059e196567514f40b1964696ceaf3a88 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Build the Windows platform plugin with QT_NO_FOREACHJoerg Bornemann2018-06-227-15/+21
| | | | | | | | | | | | | | | | | | | | | ...for consistency with the other platform plugins. Change-Id: I85946d610a62c19140618c83f80c4aa63fce4bc3 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | xcb: account for misbehaving Unity DnD ManagerGatis Paeglis2018-06-223-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... which may cause dnd data to be lost. As soon as Unity sees that dnd operation has started (it monitors for changes on XdndSelection) it creates an invisible window named XdndCollectionWindowImp that fill entire screen and starts to act as DnD target. Once it has fetched the mime data it moves XdndCollectionWindowImp away without sending any DnD termination events. XdndCollectionWindowImp does not respect the XDnD protocol. Only when its gone we can start a normal dnd operation - looking for real DnD target. We ask windows if they are XdndAware on the initial mouse press and subsequent mouse move events. This patch sets a cursor to Qt::ForbiddenCursor while DnD is interfered by XdndCollectionWindowImp. A user will see the real DnD action (reflected by cursor) only after the next mouse move when XdndCollectionWindowImp has stopped interfering. We also setCanDrop(false) while DnD target is XdndCollectionWindowImp. Temporary seeing ForbiddenCursor is better than losing DnD data. Dropping in this state means that drop will simply be ignored. It is unclear what Unity developers expected DnD source window to do when user releases mouse while XdndCollectionWindowImp is stealing the data. Looking at Unity code, it appears that they were hoping to be quick enough that it would never happen. Task-number: QTBUG-49464 Change-Id: I10880073f6d843572be44fe9a3c4f78194466299 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | xcb: qxcbdrag.cpp cleanupsGatis Paeglis2018-06-224-154/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - moved finding of XdndAware target logic in its own function to reduce size of QXcbDrag::move(). - switched to use categorized logging with more consistent logging messages - added more comments to avoid constatly looking at the specification for the meanings of Xdnd* actions and who sends/receives the action. - removed dead code (findXdndAwareParent), which should have been removed in 269fdbdd2bedda5f5eacb751224d3a3fc3eed5bc when reimplementing this logic in XCB. - removed needless reseting of state variables in various places as this is handled in QXcbDrag::init() on DnD start. - renamed variable in QXcbDrag::dndEnable(): xdnd_widget -> window - and other minor cleanups Change-Id: Ib667f80ceb4c07b7409a90c041044c98665877f3 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Make sure we open native dialogs when opening folders inside sandboxJan Grulich2018-06-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | We have to take obsoleted QFileDialog::DirectoryOnly file mode option into account, because it is actually used, even internally in Qt when using static QFileDialog::getExistingDirectory() method. Change-Id: I6cdd35ae4724a1d889a0fb1c3555dc3ca4f3bf4d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>