adium 5512:2a23d9019455: Merged adium-1.6 into default. Also fix...

commits at adium.im commits at adium.im
Thu May 23 22:01:11 UTC 2013


details:	http://hg.adium.im/adium/rev/2a23d9019455
revision:	5512:2a23d9019455
branch:		(none)
author:		Thijs Alkemade <me at thijsalkema.de>
date:		Fri May 24 00:00:18 2013 +0200

Merged adium-1.6 into default. Also fixed some memory management shenanigans ARC doesn't accept in AIMessageViewEmoticonsController.m.

diffs (truncated from 88757 to 1000 lines):

diff -r 9905f4a21d11 -r 2a23d9019455 Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Tue May 07 18:50:42 2013 +0200
+++ b/Adium.xcodeproj/project.pbxproj	Fri May 24 00:00:18 2013 +0200
@@ -841,7 +841,6 @@
 		34DC8ADC0A7EEEF7003E1636 /* AIContextMenuTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E1E8176063A3EEC00EB00F7 /* AIContextMenuTextView.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		34DC8ADD0A7EEEF7003E1636 /* AIContextMenuTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E1E8177063A3EEC00EB00F7 /* AIContextMenuTextView.m */; };
 		34DC8AE00A7EEEF7003E1636 /* AIMessageEntryTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B5827E80613CE9D0004BD25 /* AIMessageEntryTextView.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		34DC8AE10A7EEEF7003E1636 /* AIMessageEntryTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B5827E90613CE9D0004BD25 /* AIMessageEntryTextView.m */; };
 		34DC8AE40A7EEEF7003E1636 /* stackImage.png in Resources */ = {isa = PBXBuildFile; fileRef = 349DDD5206406A7D00542726 /* stackImage.png */; };
 		34DC8AE50A7EEEF7003E1636 /* AILocalizationAssistance.h in Headers */ = {isa = PBXBuildFile; fileRef = 34D189B1076131850075A380 /* AILocalizationAssistance.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		34DC8AE70A7EEEF7003E1636 /* AILocalizationButtonCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 078C5CD0079EFF87004C75A4 /* AILocalizationButtonCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1017,6 +1016,7 @@
 		4F1CB6400D640DA40073A1E6 /* get-info-advanced.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4F1CB63C0D640DA40073A1E6 /* get-info-advanced.tiff */; };
 		4F1CB6410D640DA40073A1E6 /* get-info-events.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4F1CB63D0D640DA40073A1E6 /* get-info-events.tiff */; };
 		4F1CB64C0D640F4F0073A1E6 /* ContactInfoInspector.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4F1CB64B0D640F4F0073A1E6 /* ContactInfoInspector.xib */; };
+		5A0BBC4317400544002A7BE0 /* emoticons_menu at 2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5A0BBC4217400544002A7BE0 /* emoticons_menu at 2x.png */; };
 		5A0D236A16F4C7BC005DF211 /* STTwitterAppOnly.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A0D236816F4C7BC005DF211 /* STTwitterAppOnly.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
 		5A1781860EC1215D00BA1E04 /* AIAutoScrollTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A1781850EC1215D00BA1E04 /* AIAutoScrollTextView.m */; };
 		5A17D65D130F76B4002C852F /* AIGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A17D65C130F76B4002C852F /* AIGradientView.m */; };
@@ -1349,6 +1349,8 @@
 		76731DE515F90582007728C3 /* libgpgerror.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 76731DE115F90538007728C3 /* libgpgerror.framework */; };
 		767870E41634045D00BD0E4D /* AIMessageViewTopBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 767870E31634045C00BD0E4D /* AIMessageViewTopBarController.m */; };
 		76889DEB12D3CA17007AEF00 /* get-info.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 76889DEA12D3CA17007AEF00 /* get-info.tiff */; };
+		76980AC1173E6C8800FBDA15 /* libidn.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76980AC0173E6C8800FBDA15 /* libidn.framework */; };
+		76980AC5173E6CA700FBDA15 /* libidn.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 76980AC0173E6C8800FBDA15 /* libidn.framework */; };
 		769D634B17393CBE008B97BC /* AMPurpleJabberDiscoveryBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 769D634A17393CBE008B97BC /* AMPurpleJabberDiscoveryBrowser.xib */; };
 		76A79E0B16349477007A0497 /* AIGroupChat.h in Headers */ = {isa = PBXBuildFile; fileRef = 76A79E0916349477007A0497 /* AIGroupChat.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		76A79E0C16349477007A0497 /* AIGroupChat.m in Sources */ = {isa = PBXBuildFile; fileRef = 76A79E0A16349477007A0497 /* AIGroupChat.m */; };
@@ -1409,6 +1411,11 @@
 		9719C92F1530EE4800217FBE /* FriBidi.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 9719C92B1530EDF700217FBE /* FriBidi.framework */; };
 		9719C9301530EE4800217FBE /* ShortcutRecorder.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 9719C92D1530EE0C00217FBE /* ShortcutRecorder.framework */; };
 		9722ABC813257D7F00CAB486 /* ContactListWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9722ABC713257D7F00CAB486 /* ContactListWindow.xib */; };
+		972AB3A11493CF2300381105 /* emoticons_menu.png in Resources */ = {isa = PBXBuildFile; fileRef = 974C7524148570E2000686BA /* emoticons_menu.png */; };
+		972AB3A21493D1BA00381105 /* MessageViewEmoticonsMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 974C752C148578F6000686BA /* MessageViewEmoticonsMenu.xib */; };
+		97483A011486DD87002D1FA8 /* AIMessageEntryTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B5827E90613CE9D0004BD25 /* AIMessageEntryTextView.m */; };
+		97483A051486E92C002D1FA8 /* AIMessageViewEmoticonsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 974C753314857BF4000686BA /* AIMessageViewEmoticonsController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		97483A061486E93E002D1FA8 /* AIMessageViewEmoticonsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 974C753414857BF4000686BA /* AIMessageViewEmoticonsController.m */; };
 		9760D24613E49A560031FA1A /* AboutDialog_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 9760D24513E49A560031FA1A /* AboutDialog_bg.png */; };
 		97AF5CDB13191DE200550C41 /* AIContactListUserPictureMenuController.m in Sources */ = {isa = PBXBuildFile; fileRef = 97AF5CDA13191DE200550C41 /* AIContactListUserPictureMenuController.m */; };
 		97AF5CF413191E9A00550C41 /* ContactListChangeUserPictureMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 97AF5CF313191E9A00550C41 /* ContactListChangeUserPictureMenu.xib */; };
@@ -1673,6 +1680,7 @@
 				11EE1CCF0CDD01120097F246 /* libglib.framework in Copy Frameworks */,
 				11EE1CD00CDD01120097F246 /* libgmodule.framework in Copy Frameworks */,
 				11EE1CD10CDD01120097F246 /* libgobject.framework in Copy Frameworks */,
+				76980AC5173E6CA700FBDA15 /* libidn.framework in Copy Frameworks */,
 				11EE1CD20CDD01120097F246 /* libgthread.framework in Copy Frameworks */,
 				7664EAA6162E0874008CF995 /* libffi.framework in Copy Frameworks */,
 				11EE1CD30CDD01120097F246 /* libintl.framework in Copy Frameworks */,
