summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/ios
Commit message (Collapse)AuthorAgeFilesLines
* iOS: Fix C++11 buildTor Arne Vestbø2013-12-211-1/+1
| | | | | Change-Id: Ib7dc8dcbeca7e85d97b8c7fb04d2cf42e5245298 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS has native windows but not window managementShawn Rutledge2013-12-161-0/+2
| | | | | | | | This will tell QtQuick.Dialogs not to use native windows for dialogs. Change-Id: Ie2e5878b84a9597e1f730d2cb1ebe2f59be6bc75 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Fix failing assert in QUIView displayLayer()Tor Arne Vestbø2013-12-111-3/+4
| | | | | | | | | | | | | In layoutSubviews we take the root viewcontroller position into account when determening the new QWindow geometry, but we were missing this logic in displayLayer, and would assert if the in-call statusbar was visible. Since we don't really need the position of the window in displayLayer, we change the assert to only check the size of the exposed area, which is independent of the position of the root viewcontroller. Change-Id: I774b8d9b075518e729f488a789b3a9e584c3f4d3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-12-058-25/+29
|\ | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-ios-clang/features/default_post.prf tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp Change-Id: Iaba97eed2272bccf54289640b8197d40e22f7bf5
| * iOS: move infoPlistValue to qiosglobalRichard Moe Gustavsen2013-12-043-7/+8
| | | | | | | | | | Change-Id: If237f08683290105413dc47923e23a496765bb22 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: don't show statusbar if hidden from Info.plistRichard Moe Gustavsen2013-12-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently there is no way to always hide the statusbar on iOS other than showing a window in fullscreen. This patch will check if the statusbar is (initially) hidden from the Info.plist, and respect that in the application. SubAttack is an example of an app that (because of styling issues with MainWindow margins) manually sets the geometry larger than fullsreen, and calls showNormal(). In that case we still want the statusbar to be hidden. Change-Id: Ia365d14971978360d0b39621ff0f8f82f74b57e2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: Handle statusbar changes to child windowsTor Arne Vestbø2013-12-043-6/+6
| | | | | | | | | | | | | | | | | | Going through the platform window failed when the parent wasn't created yet. We can still get the window state of an yet-to-be-created top level window. Change-Id: Iaa61ddc50df037ac0bd2fd0884884c2bfce1dd9a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: fix assert when using QOffscreenSurfaceRichard Moe Gustavsen2013-12-041-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt defaults to creating a QWindow as offscreen surface if QPlatformIntegration::createPlatformOffscreenSurface returns 0. Using an offscreen surface is often done in a background thread, which is problematic, since then a QIOSWindow will also be created in a background thread. According to Apple docs, working with a UIView from other threads than the main thread should not be done. In our case, we instead hit an assert in QApplication that checks for the same. As a quick fix for Qt 5.2, we remove the offending call that causes the assert, since we anyway will call the same function lazily when becoming first responder. Task-number: QTBUG-35378 Change-Id: Id35462f99783a9748c688b163f6497de9bfff73e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: Disable drag and drop completely instead of enabling simple d'n'dTor Arne Vestbø2013-12-041-0/+2
| | | | | | | | | | | | | | | | | | The drag and drop event filters do not play nicely with touch events or virtual keyboards. Task-number: QTBUG-35348 Change-Id: Id4d079ae72882f48750d394f13e10700d60e4532 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
| * iOS: fix crash when focusWindow changes while keyboard is openRichard Moe Gustavsen2013-12-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It turns out we cannot rely on QGuiApplication::focusWindow() to be non-zero at all times (e.g when pop-ups are closing etc). So instead use m_focusView.qwindow which points to a valid QWindow. This window is the same as QGuiApplication::focusWindow most of the time, except when a focus window closes. For those cases we get a new call to scrollRootView immediately after with m_focusView updated to reflect the new focusWindow. Task-number: QTBUG-35339 Change-Id: Icb3a8d3140af1f1904495a9289c8c26ab79e70f6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: fix crash when application quitsRichard Moe Gustavsen2013-12-041-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An application will sometimes crash if the keyboard is told to hide while the application is about to quit. This patch will ensure that we set m_qioswindow (and [UIView qwindow]) to 0 when the window is destroyed. We also check this pointer before telling QUIView to resign first responder when closing the keyboard. The latter will fix the crash. Task-number: QTBUG-35356 Change-Id: I934088beb7e877c5b33d96225cb215a8ffd4dbb2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: fix application hangs when opening keyboardRichard Moe Gustavsen2013-12-031-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QIOSInputContext controls QUIViews first responder status based on whether or not the keyboard should be open. But since QGuiApplication updates focusObject before focusWindow (when e.g a popup closes), we sometimes ended up activating the old window upon a call to becomeFirstResponder. This in turn led the application to hang because of recursive dependencies in qioscontext when the focus window changed. So the solution for now is to avoid activating the window when the view becomes first responder. This should be fine since we now activate the window from QIOSWindow::requestActivateWindow (ref: 6272a816d1) Task-number: QTBUG-35340 Change-Id: I3068c14fec18d84d4b0b348a043c4c054e366c75 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | iOS: Apply default geometry to platform window if not set on QWindowTor Arne Vestbø2013-12-051-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a platform window is created from a QWindow without setting a valid size or position on the QWindow, the platform window is expected to apply sane defaults. We use the baseclass initialGeometry() function for this, similar to other platform plugins. The default geometry unless otherwise set and/or calculated based on size hints is that of the screen's available geometry. An improvement to this is to detect whenever we apply the screen geometry, and also apply the appropriate window state, but that needs more testing. Change-Id: I02b12064ce6d55c04fe0cc2cd1d2816ca1113f40 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | iOS: Don't claim that windows with zero width and/or height are exposedTor Arne Vestbø2013-12-052-0/+7
| | | | | | | | | | | | | | | | | | | | | | When sending expose events to Qt, Qt will ask us if we're exposed, and we need to tell it that we're not, so that clients will not try to makeCurrent on a CA layer that has a zero width and/or height. Note that this only works because we flush expose events. Change-Id: Idfbe03a2f35681084061376a3c650a8da027fda4 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Use case insensitive comparison when checking platform plugin keys.Friedemann Kleint2013-12-031-1/+1
|/ | | | | | Change-Id: Iff44698dcc941ca244b476f0e6c6a993f2ad75f3 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* iOS: Update screen properties when we trigger statusbar changes on iOS7Tor Arne Vestbø2013-11-291-5/+14
| | | | | | | | | Ideally we'd have a callback from iOS when this happens, so we can also react to changes done outside of Qt, but willChangeStatusBarFrame and friends do not seem to give us what we want. Change-Id: I686ce7950395a83c4257372363c773a95c3935ed Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Forward [UIApplicationDelegate handleOpenURL:] to QDesktopServicesTor Arne Vestbø2013-11-293-0/+46
| | | | | | | | | | | | | | | | | | The user may use QDesktopServices::setUrlHandler() in combination with the appropriate Info.plist keys (CFBundleURLTypes, CFBundleURLSchemes) to react to URL requests from other applications. This is among other things useful for handling OAuth authentication from applications such as Dropbox. See: https://www.dropbox.com/developers/core/start/ios We protect against recursive URL opening, but an application may still redirect a request to open a URL by opening another URL, eg a website. Task-number: QTBUG-35201 Change-Id: I9f1d246206c5594b1b65bb11fa98c6bcdefc443e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Update statusbar visibility and screen properties before window geometryTor Arne Vestbø2013-11-252-8/+12
| | | | | | | | | | | | When setting a new window state. Otherwise we set the geometry based on the old screen properties, and then rely on the properties causing another window layout, which may not always happen. We also need to explicitly update the screen properties when the statusbar changes visibility, as there are no callbacks from iOS that consistently gives us that information. Change-Id: I1c3328aa3f34d294bc7db8884e611d205fd2c761 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Prefer window states over geometry-heuristics when laying out windowsTor Arne Vestbø2013-11-251-2/+6
| | | | | | | | | A window that was resized to the full screen size of the screen would otherwise always stay in full screen, even if the window state was maximized. Change-Id: I4720f7b6ad1d85658ea96c6da0515693e8c827f3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Don't warn about QBackingStore::resize() != window.size() for widgetsTor Arne Vestbø2013-11-251-1/+1
| | | | | | | | | | | QtWidgets uses stale geometry data to do its backingstore resizes in a lot of places, eg QWidgetPrivate::setGeometry_sys() and show_sys(). As the resize doesn't have any effect for our GL backingstore anyways we can skip the warning to keep console noise down. Change-Id: Ie578f7faf35985708fddd0bfca4a7080820192c5 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* iOS: Don't enable translucent statusbar for iOS6 on iPadsTor Arne Vestbø2013-11-251-2/+5
| | | | | | | It's only available on iPhone/iPods. Change-Id: I61b45c84ddb2b3db46fff36286a6582406fa7d26 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: close keyboard upon hitting key 'done'Richard Moe Gustavsen2013-11-251-1/+4
| | | | | Change-Id: I0098cc4d51ca600ba48baa15ed9c16e56529b947 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: update keyboard layout upon focus transferRichard Moe Gustavsen2013-11-252-2/+19
| | | | | | | | | | | | | | | | | | | | When iOS transfers focus from one view to another, it asks the new view for its UIKeyInput properties before deciding how the keyboard should be configured. For Qt, the same QUIView is used for the whole QWindow which means that UIKit will not change the keyboard configuration just because we change the focus object in Qt, since the UIView does not change. There seems to be no way to tell UIKit that the keyboard needs to change becuse the UIKeyInput properties has changed. To work around this, we briefly resign first responder status, and grabs it again, for the same QUIView. Change-Id: I2d15cc0c928deb023e7da58ad4669b7099dce2cf Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: add [QUIView updateTextInputTraits]Richard Moe Gustavsen2013-11-251-9/+43
| | | | | | | | | | Configure QUIView text input traits from IM hints returned by the focus object when the view becomes first responder. This will affect the layout of the virtual keyboard. Change-Id: Ib140ba69d01cc747f3ac3cdd70dd2e7daede26b0 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: don't loose precision when converting CG typesRichard Moe Gustavsen2013-11-254-15/+16
| | | | | | | | | CGRect and CGPoint consist of CGFloat variables. So we should convert to QRectF and QPointF rather than QRect and QPoint. Change-Id: I76f180e4064f54d5810c49b88fdbbcd914bdb686 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: don't scroll after inputItem has movedRichard Moe Gustavsen2013-11-252-0/+16
| | | | | | | | | | | | If the inputItem moves, it typically means that the user scrolls or flicks the focus item around. In that case we should avoid scrolling the screen, otherwise they will "cancel out" each other. Besides, when the user flicks, he takes control over the whereabouts on the screen anyway. Change-Id: Iad0762965f9dcdbcca934ce6d90a8c1413ce3ca2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: scroll screen when keyboard opensRichard Moe Gustavsen2013-11-253-14/+131
| | | | | | | | | This change will let QIOSInputContext scroll the root view when the virtual keyboard is open, so that the input cursor is not obscured. Change-Id: If0758f4bf04c2b8e554e0196451154def7e3cb86 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: decouple QIOSWindow and QIOSInputContextRichard Moe Gustavsen2013-11-243-5/+5
| | | | | Change-Id: I85dda6fc0c6d2d11709b8bcdc0de6c0cef42d40f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* iOS: Re-enable kEAGLDrawablePropertyRetainedBackingTor Arne Vestbø2013-11-221-1/+1
| | | | | | | | | | Having it disabled caused issues with our backing-store implementation, which assumes that the backing store is retained, but for us is backed by a GL context. Change-Id: I18d05e226c7cf949adcd3b71801ffd845fa6d83d Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Deliver resize events synchronously after setGeometry for QtWidgetsTor Arne Vestbø2013-11-221-0/+3
| | | | | | | | | | | | | | | | | QWidget::show_sys() assumes synchronous geometry behavior by trying to resize both the platform window and the backing store if the widget's view of what the geometry is doesn't match the platform window's. The problem with that is that it's the widget which is not up to date, not the window, as the widget is not waiting for resize events before applying any resize logic. Instead of trying to fix widgets, we throw our hands in the air and give QtWidgets the synchronous behavior it assumes from the platform. Change-Id: I1b9241b9b13df661dc7f41c4cb8ecd02f5572256 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Allow QBackingStore::flush() without beginPaint()Tor Arne Vestbø2013-11-221-3/+5
| | | | | | | | | The QBackingStore API doesn't require clients to precede flush() with a beginPaint() call, but our backingstore is backed by a GL context, so it's up to us to ensure it's current before swapping. Change-Id: Ia6119bf0e835448b1fd383d933df6f88fa4f298a Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* iOS: Fix build against iOS 5 SDK and auto-rotation on iOS 5Tor Arne Vestbø2013-11-221-0/+10
| | | | | Change-Id: I3acc2d3780a9440bedf48db3fed0046b06300b9e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Change show() to imply maximize, and showFullScreen() to hide status barTor Arne Vestbø2013-11-228-6/+109
| | | | | | | | | | | | Matches the Android behavior, and gives an easy and predictable way to show true fullscreen windows that is similar to how one would do it on a desktop platform. We keep the statusbar visibility in sync with the window state of the active window. Change-Id: Ia4b99e03f83e19f9ef56cc99b9d477cc6da4c734 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Take position of root viewcontroller into account for geometry changesTor Arne Vestbø2013-11-221-4/+26
| | | | | | | | | | | | When setting the geometry on our UIView, or when reporting it back to Qt in our layoutSubviews callback, we need to take into account that the root viewcontroller may be not be positioned at 0,0 in the screen's window. Even when using the wantsFullScreenLayout property of the view controller this may be the case on iOS7 when the in-call status-bar is visible. Change-Id: I0ca706c1c9aff8ba4f3b4ccdf83dba713bd5c9c2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Fix when and how we send geometry and expose eventsTor Arne Vestbø2013-11-221-13/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Geometry changes may come from Qt itself, or spontaneously from the windowing system. In both cases we deal with them through the layoutSubviews callback, which we now ensure gets called after we set a new geometry on the UIView frame, by using the setNeedsLayout message. We take care to persist the requested geometry from Qt immediately in our setGeometry() function, so that subsequent calls to QWindow::geometry() will report back the requested geometry. Clients can however not rely on this geometry until they've received a corresponding resize event, which we trigger from layoutSubviews. Since the new geometry reported in layoutSubviews may be different from what the user requested, we ensure to pass on both the new and the "old" geometry, so that Qt will send the appropriate resize and move events. Instead of building expose events on top of the existing layout mechanism provided by iOS, we hook into the more logical point, which is the display-phase. Since a EAGL view normally doesn't need to "display" anything this takes a few overrides on UIView. Once we have the hooks we need, we can distinguish between a QWindow backing needing layout, and needing displaying. Finally, we flush both the resize and expose events, as that's what iOS expects of us when asking us to layout or display. The result is that Qt is able to synchronously resize subwindows and prepare new GL rendering for the next frame. Change-Id: I4c03e3db3fe886163284ba1a342699e217e88cbb Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Use custom method to lay out windows instead of resizeMaximizedWindows()Tor Arne Vestbø2013-11-214-8/+41
| | | | | | | | | Since we guard against overriding the geometry in setGeometry() when a window has a window state, we need to use a custom method to lay out windows that calls applyGeometry() instead. Change-Id: I6508e6aac6746c024a6172f709b8339b35b40994 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Don't use auto resizing masks to deal with maximized/fullscreenTor Arne Vestbø2013-11-202-10/+20
| | | | | | | | | | | | It breaks down when the view-controller is fullscreen and we want to take statusbar height into account as well. Unfortunately we can't use constraints either, as it's iOS6+. The approach of managing the geometry manually is closer to what Android does as well. Change-Id: Ib521ba0f50b110c440ab68aacef5a524d5d41154 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Report native orientation of QScreen in relation to sizeTor Arne Vestbø2013-11-201-1/+3
| | | | | | | | Instead of hard-coding it to assume the properties of the main/device screen. Change-Id: I94c978d4334cae5be9d1094a0c315031e54e8e1f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Prepare platform screen for reacting to dynamic updates to propertiesTor Arne Vestbø2013-11-203-45/+45
| | | | | Change-Id: Idb378416da2b559ed88eb5a764cacff149264f70 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Allow non-top-level windows to be activatedTor Arne Vestbø2013-11-201-2/+4
| | | | | | | As tested and assumed by tst_QWindow::isActive(). Change-Id: I8d09263ce0acc9c3390a70b4089396257197a1be Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Don't keep around reference to a single QIOSViewControllerTor Arne Vestbø2013-11-207-20/+20
| | | | | | | | We might have more of them in a multi-screen setup or when implementing support for modal windows using sub-viewcontrollers. Change-Id: Ibe98273a13af981fffe2704a2c05bfd9d3f3e9e0 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Send expose events in the window's coordinate system, not the parent'sTor Arne Vestbø2013-11-201-1/+1
| | | | | | Change-Id: I4aa1a354ca14864bd9898ebd331871d7b32d3ae0 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* iOS: Don't enable kEAGLDrawablePropertyRetainedBackingTor Arne Vestbø2013-11-181-1/+1
| | | | | | | | | | | We report our swap-behavior as QSurfaceFormat::DoubleBuffer, which means there's no point in using retained backing. This was a left-over from when we reported single-buffered swaps, which didn't work to well as clients would wrongly assume swap was not needed at all. Change-Id: Id26df2f8b282892c720d48cfe85eb9e010f1500d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix jerky animations in Qt Quick for iOS.Gunnar Sletta2013-11-141-0/+2
| | | | | | | | | | This will make Qt Quick use consistent timing which prepares animation frames for the time they go to screen, rather than the current time at the time of the animation tick, which can be quite jerky in many situations. Change-Id: I1bbd4394db0c757553ee406d416fccb3ef937db8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* iOS: Enable clipping of subviews when QWindow has child windowsTor Arne Vestbø2013-11-141-0/+16
| | | | | | | | | | | | | QWindow::setParent() is documented to imply that the geometry of the window is in the parent's coordinate system and that the window is clipped to the parent. Instead of always enabling clipping of subviews for our UIView subclass we dynamically detect if we have QWindow children and enable/disable it on the fly. Change-Id: If83de94c55cbd19de401ab835e86bb7be5999d71 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Remove background color for UIWindow and UIViewController's root viewTor Arne Vestbø2013-11-142-12/+0
| | | | | | | | They were handy while debugging the iOS platform plugin, but should not affect users who link against debug libraries, so let's just remove them. Change-Id: I61b157e81130e5d951c22892e00f71e593082b1d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Get rid of separate release pool for QIOSScreenTor Arne Vestbø2013-11-141-4/+0
| | | | | | | | | We don't use separate pools anwyhere else, and this was copied straight from the UIKit plugin. Unless there's a good reason for having it in this particular place we should keep things consistent. Change-Id: I9a3f83bcc5894a2cdfd9af7818b46d6c0f8448da Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Tie QIOSContext FBOs to corresponding QPlatformWindow, not QWindowTor Arne Vestbø2013-11-144-8/+13
| | | | | | | | | | | | | | | | A QWindow may be created() and destroyed() multiple times in the lifetime of the window, each time resulting in a new platform window (QIOSWindow) being created. This QIOSWindow is backed by a new UIView each time, hence it needs a new FBO and renderbuffer-mapping, since the previous renderbuffer was mapped to the old UIView. This fixes a bug where a QWindow would not render after a destroy() unless it was resized (which triggered new FBO/renderbuffers). We need to inherit QObject so that we can watch the destroyed() signal. Change-Id: I93172dd6280b86b49755bf7abddf061d7e6b66f1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Handle key window as part of QWindow activationTor Arne Vestbø2013-11-142-1/+3
| | | | | | | | The default UIWindow may not be the only UIWindow around in a multi screen setup. Change-Id: Ia7243190321a1416e577634bf5e010dd67d482e6 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* iOS: Flesh out device-pixel-ratio handling in QIOSWindowTor Arne Vestbø2013-11-142-12/+11
| | | | | | | | | | We don't need to cache the device-pixel-ratio, as we can ask the UIView directly. We do need to set it though, as the default behavior of matching the screen scale does not apply for EAGL-backed views, but the ratio needs to match the current screen the view is on. Change-Id: I29e4a4fa4f4b767d86265ec899fb43a355b5c3a3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>