diff options
author | Richard Moe Gustavsen <richard.gustavsen@nokia.com> | 2010-08-04 12:13:17 (GMT) |
---|---|---|
committer | Richard Moe Gustavsen <richard.gustavsen@nokia.com> | 2010-08-06 06:42:20 (GMT) |
commit | ffec9a89c3407b1d176e4e0689c3ee3ce5ad5763 (patch) | |
tree | 2bb109ad014df8ebcd0542ede01c7d2983991f85 | |
parent | 548840aa9ef4428ee29cae145a179f8752ae8eb6 (diff) | |
download | Qt-ffec9a89c3407b1d176e4e0689c3ee3ce5ad5763.zip Qt-ffec9a89c3407b1d176e4e0689c3ee3ce5ad5763.tar.gz Qt-ffec9a89c3407b1d176e4e0689c3ee3ce5ad5763.tar.bz2 |
Cocoa: add better support for delayed message invocation
This patch will make it easier to call methods that takes
integer arguments. It will be used to bugfix native dialogs.
-rw-r--r-- | src/gui/kernel/qcocoaapplication_mac.mm | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gui/kernel/qcocoaapplication_mac.mm b/src/gui/kernel/qcocoaapplication_mac.mm index 238b96b..9270213 100644 --- a/src/gui/kernel/qcocoaapplication_mac.mm +++ b/src/gui/kernel/qcocoaapplication_mac.mm @@ -117,15 +117,19 @@ QT_USE_NAMESPACE quint64 lower = [event data1]; quint64 upper = [event data2]; QCocoaPostMessageArgs *args = reinterpret_cast<QCocoaPostMessageArgs *>(lower | (upper << 32)); + // Special case for convenience: if the argument is an NSNumber, we unbox it directly. + // Use NSValue instead if this behaviour is unwanted. + id a1 = ([args->arg1 isKindOfClass:[NSNumber class]]) ? (id)[args->arg1 intValue] : args->arg1; + id a2 = ([args->arg2 isKindOfClass:[NSNumber class]]) ? (id)[args->arg2 intValue] : args->arg2; switch (args->argCount) { case 0: [args->target performSelector:args->selector]; break; case 1: - [args->target performSelector:args->selector withObject:args->arg1]; + [args->target performSelector:args->selector withObject:a1]; break; case 3: - [args->target performSelector:args->selector withObject:args->arg1 withObject:args->arg2]; + [args->target performSelector:args->selector withObject:a1 withObject:a2]; break; } |