diff options
| author | Kevin Smith <git@kismith.co.uk> | 2011-10-19 11:03:21 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2011-10-19 15:36:21 (GMT) | 
| commit | 30359b48e18bcf171a53d50d84a178b9cb376d7a (patch) | |
| tree | 42b59ff30433bf7d3f164aa64639312e865d2d4b | |
| parent | b951e04a08f368dad564995813323fd098c70e95 (diff) | |
| download | swift-30359b48e18bcf171a53d50d84a178b9cb376d7a.zip swift-30359b48e18bcf171a53d50d84a178b9cb376d7a.tar.bz2  | |
Use real JID for bans, not room JID.
Resolves: #1020
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 16 | ||||
| -rw-r--r-- | Swiften/MUC/MUC.cpp | 2 | ||||
| -rw-r--r-- | Swiften/MUC/MUC.h | 2 | 
3 files changed, 13 insertions, 7 deletions
diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 6d3f9f2..1120f4b 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -126,12 +126,18 @@ void MUCController::handleWindowOccupantSelectionChanged(ContactRosterItem* item  }  void MUCController::handleActionRequestedOnOccupant(ChatWindow::OccupantAction action, ContactRosterItem* item) { +	JID mucJID = item->getJID(); +	MUCOccupant occupant = muc_->getOccupant(mucJID.getResource()); +	JID realJID; +	if (occupant.getRealJID()) { +		realJID = occupant.getRealJID().get(); +	}  	switch (action) { -		case ChatWindow::Kick: muc_->kickOccupant(item->getJID());break; -		case ChatWindow::Ban: muc_->changeAffiliation(item->getJID(), MUCOccupant::Outcast);break; -		case ChatWindow::MakeModerator: muc_->changeOccupantRole(item->getJID(), MUCOccupant::Moderator);break; -		case ChatWindow::MakeParticipant: muc_->changeOccupantRole(item->getJID(), MUCOccupant::Participant);break; -		case ChatWindow::MakeVisitor: muc_->changeOccupantRole(item->getJID(), MUCOccupant::Visitor);break; +		case ChatWindow::Kick: muc_->kickOccupant(mucJID);break; +		case ChatWindow::Ban: muc_->changeAffiliation(realJID, MUCOccupant::Outcast);break; +		case ChatWindow::MakeModerator: muc_->changeOccupantRole(mucJID, MUCOccupant::Moderator);break; +		case ChatWindow::MakeParticipant: muc_->changeOccupantRole(mucJID, MUCOccupant::Participant);break; +		case ChatWindow::MakeVisitor: muc_->changeOccupantRole(mucJID, MUCOccupant::Visitor);break;  	}  } diff --git a/Swiften/MUC/MUC.cpp b/Swiften/MUC/MUC.cpp index 824ced1..78546c8 100644 --- a/Swiften/MUC/MUC.cpp +++ b/Swiften/MUC/MUC.cpp @@ -233,7 +233,7 @@ bool MUC::hasOccupant(const std::string& nick) {  	return occupants.find(nick) != occupants.end();  } -MUCOccupant MUC::getOccupant(const std::string& nick) { +const MUCOccupant& MUC::getOccupant(const std::string& nick) {  	return occupants.find(nick)->second;  } diff --git a/Swiften/MUC/MUC.h b/Swiften/MUC/MUC.h index 1070c69..39acb22 100644 --- a/Swiften/MUC/MUC.h +++ b/Swiften/MUC/MUC.h @@ -54,7 +54,7 @@ namespace Swift {  			/** Expose public so it can be called when e.g. user goes offline */  			void handleUserLeft(LeavingType);  			/** Get occupant information*/ -			MUCOccupant getOccupant(const std::string& nick); +			const MUCOccupant& getOccupant(const std::string& nick);  			bool hasOccupant(const std::string& nick);  			void kickOccupant(const JID& jid);  			void changeOccupantRole(const JID& jid, MUCOccupant::Role role);  | 
 Swift