@@ -3871,6 +3879,7 @@
 		4F1CB63C0D640DA40073A1E6 /* get-info-advanced.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "get-info-advanced.tiff"; path = "Resources/get-info-advanced.tiff"; sourceTree = "<group>"; };
 		4F1CB63D0D640DA40073A1E6 /* get-info-events.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "get-info-events.tiff"; path = "Resources/get-info-events.tiff"; sourceTree = "<group>"; };
 		4F1CB64B0D640F4F0073A1E6 /* ContactInfoInspector.xib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xib; name = ContactInfoInspector.xib; path = Resources/ContactInfoInspector.xib; sourceTree = "<group>"; };
+		5A0BBC4217400544002A7BE0 /* emoticons_menu at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "emoticons_menu at 2x.png"; path = "Resources/emoticons_menu at 2x.png"; sourceTree = "<group>"; };
 		5A0D236816F4C7BC005DF211 /* STTwitterAppOnly.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = STTwitterAppOnly.m; path = "Plugins/Twitter Plugin/STTwitter/STTwitterAppOnly.m"; sourceTree = "<group>"; };
 		5A0D236916F4C7BC005DF211 /* STTwitterAppOnly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STTwitterAppOnly.h; path = "Plugins/Twitter Plugin/STTwitter/STTwitterAppOnly.h"; sourceTree = "<group>"; };
 		5A1781840EC1215D00BA1E04 /* AIAutoScrollTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAutoScrollTextView.h; path = Source/AIAutoScrollTextView.h; sourceTree = "<group>"; };
@@ -4414,6 +4423,7 @@
 		767870E21634045C00BD0E4D /* AIMessageViewTopBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMessageViewTopBarController.h; path = Source/AIMessageViewTopBarController.h; sourceTree = "<group>"; };
 		767870E31634045C00BD0E4D /* AIMessageViewTopBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIMessageViewTopBarController.m; path = Source/AIMessageViewTopBarController.m; sourceTree = "<group>"; };
 		76889DEA12D3CA17007AEF00 /* get-info.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "get-info.tiff"; path = "Resources/get-info.tiff"; sourceTree = "<group>"; };
+		76980AC0173E6C8800FBDA15 /* libidn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libidn.framework; path = Frameworks/libidn.framework; sourceTree = "<group>"; };
 		769D634A17393CBE008B97BC /* AMPurpleJabberDiscoveryBrowser.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = AMPurpleJabberDiscoveryBrowser.xib; path = "Plugins/Purple Service/AMPurpleJabberDiscoveryBrowser.xib"; sourceTree = "<group>"; };
 		76A79E0916349477007A0497 /* AIGroupChat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIGroupChat.h; path = "Frameworks/Adium Framework/Source/AIGroupChat.h"; sourceTree = "<group>"; };
 		76A79E0A16349477007A0497 /* AIGroupChat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIGroupChat.m; path = "Frameworks/Adium Framework/Source/AIGroupChat.m"; sourceTree = "<group>"; };
@@ -4484,6 +4494,10 @@
 		9719C92B1530EDF700217FBE /* FriBidi.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FriBidi.framework; path = Frameworks/FriBidi.framework; sourceTree = "<group>"; };
 		9719C92D1530EE0C00217FBE /* ShortcutRecorder.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ShortcutRecorder.framework; path = Frameworks/ShortcutRecorder.framework; sourceTree = "<group>"; };
 		9722ABC713257D7F00CAB486 /* ContactListWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ContactListWindow.xib; path = Resources/ContactListWindow.xib; sourceTree = "<group>"; };
+		974C7524148570E2000686BA /* emoticons_menu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = emoticons_menu.png; path = Resources/emoticons_menu.png; sourceTree = "<group>"; };
+		974C752C148578F6000686BA /* MessageViewEmoticonsMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MessageViewEmoticonsMenu.xib; path = Resources/MessageViewEmoticonsMenu.xib; sourceTree = "<group>"; };
+		974C753314857BF4000686BA /* AIMessageViewEmoticonsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMessageViewEmoticonsController.h; path = Source/AIMessageViewEmoticonsController.h; sourceTree = "<group>"; };
+		974C753414857BF4000686BA /* AIMessageViewEmoticonsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIMessageViewEmoticonsController.m; path = Source/AIMessageViewEmoticonsController.m; sourceTree = "<group>"; };
 		9760D24513E49A560031FA1A /* AboutDialog_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = AboutDialog_bg.png; path = Resources/AboutDialog_bg.png; sourceTree = "<group>"; };
 		979AA6A514D59DC8008730DF /* AIBoolToControlTextColorTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIBoolToControlTextColorTransformer.h; path = "Frameworks/Adium Framework/Source/AIBoolToControlTextColorTransformer.h"; sourceTree = "<group>"; };
 		979AA6A614D59DC8008730DF /* AIBoolToControlTextColorTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIBoolToControlTextColorTransformer.m; path = "Frameworks/Adium Framework/Source/AIBoolToControlTextColorTransformer.m"; sourceTree = "<group>"; };
@@ -4789,6 +4803,7 @@
 				811035180CDE783800EC6038 /* SecurityInterface.framework in Frameworks */,
 				633405990F9C2C00003C77A9 /* AIUtilities.framework in Frameworks */,
 				3485D8EB09EB446900232CC4 /* Adium.framework in Frameworks */,
