adium 2118:9fbe80565319: Added a suppression checkbox to ESTextA...

commits at adium.im commits at adium.im
Thu May 7 20:16:38 UTC 2009


details:	http://hg.adium.im/adium/rev/9fbe80565319
revision:	2118:9fbe80565319
author:		Frank <wixardy at gmail.com>
date:		Wed May 06 17:07:28 2009 -0400

Added a suppression checkbox to ESTextAndButtonsWindow and updated callbacks to handle the extra return value. Also changed the quit confirmation to use the suppression instead of a button.
Subject: adium 2119:a3f57ee18622: Make the alternate button the initial first responder. This and the previous commit [b83404abc6d6] fix #11170.

details:	http://hg.adium.im/adium/rev/a3f57ee18622
revision:	2119:a3f57ee18622
author:		Zachary West <zacw at adium.im>
date:		Thu May 07 16:16:04 2009 -0400

Make the alternate button the initial first responder. This and the previous commit [b83404abc6d6] fix #11170.

diffstat:

 Frameworks/AIUtilities Framework/Source/AIObjectAdditions.h                    |    1 +
 Frameworks/AIUtilities Framework/Source/AIObjectAdditions.m                    |   14 +
 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/classes.nib      |  325 ++++++--
 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/info.nib         |   10 +-
 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/keyedobjects.nib |      
 Frameworks/Adium Framework/Source/AIInterfaceControllerProtocol.h              |    4 +-
 Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.h           |    6 +-
 Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.m           |   40 +-
 Plugins/Dual Window Interface/AIMessageViewController.m                        |    1 -
 Plugins/Purple Service/ESPurpleJabberAccount.m                                 |    1 -
 Plugins/Purple Service/ESPurpleNotifyEmailController.m                         |    2 +-
 Plugins/Purple Service/ESPurpleRequestActionController.m                       |    2 +-
 Source/AIAdium.m                                                               |   77 +-
 Source/AIInterfaceController.m                                                 |    7 +-
 Source/ESFileTransferRequestPromptController.m                                 |    1 -
 Source/ESOTRUnknownFingerprintController.m                                     |    3 +-
 Source/GBFireLogImporter.m                                                     |   17 +-
 Source/GBQuestionHandlerPlugin.m                                               |   13 +-
 18 files changed, 349 insertions(+), 175 deletions(-)

diffs (935 lines):

diff -r 91299ee797cb -r a3f57ee18622 Frameworks/AIUtilities Framework/Source/AIObjectAdditions.h
--- a/Frameworks/AIUtilities Framework/Source/AIObjectAdditions.h	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/AIUtilities Framework/Source/AIObjectAdditions.h	Thu May 07 16:16:04 2009 -0400
@@ -37,6 +37,7 @@
 - (void)performSelector:(SEL)aSelector withObject:(id)argument1 withObject:(id)argument2 afterDelay:(NSTimeInterval)delay;
 
 - (void)performSelector:(SEL)aSelector withObject:(id)argument1 withObject:(id)argument2 withObject:(id)argument3 afterDelay:(NSTimeInterval)delay;
+- (void)performSelector:(SEL)aSelector withObject:(id)argument1 withObject:(id)argument2 withObject:(id)argument3;
 
 - (void)handleInvocation:(NSInvocation *)anInvocation;
 @end
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/AIUtilities Framework/Source/AIObjectAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIObjectAdditions.m	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/AIUtilities Framework/Source/AIObjectAdditions.m	Thu May 07 16:16:04 2009 -0400
@@ -247,6 +247,20 @@
 	[self performSelector:@selector(handleInvocation:) withObject:invocation afterDelay:delay];	
 }
 
