Allow menu items to be validated if they aren't channel operations. Fixes #13280.
1.1 --- a/Plugins/Purple Service/ESIRCAccount.h Sat Oct 31 22:52:55 2009 -0400
1.2 +++ b/Plugins/Purple Service/ESIRCAccount.h Sat Oct 31 22:58:03 2009 -0400
1.3 @@ -14,6 +14,8 @@
1.4 #define KEY_IRC_ENCODING @"IRC:Encoding"
1.5
1.6 typedef enum {
1.7 + AIUnspecifiedOperation = 0,
1.8 + AIRequiresNoLevel,
1.9 AIRequiresOp,
1.10 AIRequiresHalfop
1.11 } AIOperationRequirement;
2.1 --- a/Plugins/Purple Service/ESIRCAccount.m Sat Oct 31 22:52:55 2009 -0400
2.2 +++ b/Plugins/Purple Service/ESIRCAccount.m Sat Oct 31 22:58:03 2009 -0400
2.3 @@ -454,24 +454,27 @@
2.4 {
2.5 AIOperationRequirement req = menuItem.tag;
2.6 AIChat *chat = adium.interfaceController.activeChat;
2.7 -
2.8 - if (!chat.chatContainer.messageViewController.selectedListObjects.count) {
2.9 - return NO;
2.10 - }
2.11 -
2.12 + BOOL anySelected = chat.chatContainer.messageViewController.selectedListObjects.count > 0;
2.13 +
2.14 AIGroupChatFlags flags = [self flagsInChat:chat];
2.15
2.16 switch (req) {
2.17 case AIRequiresHalfop:
2.18 - return ((flags & AIGroupChatOp) == AIGroupChatOp || (flags & AIGroupChatHalfOp) == AIGroupChatHalfOp);
2.19 + return (anySelected && ((flags & AIGroupChatOp) == AIGroupChatOp || (flags & AIGroupChatHalfOp) == AIGroupChatHalfOp));
2.20 break;
2.21
2.22 case AIRequiresOp:
2.23 - return ((flags & AIGroupChatOp) == AIGroupChatOp);
2.24 + return (anySelected && ((flags & AIGroupChatOp) == AIGroupChatOp));
2.25 + break;
2.26 +
2.27 + case AIRequiresNoLevel:
2.28 + return anySelected;
2.29 + break;
2.30 +
2.31 + default:
2.32 + return YES;
2.33 break;
2.34 }
2.35 -
2.36 - return NO;
2.37 }
2.38
2.39 #pragma mark Action Menu's Actions