+				76980AC1173E6C8800FBDA15 /* libidn.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -5008,6 +5023,13 @@
 		11C157D504A88DE0008E0C76 /* Emoticons */ = {
 			isa = PBXGroup;
 			children = (
+				11C157D804A88E04008E0C76 /* AIEmoticonController.h */,
+				11C157D904A88E04008E0C76 /* AIEmoticonController.m */,
+				974C753314857BF4000686BA /* AIMessageViewEmoticonsController.h */,
+				974C753414857BF4000686BA /* AIMessageViewEmoticonsController.m */,
+				974C752C148578F6000686BA /* MessageViewEmoticonsMenu.xib */,
+				974C7524148570E2000686BA /* emoticons_menu.png */,
+				5A0BBC4217400544002A7BE0 /* emoticons_menu at 2x.png */,
 				C4243C920638E4EA007AD2D9 /* BGEmoticonMenuPlugin.h */,
 				C4243C930638E4EA007AD2D9 /* BGEmoticonMenuPlugin.m */,
 			);
@@ -5839,8 +5861,6 @@
 				34B82C80085A85D800864531 /* AIChatController.m */,
 				F55B415C03AB8B5601A8010A /* AIContentController.h */,
 				F55B415D03AB8B5601A8010A /* AIContentController.m */,
-				11C157D804A88E04008E0C76 /* AIEmoticonController.h */,
-				11C157D904A88E04008E0C76 /* AIEmoticonController.m */,
 				34CA15520CAFDFB2009AA5E3 /* sidebarActionWidget.png */,
 				C6EE434115C0AA6F00A4B96C /* sidebarActionWidget at 2x.png */,
 				34A9707D0C96602200F46006 /* sidebarStatusAreaBackground.png */,
@@ -8282,6 +8302,7 @@
 		979AA6A914D59EF3008730DF /* Others */ = {
 			isa = PBXGroup;
 			children = (
+				76980AC0173E6C8800FBDA15 /* libidn.framework */,
 				7664EAA4162E086A008CF995 /* libffi.framework */,
 				76731DE015F90538007728C3 /* libgcrypt.framework */,
 				76731DE115F90538007728C3 /* libgpgerror.framework */,
@@ -9175,6 +9196,7 @@
 				112B47670F82E0FC00690E84 /* AIXtraInfo.h in Headers */,
 				34F17FCE0F8EAC34009C5A39 /* AIListOutlineView+Drawing.h in Headers */,
 				63B0EC9D0F8FBB660062476B /* AIProxyListObject.h in Headers */,
+				97483A051486E92C002D1FA8 /* AIMessageViewEmoticonsController.h in Headers */,
 				76A79E0B16349477007A0497 /* AIGroupChat.h in Headers */,
 				5A6298E31682BD9D00F51DED /* AIAdvancedPreferencePane.h in Headers */,
 			);
@@ -9857,6 +9879,8 @@
 				5A4BD56A13F86B7E00A4D3F7 /* Preferences-Icons.xib in Resources */,
 				5A4BD57F13F86BC500A4D3F7 /* Preferences-General.xib in Resources */,
 				7EC033B214590E0700CF24FB /* MessageWindow.xib in Resources */,
+				972AB3A11493CF2300381105 /* emoticons_menu.png in Resources */,
+				972AB3A21493D1BA00381105 /* MessageViewEmoticonsMenu.xib in Resources */,
 				5A27FA7E14A272330063489D /* pref-messagestyle.png in Resources */,
 				5A1E3A1214DCE60400724574 /* Preferences-Xtras.xib in Resources */,
 				5A8F637614DD1B21008412C8 /* Preferences-Privacy.xib in Resources */,
@@ -9926,6 +9950,7 @@
 				C613B1111640C370006683FF /* pref-profile.tiff in Resources */,
 				C613B143164112B3006683FF /* events-dock-name.tiff in Resources */,
 				C613B1451641210B006683FF /* events-contact.tiff in Resources */,
+				5A0BBC4317400544002A7BE0 /* emoticons_menu at 2x.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -10651,7 +10676,6 @@
 				34DC8AD80A7EEEF7003E1636 /* DCJoinChatWindowController.m in Sources */,
 				34DC8ADB0A7EEEF7003E1636 /* AIAccountPlusFieldPromptController.m in Sources */,
 				34DC8ADD0A7EEEF7003E1636 /* AIContextMenuTextView.m in Sources */,
-				34DC8AE10A7EEEF7003E1636 /* AIMessageEntryTextView.m in Sources */,
 				34DC8AE80A7EEEF7003E1636 /* AILocalizationButtonCell.m in Sources */,
 				34DC8AEA0A7EEEF7003E1636 /* AILocalizationTextField.m in Sources */,
 				34DC8AEC0A7EEEF7003E1636 /* AILocalizationButton.m in Sources */,
@@ -10685,6 +10709,8 @@
 				112B47680F82E0FC00690E84 /* AIXtraInfo.m in Sources */,
 				34F17FCF0F8EAC34009C5A39 /* AIListOutlineView+Drawing.m in Sources */,
 				63B0EC9C0F8FBB660062476B /* AIProxyListObject.m in Sources */,
+				97483A011486DD87002D1FA8 /* AIMessageEntryTextView.m in Sources */,
+				97483A061486E93E002D1FA8 /* AIMessageViewEmoticonsController.m in Sources */,
 				76FF926814B62AB80043E23B /* AIConsoleController.m in Sources */,
 				5AEE60011602BAE200304672 /* AIBoolToControlTextColorTransformer.m in Sources */,
 				76A79E0C16349477007A0497 /* AIGroupChat.m in Sources */,
@@ -12389,6 +12415,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Debug;
 		};
@@ -12396,6 +12426,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Release;
 		};
@@ -12403,6 +12437,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = "Release-Debug";
 		};
@@ -12688,12 +12726,14 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				CODE_SIGN_IDENTITY = "Mac Developer";
 				COMBINE_HIDPI_IMAGES = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SRCROOT)/Frameworks\"",
 					"\"$(SRCROOT)/build/Debug\"",
 				);
+				PROVISIONING_PROFILE = "";
 			};
 			name = Debug;
 		};
@@ -12701,6 +12741,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				CODE_SIGN_IDENTITY = "Mac Developer";
 				COMBINE_HIDPI_IMAGES = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -12708,6 +12749,7 @@
 					"\"$(SRCROOT)/build/Debug\"",
 				);
 				GCC_PREPROCESSOR_DEFINITIONS = RELEASE_BUILD;
+				PROVISIONING_PROFILE = "";
 			};
 			name = Release;
 		};
@@ -12715,6 +12757,7 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				CODE_SIGN_IDENTITY = "Mac Developer";
 				COMBINE_HIDPI_IMAGES = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -12725,6 +12768,7 @@
 					RELEASE_BUILD,
 					DEBUG_BUILD,
 				);
+				PROVISIONING_PROFILE = "";
 			};
 			name = "Release-Debug";
 		};
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/gfx/Adium-Extra.png
Binary file AdiumHelp/gfx/Adium-Extra.png has changed
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/gfx/Adium-Xtras.png
Binary file AdiumHelp/gfx/Adium-Xtras.png has changed
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/gfx/Chat window-Encryption.png
Binary file AdiumHelp/gfx/Chat window-Encryption.png has changed
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/gfx/pref-sm.png
Binary file AdiumHelp/gfx/pref-sm.png has changed
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/pgs/AdiumDocumentation.html
--- a/AdiumHelp/pgs/AdiumDocumentation.html	Tue May 07 18:50:42 2013 +0200
+++ b/AdiumHelp/pgs/AdiumDocumentation.html	Fri May 24 00:00:18 2013 +0200
@@ -37,7 +37,7 @@
 							<li><a href="Accounts-CreatingAccounts.html">Creating accounts â–¸</a></li>
 							<li><a href="Accounts-ContactIcons.html">Contact icons â–¸</a></li>
 							<li><a href="Accounts-SettingYourStatus.html">Setting your status â–¸</a></li>
-							<li>Specific account use
+							<li>Service-specific information
 								<ul>
 									<li><a href="ServiceInformation-IRCSupport.html">IRC â–¸</a></li>
 									<li><a href="ServiceInformation-TwitterSupport.html">Twitter â–¸</a></li>
@@ -109,11 +109,15 @@
 					<td><ul>
 							<li><a href="AdvancedFeatures-AdiumXtras.html">Adium Xtras â–¸</a></li>
 							<li><a href="AdvancedFeatures-GrowlSupport.html">Growl support â–¸</a></li>
+							<li><a href="AdvancedFeatures-FileTransfer.html">File transfer â–¸</a></li>
 							<li><a href="AdvancedFeatures-AddressBookIntegration.html">Address Book integration â–¸</a></li>
