diff options
| -rw-r--r-- | Swift/Controllers/Chat/MUCController.cpp | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/Swift/Controllers/Chat/MUCController.cpp b/Swift/Controllers/Chat/MUCController.cpp index c9936c0..35e79cc 100644 --- a/Swift/Controllers/Chat/MUCController.cpp +++ b/Swift/Controllers/Chat/MUCController.cpp @@ -928,10 +928,22 @@ void MUCController::handleChangeSubjectRequest(const std::string& subject) {  void MUCController::handleBookmarkRequest() {  	const JID jid = muc_->getJID(); -	MUCBookmark bookmark(jid, jid.toBare().toString()); -	bookmark.setPassword(password_); -	bookmark.setNick(nick_); -	chatWindow_->showBookmarkWindow(bookmark); + +	// Prepare new bookmark for this room. +	MUCBookmark roomBookmark(jid, jid.toBare().toString()); +	roomBookmark.setPassword(password_); +	roomBookmark.setNick(nick_); + +	// Check for existing bookmark for this room and, if it exists, use it instead. +	std::vector<MUCBookmark> bookmarks = mucBookmarkManager_->getBookmarks(); +	foreach (const MUCBookmark& bookmark, bookmarks) { +		if (bookmark.getRoom() == jid.toBare()) { +			roomBookmark = bookmark; +			break; +		} +	} + +	chatWindow_->showBookmarkWindow(roomBookmark);  }  void MUCController::handleConfigureRequest(Form::ref form) {  | 
 Swift