From 3bac08c00fb411fe99c824a4e3bd9421cd6ccc27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 12 Jul 2017 15:18:45 +0200 Subject: macOS: Improve QDebug output for QNSView and QCocoaWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By printing the corresponding QPlatformWindow and QWindow for a given QNSView we make it easier to track issues regardless of which of the views/windows are being logged. Change-Id: I4a42eff7f87cf3c8e722cd6ad8baccd4eeab8eb3 Reviewed-by: Timur Pocheptsov Reviewed-by: Tor Arne Vestbø --- src/plugins/platforms/cocoa/qcocoawindow.h | 9 +++++++++ src/plugins/platforms/cocoa/qcocoawindow.mm | 17 +++++++++++++++++ src/plugins/platforms/cocoa/qnsview.mm | 16 ++++++++++++++++ 3 files changed, 42 insertions(+) (limited to 'src/plugins/platforms') diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 57e00e6bfe..4b616665f7 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -54,6 +54,11 @@ #include "qt_mac_p.h" QT_BEGIN_NAMESPACE + +#ifndef QT_NO_DEBUG_STREAM +class QDebug; +#endif + // QCocoaWindow // // QCocoaWindow is an NSView (not an NSWindow!) in the sense @@ -287,6 +292,10 @@ public: // for QNSView bool m_hasWindowFilePath; }; +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug debug, const QCocoaWindow *window); +#endif + QT_END_NAMESPACE #endif // QCOCOAWINDOW_H diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 72ae27cab7..46da26ce35 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -62,6 +62,8 @@ #include +QT_BEGIN_NAMESPACE + enum { defaultWindowWidth = 160, defaultWindowHeight = 160 @@ -1776,4 +1778,19 @@ void QCocoaWindow::setFrameStrutEventsEnabled(bool enabled) m_frameStrutEventsEnabled = enabled; } +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug debug, const QCocoaWindow *window) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug << "QCocoaWindow(" << (const void *)window; + if (window) + debug << ", window=" << window->window(); + debug << ')'; + return debug; +} +#endif // !QT_NO_DEBUG_STREAM + #include "moc_qcocoawindow.cpp" + +QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 49af4834b9..70d218aad3 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -221,6 +221,22 @@ static QTouchDevice *touchDevice = 0; return self; } +- (NSString *)description +{ + NSMutableString *description = [NSMutableString stringWithString:[super description]]; + +#ifndef QT_NO_DEBUG_STREAM + QString platformWindowDescription; + QDebug debug(&platformWindowDescription); + debug.nospace() << "; " << m_platformWindow << ">"; + + NSRange lastCharacter = [description rangeOfComposedCharacterSequenceAtIndex:description.length - 1]; + [description replaceCharactersInRange:lastCharacter withString:platformWindowDescription.toNSString()]; +#endif + + return description; +} + #ifndef QT_NO_OPENGL - (void) setQCocoaGLContext:(QCocoaGLContext *)context { -- cgit v1.2.3