-							<li><a href="AdvancedFeatures-FileTransfer.html">File transfer â–¸</a></li>
-							<li><a href="AdvancedFeatures-DirectConnect.html">AIM: Direct Connect â–¸</a></li>
-							<li><a href="AdvancedFeatures-SearchForBuddyBy Email.html">AIM: Search for buddy by email address â–¸</a></li>
-							<li><a href="AdvancedFeatures-NudgeBuzz.html">MSN: Nudge / Yahoo: Buzz â–¸</a></li>
+							<li><a href="AdvancedFeatures-OTREncryption.html">OTR encryption â–¸</a></li>
+							<li>Service-specific information</li>
+							<ul>
+								<li><a href="AdvancedFeatures-DirectConnect.html">AIM: Direct Connect â–¸</a></li>
+								<li><a href="AdvancedFeatures-SearchForBuddyBy Email.html">AIM: Search for buddy by email address â–¸</a></li>
+								<li><a href="AdvancedFeatures-NudgeBuzz.html">MSN: Nudge / Yahoo: Buzz â–¸</a></li>
+							</ul>
 						</ul></td>
 				</tr>
 			</table>
@@ -144,7 +148,7 @@
 	</div>
 <div class="taskboxline">
 		<div class="taskboxheader">
-			<h3>Information about the services supported</h3>
+			<h3>Services supported</h3>
 		</div>
 		<div class="taskboxtable">
 			<table width="100%" border="0" cellspacing="0" cellpadding="0" summary="One column table with heading">
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/pgs/AdvancedFeatures-AdiumXtras.html
--- a/AdiumHelp/pgs/AdvancedFeatures-AdiumXtras.html	Tue May 07 18:50:42 2013 +0200
+++ b/AdiumHelp/pgs/AdvancedFeatures-AdiumXtras.html	Fri May 24 00:00:18 2013 +0200
@@ -23,7 +23,7 @@
 			<h3>Installing Adium Xtras</h3>
 		</div>
 		<div class="taskboxtext">
-			<p>To install an Xtra from the <a class="ext_link" href="http://xtras.adium.im/">AdiumXtras website</a>, click the install link on the Xtra's webpage. To install an extra that you have already downloaded, simply doubleclick it. In either case, Adium will launch and put the Xtra into the correct place for you.</p>
+			<p>To install an Xtra from the <a class="ext_link" href="http://xtras.adium.im/">AdiumXtras website</a>, click the install link on the Xtra's webpage. To install an Xtra that you have already downloaded, simply doubleclick it. In either case, Adium will launch and put the Xtra into the correct place for you.</p>
 		</div>
 	</div>
 	<div class="taskboxline">
@@ -32,7 +32,7 @@
 		</div>
 		<div class="taskboxtext">
 			<p>Xtras are stored in subfolders of this folder: (Your Home Folder)/Library/Application Support/Adium 2.0. Each folder contains a different type of Xtra.</p>
-			<p align="center"> <img src="../gfx/Adium-Extra.png" alt="" width="400" height="112" /></p>
+			<p align="center"> <img src="../gfx/Adium-Xtras.png" alt="" width="400" height="112" /></p>
 			<ul>
 				<li>Contact List - Contact list layouts and themes (<a href="AdvancedFeatures-AdiumXtras-ListLayouts.html">.ListLayout</a>, <a href="AdvancedFeatures-AdiumXtras-ListTheme.html">.ListTheme</a>)</li>
 				<li>Dock Icons - Dock-icon packs (<a href="AdvancedFeatures-AdiumXtras-DockIcons.html">.AdiumIcon</a>)</li>
