# HG changeset patch # User Zachary West # Date 1257044283 14400 # Node ID e47bfb289f64d4874dcb11a2fafd16186803d306 # Parent ecd301a427ccea81ca55e31f1b2714798c79e34b Allow menu items to be validated if they aren't channel operations. Fixes #13280. diff -r ecd301a427ccea81ca55e31f1b2714798c79e34b -r e47bfb289f64d4874dcb11a2fafd16186803d306 Plugins/Purple Service/ESIRCAccount.h --- a/Plugins/Purple Service/ESIRCAccount.h Sat Oct 31 22:52:55 2009 -0400 +++ b/Plugins/Purple Service/ESIRCAccount.h Sat Oct 31 22:58:03 2009 -0400 @@ -14,6 +14,8 @@ #define KEY_IRC_ENCODING @"IRC:Encoding" typedef enum { + AIUnspecifiedOperation = 0, + AIRequiresNoLevel, AIRequiresOp, AIRequiresHalfop } AIOperationRequirement; diff -r ecd301a427ccea81ca55e31f1b2714798c79e34b -r e47bfb289f64d4874dcb11a2fafd16186803d306 Plugins/Purple Service/ESIRCAccount.m --- a/Plugins/Purple Service/ESIRCAccount.m Sat Oct 31 22:52:55 2009 -0400 +++ b/Plugins/Purple Service/ESIRCAccount.m Sat Oct 31 22:58:03 2009 -0400 @@ -454,24 +454,27 @@ { AIOperationRequirement req = menuItem.tag; AIChat *chat = adium.interfaceController.activeChat; - - if (!chat.chatContainer.messageViewController.selectedListObjects.count) { - return NO; - } - + BOOL anySelected = chat.chatContainer.messageViewController.selectedListObjects.count > 0; + AIGroupChatFlags flags = [self flagsInChat:chat]; switch (req) { case AIRequiresHalfop: - return ((flags & AIGroupChatOp) == AIGroupChatOp || (flags & AIGroupChatHalfOp) == AIGroupChatHalfOp); + return (anySelected && ((flags & AIGroupChatOp) == AIGroupChatOp || (flags & AIGroupChatHalfOp) == AIGroupChatHalfOp)); break; case AIRequiresOp: - return ((flags & AIGroupChatOp) == AIGroupChatOp); + return (anySelected && ((flags & AIGroupChatOp) == AIGroupChatOp)); + break; + + case AIRequiresNoLevel: + return anySelected; + break; + + default: + return YES; break; } - - return NO; } #pragma mark Action Menu's Actions