Add a Reopen Closed Tab menu item to the File menu that will restore the most recently closed tab, similar to Chrome. Fixes #12537
authorThijs Alkemade <thijsalkemade@gmail.com>
Sat Aug 28 22:01:12 2010 +0200 (17 months ago)
changeset 327721ab21e877e0
parent 3276 aa190f1573ff
child 3278 2dfee308da03
Add a Reopen Closed Tab menu item to the File menu that will restore the most recently closed tab, similar to Chrome. Fixes #12537

Does not work with MSN group chats (and probably other protocols that have unnamed MUCs).

r=wix
Frameworks/Adium Framework/Source/AIChatControllerProtocol.h
Resources/MainMenu.nib/designable.nib
Resources/MainMenu.nib/keyedobjects.nib
Source/AIChatController.m
Source/AIInterfaceController.h
Source/AIInterfaceController.m
     1.1 --- a/Frameworks/Adium Framework/Source/AIChatControllerProtocol.h	Sat Aug 21 18:40:48 2010 -0400
     1.2 +++ b/Frameworks/Adium Framework/Source/AIChatControllerProtocol.h	Sat Aug 28 22:01:12 2010 +0200
     1.3 @@ -34,6 +34,7 @@
     1.4  
     1.5  - (BOOL)closeChat:(AIChat *)inChat;
     1.6  - (void)accountDidCloseChat:(AIChat *)inChat;
     1.7 +- (void)restoreChat:(AIChat *)inChat;
     1.8  
     1.9  @property (nonatomic, readonly) NSSet *openChats;
    1.10  @property (nonatomic, readonly) AIChat *mostRecentUnviewedChat;
     2.1 --- a/Resources/MainMenu.nib/designable.nib	Sat Aug 21 18:40:48 2010 -0400
     2.2 +++ b/Resources/MainMenu.nib/designable.nib	Sat Aug 28 22:01:12 2010 +0200
     2.3 @@ -2,17 +2,17 @@
     2.4  <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
     2.5  	<data>
     2.6  		<int key="IBDocument.SystemTarget">1050</int>
     2.7 -		<string key="IBDocument.SystemVersion">10D573</string>
     2.8 +		<string key="IBDocument.SystemVersion">10F569</string>
     2.9  		<string key="IBDocument.InterfaceBuilderVersion">762</string>
    2.10  		<string key="IBDocument.AppKitVersion">1038.29</string>
    2.11 -		<string key="IBDocument.HIToolboxVersion">460.00</string>
    2.12 +		<string key="IBDocument.HIToolboxVersion">461.00</string>
    2.13  		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
    2.14  			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
    2.15  			<string key="NS.object.0">762</string>
    2.16  		</object>
    2.17  		<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
    2.18  			<bool key="EncodedWithXMLCoder">YES</bool>
    2.19 -			<integer value="6600"/>
    2.20 +			<integer value="6614"/>
    2.21  		</object>
    2.22  		<object class="NSArray" key="IBDocument.PluginDependencies">
    2.23  			<bool key="EncodedWithXMLCoder">YES</bool>
    2.24 @@ -262,6 +262,16 @@
    2.25  									<reference key="NSOnImage" ref="145266427"/>
    2.26  									<reference key="NSMixedImage" ref="551713053"/>
    2.27  								</object>
    2.28 +								<object class="NSMenuItem" id="600191255">
    2.29 +									<reference key="NSMenu" ref="580936113"/>
    2.30 +									<bool key="NSIsDisabled">YES</bool>
    2.31 +									<string key="NSTitle">Reopen Closed Tab</string>
    2.32 +									<string key="NSKeyEquiv">T</string>
    2.33 +									<int key="NSKeyEquivModMask">1048576</int>
    2.34 +									<int key="NSMnemonicLoc">2147483647</int>
    2.35 +									<reference key="NSOnImage" ref="145266427"/>
    2.36 +									<reference key="NSMixedImage" ref="551713053"/>
    2.37 +								</object>
    2.38  								<object class="NSMenuItem" id="863669792">
    2.39  									<reference key="NSMenu" ref="580936113"/>
    2.40  									<string key="NSTitle">Close Window</string>
    2.41 @@ -2614,6 +2624,22 @@
    2.42  					</object>
    2.43  					<int key="connectionID">7374</int>
    2.44  				</object>
    2.45 +				<object class="IBConnectionRecord">
    2.46 +					<object class="IBActionConnection" key="connection">
    2.47 +						<string key="label">reopenChat:</string>
    2.48 +						<reference key="source" ref="276456795"/>
    2.49 +						<reference key="destination" ref="600191255"/>
    2.50 +					</object>
    2.51 +					<int key="connectionID">7381</int>
    2.52 +				</object>
    2.53 +				<object class="IBConnectionRecord">
    2.54 +					<object class="IBOutletConnection" key="connection">
    2.55 +						<string key="label">menuItem_reopenTab</string>
    2.56 +						<reference key="source" ref="276456795"/>
    2.57 +						<reference key="destination" ref="600191255"/>
    2.58 +					</object>
    2.59 +					<int key="connectionID">7382</int>
    2.60 +				</object>
    2.61  			</object>
    2.62  			<object class="IBMutableOrderedSet" key="objectRecords">
    2.63  				<object class="NSArray" key="orderedObjects">
    2.64 @@ -3240,6 +3266,7 @@
    2.65  							<reference ref="863669792"/>
    2.66  							<reference ref="550369297"/>
    2.67  							<reference ref="970744887"/>
    2.68 +							<reference ref="600191255"/>
    2.69  						</object>
    2.70  						<reference key="parent" ref="958311131"/>
    2.71  					</object>
    2.72 @@ -3392,243 +3419,464 @@
    2.73  						<reference key="object" ref="715555530"/>
    2.74  						<reference key="parent" ref="814345242"/>
    2.75  					</object>
    2.76 +					<object class="IBObjectRecord">
    2.77 +						<int key="objectID">7380</int>
    2.78 +						<reference key="object" ref="600191255"/>
    2.79 +						<reference key="parent" ref="580936113"/>
    2.80 +					</object>
    2.81  				</object>
    2.82  			</object>
    2.83  			<object class="NSMutableDictionary" key="flattenedProperties">
    2.84  				<bool key="EncodedWithXMLCoder">YES</bool>
    2.85  				<object class="NSArray" key="dict.sortedKeys">
    2.86  					<bool key="EncodedWithXMLCoder">YES</bool>
    2.87 +					<string>-3.IBPluginDependency</string>
    2.88  					<string>-3.ImportedFromIB2</string>
    2.89  					<string>2512.ImportedFromIB2</string>
    2.90  					<string>4001.ImportedFromIB2</string>
    2.91 +					<string>6453.IBPluginDependency</string>
    2.92  					<string>6453.ImportedFromIB2</string>
    2.93 +					<string>6455.IBPluginDependency</string>
    2.94  					<string>6455.ImportedFromIB2</string>
    2.95 +					<string>6462.IBPluginDependency</string>
    2.96  					<string>6462.ImportedFromIB2</string>
    2.97 +					<string>6473.IBPluginDependency</string>
    2.98  					<string>6473.ImportedFromIB2</string>
    2.99 +					<string>6474.IBPluginDependency</string>
   2.100  					<string>6474.ImportedFromIB2</string>
   2.101 +					<string>6475.IBPluginDependency</string>
   2.102  					<string>6475.ImportedFromIB2</string>
   2.103 +					<string>6480.IBPluginDependency</string>
   2.104  					<string>6480.ImportedFromIB2</string>
   2.105 +					<string>6481.IBPluginDependency</string>
   2.106  					<string>6481.ImportedFromIB2</string>
   2.107 +					<string>6482.IBPluginDependency</string>
   2.108  					<string>6482.ImportedFromIB2</string>
   2.109 +					<string>6483.IBPluginDependency</string>
   2.110  					<string>6483.ImportedFromIB2</string>
   2.111 +					<string>6486.IBPluginDependency</string>
   2.112  					<string>6486.ImportedFromIB2</string>
   2.113 +					<string>6491.IBPluginDependency</string>
   2.114  					<string>6491.ImportedFromIB2</string>
   2.115 +					<string>6493.IBPluginDependency</string>
   2.116  					<string>6493.ImportedFromIB2</string>
   2.117 +					<string>6494.IBPluginDependency</string>
   2.118  					<string>6494.ImportedFromIB2</string>
   2.119 +					<string>6501.IBPluginDependency</string>
   2.120  					<string>6501.ImportedFromIB2</string>
   2.121 +					<string>6507.IBPluginDependency</string>
   2.122  					<string>6507.ImportedFromIB2</string>
   2.123 +					<string>6508.IBPluginDependency</string>
   2.124  					<string>6508.ImportedFromIB2</string>
   2.125 +					<string>6509.IBPluginDependency</string>
   2.126  					<string>6509.ImportedFromIB2</string>
   2.127 +					<string>6511.IBPluginDependency</string>
   2.128  					<string>6511.ImportedFromIB2</string>
   2.129 +					<string>6516.IBPluginDependency</string>
   2.130  					<string>6516.ImportedFromIB2</string>
   2.131  					<string>6521.IBEditorWindowLastContentRect</string>
   2.132 +					<string>6521.IBPluginDependency</string>
   2.133  					<string>6521.ImportedFromIB2</string>
   2.134 +					<string>6528.IBPluginDependency</string>
   2.135  					<string>6528.ImportedFromIB2</string>
   2.136 +					<string>6532.IBPluginDependency</string>
   2.137  					<string>6532.ImportedFromIB2</string>
   2.138 +					<string>6533.IBPluginDependency</string>
   2.139  					<string>6533.ImportedFromIB2</string>
   2.140 +					<string>6534.IBPluginDependency</string>
   2.141  					<string>6534.ImportedFromIB2</string>
   2.142 +					<string>6538.IBPluginDependency</string>
   2.143  					<string>6538.ImportedFromIB2</string>
   2.144 +					<string>6539.IBPluginDependency</string>
   2.145  					<string>6539.ImportedFromIB2</string>
   2.146 +					<string>6540.IBPluginDependency</string>
   2.147  					<string>6540.ImportedFromIB2</string>
   2.148 +					<string>6542.IBPluginDependency</string>
   2.149  					<string>6542.ImportedFromIB2</string>
   2.150 +					<string>6546.IBPluginDependency</string>
   2.151  					<string>6546.ImportedFromIB2</string>
   2.152 +					<string>6549.IBPluginDependency</string>
   2.153  					<string>6549.ImportedFromIB2</string>
   2.154 +					<string>6550.IBPluginDependency</string>
   2.155  					<string>6550.ImportedFromIB2</string>
   2.156 +					<string>6555.IBPluginDependency</string>
   2.157  					<string>6555.ImportedFromIB2</string>
   2.158 +					<string>6556.IBPluginDependency</string>
   2.159  					<string>6556.ImportedFromIB2</string>
   2.160 +					<string>6565.IBPluginDependency</string>
   2.161  					<string>6565.ImportedFromIB2</string>
   2.162 +					<string>6566.IBPluginDependency</string>
   2.163  					<string>6566.ImportedFromIB2</string>
   2.164 +					<string>6567.IBPluginDependency</string>
   2.165  					<string>6567.ImportedFromIB2</string>
   2.166 +					<string>6572.IBPluginDependency</string>
   2.167  					<string>6572.ImportedFromIB2</string>
   2.168 +					<string>6580.IBPluginDependency</string>
   2.169  					<string>6580.ImportedFromIB2</string>
   2.170 +					<string>6581.IBPluginDependency</string>
   2.171  					<string>6581.ImportedFromIB2</string>
   2.172 +					<string>6584.IBPluginDependency</string>
   2.173  					<string>6584.ImportedFromIB2</string>
   2.174 +					<string>6587.IBPluginDependency</string>
   2.175  					<string>6587.ImportedFromIB2</string>
   2.176 +					<string>6594.IBPluginDependency</string>
   2.177  					<string>6594.ImportedFromIB2</string>
   2.178 +					<string>6595.IBPluginDependency</string>
   2.179  					<string>6595.ImportedFromIB2</string>
   2.180 +					<string>6597.IBPluginDependency</string>
   2.181  					<string>6597.ImportedFromIB2</string>
   2.182 +					<string>6598.IBPluginDependency</string>
   2.183  					<string>6598.ImportedFromIB2</string>
   2.184  					<string>6600.IBEditorWindowLastContentRect</string>
   2.185 +					<string>6600.IBPluginDependency</string>
   2.186  					<string>6600.ImportedFromIB2</string>
   2.187 +					<string>6609.IBPluginDependency</string>
   2.188  					<string>6609.ImportedFromIB2</string>
   2.189 +					<string>6611.IBPluginDependency</string>
   2.190  					<string>6611.ImportedFromIB2</string>
   2.191 +					<string>6612.IBPluginDependency</string>
   2.192  					<string>6612.ImportedFromIB2</string>
   2.193 +					<string>6614.IBEditorWindowLastContentRect</string>
   2.194 +					<string>6614.IBPluginDependency</string>
   2.195  					<string>6614.ImportedFromIB2</string>
   2.196 +					<string>6615.IBPluginDependency</string>
   2.197  					<string>6615.ImportedFromIB2</string>
   2.198 +					<string>6616.IBPluginDependency</string>
   2.199  					<string>6616.ImportedFromIB2</string>
   2.200 +					<string>6618.IBPluginDependency</string>
   2.201  					<string>6618.ImportedFromIB2</string>
   2.202 +					<string>6620.IBPluginDependency</string>
   2.203  					<string>6620.ImportedFromIB2</string>
   2.204 +					<string>6623.IBPluginDependency</string>
   2.205  					<string>6623.ImportedFromIB2</string>
   2.206  					<string>6655.ImportedFromIB2</string>
   2.207  					<string>6706.ImportedFromIB2</string>
   2.208 +					<string>6932.IBPluginDependency</string>
   2.209  					<string>6932.ImportedFromIB2</string>
   2.210 +					<string>6933.IBPluginDependency</string>
   2.211  					<string>6933.ImportedFromIB2</string>
   2.212 +					<string>6944.IBPluginDependency</string>
   2.213  					<string>6944.ImportedFromIB2</string>
   2.214 +					<string>6946.IBPluginDependency</string>
   2.215  					<string>6946.ImportedFromIB2</string>
   2.216 +					<string>6952.IBPluginDependency</string>
   2.217  					<string>6952.ImportedFromIB2</string>
   2.218 +					<string>6987.IBPluginDependency</string>
   2.219  					<string>6987.ImportedFromIB2</string>
   2.220 +					<string>6988.IBPluginDependency</string>
   2.221  					<string>6988.ImportedFromIB2</string>
   2.222 +					<string>6989.IBPluginDependency</string>
   2.223  					<string>6989.ImportedFromIB2</string>
   2.224 +					<string>6990.IBPluginDependency</string>
   2.225  					<string>6990.ImportedFromIB2</string>
   2.226 +					<string>6991.IBPluginDependency</string>
   2.227  					<string>6991.ImportedFromIB2</string>
   2.228 +					<string>6992.IBPluginDependency</string>
   2.229  					<string>6992.ImportedFromIB2</string>
   2.230 +					<string>6993.IBPluginDependency</string>
   2.231  					<string>6993.ImportedFromIB2</string>
   2.232 +					<string>7010.IBPluginDependency</string>
   2.233  					<string>7010.ImportedFromIB2</string>
   2.234 +					<string>7011.IBPluginDependency</string>
   2.235  					<string>7011.ImportedFromIB2</string>
   2.236 +					<string>7016.IBPluginDependency</string>
   2.237  					<string>7016.ImportedFromIB2</string>
   2.238 +					<string>7017.IBPluginDependency</string>
   2.239  					<string>7017.ImportedFromIB2</string>
   2.240 +					<string>7032.IBPluginDependency</string>
   2.241  					<string>7032.ImportedFromIB2</string>
   2.242 +					<string>7033.IBPluginDependency</string>
   2.243  					<string>7033.ImportedFromIB2</string>
   2.244 +					<string>7034.IBPluginDependency</string>
   2.245  					<string>7034.ImportedFromIB2</string>
   2.246 +					<string>7037.IBPluginDependency</string>
   2.247  					<string>7037.ImportedFromIB2</string>
   2.248 +					<string>7039.IBPluginDependency</string>
   2.249  					<string>7039.ImportedFromIB2</string>
   2.250 +					<string>7054.IBPluginDependency</string>
   2.251  					<string>7054.ImportedFromIB2</string>
   2.252 +					<string>7057.IBPluginDependency</string>
   2.253  					<string>7057.ImportedFromIB2</string>
   2.254 +					<string>7058.IBPluginDependency</string>
   2.255  					<string>7058.ImportedFromIB2</string>
   2.256 +					<string>7102.IBPluginDependency</string>
   2.257  					<string>7102.ImportedFromIB2</string>
   2.258 +					<string>7104.IBPluginDependency</string>
   2.259  					<string>7104.ImportedFromIB2</string>
   2.260 +					<string>7214.IBPluginDependency</string>
   2.261  					<string>7214.ImportedFromIB2</string>
   2.262 +					<string>7224.IBPluginDependency</string>
   2.263  					<string>7224.ImportedFromIB2</string>
   2.264 +					<string>7225.IBPluginDependency</string>
   2.265  					<string>7225.ImportedFromIB2</string>
   2.266 +					<string>7227.IBPluginDependency</string>
   2.267  					<string>7227.ImportedFromIB2</string>
   2.268 +					<string>7228.IBPluginDependency</string>
   2.269  					<string>7228.ImportedFromIB2</string>
   2.270 +					<string>7229.IBPluginDependency</string>
   2.271  					<string>7229.ImportedFromIB2</string>
   2.272 +					<string>7230.IBPluginDependency</string>
   2.273  					<string>7230.ImportedFromIB2</string>
   2.274 +					<string>7231.IBPluginDependency</string>
   2.275  					<string>7231.ImportedFromIB2</string>
   2.276 +					<string>7240.IBPluginDependency</string>
   2.277  					<string>7240.ImportedFromIB2</string>
   2.278  					<string>7246.ImportedFromIB2</string>
   2.279 +					<string>7251.IBPluginDependency</string>
   2.280  					<string>7251.ImportedFromIB2</string>
   2.281 +					<string>7254.IBPluginDependency</string>
   2.282  					<string>7254.ImportedFromIB2</string>
   2.283 +					<string>7255.IBPluginDependency</string>
   2.284  					<string>7255.ImportedFromIB2</string>
   2.285 +					<string>7256.IBPluginDependency</string>
   2.286  					<string>7256.ImportedFromIB2</string>
   2.287 +					<string>7268.IBPluginDependency</string>
   2.288  					<string>7268.ImportedFromIB2</string>
   2.289 +					<string>7269.IBPluginDependency</string>
   2.290  					<string>7269.ImportedFromIB2</string>
   2.291 +					<string>7272.IBPluginDependency</string>
   2.292  					<string>7272.ImportedFromIB2</string>
   2.293 +					<string>7273.IBPluginDependency</string>
   2.294  					<string>7273.ImportedFromIB2</string>
   2.295 +					<string>7274.IBPluginDependency</string>
   2.296  					<string>7274.ImportedFromIB2</string>
   2.297 +					<string>7291.IBPluginDependency</string>
   2.298  					<string>7291.ImportedFromIB2</string>
   2.299 +					<string>7337.IBPluginDependency</string>
   2.300  					<string>7337.ImportedFromIB2</string>
   2.301 +					<string>7341.IBPluginDependency</string>
   2.302  					<string>7341.ImportedFromIB2</string>
   2.303 +					<string>7348.IBPluginDependency</string>
   2.304  					<string>7348.ImportedFromIB2</string>
   2.305 +					<string>7366.IBPluginDependency</string>
   2.306  					<string>7366.ImportedFromIB2</string>
   2.307  					<string>7373.IBPluginDependency</string>
   2.308 +					<string>7380.IBPluginDependency</string>
   2.309  				</object>
   2.310  				<object class="NSMutableArray" key="dict.values">
   2.311  					<bool key="EncodedWithXMLCoder">YES</bool>
   2.312 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.313  					<boolean value="YES"/>
   2.314  					<boolean value="YES"/>
   2.315  					<boolean value="YES"/>
   2.316 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.317  					<boolean value="YES"/>
   2.318 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.319  					<boolean value="YES"/>
   2.320 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.321  					<boolean value="YES"/>
   2.322 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.323  					<boolean value="YES"/>
   2.324 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.325  					<boolean value="YES"/>
   2.326 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.327  					<boolean value="YES"/>
   2.328 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.329  					<boolean value="YES"/>
   2.330 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.331  					<boolean value="YES"/>
   2.332 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.333  					<boolean value="YES"/>
   2.334 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.335  					<boolean value="YES"/>
   2.336 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.337  					<boolean value="YES"/>
   2.338 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.339  					<boolean value="YES"/>
   2.340 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.341  					<boolean value="YES"/>
   2.342 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.343  					<boolean value="YES"/>
   2.344 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.345  					<boolean value="YES"/>
   2.346 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.347  					<boolean value="YES"/>
   2.348 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.349  					<boolean value="YES"/>
   2.350 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.351  					<boolean value="YES"/>
   2.352 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.353  					<boolean value="YES"/>
   2.354 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.355  					<boolean value="YES"/>
   2.356  					<string>{{642, 832}, {202, 143}}</string>
   2.357 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.358  					<boolean value="YES"/>
   2.359 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.360  					<boolean value="YES"/>
   2.361 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.362  					<boolean value="YES"/>
   2.363 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.364  					<boolean value="YES"/>
   2.365 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.366  					<boolean value="YES"/>
   2.367 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.368  					<boolean value="YES"/>
   2.369 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.370  					<boolean value="YES"/>
   2.371 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.372  					<boolean value="YES"/>
   2.373 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.374  					<boolean value="YES"/>
   2.375 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.376  					<boolean value="YES"/>
   2.377 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.378  					<boolean value="YES"/>
   2.379 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.380  					<boolean value="YES"/>
   2.381 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.382  					<boolean value="YES"/>
   2.383 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.384  					<boolean value="YES"/>
   2.385 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.386  					<boolean value="YES"/>
   2.387 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.388  					<boolean value="YES"/>
   2.389 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.390  					<boolean value="YES"/>
   2.391 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.392  					<boolean value="YES"/>
   2.393 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.394  					<boolean value="YES"/>
   2.395 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.396  					<boolean value="YES"/>
   2.397 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.398  					<boolean value="YES"/>
   2.399 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.400  					<boolean value="YES"/>
   2.401 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.402  					<boolean value="YES"/>
   2.403 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.404  					<boolean value="YES"/>
   2.405 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.406  					<boolean value="YES"/>
   2.407 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.408  					<boolean value="YES"/>
   2.409  					<string>{{93, 975}, {610, 20}}</string>
   2.410 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.411  					<boolean value="YES"/>
   2.412 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.413  					<boolean value="YES"/>
   2.414 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.415  					<boolean value="YES"/>
   2.416 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.417  					<boolean value="YES"/>
   2.418 +					<string>{{170, 812}, {222, 163}}</string>
   2.419 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.420  					<boolean value="YES"/>
   2.421 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.422  					<boolean value="YES"/>
   2.423 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.424  					<boolean value="YES"/>
   2.425 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.426  					<boolean value="YES"/>
   2.427 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.428  					<boolean value="YES"/>
   2.429 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.430  					<boolean value="YES"/>
   2.431  					<boolean value="YES"/>
   2.432  					<boolean value="YES"/>
   2.433 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.434  					<boolean value="YES"/>
   2.435 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.436  					<boolean value="YES"/>
   2.437 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.438  					<boolean value="YES"/>
   2.439 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.440  					<boolean value="YES"/>
   2.441 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.442  					<boolean value="YES"/>
   2.443 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.444  					<boolean value="YES"/>
   2.445 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.446  					<boolean value="YES"/>
   2.447 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.448  					<boolean value="YES"/>
   2.449 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.450  					<boolean value="YES"/>
   2.451 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.452  					<boolean value="YES"/>
   2.453 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.454  					<boolean value="YES"/>
   2.455 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.456  					<boolean value="YES"/>
   2.457 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.458  					<boolean value="YES"/>
   2.459 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.460  					<boolean value="YES"/>
   2.461 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.462  					<boolean value="YES"/>
   2.463 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.464  					<boolean value="YES"/>
   2.465 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.466  					<boolean value="YES"/>
   2.467 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.468  					<boolean value="YES"/>
   2.469 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.470  					<boolean value="YES"/>
   2.471 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.472  					<boolean value="YES"/>
   2.473 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.474  					<boolean value="YES"/>
   2.475 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.476  					<boolean value="YES"/>
   2.477 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.478  					<boolean value="YES"/>
   2.479 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.480  					<boolean value="YES"/>
   2.481 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.482  					<boolean value="YES"/>
   2.483 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.484  					<boolean value="YES"/>
   2.485 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.486  					<boolean value="YES"/>
   2.487 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.488  					<boolean value="YES"/>
   2.489 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.490  					<boolean value="YES"/>
   2.491 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.492  					<boolean value="YES"/>
   2.493 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.494  					<boolean value="YES"/>
   2.495 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.496  					<boolean value="YES"/>
   2.497 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.498  					<boolean value="YES"/>
   2.499 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.500  					<boolean value="YES"/>
   2.501 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.502  					<boolean value="YES"/>
   2.503  					<boolean value="YES"/>
   2.504 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.505  					<boolean value="YES"/>
   2.506 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.507  					<boolean value="YES"/>
   2.508 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.509  					<boolean value="YES"/>
   2.510 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.511  					<boolean value="YES"/>
   2.512 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.513  					<boolean value="YES"/>
   2.514 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.515  					<boolean value="YES"/>
   2.516 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.517  					<boolean value="YES"/>
   2.518 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.519  					<boolean value="YES"/>
   2.520 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.521  					<boolean value="YES"/>
   2.522 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.523  					<boolean value="YES"/>
   2.524 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.525  					<boolean value="YES"/>
   2.526 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.527  					<boolean value="YES"/>
   2.528 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.529  					<boolean value="YES"/>
   2.530 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.531  					<boolean value="YES"/>
   2.532  					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.533 +					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
   2.534  				</object>
   2.535  			</object>
   2.536  			<object class="NSMutableDictionary" key="unlocalizedProperties">
   2.537 @@ -3647,7 +3895,7 @@
   2.538  				</object>
   2.539  			</object>
   2.540  			<nil key="sourceID"/>
   2.541 -			<int key="maxID">7374</int>
   2.542 +			<int key="maxID">7382</int>
   2.543  		</object>
   2.544  		<object class="IBClassDescriber" key="IBDocument.Classes">
   2.545  			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
   2.546 @@ -3753,6 +4001,7 @@
   2.547  							<string>paste:</string>
   2.548  							<string>pasteAndMatchStyle:</string>
   2.549  							<string>pasteWithImagesAndColors:</string>
   2.550 +							<string>reopenChat:</string>
   2.551  							<string>runToolbarCustomizationPalette:</string>
   2.552  							<string>setFontPanelSettingsAsDefaultFont:</string>
   2.553  							<string>showContactListAndBringToFront:</string>
   2.554 @@ -3779,6 +4028,7 @@
   2.555  							<string>id</string>
   2.556  							<string>id</string>
   2.557  							<string>id</string>
   2.558 +							<string>id</string>
   2.559  						</object>
   2.560  					</object>
   2.561  					<object class="NSMutableDictionary" key="outlets">
   2.562 @@ -3799,6 +4049,7 @@
   2.563  							<string>menuItem_pasteAndMatchStyle</string>
   2.564  							<string>menuItem_pasteWithImagesAndColors</string>
   2.565  							<string>menuItem_print</string>
   2.566 +							<string>menuItem_reopenTab</string>
   2.567  							<string>menuItem_showFonts</string>
   2.568  							<string>menuItem_showToolbar</string>
   2.569  						</object>
   2.570 @@ -3820,6 +4071,7 @@
   2.571  							<string>NSMenuItem</string>
   2.572  							<string>NSMenuItem</string>
   2.573  							<string>NSMenuItem</string>
   2.574 +							<string>NSMenuItem</string>
   2.575  						</object>
   2.576  					</object>
   2.577  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.578 @@ -4115,13 +4367,11 @@
   2.579  							<bool key="EncodedWithXMLCoder">YES</bool>
   2.580  							<string>runToolbarConfigurationPalette:</string>
   2.581  							<string>toggleBaseWritingDirection:</string>
   2.582 -							<string>toggleGrammarChecking:</string>
   2.583  						</object>
   2.584  						<object class="NSMutableArray" key="dict.values">
   2.585  							<bool key="EncodedWithXMLCoder">YES</bool>
   2.586  							<string>id</string>
   2.587  							<string>id</string>
   2.588 -							<string>id</string>
   2.589  						</object>
   2.590  					</object>
   2.591  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.592 @@ -4580,6 +4830,37 @@
   2.593  					</object>
   2.594  				</object>
   2.595  				<object class="IBPartialClassDescription">
   2.596 +					<string key="className">NSTextView</string>
   2.597 +					<object class="NSMutableDictionary" key="actions">
   2.598 +						<bool key="EncodedWithXMLCoder">YES</bool>
   2.599 +						<object class="NSArray" key="dict.sortedKeys">
   2.600 +							<bool key="EncodedWithXMLCoder">YES</bool>
   2.601 +							<string>toggleAutomaticDashSubstitution:</string>
   2.602 +							<string>toggleAutomaticDataDetection:</string>
   2.603 +							<string>toggleAutomaticSpellingCorrection:</string>
   2.604 +							<string>toggleAutomaticTextReplacement:</string>
   2.605 +						</object>
   2.606 +						<object class="NSMutableArray" key="dict.values">
   2.607 +							<bool key="EncodedWithXMLCoder">YES</bool>
   2.608 +							<string>id</string>
   2.609 +							<string>id</string>
   2.610 +							<string>id</string>
   2.611 +							<string>id</string>
   2.612 +						</object>
   2.613 +					</object>
   2.614 +					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="79193227">
   2.615 +						<string key="majorKey">IBProjectSource</string>
   2.616 +						<string key="minorKey">Frameworks/AIUtilities Framework/Source/AILeopardCompatibility.h</string>
   2.617 +					</object>
   2.618 +				</object>
   2.619 +				<object class="IBPartialClassDescription">
   2.620 +					<string key="className">NSTextView</string>
   2.621 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.622 +						<string key="majorKey">IBProjectSource</string>
   2.623 +						<string key="minorKey">Frameworks/AIUtilities Framework/Source/AITextViewAdditions.h</string>
   2.624 +					</object>
   2.625 +				</object>
   2.626 +				<object class="IBPartialClassDescription">
   2.627  					<string key="className">NSView</string>
   2.628  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.629  						<string key="majorKey">IBProjectSource</string>
   2.630 @@ -4595,6 +4876,24 @@
   2.631  					</object>
   2.632  				</object>
   2.633  				<object class="IBPartialClassDescription">
   2.634 +					<string key="className">NSWindow</string>
   2.635 +					<reference key="sourceIdentifier" ref="79193227"/>
   2.636 +				</object>
   2.637 +				<object class="IBPartialClassDescription">
   2.638 +					<string key="className">NSWindow</string>
   2.639 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.640 +						<string key="majorKey">IBProjectSource</string>
   2.641 +						<string key="minorKey">Frameworks/AIUtilities Framework/Source/AIWindowAdditions.h</string>
   2.642 +					</object>
   2.643 +				</object>
   2.644 +				<object class="IBPartialClassDescription">
   2.645 +					<string key="className">NSWindow</string>
   2.646 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.647 +						<string key="majorKey">IBProjectSource</string>
   2.648 +						<string key="minorKey">Source/NSWindowScriptingAdditions.h</string>
   2.649 +					</object>
   2.650 +				</object>
   2.651 +				<object class="IBPartialClassDescription">
   2.652  					<string key="className">RBSplitSubview</string>
   2.653  					<string key="superclassName">NSView</string>
   2.654  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.655 @@ -4699,6 +4998,14 @@
   2.656  					</object>
   2.657  				</object>
   2.658  				<object class="IBPartialClassDescription">
   2.659 +					<string key="className">NSBrowser</string>
   2.660 +					<string key="superclassName">NSControl</string>
   2.661 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.662 +						<string key="majorKey">IBFrameworkSource</string>
   2.663 +						<string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
   2.664 +					</object>
   2.665 +				</object>
   2.666 +				<object class="IBPartialClassDescription">
   2.667  					<string key="className">NSButton</string>
   2.668  					<string key="superclassName">NSControl</string>
   2.669  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.670 @@ -4759,6 +5066,22 @@
   2.671  					</object>
   2.672  				</object>
   2.673  				<object class="IBPartialClassDescription">
   2.674 +					<string key="className">NSFormatter</string>
   2.675 +					<string key="superclassName">NSObject</string>
   2.676 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.677 +						<string key="majorKey">IBFrameworkSource</string>
   2.678 +						<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
   2.679 +					</object>
   2.680 +				</object>
   2.681 +				<object class="IBPartialClassDescription">
   2.682 +					<string key="className">NSMatrix</string>
   2.683 +					<string key="superclassName">NSControl</string>
   2.684 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.685 +						<string key="majorKey">IBFrameworkSource</string>
   2.686 +						<string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
   2.687 +					</object>
   2.688 +				</object>
   2.689 +				<object class="IBPartialClassDescription">
   2.690  					<string key="className">NSMenu</string>
   2.691  					<string key="superclassName">NSObject</string>
   2.692  					<object class="IBClassDescriptionSource" key="sourceIdentifier" id="197677337">
   2.693 @@ -4775,6 +5098,14 @@
   2.694  					</object>
   2.695  				</object>
   2.696  				<object class="IBPartialClassDescription">
   2.697 +					<string key="className">NSMovieView</string>
   2.698 +					<string key="superclassName">NSView</string>
   2.699 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.700 +						<string key="majorKey">IBFrameworkSource</string>
   2.701 +						<string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
   2.702 +					</object>
   2.703 +				</object>
   2.704 +				<object class="IBPartialClassDescription">
   2.705  					<string key="className">NSObject</string>
   2.706  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.707  						<string key="majorKey">IBFrameworkSource</string>
   2.708 @@ -5300,6 +5631,22 @@
   2.709  					<reference key="sourceIdentifier" ref="415592568"/>
   2.710  				</object>
   2.711  				<object class="IBPartialClassDescription">
   2.712 +					<string key="className">NSText</string>
   2.713 +					<string key="superclassName">NSView</string>
   2.714 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.715 +						<string key="majorKey">IBFrameworkSource</string>
   2.716 +						<string key="minorKey">AppKit.framework/Headers/NSText.h</string>
   2.717 +					</object>
   2.718 +				</object>
   2.719 +				<object class="IBPartialClassDescription">
   2.720 +					<string key="className">NSTextView</string>
   2.721 +					<string key="superclassName">NSText</string>
   2.722 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.723 +						<string key="majorKey">IBFrameworkSource</string>
   2.724 +						<string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
   2.725 +					</object>
   2.726 +				</object>
   2.727 +				<object class="IBPartialClassDescription">
   2.728  					<string key="className">NSView</string>
   2.729  					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.730  						<string key="majorKey">IBFrameworkSource</string>
   2.731 @@ -5323,6 +5670,28 @@
   2.732  					<reference key="sourceIdentifier" ref="817207599"/>
   2.733  				</object>
   2.734  				<object class="IBPartialClassDescription">
   2.735 +					<string key="className">NSWindow</string>
   2.736 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.737 +						<string key="majorKey">IBFrameworkSource</string>
   2.738 +						<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
   2.739 +					</object>
   2.740 +				</object>
   2.741 +				<object class="IBPartialClassDescription">
   2.742 +					<string key="className">NSWindow</string>
   2.743 +					<string key="superclassName">NSResponder</string>
   2.744 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.745 +						<string key="majorKey">IBFrameworkSource</string>
   2.746 +						<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
   2.747 +					</object>
   2.748 +				</object>
   2.749 +				<object class="IBPartialClassDescription">
   2.750 +					<string key="className">NSWindow</string>
   2.751 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.752 +						<string key="majorKey">IBFrameworkSource</string>
   2.753 +						<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
   2.754 +					</object>
   2.755 +				</object>
   2.756 +				<object class="IBPartialClassDescription">
   2.757  					<string key="className">PDFView</string>
   2.758  					<string key="superclassName">NSView</string>
   2.759  					<object class="NSMutableDictionary" key="actions">
   2.760 @@ -5357,6 +5726,29 @@
   2.761  					<reference key="sourceIdentifier" ref="196789552"/>
   2.762  				</object>
   2.763  				<object class="IBPartialClassDescription">
   2.764 +					<string key="className">QCView</string>
   2.765 +					<string key="superclassName">NSView</string>
   2.766 +					<object class="NSMutableDictionary" key="actions">
   2.767 +						<bool key="EncodedWithXMLCoder">YES</bool>
   2.768 +						<object class="NSArray" key="dict.sortedKeys">
   2.769 +							<bool key="EncodedWithXMLCoder">YES</bool>
   2.770 +							<string>play:</string>
   2.771 +							<string>start:</string>
   2.772 +							<string>stop:</string>
   2.773 +						</object>
   2.774 +						<object class="NSMutableArray" key="dict.values">
   2.775 +							<bool key="EncodedWithXMLCoder">YES</bool>
   2.776 +							<string>id</string>
   2.777 +							<string>id</string>
   2.778 +							<string>id</string>
   2.779 +						</object>
   2.780 +					</object>
   2.781 +					<object class="IBClassDescriptionSource" key="sourceIdentifier">
   2.782 +						<string key="majorKey">IBFrameworkSource</string>
   2.783 +						<string key="minorKey">QuartzComposer.framework/Headers/QCView.h</string>
   2.784 +					</object>
   2.785 +				</object>
   2.786 +				<object class="IBPartialClassDescription">
   2.787  					<string key="className">QTMovieView</string>
   2.788  					<string key="superclassName">NSView</string>
   2.789  					<object class="NSMutableDictionary" key="actions">
     3.1 Binary file Resources/MainMenu.nib/keyedobjects.nib has changed
     4.1 --- a/Source/AIChatController.m	Sat Aug 21 18:40:48 2010 -0400
     4.2 +++ b/Source/AIChatController.m	Sat Aug 28 22:01:12 2010 +0200
     4.3 @@ -544,6 +544,11 @@
     4.4  	return shouldRemove;
     4.5  }
     4.6  
     4.7 +- (void)restoreChat:(AIChat *)inChat
     4.8 +{
     4.9 +	[openChats addObject:inChat];
    4.10 +}
    4.11 +
    4.12  /*!
    4.13   * @brief Called by an account to notifiy the chat controller that it left a chat
    4.14   *
     5.1 --- a/Source/AIInterfaceController.h	Sat Aug 21 18:40:48 2010 -0400
     5.2 +++ b/Source/AIInterfaceController.h	Sat Aug 28 22:01:12 2010 +0200
     5.3 @@ -36,6 +36,8 @@
     5.4  	IBOutlet    NSMenuItem      *menuItem_customizeToolbar;
     5.5  
     5.6  	IBOutlet	NSMenuItem		*menuItem_print;
     5.7 +	
     5.8 +	IBOutlet NSMenuItem			*menuItem_reopenTab;
     5.9  
    5.10      NSMutableArray				*contactListViewArray;
    5.11      NSMutableArray				*messageViewArray;		
    5.12 @@ -80,6 +82,8 @@
    5.13  
    5.14  	IBOutlet NSView				*fontPanelAccessoryView;
    5.15  	IBOutlet NSButton			*button_fontPanelSetAsDefault;
    5.16 +	
    5.17 +	NSMutableArray				*recentlyClosedChats;
    5.18  }
    5.19  
    5.20  - (IBAction)toggleContactList:(id)sender;
    5.21 @@ -104,4 +108,6 @@
    5.22  
    5.23  - (IBAction)showPreferenceWindow:(id)sender;
    5.24  
    5.25 +- (IBAction)reopenChat:(id)sender;
    5.26 +
    5.27  @end
     6.1 --- a/Source/AIInterfaceController.m	Sat Aug 21 18:40:48 2010 -0400
     6.2 +++ b/Source/AIInterfaceController.m	Sat Aug 28 22:01:12 2010 +0200
     6.3 @@ -138,6 +138,8 @@
     6.4  		
     6.5  		windowMenuArray = nil;
     6.6  		
     6.7 +		recentlyClosedChats = [[NSMutableArray alloc] init];
     6.8 +		
     6.9  #ifdef LOG_RESPONDER_CHAIN
    6.10  		[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(reportResponderChain:) userInfo:nil repeats:YES];
    6.11  #endif
    6.12 @@ -274,6 +276,8 @@
    6.13  	[[NSNotificationCenter defaultCenter] removeObserver:self];
    6.14  	[adium.preferenceController unregisterPreferenceObserver:self];
    6.15  	
    6.16 +	[recentlyClosedChats release]; recentlyClosedChats = nil;
    6.17 +	
    6.18      [super dealloc];
    6.19  }
    6.20  
    6.21 @@ -663,6 +667,31 @@
    6.22  {
    6.23  	if (inChat) {
    6.24  		if ([adium.chatController closeChat:inChat]) {
    6.25 +			
    6.26 +			NSMutableDictionary *newRecentlyClosedChat = [NSMutableDictionary dictionary];
    6.27 +			
    6.28 +			[newRecentlyClosedChat setObject:inChat.account.internalObjectID forKey:@"AccountID"];
    6.29 +			
    6.30 +			if (inChat.isGroupChat) {
    6.31 +				// -chatCreationDictionary may be nil, so put it last.
    6.32 +				[newRecentlyClosedChat addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
    6.33 +																 [NSNumber numberWithBool:YES], @"IsGroupChat",
    6.34 +																 inChat.name, @"Name",
    6.35 +																 [inChat chatCreationDictionary], @"ChatCreationInfo",nil]];
    6.36 +			} else {
    6.37 +				[newRecentlyClosedChat addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
    6.38 +																 inChat.listObject.UID, @"UID",
    6.39 +																 inChat.account.service.serviceID, @"serviceID",
    6.40 +																 inChat.account.internalObjectID, @"AccountID",nil]];
    6.41 +			}
    6.42 +			
    6.43 +			[recentlyClosedChats insertObject:newRecentlyClosedChat atIndex:0];
    6.44 +			
    6.45 +			// this sounds like a sensible limit: no-one will remember what chat they had in the closed tab beyond these
    6.46 +			while (recentlyClosedChats.count > 16) {
    6.47 +				[recentlyClosedChats removeLastObject];
    6.48 +			}
    6.49 +			
    6.50  			[interfacePlugin closeChat:inChat];
    6.51  		}
    6.52  	}
    6.53 @@ -783,6 +812,50 @@
    6.54  	[_cachedOpenChats release]; _cachedOpenChats = nil;
    6.55  }
    6.56  
    6.57 +- (IBAction)reopenChat:(id)sender
    6.58 +{
    6.59 +	if (recentlyClosedChats.count == 0) {
    6.60 +		AILogWithSignature(@"Can't open recently closed tab: no recently closed tabs!");
    6.61 +		return;
    6.62 +	}
    6.63 +	
    6.64 +	NSDictionary *chatDict = [[[recentlyClosedChats objectAtIndex:0] retain] autorelease];
    6.65 +	[recentlyClosedChats removeObjectAtIndex:0];
    6.66 +	
    6.67 +	AIChat			*chat = nil;
    6.68 +	AIService		*service = [adium.accountController firstServiceWithServiceID:[chatDict objectForKey:@"serviceID"]];
    6.69 +	AIAccount		*account = [adium.accountController accountWithInternalObjectID:[chatDict objectForKey:@"AccountID"]];
    6.70 +	
    6.71 +	if ([[chatDict objectForKey:@"IsGroupChat"] boolValue]) {
    6.72 +		chat = [adium.chatController chatWithName:[chatDict objectForKey:@"Name"]
    6.73 +									   identifier:nil
    6.74 +										onAccount:account
    6.75 +								 chatCreationInfo:[chatDict objectForKey:@"ChatCreationInfo"]];
    6.76 +	} else {
    6.77 +		AIListContact *contact = [adium.contactController contactWithService:service
    6.78 +																	 account:account
    6.79 +																		 UID:[chatDict objectForKey:@"UID"]];
    6.80 +		
    6.81 +		if (contact) chat = [adium.chatController chatWithContact:contact];
    6.82 +	}
    6.83 +	
    6.84 +	if (!chat) {
    6.85 +		NSRunAlertPanel(AILocalizedString(@"Restoring chat failed", nil),
    6.86 +						AILocalizedString(@"Restoring the last closed tab failed. Perhaps the account not exist anymore?", nil),
    6.87 +						AILocalizedString(@"OK", nil),
    6.88 +						nil,
    6.89 +						nil);
    6.90 +		return;
    6.91 +	}
    6.92 +	
    6.93 +	// Tag the chat as restored.
    6.94 +	[chat setValue:[NSNumber numberWithBool:YES]
    6.95 +	   forProperty:@"Restored Chat"
    6.96 +			notify:NotifyNow];
    6.97 +	
    6.98 +	[self openChat:chat inContainerWithID:nil atIndex:-1];
    6.99 +	[self setActiveChat:chat];
   6.100 +}
   6.101  
   6.102  
   6.103  //Interface plugin callbacks -------------------------------------------------------------------------------------------
   6.104 @@ -1931,7 +2004,9 @@
   6.105  									  AILocalizedString(@"Show Fonts",nil))];
   6.106  		return YES;
   6.107  	} else if (menuItem == menuItem_toggleUserlist || menuItem == menuItem_toggleUserlistSide) {
   6.108 -			return self.activeChat.isGroupChat;
   6.109 +		return self.activeChat.isGroupChat;
   6.110 +	} else if (menuItem == menuItem_reopenTab) {
   6.111 +		return recentlyClosedChats.count > 0;
   6.112  	} else {
   6.113  		return YES;
   6.114  	}