Allow menu items to be validated if they aren't channel operations. Fixes #13280.
authorZachary West <zacw@adium.im>
Sat Oct 31 22:58:03 2009 -0400 (2009-10-31)
changeset 2845e47bfb289f64
parent 2844 ecd301a427cc
child 2846 28d2f716a225
Allow menu items to be validated if they aren't channel operations. Fixes #13280.
Plugins/Purple Service/ESIRCAccount.h
Plugins/Purple Service/ESIRCAccount.m
     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