diff options
| -rw-r--r-- | Swift/Controllers/Chat/ChatController.cpp | 15 | ||||
| -rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 13 | 
2 files changed, 23 insertions, 5 deletions
| diff --git a/Swift/Controllers/Chat/ChatController.cpp b/Swift/Controllers/Chat/ChatController.cpp index 50d85a3..0b34681 100644 --- a/Swift/Controllers/Chat/ChatController.cpp +++ b/Swift/Controllers/Chat/ChatController.cpp @@ -247,23 +247,32 @@ void ChatController::handleSettingChanged(const std::string& settingPath) {  }  void ChatController::checkForDisplayingDisplayReceiptsAlert() { +	boost::optional<ChatWindow::AlertID> newDeliverReceiptAlert;  	if (userWantsReceipts_ && (contactSupportsReceipts_ == ChatWindow::No)) { -		deliveryReceiptAlert_ = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "This chat doesn't support delivery receipts.")); +		newDeliverReceiptAlert = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "This chat doesn't support delivery receipts."));  	} else if (userWantsReceipts_ && (contactSupportsReceipts_ == ChatWindow::Maybe)) { -		deliveryReceiptAlert_ = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "This chat may not support delivery receipts. You might not receive delivery receipts for the messages you sent.")); +		newDeliverReceiptAlert = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "This chat may not support delivery receipts. You might not receive delivery receipts for the messages you sent."));  	} else {  		if (deliveryReceiptAlert_) {  			chatWindow_->removeAlert(*deliveryReceiptAlert_);  			deliveryReceiptAlert_.reset();  		}  	} +	if (newDeliverReceiptAlert) { +		if (deliveryReceiptAlert_) { +			chatWindow_->removeAlert(*deliveryReceiptAlert_); +		} +		deliveryReceiptAlert_ = newDeliverReceiptAlert; +	}  }  void ChatController::handleBlockingStateChanged() {  	boost::shared_ptr<BlockList> blockList = clientBlockListManager_->getBlockList();  	if (blockList->getState() == BlockList::Available) {  		if (isInMUC_ ? blockList->isBlocked(toJID_) : blockList->isBlocked(toJID_.toBare())) { -			blockedContactAlert_ = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "You've currently blocked this contact. To continue your conversation you have to unblock the contact first.")); +			if (!blockedContactAlert_) { +				blockedContactAlert_ = chatWindow_->addAlert(QT_TRANSLATE_NOOP("", "You've currently blocked this contact. To continue your conversation you have to unblock the contact first.")); +			}  			chatWindow_->setInputEnabled(false);  			chatWindow_->setBlockingState(ChatWindow::IsBlocked); diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 6500ba4..ed79dcc 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -271,11 +271,20 @@ void QtChatWindow::handleKeyPressEvent(QKeyEvent* event) {  }  void QtChatWindow::beginCorrection() { +	boost::optional<AlertID> newCorrectingAlert;  	if (correctionEnabled_ == ChatWindow::Maybe) { -		correctingAlert_ = addAlert(Q2PSTRING(tr("This chat may not support message correction. If you send a correction anyway, it may appear as a duplicate message"))); +		newCorrectingAlert = addAlert(Q2PSTRING(tr("This chat may not support message correction. If you send a correction anyway, it may appear as a duplicate message")));  	} else if (correctionEnabled_ == ChatWindow::No) { -		correctingAlert_ = addAlert(Q2PSTRING(tr("This chat does not support message correction.  If you send a correction anyway, it will appear as a duplicate message"))); +		newCorrectingAlert = addAlert(Q2PSTRING(tr("This chat does not support message correction.  If you send a correction anyway, it will appear as a duplicate message")));  	} + +	if (newCorrectingAlert) { +		if (correctingAlert_) { +			removeAlert(*correctingAlert_); +		} +		correctingAlert_ = newCorrectingAlert; +	} +  	QTextCursor cursor = input_->textCursor();  	cursor.select(QTextCursor::Document);  	cursor.beginEditBlock(); | 
 Swift
 Swift