summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoawindow.mm
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/stable' into devSergio Ahumada2013-09-071-2/+4
|\ | | | | | | Change-Id: I9ee4176f0a0078908d49896508826154c9f71530
| * Cocoa: Unregister view from window's notifications onlyGabriel de Dietrich2013-09-041-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise the view will miss its own frame change notifications. And we must unregister from all the notifications during dealloc. This would also reveal a bug where we would expose an NSView before its super view is visible, leading to those "invalid drawable" warnings when using QQuickViews. Therefore, we add this extra check in QCocoaWindow::exposeWindow(). Task-number: QTBUG-32826 Change-Id: I69018cb6f199b242768d114b2aa34c7f2d243196 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Fix event delivery for apps with native widgets.Morten Johan Sørvig2013-09-041-0/+1
| | | | | | | | | | | | | | | | | | | | Native widgets, which have a NSView but not a NSWindow, must be created in the hidden state to prevent Cocoa from selecting them for event delivery. Change-Id: I741e52729047ad4e03959f2244abe5b14b5df46b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-271-1/+6
|\| | | | | | | | | | | | | Conflicts: examples/widgets/doc/src/addressbook-fr.qdoc Change-Id: Id1196e8e0c6445f1616c3f29234c974d809f8e48
| * Return 1.0 for devicePixelRatio in QCocoaWindow if no valid windowDaiwei Li2013-08-231-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | If m_window is invalid, devicePixelRatio returns 0, which leads to adverse effects in other parts of the code. For example, qquickshadereffectsource.cpp will get stuck in an infinite loop trying to multiply 0 by 2. Task-number: QTBUG-32975 Change-Id: Ie3db86f1f459df018ebce67bcb4226f6cffe854e Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-211-0/+3
|\| | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/src.pro Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
| * Cocoa: Set window title after setting window flags if window has borderDaiwei Li2013-08-151-0/+3
| | | | | | | | | | | | | | | | | | | | A QWindow should keep its title after removing and restoring the frame, so set it if we are setting window flags that include a frame. Task-number: QTBUG-32978 Change-Id: I0fe1b651eac05a210b06ec4f7f6fb78f2536834d Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-141-7/+12
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * OSX: do not force a plain window to be on the same level as its parentShawn Rutledge2013-08-021-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | 2af0a778f464980594c36098e4a8ba4448edfd29 the fix for QTBUG-27410 caused this Designer bug. Doing the automatic level escalation only for "special" windows and avoiding it for plain Qt::Window type windows is one way of fixing the Designer problem. Task-number: QTBUG-31779 Change-Id: I1da5454f31111f36480fac3b53be6d5f0ce40047 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Cocoa: Make sure that resizeEvent is invoked after calling resizeNils Jeisecke2013-07-301-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QWindow::resizeEvent documentation states that resizeEvent is invoked after the windowing system has acknowledged a setGeometry() or resize() request. The Cocoa plugin however did set the platform window geometry immediately so that the qnsview's updateGeometry returned too early. Task-number: QTBUG-32706 Change-Id: I1f359ab368833d174ab6740f4467b0848c290f13 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-271-0/+2
|\| | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/create_cmake.prf Change-Id: I94aea83b83833395d5db399209e0e51b92ef23b5
| * Mac/XCB/Windows: Fix initial setting of window icons.Friedemann Kleint2013-06-261-0/+2
| | | | | | | | | | | | | | | | | | | | Setting an icon on a QWindow before creating the platform window did not have any effect. Task-number: QTBUG-31961 Change-Id: I8e58a3b239c8bc69af58f765e7826337463d2201 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-201-1/+7
|\| | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp tools/configure/configureapp.cpp Change-Id: I3092bd3276af14304b7ab3ae1e1cc05d11cdede0
| * Cocoa: Make QWidget::showNormal() work on minimized windowsGabriel de Dietrich2013-06-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Cocoa sets the NSWindow hidden when it's minimized, and we don't propagate that further to QWindow or QWidget (QWidget's 'visible' documentation is quite ambiguous about that state). The obvious fix is to check for QWindow's visibility. However, this might need to be corrected later if we truly want the visible state to be in sync. Task-number: QTBUG-31117 Change-Id: I457452eff75e6ea746a0ef5351104f8bbb65f98b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| * Cocoa: Make sure we update internal window fullscreen stateGabriel de Dietrich2013-06-121-0/+6
| | | | | | | | | | | | | | | | | | | | | | We update the internal/synched state by assigning it its QWindow's state. Since that one is not a flag, it can only be in one state at a time, meaning that we may lose the maximized state (but we've been losing it for some time). Task-number: QTBUG-30139 Change-Id: Idf30713c6ae912cafe3bbdd7be18214cf4de34f7 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-041-9/+13
|\| | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.h src/plugins/platforms/cocoa/qnsview.mm Change-Id: I6fe345df5c417cb7a55a3f91285d9b47a22c04fa
| * QMenu: Remove last references to QMacWindowFaderGabriel de Dietrich2013-05-301-0/+3
| | | | | | | | | | | | | | | | | | It was never ported to Qt 5, and 10.7 has simple API for that. Task-number: QTBUG-31336 Change-Id: Ie00c4ed3af9cd098c9e63eba1c654f1801aa83aa Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Fix transparent toplevels on Mac OS X again..Gunnar Sletta2013-05-281-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're using QWindow::format() to decide opacity or not in a few places, but this used to resolve to QPlatformFormat::format() which would in turn return a default format without alpha set. Instead, return the format requested by the user. Masked windows were always broken as converting a 32-bit image to an Indexed8, doesn't give a grayscale image, but rather a randomly spreadout set of indices based on the colortable generated by the converToFormat function. Task-number: QTBUG-28531 Change-Id: I537288f85c70b1e6194785b9ebcb5ea1f9581cee Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Fix crash in QCococaWindow::childWindowAt().Friedemann Kleint2013-05-231-9/+5
| | | | | | | | | | | | | | | | Task-number: QTBUG-31297 Change-Id: I96f4652e410334fae54a0012ed917a965becfe5c Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-05-231-11/+42
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qdatastream.cpp src/corelib/io/qdatastream.h src/corelib/json/qjsonwriter.cpp src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbkeyboard.cpp Change-Id: I46fef1455f5a9f2ce1ec394a3c65881093c51b62
| * Cocoa: Amend 5d07a4d9448f60 to avoid an assert in QWidget::mapTo()Gabriel de Dietrich2013-05-231-1/+2
| | | | | | | | | | | | | | | | For now, we only call 'flushWindowSystemEvents()' for top-level QWindows. Change-Id: Ie6f6d3f9b70241820d9c38bcc0caf832d521268b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
| * Process initial expose events immediately.Morten Johan Sørvig2013-05-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Required to prevent qmlscene flicker on startup. Also brings back that qWait() in tst_QGL::graphicsViewClipping() that seems necessary after all. Amended-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Change-Id: I14ba6e18ac98e5df1ce8ecbc263b30176b67d111 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
| * Cocoa: Make sure main window gets focus after closing modal dialogGabriel de Dietrich2013-05-231-3/+15
| | | | | | | | | | | | | | | | | | | | As explained in the code, this is due to our event dispatcher. This could also make applications crash due to the way we bind windows to the menubar in the Cocoa QPA plugin. Task-number: QTBUG-30451 Change-Id: I6dd190d5b3b83f1216caec0b14414efa771634a5 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * A Dialog should not hide when the application is deactivatedShawn Rutledge2013-05-231-1/+3
| | | | | | | | | | | | | | | | To get this behavior, use Qt::Tool. Task-number: QTBUG-31133 Change-Id: I4811b5fe7e180a63bcdfe8018b35a56b370d9b61 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Ignore mouse enter/leave on non-exposed windowsShawn Rutledge2013-05-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you put two OpenGL widgets in two tabs, you will have several QNSViews on the Mac (because using OpenGL forces a lot of the widgets to be non-alien). The GL widget on the non-visible tab will not be exposed, but QCocoaWindow::childWindowAt is recursive and was returning the last window found which contained the mouse location; but the children are not reordered when switching tabs. It should ignore the invisible windows and report that the mouse entered the one which is visible. Task-number: QTBUG-30934 Change-Id: Iae28db56e15815671bf39e1b1f382c8c285532bd Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| * Prevent windows from jumping when changing geometry on OS XTor Arne Vestbø2013-05-151-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We were setting the frame origin and content size as two separate steps. The frame origin was asynchronous, while the content size was synchronous. This resulted in the window visually jumping/moving, instead of applying the new geometry in one single step. We now set both in one go using setFrame, by manually calculating the frameRectForContentRect. This makes the whole process asynchronous. Task-number: QTBUG-31039 Change-Id: Iaba46106b9f200c707507f330fa801c99e2e7d89 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Cocoa: Fix Open GL resolution in high-dpiGabriel de Dietrich2013-05-151-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | We permanently enable 'wantsBestResolutionOpenGLSurface' when creating an Open GL window/surface. We were enabling it once we would detect a high-dpi Cocoa backend, whitout ever turning it off. Leaving it 'on' on non-high-dpi displays should not change anything. Task-number: QTBUG-31000 Change-Id: I3d0c77f7b36f3c22dacd04a50fcc5a7d88af32c0 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
| * Revert "OSX: obey the Qt::WindowTransparentForInput flag"Gabriel de Dietrich2013-05-081-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 79e729e111dd799ddbe281aaddfbc0e1ec0e7bc0, which partially fixed QTBUG-30122 and will need to be reopened. On the Creator side, we think using the Qt::ToolTip flag is a bit unsafe since tooltips are supposed to have very limited interactivity. We would like to propose to use a similar pattern as in QComboBox instead. Task-number: QTBUG-30702 Change-Id: I245b7d8b16ac870564ea44f24f481ebfec8ca9a1 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Cocoa: Add support for ForeignWindow window typeGabriel de Dietrich2013-05-081-2/+9
| | | | | | | | | | | | | | Necessary to make QWindow::fromWinId() work on Mac. Change-Id: I0dc3a1b0d63cff61d484693aee711dc54fea6b2f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-04-291-6/+33
|\| | | | | | | Change-Id: I2a54058b64ac69c78b4120fdaf09b96e025a4c6c
| * Fix ignoring close events on OSXJosh Faust2013-04-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | QNSWindowDelegate was not handling windowShouldClose, which is how you can tell Cocoa that your window should not close if the close button is pressed. This change moves the close handling from windowWillClose to windowShouldClose, and adds an optional "accepted" pointer to QWindowSystemInterface::handleCloseEvent so that QNSWindowDelegate can return a true/false value for whether the window should actually close Task-number: QTBUG-28965 Change-Id: I67c6296ad42cbeeb71413e05411467d4e558adb4 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Don't use the SubWindow flag for windows embedded in foreign windowsShawn Rutledge2013-04-261-2/+9
| | | | | | | | | | | | | | | | | | Instead, add QCocoaWindow::setEmbeddedInForeignView which can be called via QPlatformNativeInterface::NativeResourceForIntegrationFunction Task-number: QTBUG-30805 Change-Id: I05861e80ca664ddb430216388cf0fec573a4d32b Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Cocoa: Fix disabled minimize button on main windowsGabriel de Dietrich2013-04-231-1/+1
| | | | | | | | | | | | | | | | Task-number: QTBUG-30775 Change-Id: Idec64f2cc6181e6889498171ead676d33c66e537 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Cocoa: Add setAlertState(), isAlertState(), beep() functionsGabriel de Dietrich2013-04-231-0/+18
| | | | | | | | | | | | | | | | Also, fix operator precedence error in QApplication::alert(). Change-Id: I140ccfba29638d24bc1c97f5f9a9611f66eb6b8f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Revert "Don't warn on 0x0 sized windows."Morten Johan Sørvig2013-04-221-1/+1
| | | | | | | | | | | | | | | | This reverts commit 88272d6c04f0f67fa9612dc7bdb2a5f8ba8d0314, which accidentally re-introduced a crash. Change-Id: Ie60bcf55f940b24f982eed4f20c6af3320b040a7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2013-04-261-3/+14
|\| | | | | | | refs/staging/dev
| * Cocoa: Disable QTBUG-30266 hack in full screenGabriel de Dietrich2013-04-191-1/+10
| | | | | | | | | | | | | | | | | | That would set the full screen window in a weird state, where is was full screen (but unable to exit that mode) and showing the title bar at the same time. Change-Id: I3ac913876f3b326504dd5af18c34181d002509d0 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Cocoa: Make sure no invisible proxy icon button is createdGabriel de Dietrich2013-04-161-0/+2
| | | | | | | | | | | | | | | | If the icon is null, don't force creation. Task-number: QTBUG-30064 Change-Id: If639714f667fedfcc67a3393a7d75111a7dbff3f Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
| * Don't warn on 0x0 sized windows.Morten Johan Sørvig2013-04-151-1/+1
| | | | | | | | | | | | | | | | I don't think this is an user error. If it is then the warning should be in a cross-platform code path. Change-Id: I4c615d9b2372660bb03b17ccb25204b2a8d17b1a Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
| * Cocoa: Enable touch on 0->1 counter transition.Morten Johan Sørvig2013-04-151-1/+1
| | | | | | | | | | Change-Id: I9d8fb84851a866c3020cbbca13d5b2dc297cfe65 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Guard usage of m_cocoaPlatformWindow.Morten Johan Sørvig2013-04-231-1/+4
|/ | | | | | | | | m_cocoaPlatformWindow is cleared when Qt is "done" with the QNSWindow or QNSPanel to prevent messages from Cocoa calling into possibly stale pointers. Change-Id: Id42b794fedbd3e597a0c4b50584cca976ba74c0f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* OSX window: set QWindow geometry after native window is createdShawn Rutledge2013-04-091-2/+1
| | | | | | | | | | | | | | | Initial window position is at 0,0 by default, then it's corrected in createNSWindow (by calling initialGeometry). After window creation, QNSWindowDelegate will receive the windowDidMove notification and call QCocoaWindow::windowDidMove() which then calls QNSView::updateGeometry(). It will not call QWindowSystemInterface::handleGeometryChange() because the window is still being constructed. So we can fix this by directly setting QWindow::geometry in the QCocoaWindow constructor. Task-number: QTBUG-30382 Change-Id: I3db7a6e83693e5787ae82dcab1767de938d2e5d1 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Mac: a dialog should have a titlebar by defaultShawn Rutledge2013-04-081-2/+5
| | | | | | | | Change 595deca5 for QTBUG-22316 resulted in having titlebars only on modal dialogs. Change-Id: Ic23c957e0e95cf567d90831e105cc402465df982 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Cocoa: Make touch events work again.Morten Johan Sørvig2013-03-261-0/+10
| | | | | | | | | | | | | | Bring back the ref-counted enable on enter/leave workaround we had in Qt 4: If any widget in a window sets WA_AcceptTouchEvents then that window will start processing touch events. Enabling touch events has implications for delivery of other events, for example by causing scrolling event lag. Change-Id: I307488937f417612eff624bf9892b82a7f69c1b7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Cocoa: Correct enter/leave event handling.Morten Johan Sørvig2013-03-261-0/+15
| | | | | | | | | | | | | | | | | | Make top-level windows generate enter/leave events for sub-windows. Keep track of the current "under mouse" window in mouseMoved and send EnterLeave events when it changes. mouseEntered/mouseExited handles enters and leaves from the top-level window. Add tests/manual/cocoa/nativewidgets. Task-number: QTBUG-27550 Task-number: QTBUG-29751 Change-Id: If4b9f9e0f39d9fb05fdab45a100ffdcf107965ad Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Call [m_qtView hasMask]Morten Johan Sørvig2013-03-241-1/+1
| | | | | | | | hasMask is a function on QNSView, m_contentView can be any NSView subclass. Change-Id: I88b5acbb8aad9aa4664e0f71f37add9dfa64f1b7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Implement [QNSView isOpaque]Morten Johan Sørvig2013-03-221-11/+10
| | | | | | | | | | | Re-use the QCocoaWindow implementation. This gives a small performance boost since NSWindow can skip drawing the background if it knows that the content view will fill with opaque pixels. Change-Id: I4a9a14135d890e9132dd1cb0af5a1c1a769d7e2f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* window should not be resizable while its transient popup is openShawn Rutledge2013-03-211-4/+11
| | | | | | | | | | | If a popup is transient for another window, the other window should not be resizable while the popup is open. (Resizing didn't close the popup, either.) The popup is emulated with an NSPanel rather than being a native popup, so we don't get this behavior for free. Task-number: QTBUG-30266 Change-Id: I49d04a095b428d169fe36ae1768c889578c3c054 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Merge branch 'dev' into stableOswald Buddenhagen2013-03-201-4/+29
|\ | | | | | | | | | | | | | | | | | | | | | | This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
| * OSX: obey the Qt::WindowTransparentForInput flagShawn Rutledge2013-03-191-0/+2
| | | | | | | | | | | | | | | | | | Ignoring the mouse means you don't get window enter/exit events for that window either. Task-number: QTBUG-30122 Change-Id: I979be9f72f7d225d7b960fc5db4c3956d2749982 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>