Cocoa Helpers: Add qt_objc_cast() function
This generalizes what qnsview_cast() does to any Objective-C class. Notice that this is a loose cast, using isKindOfClass: instead of isMemberOfClass:. Change-Id: I745f548e474f2f9eef89f370d7d45496f0c51434 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>bb10
parent
2b40af7177
commit
f35f282c4f
|
|
@ -78,6 +78,16 @@ NSDragOperation qt_mac_mapDropActions(Qt::DropActions actions);
|
|||
Qt::DropAction qt_mac_mapNSDragOperation(NSDragOperation nsActions);
|
||||
Qt::DropActions qt_mac_mapNSDragOperations(NSDragOperation nsActions);
|
||||
|
||||
template <typename T>
|
||||
typename std::enable_if<std::is_pointer<T>::value, T>::type
|
||||
qt_objc_cast(id object)
|
||||
{
|
||||
if ([object isKindOfClass:[typename std::remove_pointer<T>::type class]])
|
||||
return static_cast<T>(object);
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
QT_MANGLE_NAMESPACE(QNSView) *qnsview_cast(NSView *view);
|
||||
|
||||
// Misc
|
||||
|
|
|
|||
|
|
@ -160,10 +160,7 @@ Qt::DropActions qt_mac_mapNSDragOperations(NSDragOperation nsActions)
|
|||
*/
|
||||
QNSView *qnsview_cast(NSView *view)
|
||||
{
|
||||
if (![view isKindOfClass:[QNSView class]])
|
||||
return nil;
|
||||
|
||||
return static_cast<QNSView *>(view);
|
||||
return qt_objc_cast<QNSView *>(view);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue