diff options
| author | Kevin Smith <git@kismith.co.uk> | 2012-04-26 16:52:12 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-04-26 16:52:12 (GMT) | 
| commit | bc08209eedf8a8a9f2506420384201e2bd0035d4 (patch) | |
| tree | eafae0f103389d6e1f1511dfe363b39395a2e4f2 /Swift/Controllers/Chat | |
| parent | 4a1f206b0f8d4926b3a61cc8d7aad217761e52f6 (diff) | |
| download | swift-bc08209eedf8a8a9f2506420384201e2bd0035d4.zip swift-bc08209eedf8a8a9f2506420384201e2bd0035d4.tar.bz2 | |
Only include targeted messages in the Chats view count for MUCs.
Resolves: #935
Diffstat (limited to 'Swift/Controllers/Chat')
| -rw-r--r-- | Swift/Controllers/Chat/ChatControllerBase.cpp | 6 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/ChatControllerBase.h | 1 | ||||
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 10 | 
3 files changed, 12 insertions, 5 deletions
| diff --git a/Swift/Controllers/Chat/ChatControllerBase.cpp b/Swift/Controllers/Chat/ChatControllerBase.cpp index 16ff885..583a102 100644 --- a/Swift/Controllers/Chat/ChatControllerBase.cpp +++ b/Swift/Controllers/Chat/ChatControllerBase.cpp @@ -92,6 +92,7 @@ void ChatControllerBase::setAvailableServerFeatures(boost::shared_ptr<DiscoInfo>  void ChatControllerBase::handleAllMessagesRead() {  	if (!unreadMessages_.empty()) { +		targetedUnreadMessages_.clear();  		foreach (boost::shared_ptr<StanzaEvent> stanzaEvent, unreadMessages_) {  			stanzaEvent->conclude();  		} @@ -102,7 +103,7 @@ void ChatControllerBase::handleAllMessagesRead() {  }  int ChatControllerBase::getUnreadCount() { -	return unreadMessages_.size(); +	return targetedUnreadMessages_.size();  }  void ChatControllerBase::handleSendMessageRequest(const std::string &body, bool isCorrectionMessage) { @@ -181,6 +182,9 @@ void ChatControllerBase::handleIncomingMessage(boost::shared_ptr<MessageEvent> m  	preHandleIncomingMessage(messageEvent);  	if (messageEvent->isReadable() && !messageEvent->getConcluded()) {  		unreadMessages_.push_back(messageEvent); +		if (messageEvent->targetsMe()) { +			targetedUnreadMessages_.push_back(messageEvent); +		}  	}  	boost::shared_ptr<Message> message = messageEvent->getStanza();  	std::string body = message->getBody(); diff --git a/Swift/Controllers/Chat/ChatControllerBase.h b/Swift/Controllers/Chat/ChatControllerBase.h index 8a8161d..7dd339c 100644 --- a/Swift/Controllers/Chat/ChatControllerBase.h +++ b/Swift/Controllers/Chat/ChatControllerBase.h @@ -91,6 +91,7 @@ namespace Swift {  		protected:  			JID selfJID_;  			std::vector<boost::shared_ptr<StanzaEvent> > unreadMessages_; +			std::vector<boost::shared_ptr<StanzaEvent> > targetedUnreadMessages_;  			StanzaChannel* stanzaChannel_;  			IQRouter* iqRouter_;  			ChatWindowFactory* chatWindowFactory_; diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index 775d7a2..3386877 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -393,10 +393,12 @@ void MUCController::preHandleIncomingMessage(boost::shared_ptr<MessageEvent> mes  	}  	clearPresenceQueue();  	boost::shared_ptr<Message> message = messageEvent->getStanza(); -	if (joined_ && messageEvent->getStanza()->getFrom().getResource() != nick_ && messageTargetsMe(message) && !message->getPayload<Delay>()) { -		if (messageEvent->isReadable()) { -			chatWindow_->flash(); -		} +	if (joined_ && messageEvent->getStanza()->getFrom().getResource() != nick_ && messageTargetsMe(message) && !message->getPayload<Delay>() && messageEvent->isReadable() +) { +		chatWindow_->flash(); +	} +	else { +		messageEvent->setTargetsMe(false);  	}  	if (joined_) {  		std::string nick = message->getFrom().getResource(); | 
 Swift
 Swift