diff -r 9905f4a21d11 -r 2a23d9019455 AdiumHelp/pgs/AdvancedFeatures-OTREncryption.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AdiumHelp/pgs/AdvancedFeatures-OTREncryption.html	Fri May 24 00:00:18 2013 +0200
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<meta name="keywords" content="otr, encryption, off-the-record" />
+<meta name="description" content="otr encryption" />
+<title>OTR encryption</title>
+<link href="../css/topicpage.css" type="text/css" rel="stylesheet" media="all" />
+</head>
+<body>
+<div id="banner"> <a name="tabs" id="tabs"></a>
+	<div id="navleft"><a class="navleftsty" href="../AdiumHelp.html">Adium Help</a> <a class="navleftsty" href="AdiumDocumentation.html">Adium Documentation</a></div>
+</div>
+<div id="mainbox">
+	<div id="caticon"> <img src="../gfx/AdiumIcon.png" alt="Adium Icon" height="32" width="32" border="0" /> </div>
+	<div id="pagetitle">
+		<h1>OTR encryption</h1>
+	</div>
+	<p><a href="http://www.cypherpunks.ca/otr/">Off-the-Record (OTR) Messaging</a> enables you to have private conversations over instant messaging. According to the OTR Development Team, it aims to provide the following:</p>
+	<ul>
+		<li>"Encryption: No one else can read your instant messages."</li>
+		<li>"Authentication: You are assured the correspondent is who you think it is."</li>
+		<li>"Deniability: The messages you send do not have digital signatures that are checkable by a third party. Anyone can forge messages after a conversation to make them look like they came from you. However, during a conversation, your correspondent is assured the messages he sees are authentic and unmodified."</li>
+		<li>"Perfect forward secrecy: If you lose control of your private keys, no previous conversation is compromised."</li>
+	</ul>
+	<div class="taskboxline">
+		<div class="taskboxheader">
+			<h3>Setup</h3>
+		</div>
+		<div class="taskboxtext">
+			<ul>
+				<li>Generate an OTR fingerprint:</li>
+			<ol>
+				<li>Open the preferences, accessible via the <strong>Adium</strong> menu in the menu bar, and select the <strong>Encryption</strong> pane.</li>
+				<li>Click the <strong>Generate</strong> button. This fingerprint is unique for the account selected in the dropdown.</li>
+			</ol>
+				<li>Make sure you have the "Encryption" (lock) item in the chat window's toolbar. If not, click "Customise Toolbar..." from the <strong>View</strong> menu and add it.</li>
+			</ul>
+			<p align="center"> <img src="../gfx/Chat window-Encryption.png" alt="" width="" height="" /></p>
+		</div>
+	</div>
+	<div class="taskboxline">
+		<div class="taskboxheader">
+			<h3>Initiating an OTR-encrypted chat</h3>
+		</div>
+		<div class="taskboxtext">
+			<p></p>
+			<ol>
+				<li>Open a chat with the contact with whom you want to have a private conversation.</li>
+				<li>Notice the "Encryption" item in the toolbar appears unlocked. It signifies the chat currently is not encrypted. Click the icon and select "Initiate Encrypted OTR Chat".</li>
+				<li>You will be prompted to verify the fingerprint. If you are certain of its trustworthy origin click "Accept".</li>
+				<li>Notice the previously unlocked icon is now locked and the message "Encrypted OTR chat initiated" is displayed in the message view.</li>
+			</ol>
+		</div>
+	</div>
+	<div class="taskboxline">
+		<div class="taskboxheader">
+			<h3>Encryption settings</h3>
+		</div>
+		<div class="taskboxtext">
+			<p>There are four different settings which can be adjusted on a per-account and on a per-contact basis: "Disable chat encryption", "Encrypt chats as requested", "Encrypt chats automatically" and "Force encryption and refuse plaintext".</p>
+			<p><strong>Per-account</strong></p>
+			<ul>
+				<li>Open preferences, select the <strong>Accounts</strong> pane and double-click the account.</li>
+				<li>Click the "Privacy" tab and choose your option for this account from the dropdown.</li>
+			</ul>
+			<p><strong>Per-contact</strong></p>
+			<ul>
+				<li>In the chat window/tab you have open with the contact in question, click the lock in the toolbar and choose your option via "Encryption Settings".</li>
+			</ul>
+		</div>
+	</div>
+	<div class="taskboxline">
+		<div class="taskboxheader">
+			<h3>Disabling chat logging on your computer</h3>
+		</div>
+		<div class="taskboxtext">
+			<p>By default, Adium stores all of your chats locally. You might want to disable logging of chats on your computer entirely or just for OTR-encrypted chats or specific accounts.</p>
+			<ul>
+				<li>Open preferences, select the <strong>Messages</strong> pane.</li>
+				<li>Tick the appropriate checkboxes.</li>
+			</ul>
+		</div>
+	</div>
+</div>
+<script type="text/javascript" src="../js/help.js"></script>
+</body>
+</html>
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AIColorAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIColorAdditions.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIColorAdditions.m	Fri May 24 00:00:18 2013 +0200
@@ -144,27 +144,9 @@
 
 + (NSDictionary *)colorNamesDictionary
 {
-	if (!RGBColorValues) {
-		RGBColorValues = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
-						  [NSColor colorWithHTMLString:@"#000"],    @"black",
-						  [NSColor colorWithHTMLString:@"#c0c0c0"], @"silver",
-						  [NSColor colorWithHTMLString:@"#808080"], @"gray",
-						  [NSColor colorWithHTMLString:@"#808080"], @"grey",
-						  [NSColor colorWithHTMLString:@"#fff"],    @"white",
-						  [NSColor colorWithHTMLString:@"#800000"], @"maroon",
-						  [NSColor colorWithHTMLString:@"#f00"],    @"red",
-						  [NSColor colorWithHTMLString:@"#800080"], @"purple",
-						  [NSColor colorWithHTMLString:@"#f0f"],    @"fuchsia",
-						  [NSColor colorWithHTMLString:@"#008000"], @"green",
-						  [NSColor colorWithHTMLString:@"#0f0"],    @"lime",
-						  [NSColor colorWithHTMLString:@"#808000"], @"olive",
-						  [NSColor colorWithHTMLString:@"#ff0"],    @"yellow",
-						  [NSColor colorWithHTMLString:@"#000080"], @"navy",
-						  [NSColor colorWithHTMLString:@"#00f"],    @"blue",
-						  [NSColor colorWithHTMLString:@"#008080"], @"teal",
-						  [NSColor colorWithHTMLString:@"#0ff"],    @"aqua",
-						  [NSColor colorWithHTMLString:@"#4b0082"], @"indigo",
-						  nil];
+	static dispatch_once_t onceToken;
+	dispatch_once(&onceToken, ^{
+		RGBColorValues = [[NSMutableDictionary alloc] init];
 		NSArray *paths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:defaultRGBTxtLocation1 error:NULL];
 		for (NSString *middlePath in paths) {
 			NSString *path = [defaultRGBTxtLocation1 stringByAppendingPathComponent:[middlePath stringByAppendingPathComponent:defaultRGBTxtLocation2]];
@@ -177,7 +159,29 @@
 				break;
 			}
 		}
-	}
+		[RGBColorValues addEntriesFromDictionary:@{
+		 @"black": [NSColor colorWithHTMLString:@"#000"],
+		 @"silver": [NSColor colorWithHTMLString:@"#c0c0c0"],
+		 @"gray": [NSColor colorWithHTMLString:@"#808080"],
+		 @"grey": [NSColor colorWithHTMLString:@"#808080"],
+		 @"white": [NSColor colorWithHTMLString:@"#fff"],
+		 @"maroon": [NSColor colorWithHTMLString:@"#800000"],
+		 @"red": [NSColor colorWithHTMLString:@"#f00"],
+		 @"purple": [NSColor colorWithHTMLString:@"#800080"],
+		 @"fuchsia": [NSColor colorWithHTMLString:@"#f0f"],
+		 @"green": [NSColor colorWithHTMLString:@"#008000"],
+		 @"lime": [NSColor colorWithHTMLString:@"#0f0"],
+		 @"olive": [NSColor colorWithHTMLString:@"#808000"],
+		 @"yellow": [NSColor colorWithHTMLString:@"#ff0"],
+		 @"navy": [NSColor colorWithHTMLString:@"#000080"],
+		 @"blue": [NSColor colorWithHTMLString:@"#00f"],
+		 @"teal": [NSColor colorWithHTMLString:@"#008080"],
+		 @"aqua": [NSColor colorWithHTMLString:@"#0ff"],
+		 @"indigo": [NSColor colorWithHTMLString:@"#4b0082"],
+		 @"crimson": [NSColor colorWithHTMLString:@"#dc143c"]
+		 }];
+	});
+	
 	return RGBColorValues;
 }
 
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AICompletingTextField.m
--- a/Frameworks/AIUtilities Framework/Source/AICompletingTextField.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AICompletingTextField.m	Fri May 24 00:00:18 2013 +0200
@@ -208,10 +208,9 @@
 
 	NSArray *sortedArray = [possibleCompletions sortedArrayUsingSelector:@selector(compareLength:)];
 	
+	//When the AICompletingTextfield is modified to be able to provide multiple choices of completions, the entire array can be used later.
 	if ([sortedArray count] > 0){
 		return [sortedArray objectAtIndex:0];
-		//When the AICompletingTextfield is modified to be able to provide multiple choices of completions, the entire array can be used later.
-		//return sortedArray;
 	}
 	
 	return nil;
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AIDateFormatterAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIDateFormatterAdditions.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIDateFormatterAdditions.m	Fri May 24 00:00:18 2013 +0200
@@ -601,8 +601,6 @@
 			[newFormat appendString:@"%%"];
 			[scanner setScanLocation:[scanner scanLocation] - [span length] + 1];
 		
-		} else {
-			//NSLog(@"Unhandled format %@", span);
 		}
 	}
 
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m
--- a/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m	Fri May 24 00:00:18 2013 +0200
@@ -274,12 +274,8 @@
 #if LOG_TRACKING_INFO
 	NSLog(@"%@: Visible: %i ; Point %@ in %@ = %i", self,
 		  [[view window] isVisible],
-/*		  NSStringFromPoint([[view superview] convertPoint:[[view window] convertScreenToBase:mouseLocation] fromView:[[view window] contentView]]),*/
 		  NSStringFromPoint([[view window] convertScreenToBase:mouseLocation]),
-/*		  NSStringFromRect([view frame]),*/
 		  NSStringFromRect([[[view window] contentView] convertRect:[view frame] fromView:[view superview]]),
-/*		  NSPointInRect([[view window] convertScreenToBase:mouseLocation], [view frame])*/
-		  /*NSPointInRect([[view superview] convertPoint:[[view window] convertScreenToBase:mouseLocation] fromView:[[view window] contentView]],[view frame])*/
 		  NSPointInRect([[view window] convertScreenToBase:mouseLocation],[[[view window] contentView] convertRect:[view frame] fromView:[view superview]]));
 #endif
 	
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AIStringAdditions.m
--- a/Frameworks/AIUtilities Framework/Source/AIStringAdditions.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIStringAdditions.m	Fri May 24 00:00:18 2013 +0200
@@ -275,82 +275,6 @@
 	return string;
 }
 
