diff options
author | Liang Qi <liang.qi@qt.io> | 2016-09-21 08:50:26 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-09-21 09:11:02 +0200 |
commit | eaec2b664aa2c3cbca13b425901888468a4652a1 (patch) | |
tree | 93dbd19f3b538baa81dec6c04e5258161f7d8cfb /src/plugins/platforms/ios | |
parent | 278e557ceacbe7de728987a4a5365f78e56d76b1 (diff) | |
parent | 31c251765db45a068f1268027e5dd600151af1e5 (diff) |
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
src/gui/painting/qcoregraphics.mm
src/network/access/qnetworkrequest.h
src/plugins/platforms/cocoa/qcocoahelpers.mm
Change-Id: I81266414c06ea2edf63cbc7e93a86bd5d66a31a5
Diffstat (limited to 'src/plugins/platforms/ios')
20 files changed, 93 insertions, 24 deletions
diff --git a/src/plugins/platforms/ios/qiosbackingstore.mm b/src/plugins/platforms/ios/qiosbackingstore.mm index fb0c9805f9..357a3db3c9 100644 --- a/src/plugins/platforms/ios/qiosbackingstore.mm +++ b/src/plugins/platforms/ios/qiosbackingstore.mm @@ -49,6 +49,8 @@ #include <QtDebug> +QT_BEGIN_NAMESPACE + class QIOSPaintDevice : public QOpenGLPaintDevice { public: diff --git a/src/plugins/platforms/ios/qioscontext.mm b/src/plugins/platforms/ios/qioscontext.mm index 50374dc951..2d5286e971 100644 --- a/src/plugins/platforms/ios/qioscontext.mm +++ b/src/plugins/platforms/ios/qioscontext.mm @@ -48,6 +48,8 @@ #import <OpenGLES/ES2/glext.h> #import <QuartzCore/CAEAGLLayer.h> +QT_BEGIN_NAMESPACE + Q_LOGGING_CATEGORY(lcQpaGLContext, "qt.qpa.glcontext"); QIOSContext::QIOSContext(QOpenGLContext *context) @@ -314,3 +316,4 @@ bool QIOSContext::isSharing() const #include "moc_qioscontext.cpp" +QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosfiledialog.h b/src/plugins/platforms/ios/qiosfiledialog.h index 855bab0424..7fe24eaefe 100644 --- a/src/plugins/platforms/ios/qiosfiledialog.h +++ b/src/plugins/platforms/ios/qiosfiledialog.h @@ -43,10 +43,10 @@ #include <QtCore/qeventloop.h> #include <qpa/qplatformdialoghelper.h> -QT_BEGIN_NAMESPACE - Q_FORWARD_DECLARE_OBJC_CLASS(UIViewController); +QT_BEGIN_NAMESPACE + class QIOSFileDialog : public QPlatformFileDialogHelper { public: diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h index 50bedd7b28..f74e3004cc 100644 --- a/src/plugins/platforms/ios/qiosglobal.h +++ b/src/plugins/platforms/ios/qiosglobal.h @@ -74,6 +74,8 @@ QT_END_NAMESPACE + (id)currentFirstResponder; @end +QT_BEGIN_NAMESPACE + class FirstResponderCandidate : public QScopedValueRollback<UIResponder *> { public: @@ -84,4 +86,6 @@ private: static UIResponder *s_firstResponderCandidate; }; +QT_END_NAMESPACE + #endif // QIOSGLOBAL_H diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm index 7ca3c66971..1482ffc7af 100644 --- a/src/plugins/platforms/ios/qiosglobal.mm +++ b/src/plugins/platforms/ios/qiosglobal.mm @@ -114,6 +114,8 @@ int infoPlistValue(NSString* key, int defaultValue) return value ? [value intValue] : defaultValue; } +QT_END_NAMESPACE + // ------------------------------------------------------------------------- @interface QtFirstResponderEvent : UIEvent @@ -164,6 +166,8 @@ int infoPlistValue(NSString* key, int defaultValue) } @end +QT_BEGIN_NAMESPACE + FirstResponderCandidate::FirstResponderCandidate(UIResponder *responder) : QScopedValueRollback<UIResponder *>(s_firstResponderCandidate, responder) { diff --git a/src/plugins/platforms/ios/qiosinputcontext.h b/src/plugins/platforms/ios/qiosinputcontext.h index 2b0643f26e..9fdf021d07 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.h +++ b/src/plugins/platforms/ios/qiosinputcontext.h @@ -51,13 +51,13 @@ const char kImePlatformDataInputView[] = "inputView"; const char kImePlatformDataInputAccessoryView[] = "inputAccessoryView"; const char kImePlatformDataReturnKeyType[] = "returnKeyType"; -QT_BEGIN_NAMESPACE - @class QIOSLocaleListener; @class QIOSKeyboardListener; @class QIOSTextInputResponder; @protocol KeyboardState; +QT_BEGIN_NAMESPACE + struct KeyboardState { KeyboardState() : diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm index c6cbb9b101..68088540c6 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.mm +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -97,14 +97,14 @@ static QUIView *focusView() @interface QIOSKeyboardListener : UIGestureRecognizer <UIGestureRecognizerDelegate> { @private - QIOSInputContext *m_context; + QT_PREPEND_NAMESPACE(QIOSInputContext) *m_context; } @property BOOL hasDeferredScrollToCursor; @end @implementation QIOSKeyboardListener -- (id)initWithQIOSInputContext:(QIOSInputContext *)context +- (id)initWithQIOSInputContext:(QT_PREPEND_NAMESPACE(QIOSInputContext) *)context { if (self = [super initWithTarget:self action:@selector(gestureStateChanged:)]) { @@ -291,6 +291,8 @@ static QUIView *focusView() // ------------------------------------------------------------------------- +QT_BEGIN_NAMESPACE + Qt::InputMethodQueries ImeState::update(Qt::InputMethodQueries properties) { if (!properties) @@ -713,3 +715,5 @@ QLocale QIOSInputContext::locale() const { return QLocale(QString::fromNSString([[NSLocale currentLocale] objectForKey:NSLocaleIdentifier])); } + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosmessagedialog.h b/src/plugins/platforms/ios/qiosmessagedialog.h index 971c8d8b4d..e67e10a5e1 100644 --- a/src/plugins/platforms/ios/qiosmessagedialog.h +++ b/src/plugins/platforms/ios/qiosmessagedialog.h @@ -43,11 +43,11 @@ #include <QtCore/qeventloop.h> #include <qpa/qplatformdialoghelper.h> -QT_BEGIN_NAMESPACE - Q_FORWARD_DECLARE_OBJC_CLASS(UIAlertController); Q_FORWARD_DECLARE_OBJC_CLASS(UIAlertAction); +QT_BEGIN_NAMESPACE + class QIOSMessageDialog : public QPlatformMessageDialogHelper { public: diff --git a/src/plugins/platforms/ios/qiosplatformaccessibility.mm b/src/plugins/platforms/ios/qiosplatformaccessibility.mm index bc51850760..aef4216e03 100644 --- a/src/plugins/platforms/ios/qiosplatformaccessibility.mm +++ b/src/plugins/platforms/ios/qiosplatformaccessibility.mm @@ -65,7 +65,7 @@ void invalidateCache(QAccessibleInterface *iface) // when items get added or removed from the screen foreach (QWindow *win, QGuiApplication::topLevelWindows()) { if (win && win->handle()) { - QIOSWindow *window = static_cast<QIOSWindow*>(win->handle()); + QT_PREPEND_NAMESPACE(QIOSWindow) *window = static_cast<QT_PREPEND_NAMESPACE(QIOSWindow) *>(win->handle()); window->clearAccessibleCache(); } } diff --git a/src/plugins/platforms/ios/qiosscreen.h b/src/plugins/platforms/ios/qiosscreen.h index cc83e7f3d2..9fcce42825 100644 --- a/src/plugins/platforms/ios/qiosscreen.h +++ b/src/plugins/platforms/ios/qiosscreen.h @@ -68,6 +68,8 @@ public: Qt::ScreenOrientation orientation() const Q_DECL_OVERRIDE; void setOrientationUpdateMask(Qt::ScreenOrientations mask) Q_DECL_OVERRIDE; + QPixmap grabWindow(WId window, int x, int y, int width, int height) const override; + UIScreen *uiScreen() const; UIWindow *uiWindow() const; diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 7dd2ce7f6e..86bce0d70b 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -48,6 +48,7 @@ #include <QtCore/qoperatingsystemversion.h> #include <QtGui/private/qwindow_p.h> +#include <private/qcoregraphics_p.h> #include <sys/sysctl.h> @@ -176,6 +177,8 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen) // ------------------------------------------------------------------------- +QT_BEGIN_NAMESPACE + /*! Returns the model identifier of the device. @@ -458,6 +461,38 @@ void QIOSScreen::setOrientationUpdateMask(Qt::ScreenOrientations mask) } } +QPixmap QIOSScreen::grabWindow(WId window, int x, int y, int width, int height) const +{ + if (window && ![reinterpret_cast<id>(window) isKindOfClass:[UIView class]]) + return QPixmap(); + + UIView *view = window ? reinterpret_cast<UIView *>(window) : m_uiWindow; + + if (width < 0) + width = qMax(view.bounds.size.width - x, CGFloat(0)); + if (height < 0) + height = qMax(view.bounds.size.height - y, CGFloat(0)); + + CGRect captureRect = [m_uiWindow convertRect:CGRectMake(x, y, width, height) fromView:view]; + captureRect = CGRectIntersection(captureRect, m_uiWindow.bounds); + + UIGraphicsBeginImageContextWithOptions(captureRect.size, NO, 0.0); + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextTranslateCTM(context, -captureRect.origin.x, -captureRect.origin.y); + + // Draws the complete view hierarchy of m_uiWindow into the given rect, which + // needs to be the same aspect ratio as the m_uiWindow's size. Since we've + // translated the graphics context, and are potentially drawing into a smaller + // context than the full window, the resulting image will be a subsection of the + // full screen. + [m_uiWindow drawViewHierarchyInRect:m_uiWindow.bounds afterScreenUpdates:NO]; + + UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + return QPixmap::fromImage(qt_mac_toQImage(screenshot.CGImage)); +} + UIScreen *QIOSScreen::uiScreen() const { return m_uiScreen; diff --git a/src/plugins/platforms/ios/qiostextresponder.h b/src/plugins/platforms/ios/qiostextresponder.h index f7450df4c8..77be2cf2fe 100644 --- a/src/plugins/platforms/ios/qiostextresponder.h +++ b/src/plugins/platforms/ios/qiostextresponder.h @@ -42,19 +42,23 @@ #include <QtCore/qstring.h> #include <QtGui/qevent.h> +QT_BEGIN_NAMESPACE + class QIOSInputContext; +QT_END_NAMESPACE + @interface QIOSTextInputResponder : UIResponder <UITextInputTraits, UIKeyInput, UITextInput> { @private - QIOSInputContext *m_inputContext; - QInputMethodQueryEvent *m_configuredImeState; + QT_PREPEND_NAMESPACE(QIOSInputContext) *m_inputContext; + QT_PREPEND_NAMESPACE(QInputMethodQueryEvent) *m_configuredImeState; QString m_markedText; BOOL m_inSendEventToFocusObject; BOOL m_inSelectionChange; } -- (id)initWithInputContext:(QIOSInputContext *)context; +- (id)initWithInputContext:(QT_PREPEND_NAMESPACE(QIOSInputContext) *)context; - (BOOL)needsKeyboardReconfigure:(Qt::InputMethodQueries)updatedProperties; - (void)notifyInputDelegate:(Qt::InputMethodQueries)updatedProperties; diff --git a/src/plugins/platforms/ios/qiostextresponder.mm b/src/plugins/platforms/ios/qiostextresponder.mm index cd7945641e..3c95083e45 100644 --- a/src/plugins/platforms/ios/qiostextresponder.mm +++ b/src/plugins/platforms/ios/qiostextresponder.mm @@ -163,7 +163,7 @@ @implementation QIOSTextInputResponder -- (id)initWithInputContext:(QIOSInputContext *)inputContext +- (id)initWithInputContext:(QT_PREPEND_NAMESPACE(QIOSInputContext) *)inputContext { if (!(self = [self init])) return self; diff --git a/src/plugins/platforms/ios/qiosviewcontroller.h b/src/plugins/platforms/ios/qiosviewcontroller.h index 92c4e59d1a..f7b190ba22 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.h +++ b/src/plugins/platforms/ios/qiosviewcontroller.h @@ -38,12 +38,17 @@ ****************************************************************************/ #import <UIKit/UIKit.h> +#include <QtCore/QtGlobal> + +QT_BEGIN_NAMESPACE class QIOSScreen; +QT_END_NAMESPACE + @interface QIOSViewController : UIViewController -- (id)initWithQIOSScreen:(QIOSScreen *)screen; +- (id)initWithQIOSScreen:(QT_PREPEND_NAMESPACE(QIOSScreen) *)screen; - (void)updateProperties; #ifndef Q_OS_TVOS diff --git a/src/plugins/platforms/ios/qiosviewcontroller.mm b/src/plugins/platforms/ios/qiosviewcontroller.mm index c8c07bd298..72eb5e27a0 100644 --- a/src/plugins/platforms/ios/qiosviewcontroller.mm +++ b/src/plugins/platforms/ios/qiosviewcontroller.mm @@ -58,7 +58,7 @@ @interface QIOSViewController () { @public - QPointer<QIOSScreen> m_screen; + QPointer<QT_PREPEND_NAMESPACE(QIOSScreen)> m_screen; BOOL m_updatingProperties; QMetaObject::Connection m_focusWindowChangeConnection; } @@ -126,7 +126,7 @@ { Q_UNUSED(subview); - QIOSScreen *screen = self.qtViewController->m_screen; + QT_PREPEND_NAMESPACE(QIOSScreen) *screen = self.qtViewController->m_screen; // The 'window' property of our view is not valid until the window // has been shown, so we have to access it through the QIOSScreen. @@ -229,7 +229,7 @@ @implementation QIOSViewController -- (id)initWithQIOSScreen:(QIOSScreen *)screen +- (id)initWithQIOSScreen:(QT_PREPEND_NAMESPACE(QIOSScreen) *)screen { if (self = [self init]) { m_screen = screen; diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h index afc2f0f89d..81fad420f6 100644 --- a/src/plugins/platforms/ios/qioswindow.h +++ b/src/plugins/platforms/ios/qioswindow.h @@ -48,10 +48,10 @@ class QIOSContext; class QIOSWindow; -QT_BEGIN_NAMESPACE - @class QUIView; +QT_BEGIN_NAMESPACE + class QIOSWindow : public QObject, public QPlatformWindow { Q_OBJECT diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index cddfbe6b06..ae14d87a30 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -54,6 +54,8 @@ #include <QtDebug> +QT_BEGIN_NAMESPACE + QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[QUIView alloc] initWithQIOSWindow:this]) diff --git a/src/plugins/platforms/ios/quiaccessibilityelement.mm b/src/plugins/platforms/ios/quiaccessibilityelement.mm index 105d7cd65f..a26ba61b3c 100644 --- a/src/plugins/platforms/ios/quiaccessibilityelement.mm +++ b/src/plugins/platforms/ios/quiaccessibilityelement.mm @@ -63,7 +63,7 @@ QAccessibleCache *cache = QAccessibleCache::instance(); - QMacAccessibilityElement *element = cache->elementForId(anId); + QT_MANGLE_NAMESPACE(QMacAccessibilityElement) *element = cache->elementForId(anId); if (!element) { Q_ASSERT(QAccessible::accessibleInterface(anId)); element = [[self alloc] initWithId:anId withAccessibilityContainer: view]; diff --git a/src/plugins/platforms/ios/quiview.h b/src/plugins/platforms/ios/quiview.h index fdaae943d8..1500f0b41c 100644 --- a/src/plugins/platforms/ios/quiview.h +++ b/src/plugins/platforms/ios/quiview.h @@ -44,14 +44,18 @@ #include <qpa/qwindowsysteminterface.h> +QT_BEGIN_NAMESPACE + class QIOSWindow; +QT_END_NAMESPACE + @class QIOSViewController; @interface QUIView : UIView { @public - QIOSWindow *m_qioswindow; + QT_PREPEND_NAMESPACE(QIOSWindow) *m_qioswindow; @private QHash<UITouch *, QWindowSystemInterface::TouchPoint> m_activeTouches; int m_nextTouchId; @@ -60,7 +64,7 @@ class QIOSWindow; NSMutableArray *m_accessibleElements; }; -- (id)initWithQIOSWindow:(QIOSWindow *)window; +- (id)initWithQIOSWindow:(QT_PREPEND_NAMESPACE(QIOSWindow) *)window; - (void)sendUpdatedExposeEvent; - (BOOL)isActiveWindow; @end diff --git a/src/plugins/platforms/ios/quiview.mm b/src/plugins/platforms/ios/quiview.mm index 908c8b87f1..133269a0de 100644 --- a/src/plugins/platforms/ios/quiview.mm +++ b/src/plugins/platforms/ios/quiview.mm @@ -60,7 +60,7 @@ return [CAEAGLLayer class]; } -- (id)initWithQIOSWindow:(QIOSWindow *)window +- (id)initWithQIOSWindow:(QT_PREPEND_NAMESPACE(QIOSWindow) *)window { if (self = [self initWithFrame:window->geometry().toCGRect()]) m_qioswindow = window; @@ -525,7 +525,7 @@ - (QWindow *)qwindow { if ([self isKindOfClass:[QUIView class]]) { - if (QIOSWindow *w = static_cast<QUIView *>(self)->m_qioswindow) + if (QT_PREPEND_NAMESPACE(QIOSWindow) *w = static_cast<QUIView *>(self)->m_qioswindow) return w->window(); } return nil; |