+- (void)performSelector:(SEL)aSelector withObject:(id)argument1 withObject:(id)argument2 withObject:(id)argument3
+{
+	NSInvocation *invocation;
+	invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:aSelector]];
+	
+	[invocation setSelector:aSelector];
+	[invocation setArgument:&argument1 atIndex:2];
+	[invocation setArgument:&argument2 atIndex:3];
+	[invocation setArgument:&argument3 atIndex:4];
+	[invocation retainArguments];
+	
+	[self performSelector:@selector(handleInvocation:) withObject:invocation];	
+}
+
 - (void)handleInvocation:(NSInvocation *)anInvocation
 {
 	[anInvocation invokeWithTarget:self];
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/classes.nib
--- a/Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/classes.nib	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/classes.nib	Thu May 07 16:16:04 2009 -0400
@@ -1,95 +1,230 @@
-{
-    IBClasses =     (
-                {
-            CLASS = AILocalizationButton;
-            LANGUAGE = ObjC;
-            OUTLETS =             {
-                "view_anchorToLeftSide" = NSView;
-                "view_anchorToRightSide" = NSView;
-                "window_anchorOnLeftSide" = NSWindow;
-                "window_anchorOnRightSide" = NSWindow;
-            };
-            SUPERCLASS = NSButton;
-        },
-                {
-            ACTIONS =             {
-                closeWindow = id;
-            };
-            CLASS = AIWindowController;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSWindowController;
-        },
-                {
-            ACTIONS =             {
-                pressedButton = id;
-            };
-            CLASS = ESTextAndButtonsWindowController;
-            LANGUAGE = ObjC;
-            OUTLETS =             {
-                "button_alternate" = NSButton;
-                "button_default" = NSButton;
-                "button_other" = NSButton;
-                imageView = NSImageView;
-                "scrollView_message" = NSScrollView;
-                "scrollView_messageHeader" = NSScrollView;
-                target = id;
-                "textView_message" = NSTextView;
-                "textView_messageHeader" = NSTextView;
-                userInfo = id;
-            };
-            SUPERCLASS = AIWindowController;
-        },
-                {
-            CLASS = FirstResponder;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSObject;
-        },
-                {
-            CLASS = NSApplication;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSResponder;
-        },
-                {
-            CLASS = NSButton;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSControl;
-        },
-                {
-            CLASS = NSButtonCell;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSActionCell;
-        },
-                {
-            ACTIONS =             {
-                adiumPrint = id;
-                prefsWindowWillClose = "SS_PrefsController";
-            };
-            CLASS = NSObject;
-            LANGUAGE = ObjC;
-        },
-                {
-            CLASS = NSScrollView;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSView;
-        },
-                {
-            CLASS = NSWindow;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSResponder;
-        },
-                {
-            CLASS = NSWindowController;
-            LANGUAGE = ObjC;
-            SUPERCLASS = NSResponder;
-        },
-                {
-            CLASS = "SS_PrefsController";
-            LANGUAGE = ObjC;
-            OUTLETS =             {
-                delegate = id;
-            };
-            SUPERCLASS = NSObject;
-        }
-    );
-    IBVersion = 1;
-}
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBClasses</key>
+	<array>
+		<dict>
+			<key>CLASS</key>
+			<string>NSApplication</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSResponder</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>RBSplitView</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>OUTLETS</key>
+			<dict>
+				<key>delegate</key>
+				<string>id</string>
+			</dict>
+			<key>SUPERCLASS</key>
+			<string>RBSplitSubview</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>RBSplitSubview</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSView</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSMenu</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSWindowController</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSResponder</string>
+		</dict>
+		<dict>
+			<key>ACTIONS</key>
+			<dict>
+				<key>adiumPrint</key>
+				<string>id</string>
+				<key>didAdjustSubviews</key>
+				<string>RBSplitView</string>
+				<key>prefsWindowWillClose</key>
+				<string>SS_PrefsController</string>
+				<key>toggleFindPanel</key>
+				<string>id</string>
+				<key>willAdjustSubviews</key>
+				<string>RBSplitView</string>
+			</dict>
+			<key>CLASS</key>
+			<string>NSObject</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>AILocalizationButton</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>OUTLETS</key>
+			<dict>
+				<key>view_anchorToLeftSide</key>
+				<string>NSView</string>
+				<key>view_anchorToRightSide</key>
+				<string>NSView</string>
+				<key>window_anchorOnLeftSide</key>
+				<string>NSWindow</string>
+				<key>window_anchorOnRightSide</key>
+				<string>NSWindow</string>
+			</dict>
+			<key>SUPERCLASS</key>
+			<string>NSButton</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSWindow</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSResponder</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSScrollView</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSView</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSView</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSResponder</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>FirstResponder</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSCell</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSButton</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSControl</string>
+		</dict>
+		<dict>
+			<key>ACTIONS</key>
+			<dict>
+				<key>pressedButton</key>
+				<string>id</string>
+			</dict>
+			<key>CLASS</key>
+			<string>ESTextAndButtonsWindowController</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>OUTLETS</key>
+			<dict>
+				<key>button_alternate</key>
+				<string>NSButton</string>
+				<key>button_default</key>
+				<string>NSButton</string>
+				<key>button_other</key>
+				<string>NSButton</string>
+				<key>checkbox_suppression</key>
+				<string>NSButton</string>
+				<key>imageView</key>
+				<string>NSImageView</string>
+				<key>scrollView_message</key>
+				<string>NSScrollView</string>
+				<key>scrollView_messageHeader</key>
+				<string>NSScrollView</string>
+				<key>target</key>
+				<string>id</string>
+				<key>textView_message</key>
+				<string>NSTextView</string>
+				<key>textView_messageHeader</key>
+				<string>NSTextView</string>
+				<key>userInfo</key>
+				<string>id</string>
+			</dict>
+			<key>SUPERCLASS</key>
+			<string>AIWindowController</string>
+		</dict>
+		<dict>
+			<key>ACTIONS</key>
+			<dict>
+				<key>closeWindow</key>
+				<string>id</string>
+			</dict>
+			<key>CLASS</key>
+			<string>AIWindowController</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSWindowController</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSImageCell</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSCell</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSTextView</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSText</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>NSButtonCell</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>SUPERCLASS</key>
+			<string>NSActionCell</string>
+		</dict>
+		<dict>
+			<key>CLASS</key>
+			<string>SS_PrefsController</string>
+			<key>LANGUAGE</key>
+			<string>ObjC</string>
+			<key>OUTLETS</key>
+			<dict>
+				<key>delegate</key>
+				<string>id</string>
+			</dict>
+			<key>SUPERCLASS</key>
+			<string>NSObject</string>
+		</dict>
+	</array>
+	<key>IBVersion</key>
+	<string>1</string>
+</dict>
+</plist>
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/info.nib
--- a/Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/info.nib	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/info.nib	Thu May 07 16:16:04 2009 -0400
@@ -2,20 +2,18 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-	<key>IBDocumentLocation</key>
-	<string>69 103 356 240 0 0 1440 878 </string>
 	<key>IBFramework Version</key>
-	<string>482.0</string>
+	<string>677</string>
 	<key>IBLastKnownRelativeProjectPath</key>
-	<string>../../../../Adium.xcodeproj</string>
+	<string>../../../Adium.xcodeproj</string>
 	<key>IBOldestOS</key>
 	<integer>4</integer>
 	<key>IBOpenObjects</key>
 	<array>
-		<integer>72</integer>
+		<integer>67</integer>
 	</array>
 	<key>IBSystem Version</key>
-	<string>9B18</string>
+	<string>9G55</string>
 	<key>targetFramework</key>
 	<string>IBCocoaFramework</string>
 </dict>
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/keyedobjects.nib
Binary file Frameworks/Adium Framework/Resources/TextAndButtonsWindow.nib/keyedobjects.nib has changed
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Source/AIInterfaceControllerProtocol.h
--- a/Frameworks/Adium Framework/Source/AIInterfaceControllerProtocol.h	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIInterfaceControllerProtocol.h	Thu May 07 16:16:04 2009 -0400
@@ -324,10 +324,10 @@
 
 #pragma mark Question Display
 - (void)displayQuestion:(NSString *)inTitle withAttributedDescription:(NSAttributedString *)inDesc withWindowTitle:(NSString *)inWindowTitle
-		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton
+		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton suppression:(NSString *)inSuppression
 				 target:(id)inTarget selector:(SEL)inSelector userInfo:(id)inUserInfo;
 - (void)displayQuestion:(NSString *)inTitle withDescription:(NSString *)inDesc withWindowTitle:(NSString *)inWindowTitle
-		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton
+		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton suppression:(NSString *)inSuppression
 				 target:(id)inTarget selector:(SEL)inSelector userInfo:(id)inUserInfo;
 
 #pragma mark Synchronized Flashing
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.h
--- a/Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.h	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.h	Thu May 07 16:16:04 2009 -0400
@@ -38,6 +38,7 @@
 	IBOutlet	NSButton		*button_default;
 	IBOutlet	NSButton		*button_alternate;
 	IBOutlet	NSButton		*button_other;
+	IBOutlet	NSButton		*checkbox_suppression;
 
 	IBOutlet	NSImageView		*imageView;
 
@@ -45,6 +46,7 @@
 	NSString			*defaultButton;
 	NSString			*alternateButton;
 	NSString			*otherButton;
+	NSString			*suppression;
 	NSString			*messageHeader;
 	NSAttributedString	*message;
 	NSImage				*image;
@@ -59,6 +61,7 @@
 						  defaultButton:(NSString *)inDefaultButton
 						alternateButton:(NSString *)inAlternateButton
 							otherButton:(NSString *)inOtherButton
+							suppression:(NSString *)inSuppression
 							   onWindow:(NSWindow *)parentWindow
 					  withMessageHeader:(NSString *)inMessageHeader
 							 andMessage:(NSAttributedString *)inMessage
@@ -81,6 +84,7 @@
 			  defaultButton:(NSString *)inDefaultButton
 			alternateButton:(NSString *)inAlternateButton
 				otherButton:(NSString *)inOtherButton
+				suppression:(NSString *)inSuppression
 		  withMessageHeader:(NSString *)inMessageHeader
 				 andMessage:(NSAttributedString *)inMessage
 					  image:(NSImage *)inImage
@@ -98,6 +102,6 @@
 
 @interface NSObject (ESTextAndButtonsTarget)
 //Return YES to let the window close; NO not to let it close
-- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode userInfo:(id)userInfo;
+- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode suppression:(BOOL)suppression userInfo:(id)userInfo;
 @end
 
diff -r 91299ee797cb -r a3f57ee18622 Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.m
--- a/Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Frameworks/Adium Framework/Source/ESTextAndButtonsWindowController.m	Thu May 07 16:16:04 2009 -0400
@@ -53,6 +53,7 @@
 						  defaultButton:(NSString *)inDefaultButton
 						alternateButton:(NSString *)inAlternateButton
 							otherButton:(NSString *)inOtherButton
+							suppression:(NSString *)inSuppression
 							   onWindow:(NSWindow *)parentWindow
 					  withMessageHeader:(NSString *)inMessageHeader
 							 andMessage:(NSAttributedString *)inMessage
@@ -67,6 +68,7 @@
 					  defaultButton:inDefaultButton
 					alternateButton:inAlternateButton
 						otherButton:inOtherButton
+						suppression:inSuppression
 				  withMessageHeader:inMessageHeader
 						 andMessage:inMessage
 							  image:inImage
@@ -101,6 +103,7 @@
 									 defaultButton:inDefaultButton
 								   alternateButton:inAlternateButton
 									   otherButton:inOtherButton
+									   suppression:nil
 										  onWindow:parentWindow
 								 withMessageHeader:inMessageHeader
 										andMessage:inMessage
@@ -140,6 +143,7 @@
 			  defaultButton:(NSString *)inDefaultButton
 			alternateButton:(NSString *)inAlternateButton
 				otherButton:(NSString *)inOtherButton
+				suppression:(NSString *)inSuppression
 		  withMessageHeader:(NSString *)inMessageHeader
 				 andMessage:(NSAttributedString *)inMessage
 					  image:(NSImage *)inImage
@@ -150,6 +154,7 @@
 	[defaultButton release];
 	[alternateButton release];
 	[otherButton release];
+	[suppression release];
 	[messageHeader release];
 	[message release];
 	[target release];
@@ -160,6 +165,7 @@
 	defaultButton = [inDefaultButton retain];
 	alternateButton = ([inAlternateButton length] ? [inAlternateButton retain] : nil);
 	otherButton = ([inOtherButton length] ? [inOtherButton retain] : nil);
+	suppression = ([inSuppression length] ? [inSuppression retain] : nil);
 	messageHeader = ([inMessageHeader length] ? [inMessageHeader retain] : nil);
 	message = [inMessage retain];
 	target = [inTarget retain];
@@ -230,6 +236,7 @@
 			//Notify the target that the window closed with no response
 			[target textAndButtonsWindowDidEnd:[self window]
 									returnCode:AITextAndButtonsClosedWithoutResponse
+								   suppression:checkbox_suppression.state
 									  userInfo:userInfo];
 		} else {
 			//Don't allow the close
@@ -346,14 +353,6 @@
 		messageHeightChange = [textView_message frame].size.height - [scrollView_message documentVisibleRect].size.height;
 		heightChange += messageHeightChange;
 
-		/* distanceFromBottomOfMessageToButtons pixels from the original bottom of scrollView_message to the
-		 * proper positioning above the buttons; after that, the window needs to expand.
-		 */
-		if (heightChange > distanceFromBottomOfMessageToButtons) {
-			windowFrame.size.height += (heightChange - distanceFromBottomOfMessageToButtons);
-			windowFrame.origin.y -= (heightChange - distanceFromBottomOfMessageToButtons);
-		}			
-
 		NSRect	messageFrame = [scrollView_message frame];
 		messageFrame.origin.y -= heightChange;
 		if (messageHeightChange > 0) {
@@ -364,6 +363,26 @@
 		[scrollView_message setNeedsDisplay:YES];
 	}
 	
+	if (suppression) {
+		NSRect	optionFrame = [checkbox_suppression frame];
+		optionFrame.origin.y -= heightChange;
+		heightChange += optionFrame.size.height;
+		
+		[checkbox_suppression setFrame:optionFrame];
+		[checkbox_suppression setTitle:suppression];
+		[checkbox_suppression setState:NSOffState];
+	} else {
+		[checkbox_suppression setHidden:YES];
+	}
+	
+	/* distanceFromBottomOfMessageToButtons pixels from the original bottom of scrollView_message to the
+	 * proper positioning above the buttons; after that, the window needs to expand.
+	 */
+	if (heightChange > distanceFromBottomOfMessageToButtons) {
+		windowFrame.size.height += (heightChange - distanceFromBottomOfMessageToButtons);
+		windowFrame.origin.y -= (heightChange - distanceFromBottomOfMessageToButtons);
+	}
+	
 	//Set the default button
 	NSRect newFrame, oldFrame;
 	oldFrame = [button_default frame];
@@ -467,8 +486,9 @@
 
 	//Notify the target
 	if ([target textAndButtonsWindowDidEnd:[self window]
-							   returnCode:returnCode
-								 userInfo:userInfo]) {
+								returnCode:returnCode
+							   suppression:checkbox_suppression.state
+								  userInfo:userInfo]) {
 		
 		//Close the window if the target returns YES
 		[self closeWindow:nil];
diff -r 91299ee797cb -r a3f57ee18622 Plugins/Dual Window Interface/AIMessageViewController.m
--- a/Plugins/Dual Window Interface/AIMessageViewController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Plugins/Dual Window Interface/AIMessageViewController.m	Thu May 07 16:16:04 2009 -0400
@@ -40,7 +40,6 @@
 #import <Adium/AIMetaContact.h>
 #import <Adium/AIListObject.h>
 #import <Adium/AIListOutlineView.h>
-#import <Adium/ESTextAndButtonsWindowController.h>
 #import <Adium/AIServiceIcons.h>
 
 #import <AIUtilities/AIApplicationAdditions.h>
diff -r 91299ee797cb -r a3f57ee18622 Plugins/Purple Service/ESPurpleJabberAccount.m
--- a/Plugins/Purple Service/ESPurpleJabberAccount.m	Thu May 07 12:29:45 2009 -0400
+++ b/Plugins/Purple Service/ESPurpleJabberAccount.m	Thu May 07 16:16:04 2009 -0400
@@ -26,7 +26,6 @@
 #import <Adium/AIStatus.h>
 #import <Adium/AIStatusIcons.h>
 #import <Adium/ESFileTransfer.h>
-#import <Adium/ESTextAndButtonsWindowController.h>
 #import <Adium/AIService.h>
 #import <AIUtilities/AIApplicationAdditions.h>
 #import <AIUtilities/AIAttributedStringAdditions.h>
diff -r 91299ee797cb -r a3f57ee18622 Plugins/Purple Service/ESPurpleNotifyEmailController.m
--- a/Plugins/Purple Service/ESPurpleNotifyEmailController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Plugins/Purple Service/ESPurpleNotifyEmailController.m	Thu May 07 16:16:04 2009 -0400
@@ -191,7 +191,7 @@
 /*!
  * @brief Window was closed, either by a button being clicked or the user closing it
  */
-+ (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode userInfo:(id)userInfo
++ (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode suppression:(BOOL)suppression userInfo:(id)userInfo
 {
 	switch (returnCode) {
 		case AITextAndButtonsAlternateReturn:
diff -r 91299ee797cb -r a3f57ee18622 Plugins/Purple Service/ESPurpleRequestActionController.m
--- a/Plugins/Purple Service/ESPurpleRequestActionController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Plugins/Purple Service/ESPurpleRequestActionController.m	Thu May 07 16:16:04 2009 -0400
@@ -115,7 +115,7 @@
 	[super dealloc];
 }
 
-- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode userInfo:(id)userInfo
+- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode suppression:(BOOL)suppression userInfo:(id)userInfo
 {
 	GCallback		*theCallBacks;
 	unsigned int	actionCount;
diff -r 91299ee797cb -r a3f57ee18622 Source/AIAdium.m
--- a/Source/AIAdium.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/AIAdium.m	Thu May 07 16:16:04 2009 -0400
@@ -289,7 +289,7 @@
 	
 	switch (confirmationType) {
 		case AIQuitConfirmAlways:
-			questionSelector = @selector(confirmQuitQuestion:userInfo:);
+			questionSelector = @selector(confirmQuitQuestion:userInfo:suppression:);
 			
 			allowQuit = NSTerminateLater;
 			break;
@@ -297,15 +297,15 @@
 		case AIQuitConfirmSelective:
 			if ([chatController unviewedContentCount] > 0 && confirmUnreadMessages) {
 				questionToAsk = AILocalizedString(@"You have unread messages.",@"Quit Confirmation");
-				questionSelector = @selector(unreadQuitQuestion:userInfo:);
+				questionSelector = @selector(unreadQuitQuestion:userInfo:suppression:);
 				allowQuit = NSTerminateLater;
 			} else if ([fileTransferController activeTransferCount] > 0 && confirmFileTransfers) {
 				questionToAsk = AILocalizedString(@"You have file transfers in progress.",@"Quit Confirmation");
-				questionSelector = @selector(fileTransferQuitQuestion:userInfo:);
+				questionSelector = @selector(fileTransferQuitQuestion:userInfo:suppression:);
 				allowQuit = NSTerminateLater;
 			} else if ([[chatController openChats] count] > 0 && confirmOpenChats) {
 				questionToAsk = AILocalizedString(@"You have open chats.",@"Quit Confirmation");
-				questionSelector = @selector(openChatQuitQuestion:userInfo:);
+				questionSelector = @selector(openChatQuitQuestion:userInfo:suppression:);
 				allowQuit = NSTerminateLater;
 			}
 
@@ -313,14 +313,15 @@
 	}
 	
 	if (allowQuit == NSTerminateLater) {
-		[[self interfaceController] displayQuestion:AILocalizedString(@"Confirm Quit", nil)
+		[self.interfaceController displayQuestion:AILocalizedString(@"Confirm Quit", nil)
 									withDescription:[questionToAsk stringByAppendingFormat:@"%@%@",
 														([questionToAsk length] > 0 ? @"\n" : @""),
 														AILocalizedString(@"Are you sure you want to quit Adium?",@"Quit Confirmation")]
 									withWindowTitle:nil
 									  defaultButton:AILocalizedString(@"Quit", nil)
 									alternateButton:AILocalizedString(@"Cancel", nil)
-										otherButton:AILocalizedString(@"Don't ask again", nil)
+										otherButton:nil
+										 suppression:AILocalizedString(@"Don't ask again", nil)
 											 target:self
 										   selector:questionSelector
 										   userInfo:nil];
@@ -407,8 +408,15 @@
 	[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&submit.x=57&submit.y=8&encrypted=-----BEGIN+PKCS7-----%0D%0AMIIHFgYJKoZIhvcNAQcEoIIHBzCCBwMCAQExggEwMIIBLAIBADCBlDCBjjELMAkG%0D%0AA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQw%0D%0AEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UE%0D%0AAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJ%0D%0AKoZIhvcNAQEBBQAEgYAFR5tF%2BRKUV3BS49vJraDG%2BIoWDoZMieUT%2FJJ1Fzjsr511%0D%0Au7hS1F2piJuHuqmm%2F0r8Kf8oaycOo74K3zLmUQ6T6hUS6%2Bh6lZAoIlhI3A1YmqIP%0D%0AdrdY%2FtfKRbWfolDumJ9Mdv%2FzJxPnpdQiTN5K1PMrPYE6GgPWE9WC4V9lqstSmTEL%0D%0AMAkGBSsOAwIaBQAwgZMGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIjtd%2BN9o4ZB6A%0D%0AcIbH8ZjOLmE35xBQ%2F93chtzIcRXHhIQJVpBRCkyJkdTD3libP3F7TgkrLij1DBxg%0D%0AfFlE0V%2FGTk29Ys%2FwsPO7hNs3YSNuSz0HT5F6sa8aXwFtMCE%2FgB1Ha4qdtYY%2BNETJ%0D%0AEETwNMLefjhaBfI%2BnRxl2K2gggOHMIIDgzCCAuygAwIBAgIBADANBgkqhkiG9w0B%0D%0AAQUFADCBjjELMAk!
 GA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3Vu%0D%0AdGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9j%0D%0AZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBh%0D%0AbC5jb20wHhcNMDQwMjEzMTAxMzE1WhcNMzUwMjEzMTAxMzE1WjCBjjELMAkGA1UE%0D%0ABhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD%0D%0AVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQI%0D%0AbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20wgZ8wDQYJKoZI%0D%0AhvcNAQEBBQADgY0AMIGJAoGBAMFHTt38RMxLXJyO2SmS%2BNdl72T7oKJ4u4uw%2B6aw%0D%0AntALWh03PewmIJuzbALScsTS4sZoS1fKciBGoh11gIfHzylvkdNe%2FhJl66%2FRGqrj%0D%0A5rFb08sAABNTzDTiqqNpJeBsYs%2Fc2aiGozptX2RlnBktH%2BSUNpAajW724Nv2Wvhi%0D%0Af6sFAgMBAAGjge4wgeswHQYDVR0OBBYEFJaffLvGbxe9WT9S1wob7BDWZJRrMIG7%0D%0ABgNVHSMEgbMwgbCAFJaffLvGbxe9WT9S1wob7BDWZJRroYGUpIGRMIGOMQswCQYD%0D%0AVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDAS%0D%0ABgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQD%0D%0AFAhsaXZlX2F!
 waTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbYIBADAMBgNV%0D%0AHRM!
 EBTADAQH
%2FMA0GCSqGSIb3DQEBBQUAA4GBAIFfOlaagFrl71%2Bjq6OKidbWFSE%2B%0D%0AQ4FqROvdgIONth%2B8kSK%2F%2FY%2F4ihuE4Ymvzn5ceE3S%2FiBSQQMjyvb%2Bs2TWbQYDwcp1%0D%0A29OPIbD9epdr4tJOUNiSojw7BHwYRiPh58S1xGlFgHFXwrEBb3dgNbMUa%2Bu4qect%0D%0AsMAXpVHnD9wIyfmHMYIBmjCCAZYCAQEwgZQwgY4xCzAJBgNVBAYTAlVTMQswCQYD%0D%0AVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFs%0D%0AIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRww%0D%0AGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tAgEAMAkGBSsOAwIaBQCgXTAYBgkq%0D%0AhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNDAzMjUwNDQ0%0D%0AMzRaMCMGCSqGSIb3DQEJBDEWBBRzTAS6zk5cmMeC49IorY8CM%2BkX0TANBgkqhkiG%0D%0A9w0BAQEFAASBgBsyRfMv9mSyoYq00wIB7BmUHFGq5x%2Ffnr8M24XbKjhkyeULk2NC%0D%0As4jbCgaWNg6grvccJtjbvmDskMKt%2BdS%2BEAkeWwm1Zf%2F%2B5u1fMyb5vo1NNcRIs5oq%0D%0A7SvXiLTPRzVqzQdhVs7PoZG0i0RRIb0tMeo1IssZeB2GE5Nsg0D8PwpB%0D%0A-----END+PKCS7-----"]];
 }
 
-- (void)unreadQuitQuestion:(NSNumber *)number userInfo:(id)info
+- (void)unreadQuitQuestion:(NSNumber *)number userInfo:(id)info suppression:(NSNumber *)suppressed
 {
+	if ([suppressed boolValue]){
+		//Don't Ask Again
+		[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
+											forKey:@"Suppress Quit Confirmation for Unread Messages"
+											 group:@"Confirmations"];
+	}
+	
 	AITextAndButtonsReturnCode result = [number integerValue];
 	switch(result)
 	{
@@ -417,13 +425,6 @@
 			//Should we ask about File Transfers here?????
 			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
 			break;
-		case AITextAndButtonsOtherReturn:
-			//Don't Ask Again
-			[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
-												 forKey:@"Suppress Quit Confirmation for Unread Messages"
-												  group:@"Confirmations"];
-			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
-			break;
 		default:
 			//Cancel
 			[NSApp replyToApplicationShouldTerminate:NSTerminateCancel];
@@ -431,8 +432,15 @@
 	}
 }
 
-- (void)openChatQuitQuestion:(NSNumber *)number userInfo:(id)info
+- (void)openChatQuitQuestion:(NSNumber *)number userInfo:(id)info suppression:(NSNumber *)suppressed
 {
+	if ([suppressed boolValue]){
+		//Don't Ask Again
+		[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
+											forKey:@"Suppress Quit Confirmation for Open Chats"
+											 group:@"Confirmations"];
+	}
+	
 	AITextAndButtonsReturnCode result = [number integerValue];
 	switch(result)
 	{
@@ -441,13 +449,6 @@
 			//Should we ask about File Transfers here?????
 			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
 			break;
-		case AITextAndButtonsOtherReturn:
-			//Don't Ask Again
-			[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
-												forKey:@"Suppress Quit Confirmation for Open Chats"
-												 group:@"Confirmations"];
-			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
-			break;
 		default:
 			//Cancel
 			[NSApp replyToApplicationShouldTerminate:NSTerminateCancel];
@@ -455,8 +456,15 @@
 	}
 }
 
-- (void)fileTransferQuitQuestion:(NSNumber *)number userInfo:(id)info
+- (void)fileTransferQuitQuestion:(NSNumber *)number userInfo:(id)info suppression:(NSNumber *)suppressed
 {
+	if ([suppressed boolValue]){
+		//Don't Ask Again
+		[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
+											forKey:@"Suppress Quit Confirmation for File Transfers"
+											 group:@"Confirmations"];
+	}
+	
 	AITextAndButtonsReturnCode result = [number integerValue];
 	switch(result)
 	{
@@ -464,13 +472,6 @@
 			//Quit
 			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
 			break;
-		case AITextAndButtonsOtherReturn:
-			//Don't Ask Again
-			[[self preferenceController] setPreference:[NSNumber numberWithBool:YES]
-												 forKey:@"Suppress Quit Confirmation for File Transfers"
-												  group:@"Confirmations"];
-			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
-			break;
 		default:
 			//Cancel
 			[NSApp replyToApplicationShouldTerminate:NSTerminateCancel];
@@ -478,8 +479,15 @@
 	}
 }
 
-- (void)confirmQuitQuestion:(NSNumber *)number userInfo:(id)info
+- (void)confirmQuitQuestion:(NSNumber *)number userInfo:(id)info suppression:(NSNumber *)suppressed
 {
+	if ([suppressed boolValue]){
+		//Don't Ask Again
+		[[self preferenceController] setPreference:[NSNumber numberWithBool:NO]
+											forKey:@"Confirm Quit"
+											 group:@"Confirmations"];
+	}
+	
 	AITextAndButtonsReturnCode result = [number integerValue];
 	switch(result)
 	{
@@ -487,13 +495,6 @@
 			//Quit
 			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
 			break;
-		case AITextAndButtonsOtherReturn:
-			//Don't Ask Again
-			[[self preferenceController] setPreference:[NSNumber numberWithBool:NO]
-												forKey:@"Confirm Quit"
-												 group:@"Confirmations"];
-			[NSApp replyToApplicationShouldTerminate:NSTerminateNow];
-			break;
 		default:
 			//Cancel
 			[NSApp replyToApplicationShouldTerminate:NSTerminateCancel];
diff -r 91299ee797cb -r a3f57ee18622 Source/AIInterfaceController.m
--- a/Source/AIInterfaceController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/AIInterfaceController.m	Thu May 07 16:16:04 2009 -0400
@@ -1234,7 +1234,7 @@
 //Question Display -----------------------------------------------------------------------------------------------------
 #pragma mark Question Display
 - (void)displayQuestion:(NSString *)inTitle withAttributedDescription:(NSAttributedString *)inDesc withWindowTitle:(NSString *)inWindowTitle
-		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton
+		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton suppression:(NSString *)inSuppression
 				 target:(id)inTarget selector:(SEL)inSelector userInfo:(id)inUserInfo
 {
 	NSMutableDictionary *questionDict = [NSMutableDictionary dictionary];
@@ -1251,6 +1251,8 @@
 		[questionDict setObject:inAlternateButton forKey:@"Alternate Button"];
 	if(inOtherButton != nil)
 		[questionDict setObject:inOtherButton forKey:@"Other Button"];
+	if(inSuppression != nil)
+		[questionDict setObject:inSuppression forKey:@"Suppression Checkbox"];
 	if(inTarget != nil)
 		[questionDict setObject:inTarget forKey:@"Target"];
 	if(inSelector != NULL)
@@ -1262,7 +1264,7 @@
 }
 
 - (void)displayQuestion:(NSString *)inTitle withDescription:(NSString *)inDesc withWindowTitle:(NSString *)inWindowTitle
-		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton
+		  defaultButton:(NSString *)inDefaultButton alternateButton:(NSString *)inAlternateButton otherButton:(NSString *)inOtherButton suppression:(NSString *)inSuppression
 				 target:(id)inTarget selector:(SEL)inSelector userInfo:(id)inUserInfo
 {
 	[self displayQuestion:inTitle
@@ -1273,6 +1275,7 @@
 			defaultButton:inDefaultButton
 		  alternateButton:inAlternateButton
 			  otherButton:inOtherButton
+			  suppression:inSuppression
 				   target:inTarget
 				 selector:inSelector
 				 userInfo:inUserInfo];
diff -r 91299ee797cb -r a3f57ee18622 Source/ESFileTransferRequestPromptController.m
--- a/Source/ESFileTransferRequestPromptController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/ESFileTransferRequestPromptController.m	Thu May 07 16:16:04 2009 -0400
@@ -17,7 +17,6 @@
 #import "ESFileTransferRequestPromptController.h"
 #import "ESFileTransferController.h"
 #import "ESFileTransfer.h"
-#import "ESTextAndButtonsWindowController.h"
 #import <Adium/AIListContact.h>
 #import <Adium/AIContentControllerProtocol.h>
 #import <AIUtilities/AIApplicationAdditions.h>
diff -r 91299ee797cb -r a3f57ee18622 Source/ESOTRUnknownFingerprintController.m
--- a/Source/ESOTRUnknownFingerprintController.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/ESOTRUnknownFingerprintController.m	Thu May 07 16:16:04 2009 -0400
@@ -104,6 +104,7 @@
 																			 defaultButton:acceptButton
 																		   alternateButton:denyButton
 																			   otherButton:AILocalizedString(@"Help", nil)
+																			   suppression:nil
 																				  onWindow:nil
 																		 withMessageHeader:nil
 																				andMessage:[AIHTMLDecoder decodeHTML:messageString]
@@ -115,7 +116,7 @@
 /*!
 * @brief Window was closed, either by a button being clicked or the user closing it
  */
-+ (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode userInfo:(id)userInfo
++ (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode suppression:(BOOL)suppression userInfo:(id)userInfo
 {
 	BOOL	shouldCloseWindow = YES;
 	
diff -r 91299ee797cb -r a3f57ee18622 Source/GBFireLogImporter.m
--- a/Source/GBFireLogImporter.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/GBFireLogImporter.m	Thu May 07 16:16:04 2009 -0400
@@ -55,14 +55,15 @@
 - (void)askBeforeImport
 {
 	[adium.interfaceController displayQuestion:AILocalizedString(@"Import Fire Logs?",nil)
-								 withDescription:AILocalizedString(@"For some older log formats, the importer cannot properly determine which account was used for conversation.  In such cases, the importer will guess which account to use based upon the order of the accounts.  Before importing Fire's logs, arrange your account order within the Preferences.",nil)
-								 withWindowTitle:nil
-								   defaultButton:AILocalizedString(@"Import", nil)
-								 alternateButton:AILocalizedString(@"Cancel", nil)
-									 otherButton:nil
-										  target:self
-										selector:@selector(importQuestionResponse:userInfo:)
-										userInfo:nil];
+							   withDescription:AILocalizedString(@"For some older log formats, the importer cannot properly determine which account was used for conversation.  In such cases, the importer will guess which account to use based upon the order of the accounts.  Before importing Fire's logs, arrange your account order within the Preferences.",nil)
+							   withWindowTitle:nil
+								 defaultButton:AILocalizedString(@"Import", nil)
+							   alternateButton:AILocalizedString(@"Cancel", nil)
+								   otherButton:nil
+								   suppression:nil
+										target:self
+									  selector:@selector(importQuestionResponse:userInfo:)
+									  userInfo:nil];
 }
 
 - (void)importQuestionResponse:(NSNumber *)response userInfo:(id)info
diff -r 91299ee797cb -r a3f57ee18622 Source/GBQuestionHandlerPlugin.m
--- a/Source/GBQuestionHandlerPlugin.m	Thu May 07 12:29:45 2009 -0400
+++ b/Source/GBQuestionHandlerPlugin.m	Thu May 07 16:16:04 2009 -0400
@@ -17,6 +17,7 @@
 #import "GBQuestionHandlerPlugin.h"
 #import <Adium/AIInterfaceControllerProtocol.h>
 #import "ESTextAndButtonsWindowController.h"
+#import <AIUtilities/AIObjectAdditions.h>
 
 typedef enum
 {
@@ -82,14 +83,10 @@
 
 - (void)handleQuestion:(NSNotification *)notification
 {
-	NSDictionary	*userInfo;
-    
-    //Get the error info
-    userInfo = [notification userInfo];
-	[self handleType:ALERT_TYPE_QUESTION userInfo:userInfo];
+	[self handleType:ALERT_TYPE_QUESTION userInfo:notification.userInfo];
 }
 
-- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode userInfo:(id)userInfo
+- (BOOL)textAndButtonsWindowDidEnd:(NSWindow *)window returnCode:(AITextAndButtonsReturnCode)returnCode suppression:(BOOL)suppression userInfo:(id)userInfo
 {
 	NSString *selectorString = [userInfo objectForKey:@"Selector"];
 	id target = [userInfo objectForKey:@"Target"];
@@ -100,7 +97,7 @@
 		SEL selector = NSSelectorFromString(selectorString);
 		if([target respondsToSelector:selector])
 		{
-			[target performSelector:selector withObject:[NSNumber numberWithInteger:returnCode] withObject:[userInfo objectForKey:@"Userinfo"]];
+			[target performSelector:selector withObject:[NSNumber numberWithInteger:returnCode] withObject:[userInfo objectForKey:@"Userinfo"] withObject:[NSNumber numberWithBool:suppression]];
 		}
 	}
 	if([self displayNextAlert])
@@ -126,6 +123,7 @@
 							defaultButton:AILocalizedString(@"Next", @"Next Button")
 						  alternateButton:AILocalizedString(@"Dismiss All", @"Dismiss All Button")
 							  otherButton:nil
+							  suppression:nil
 						withMessageHeader:[info objectForKey:@"Title"]
 							   andMessage:[info objectForKey:@"Description"]
 									image:nil
@@ -144,6 +142,7 @@
 							defaultButton:[info objectForKey:@"Default Button"]
 						  alternateButton:[info objectForKey:@"Alternate Button"]
 							  otherButton:[info objectForKey:@"Other Button"]
+							  suppression:[info objectForKey:@"Suppression Checkbox"]
 						withMessageHeader:[info objectForKey:@"Title"]
 							   andMessage:[info objectForKey:@"Description"]
 									image:nil




More information about the commits mailing list