-//- (NSString *)stringByEncodingURLEscapes
-//{
-//    NSScanner *s = [NSScanner scannerWithString:self];
-//    NSCharacterSet *notUrlCode = [[NSCharacterSet characterSetWithCharactersInString:
-//        @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),;/?:@=&"] 		invertedSet];
-//    NSMutableString *encodedString = [[NSMutableString alloc] initWithString:@""];
-//    NSString *read;
-//    
-//    while (![s isAtEnd])
-//    {
-//        [s scanUpToCharactersFromSet:notUrlCode intoString:&read];
-//        if (read)
-//            [encodedString appendString:read];
-//        if (![s isAtEnd])
-//        {
-//            [encodedString appendFormat:@"%%%x", [self characterAtIndex:[s scanLocation]]];
-//            [s setScanLocation:[s scanLocation]+1];
-//        }
-//    }
-//    
-//    return [encodedString autorelease];
-//}
-//
-//- (NSString *)stringByDecodingURLEscapes
-//{
-//    NSScanner *s = [NSScanner scannerWithString:self];
-//    NSMutableString *decodedString = [[NSMutableString alloc] initWithString:@""];
-//    NSString *read;
-//    
-//    while (![s isAtEnd])
-//    {
-//        [s scanUpToString:@"%" intoString:&read];
-//        if (read)
-//            [decodedString appendString:read];
-//        if (![s isAtEnd])
-//        {
-//            [decodedString appendString:[NSString stringWithFormat:@"%c", 
-//                [[NSString stringWithFormat:@"%li",
-//                    strtol([[self substringWithRange:NSMakeRange([s scanLocation]+1, 2)] cString], 
-//                        NULL, 16)] 
-//                intValue]]];
-//                
-//            [s setScanLocation:[s scanLocation]+3];
-//
-//        }
-//    }
-//    return [decodedString autorelease];
-//
-//}
-//
-//- (BOOL)isURLEncoded
-//{
-//    NSCharacterSet *notUrlCode = [[NSCharacterSet characterSetWithCharactersInString:
-//        @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.+!*'(),;/?:@=&"] 		invertedSet];
-//    NSCharacterSet *notHexSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCEFabcdef"]
-//        invertedSet];
-//    NSScanner *s = [NSScanner scannerWithString:self]; 
-//    
-//    if ([self rangeOfCharacterFromSet:notUrlCode].location != NSNotFound)
-//        return NO;
-//    
-//    while (![s isAtEnd])
-//    {
-//        [s scanUpToString:@"%" intoString:nil];
-//        
-//        if ([[self substringWithRange:NSMakeRange([s scanLocation]+1, 2)] rangeOfCharacterFromSet:notHexSet].location != NSNotFound)
-//            return NO;
-//    }
-//    
-//    return YES;
-//}
-
-
-
-
-
 //stringByEncodingURLEscapes
 // Percent escape all characters except for a-z, A-Z, 0-9, '_', and '-'
 // Convert spaces to '+'
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/AIUtilities Framework/Source/AITextViewWithPlaceholder.m
--- a/Frameworks/AIUtilities Framework/Source/AITextViewWithPlaceholder.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AITextViewWithPlaceholder.m	Fri May 24 00:00:18 2013 +0200
@@ -24,11 +24,8 @@
 
 - (void)setPlaceholderString:(NSString *)inPlaceholderString
 {
-  //  NSDictionary *attributes;
-	
-//	attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSColor grayColor], NSForegroundColorAttributeName, nil];
 	[self setPlaceholder:[[NSAttributedString alloc] initWithString:inPlaceholderString
-														  attributes:nil]];
+														 attributes:nil]];
 }
 
 - (void)setPlaceholder:(NSAttributedString *)inPlaceholder
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIAccount.m
--- a/Frameworks/Adium Framework/Source/AIAccount.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIAccount.m	Fri May 24 00:00:18 2013 +0200
@@ -1180,7 +1180,6 @@
 		}
 		
 		AIChat *newChat = [adium.chatController chatWithContact:contact];
-		//		NSLog(@"Making new chat %@ in chat window %@:%@",newChat,chatWindowController,[chatWindowController containerID]);
 		[adium.interfaceController openChat:newChat inContainerWithID:[chatWindowController containerID] atIndex:index];
 		return newChat;
 	} else {
@@ -1201,7 +1200,6 @@
 			[newParticipants addObject:[[participants objectAtIndex:i] objectsByEvaluatingSpecifier]];
 		}
 		
-		//AIChat *newChat = [adium.chatController chatWithName:name identifier:nil onAccount:self chatCreationInfo:nil];
 		DCJoinChatViewController *chatController = [DCJoinChatViewController joinChatView];
 		[chatController doJoinChatWithName:name onAccount:self chatCreationInfo:nil invitingContacts:newParticipants withInvitationMessage:@"Hey, wanna join my chat?"];
 		return [adium.chatController existingChatWithName:name onAccount:self];
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIAddressBookUserIconSource.m
--- a/Frameworks/Adium Framework/Source/AIAddressBookUserIconSource.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIAddressBookUserIconSource.m	Fri May 24 00:00:18 2013 +0200
@@ -127,7 +127,6 @@
 	if (useABImages) {
 		NSNumber		*tagNumber;
 		NSImage			*image;
-		//		AIListContact	*parentContact;
 		NSString		*uniqueID;
 		id				setOrObject;
 		
@@ -154,7 +153,7 @@
 						 asynchronously:YES
 							  forObject:listObject];
 			
