From cb299e33c8377efe7168ee8ee1729a02fe6ace80 Mon Sep 17 00:00:00 2001 From: wlux Date: Thu, 5 Nov 2009 21:56:42 +0000 Subject: [PATCH] Fix a regression in the alert sheet functions which has introduced a variant of #26101 where only one callback was used. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28959 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSAlert.m | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/ChangeLog b/ChangeLog index e6c6123f0..ed4d2ef05 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-11-05 Wolfgang Lux + + * Source/NSAlert.m (NSBeginAlertSheet, NSBeginCriticalAlertSheet, + NSBeginInformationalAlertSheet): Call the didEndSelector after the + sheet has been closed. + 2009-11-04 Fred Kiefer * Source/NSColor.m (GSRGBColor -getComponents:): Correct diff --git a/Source/NSAlert.m b/Source/NSAlert.m index cfead0a4d..1ea9ea67c 100644 --- a/Source/NSAlert.m +++ b/Source/NSAlert.m @@ -1547,6 +1547,13 @@ void NSBeginAlertSheet(NSString *title, contextInfo: contextInfo]; [panel close]; + if (modalDelegate && [modalDelegate respondsToSelector: didEndSelector]) + { + void (*didEnd)(id, SEL, id, int, void*); + didEnd = (void (*)(id, SEL, id, int, void*))[modalDelegate + methodForSelector: didEndSelector]; + didEnd(modalDelegate, didEndSelector, panel, [panel result], contextInfo); + } NSReleaseAlertPanel(panel); } @@ -1579,6 +1586,13 @@ void NSBeginCriticalAlertSheet(NSString *title, didEndSelector: willEndSelector contextInfo: contextInfo]; [panel close]; + if (modalDelegate && [modalDelegate respondsToSelector: didEndSelector]) + { + void (*didEnd)(id, SEL, id, int, void*); + didEnd = (void (*)(id, SEL, id, int, void*))[modalDelegate + methodForSelector: didEndSelector]; + didEnd(modalDelegate, didEndSelector, panel, [panel result], contextInfo); + } NSReleaseAlertPanel(panel); } @@ -1613,6 +1627,13 @@ void NSBeginInformationalAlertSheet(NSString *title, didEndSelector: willEndSelector contextInfo: contextInfo]; [panel close]; + if (modalDelegate && [modalDelegate respondsToSelector: didEndSelector]) + { + void (*didEnd)(id, SEL, id, int, void*); + didEnd = (void (*)(id, SEL, id, int, void*))[modalDelegate + methodForSelector: didEndSelector]; + didEnd(modalDelegate, didEndSelector, panel, [panel result], contextInfo); + } NSReleaseAlertPanel(panel); }