diff --git a/ChangeLog b/ChangeLog index 63ec5e5cc..83bb22f1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-09-27 17:49 Alexander Malmberg + + * Source/GSServicesManager.m (NSPerformService): Check whether the + service provider is remote by checking the class of the object. + 2004-09-26 22:18 Alexander Malmberg * Source/NSTabViewItem.m (-drawLabel:inRect:): Adjust the label diff --git a/Source/GSServicesManager.m b/Source/GSServicesManager.m index e9a781714..918c6ae92 100644 --- a/Source/GSServicesManager.m +++ b/Source/GSServicesManager.m @@ -1497,7 +1497,19 @@ NSPerformService(NSString *serviceItem, NSPasteboard *pboard) * If the service provider is a remote object, we can set timeouts on * the NSConnection so we don't hang waiting for it to reply. */ - if ([provider isProxy] == YES) + /* + This check for a remote object is ugly. When GSListener is reworked, + this should be improved. + + For now, we can't use -isProxy since GSListener is a proxy, and we can't + use -isKindOfClass: since it gets forwarded. Fortunately, -class isn't + forwarded, so that's what we use. + + (Note, though, that we can't even use + [provider class] == [GSListener class] since [GSListener -class] returns + NULL instead of the real class.) + */ + if ([provider class] == [NSDistantObject class]) { NSConnection *connection;