-		} else /*if ([setOrObject isKindOfClass:[NSSet class]])*/{
+		} else {
 			//Apply the image to each listObject at the appropriate priority
 			for (AIListObject *listObject in [(NSSet *)setOrObject copy]) {
 				[AIUserIcons userIconSource:self
@@ -214,7 +213,7 @@
 				[trackingDict setObject:objectSet forKey:tagNumber];
 			}
 
-		} else /*if ([previousValue isKindOfClass:[NSMutableSet class]])*/{
+		} else {
 			//Add the new object to the previously-created set
 			[(NSMutableSet *)previousValue addObject:inObject];
 		}
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIEditStateWindowController.m
--- a/Frameworks/Adium Framework/Source/AIEditStateWindowController.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIEditStateWindowController.m	Fri May 24 00:00:18 2013 +0200
@@ -162,8 +162,6 @@
  */
 - (void)windowDidLoad
 {
-//	NSNumberFormatter	*intFormatter;
-	
 	[scrollView_statusMessage setAutohidesScrollers:YES];
 	[scrollView_statusMessage setAlwaysDrawFocusRingIfFocused:YES];
 	[textView_statusMessage setTarget:self action:@selector(okay:)];
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIListGroupCell.m
--- a/Frameworks/Adium Framework/Source/AIListGroupCell.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIListGroupCell.m	Fri May 24 00:00:18 2013 +0200
@@ -146,13 +146,8 @@
  */
 - (CGFloat)flippyIndent
 {
-//	if ([self textAlignment] != NSCenterTextAlignment) {
-		NSSize size = [self cellSize];
-		return size.height*0.4f + size.height*0.2f + FLIPPY_TEXT_PADDING;
-/*	} else {
-		return 0;
-	}
-*/
+	NSSize size = [self cellSize];
+	return size.height*0.4f + size.height*0.2f + FLIPPY_TEXT_PADDING;
 }
 
 
@@ -182,10 +177,8 @@
 	[arrowPath closePath];
 	[arrowPath fill];
 
-//	if ([self textAlignment] != NSCenterTextAlignment) {
-		rect.origin.x += rect.size.height*0.4f + rect.size.height*0.2f + FLIPPY_TEXT_PADDING;
-		rect.size.width -= rect.size.height*0.4f + rect.size.height*0.2f + FLIPPY_TEXT_PADDING;
-//	}
+	rect.origin.x += rect.size.height*0.4f + rect.size.height*0.2f + FLIPPY_TEXT_PADDING;
+	rect.size.width -= rect.size.height*0.4f + rect.size.height*0.2f + FLIPPY_TEXT_PADDING;
 	
 	if ([listObject boolValueForProperty:@"showCount"]) {
 		rect = [self drawGroupCountWithFrame:rect];
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AILocalizationControl.m
--- a/Frameworks/Adium Framework/Source/AILocalizationControl.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AILocalizationControl.m	Fri May 24 00:00:18 2013 +0200
@@ -121,7 +121,6 @@
 	newFrame.size.width = AIround(NSWidth(newFrame) + 0.5f);
 	
 	//Enforce a minimum width of the original frame width
-//	NSLog(@"%@: new is %@; original is %@",inStringValue,NSStringFromRect(newFrame),NSStringFromRect(originalFrame));
 	if (NSWidth(newFrame) < NSWidth(originalFrame)) {
 		newFrame.size.width = NSWidth(originalFrame);
 	}
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIMessageEntryTextView.h
--- a/Frameworks/Adium Framework/Source/AIMessageEntryTextView.h	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIMessageEntryTextView.h	Fri May 24 00:00:18 2013 +0200
@@ -21,6 +21,7 @@
 @class AIListContact, AIAccount, AIChat;
 
 @protocol AIMessageEntryTextViewDelegate <NSTextViewDelegate,NSObject>
+
 @optional
 /*!
  * @brief Should the tab key trigger an autocomplete?
@@ -35,9 +36,9 @@
 }
 
 @property (readwrite, nonatomic) NSAttributedString *string;
+
 @end
 
-
 @interface AIMessageEntryTextView : AISendingTextView <AITextEntryView, AIListObjectObserver> {
 	AIChat				*chat;
 
@@ -62,18 +63,34 @@
 
 	AISimpleTextView	*characterCounter;
 	NSString			*characterCounterPrefix;
-	NSInteger					maxCharacters;
+	NSInteger			maxCharacters;
 	NSColor				*savedTextColor;
+    
+ at protected
+    // Emoticons
+    BOOL hasEmoticonsMenu;
+    NSButton *emoticonsMenuButton;
 }
 
 @property (readwrite, unsafe_unretained, nonatomic) id<AIMessageEntryTextViewDelegate> delegate;
 
-//Configure
+// Configure
 @property (readwrite, nonatomic) BOOL clearOnEscape;
 @property (readwrite, nonatomic) BOOL homeToStartOfLine;
 @property (readwrite, nonatomic) NSView *associatedView;
 
-//Adium Text Entry
+// Context
+ at property (readwrite, retain, nonatomic) AIChat *chat;
+ at property (readonly, nonatomic) AIListContact *listObject;
+
+// History
+ at property (readwrite, nonatomic) BOOL historyEnabled;
+
+// Emoticons
+ at property (assign) BOOL hasEmoticonsMenu;
+ at property (retain) NSButton *emoticonsMenuButton;
+
+// Adium Text Entry
 - (void)setAttributedString:(NSAttributedString *)inAttributedString;
 - (void)setString:(NSString *)string;
 - (void)setTypingAttributes:(NSDictionary *)attrs;
@@ -81,23 +98,21 @@
 - (void)pasteAsRichText:(id)sender;
 - (NSSize)desiredSize;
 
-//Context
- at property (readwrite, nonatomic) AIChat *chat;
- at property (weak, readonly, nonatomic) AIListContact *listObject;
-
-//Paging
+// Paging
 - (void)scrollPageUp:(id)sender;
 - (void)scrollPageDown:(id)sender;
 
-//History
- at property (readwrite, nonatomic) BOOL historyEnabled;
+// History
 - (void)historyUp;
 - (void)historyDown;
 
-//Push and Pop
+// Push and Pop
 - (void)setPushPopEnabled:(BOOL)inBool;
 - (void)pushContent;
 - (void)popContent;
 - (void)swapContent;
 
+// Emoticons
+- (void)popUpEmoticonsMenu;
+
 @end
diff -r 9905f4a21d11 -r 2a23d9019455 Frameworks/Adium Framework/Source/AIMessageEntryTextView.m
--- a/Frameworks/Adium Framework/Source/AIMessageEntryTextView.m	Tue May 07 18:50:42 2013 +0200
+++ b/Frameworks/Adium Framework/Source/AIMessageEntryTextView.m	Fri May 24 00:00:18 2013 +0200
@@ -24,6 +24,8 @@
 #import <Adium/AIContentControllerProtocol.h>
 #import <Adium/AIContentContext.h>
 
+#import <Adium/AIMessageViewEmoticonsController.h>
+
 #import <AIUtilities/AIAttributedStringAdditions.h>
 #import <AIUtilities/AIColorAdditions.h>
 #import <AIUtilities/AITextAttributes.h>
@@ -32,8 +34,9 @@
 
 #import <FriBidi/NSString-FBAdditions.h>
 
-#define MAX_HISTORY					25		//Number of messages to remember in history
-#define ENTRY_TEXTVIEW_PADDING		6		//Padding for auto-sizing
+
+#define MAX_HISTORY					25	// Number of messages to remember in history
+#define ENTRY_TEXTVIEW_PADDING		6	// Padding for auto-sizing
 
 #define KEY_DISABLE_TYPING_NOTIFICATIONS		@"Disable Typing Notifications"
 
@@ -49,7 +52,7 @@
 #define KEY_SUBSTITUTION_QUOTE					@"Smart Quote Substitutions"
 #define KEY_SUBSTITUTION_LINK					@"Smart Links Substitutions"
 
-#define INDICATOR_RIGHT_PADDING					2		// Padding between right side of the message view and the rightmost indicator
+#define INDICATOR_RIGHT_PADDING					2	// Padding between right side of the message view and the rightmost indicator
 
 #define PREF_GROUP_CHARACTER_COUNTER			@"Character Counter"
 #define KEY_CHARACTER_COUNTER_ENABLED			@"Character Counter Enabled"
@@ -61,6 +64,8 @@
 #define PASS_TO_SUPERCLASS_DRAG_TYPE_ARRAY [NSArray arrayWithObjects: \
 	NSRTFPboardType, NSStringPboardType, nil]
 
+#pragma mark -
+
 /**
  * @class AISimpleTextView
  * @brief Just draws an attributed string. That's it.
@@ -75,11 +80,15 @@
 
 - (void)drawRect:(NSRect)rect 
 {
-	[string drawInRect:self.bounds];
+	[string drawInRect:[self bounds]];
 }
+
 @end
 
+#pragma mark -
+
 @interface AIMessageEntryTextView ()
+
 - (void)_setPushIndicatorVisible:(BOOL)visible;
 - (void)positionPushIndicator;
 - (void)_resetCacheAndPostSizeChanged;
@@ -101,12 +110,21 @@
 - (void)frameDidChange:(NSNotification *)notification;
 - (void)toggleMessageSending:(NSNotification *)not;
 - (void)contentObjectAdded:(NSNotification *)notification;
+
+- (void)updateEmoticonsMenuButton;
+
 @end
 
+#pragma mark -
+
 @interface NSMutableAttributedString (AIMessageEntryTextViewAdditions)
+
 - (void)convertForPasteWithTraitsUsingAttributes:(NSDictionary *)inAttributes;
+
 @end
 
+#pragma mark - AIMessageEntryTextView
+
 @implementation AIMessageEntryTextView
 
 - (void)_initMessageEntryTextView
@@ -120,7 +138,7 @@
 	homeToStartOfLine = YES;
 	resizing = NO;
 	enableTypingNotifications = NO;
-	historyArray = [[NSMutableArray alloc] initWithObjects:@"",nil];
+	historyArray = [[NSMutableArray alloc] initWithObjects:@"", nil];
 	pushArray = [[NSMutableArray alloc] init];
 	currentHistoryLocation = 0;
 	[self setDrawsBackground:YES];
@@ -129,10 +147,12 @@
 	characterCounterPrefix = nil;
 	maxCharacters = 0;
 	savedTextColor = nil;
-	
+	hasEmoticonsMenu = NO;
+
 	if ([self respondsToSelector:@selector(setAllowsUndo:)]) {
 		[self setAllowsUndo:YES];
 	}
+    
 	if ([self respondsToSelector:@selector(setAllowsDocumentBackgroundColorChange:)]) {
 		[self setAllowsDocumentBackgroundColorChange:YES];
 	}
@@ -143,25 +163,28 @@
 											 selector:@selector(textDidChange:)
 												 name:NSTextDidChangeNotification 
 											   object:self];
+    
 	[[NSNotificationCenter defaultCenter] addObserver:self
 											 selector:@selector(frameDidChange:) 
 												 name:NSViewFrameDidChangeNotification 
 											   object:self];
+    
 	[[NSNotificationCenter defaultCenter] addObserver:self
-															selector:@selector(toggleMessageSending:)
-																name:@"AIChatDidChangeCanSendMessagesNotification"
-															  object:chat];
-	[[NSNotificationCenter defaultCenter] addObserver:self 
-															selector:@selector(contentObjectAdded:) 
-																name:Content_ContentObjectAdded 
-															  object:nil];
+                                             selector:@selector(toggleMessageSending:)
+                                                 name:@"AIChatDidChangeCanSendMessagesNotification"
+                                               object:chat];
+    
+	[[NSNotificationCenter defaultCenter] addObserver:self
+                                             selector:@selector(contentObjectAdded:)
+                                                 name:Content_ContentObjectAdded
+                                               object:nil];
 
 	[adium.preferenceController registerPreferenceObserver:self forGroup:PREF_GROUP_DUAL_WINDOW_INTERFACE];	
 	
 	[[AIContactObserverManager sharedManager] registerListObjectObserver:self];
 }
 
-//Init the text view
+// Init the text view
 - (id)initWithFrame:(NSRect)frameRect textContainer:(NSTextContainer *)aTextContainer
 {
 	if ((self = [super initWithFrame:frameRect textContainer:aTextContainer])) {
@@ -213,9 +236,8 @@
 		unichar		 inChar = [charactersIgnoringModifiers characterAtIndex:0];
 		NSUInteger flags = [inEvent modifierFlags];
 		
-		//We have to test ctrl before option, because otherwise we'd miss ctrl-option-* events
-		if (pushPopEnabled &&
-			(flags & NSControlKeyMask) && !(flags & NSShiftKeyMask)) {
+		// We have to test ctrl before option, because otherwise we'd miss ctrl-option-* events
+		if (pushPopEnabled && (flags & NSControlKeyMask) && !(flags & NSShiftKeyMask)) {
 			if (inChar == NSUpArrowFunctionKey) {
 				[self popContent];
 			} else if (inChar == NSDownArrowFunctionKey) {
@@ -225,9 +247,7 @@
 			} else {
 				[super keyDown:inEvent];
 			}
-			
-		} else if (historyEnabled && 
-				   (flags & NSAlternateKeyMask) && !(flags & NSShiftKeyMask)) {
+		} else if (historyEnabled && (flags & NSAlternateKeyMask) && !(flags & NSShiftKeyMask)) {
 			if (inChar == NSUpArrowFunctionKey) {
 				[self historyUp];
 			} else if (inChar == NSDownArrowFunctionKey) {
@@ -235,13 +255,12 @@
 			} else {
 				[super keyDown:inEvent];
 			}
-			
-		} else if (associatedView &&
-				   (flags & NSCommandKeyMask) && !(flags & NSShiftKeyMask)) {
+		} else if (associatedView && (flags & NSCommandKeyMask) && !(flags & NSShiftKeyMask)) {
 			if ((inChar == NSUpArrowFunctionKey || inChar == NSDownArrowFunctionKey) ||
 			   (inChar == NSHomeFunctionKey || inChar == NSEndFunctionKey) ||
 			   (inChar == NSPageUpFunctionKey || inChar == NSPageDownFunctionKey)) {
-				//Pass the associatedView a keyDown event equivalent equal to inEvent except without the modifier flags
+				
+                // Pass the associatedView a keyDown event equivalent equal to inEvent except without the modifier flags
 				[associatedView keyDown:[NSEvent keyEventWithType:[inEvent type]
 														 location:[inEvent locationInWindow]
 													modifierFlags:0
@@ -255,24 +274,21 @@
 			} else {
 				[super keyDown:inEvent];
 			}
-			
-		} else if (associatedView &&
-				   (inChar == NSPageUpFunctionKey || inChar == NSPageDownFunctionKey)) {
-			[associatedView keyDown:inEvent];
-			
+		} else if (associatedView && (inChar == NSPageUpFunctionKey || inChar == NSPageDownFunctionKey)) {
+			[associatedView keyDown:inEvent];	
 		} else if (inChar == NSHomeFunctionKey || inChar == NSEndFunctionKey) {
 			if (homeToStartOfLine) {
 				NSRange	newRange;
 				
 				if (flags & NSShiftKeyMask) {
-					//With shift, select to the beginning/end of the line




More information about the commits mailing list