From 5847ecd71f31f5f9167b80f0a2a4d2a52029758d Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Mon, 10 Oct 2011 14:34:07 +0100
Subject: Have the available MUC actions work on initial rightclick.


diff --git a/Swift/QtUI/Roster/QtOccupantListWidget.cpp b/Swift/QtUI/Roster/QtOccupantListWidget.cpp
index 3f66585..d7bb875 100644
--- a/Swift/QtUI/Roster/QtOccupantListWidget.cpp
+++ b/Swift/QtUI/Roster/QtOccupantListWidget.cpp
@@ -36,26 +36,35 @@ void QtOccupantListWidget::contextMenuEvent(QContextMenuEvent* event) {
 	if (!index.isValid()) {
 		return;
 	}
+
 	RosterItem* item = static_cast<RosterItem*>(index.internalPointer());
 	ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item);
 	if (contact) {
+		onSomethingSelectedChanged(contact);
 		QMenu contextMenu;
-		std::map<QAction*, ChatWindow::OccupantAction> actions;
-		foreach (ChatWindow::OccupantAction availableAction, availableOccupantActions_) {
-			QString text = "Error: missing string";
-			switch (availableAction) {
-				case ChatWindow::Kick: text = tr("Kick user"); break;
-				case ChatWindow::Ban: text = tr("Kick and ban user"); break;
-				case ChatWindow::MakeModerator: text = tr("Make moderator"); break;
-				case ChatWindow::MakeParticipant: text = tr("Make participant"); break;
-				case ChatWindow::MakeVisitor: text = tr("Remove voice"); break;
-			}
-			QAction* action = contextMenu.addAction(text);
-			actions[action] = availableAction;
+		if (availableOccupantActions_.empty()) {
+			QAction* noAction = contextMenu.addAction(tr("No actions for this user"));
+			noAction->setEnabled(false);
+			contextMenu.exec(event->globalPos());
 		}
-		QAction* result = contextMenu.exec(event->globalPos());
-		if (result) {
-			onOccupantActionSelected(actions[result], contact);
+		else {
+			std::map<QAction*, ChatWindow::OccupantAction> actions;
+			foreach (ChatWindow::OccupantAction availableAction, availableOccupantActions_) {
+				QString text = "Error: missing string";
+				switch (availableAction) {
+					case ChatWindow::Kick: text = tr("Kick user"); break;
+					case ChatWindow::Ban: text = tr("Kick and ban user"); break;
+					case ChatWindow::MakeModerator: text = tr("Make moderator"); break;
+					case ChatWindow::MakeParticipant: text = tr("Make participant"); break;
+					case ChatWindow::MakeVisitor: text = tr("Remove voice"); break;
+				}
+				QAction* action = contextMenu.addAction(text);
+				actions[action] = availableAction;
+			}
+			QAction* result = contextMenu.exec(event->globalPos());
+			if (result) {
+				onOccupantActionSelected(actions[result], contact);
+			}
 		}
 	}
 }
-- 
cgit v0.10.2-6-g49f6