Fix a regression that would show some wrong context menu entries in some cases
authorManuel Nickschas <sputnick@quassel-irc.org>
Fri, 16 Jan 2009 16:25:32 +0000 (17:25 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 16 Jan 2009 16:25:32 +0000 (17:25 +0100)
src/qtui/chatitem.cpp
src/uisupport/networkmodelactionprovider.cpp
src/uisupport/networkmodelactionprovider.h

index 9b7c220..098c78e 100644 (file)
@@ -286,9 +286,9 @@ void ChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
 }
 
 void ChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
 }
 
 void ChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
-  Q_UNUSED(menu);
   Q_UNUSED(pos);
 
   Q_UNUSED(pos);
 
+  Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>());
 }
 
 // ************************************************************
 }
 
 // ************************************************************
@@ -602,8 +602,6 @@ void ContentsChatItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) {
 }
 
 void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
 }
 
 void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
-  Q_UNUSED(pos); // we assume that the current mouse cursor pos is the point of invocation
-
   if(privateData()->currentClickable.isValid()) {
     Clickable click = privateData()->currentClickable;
     switch(click.type) {
   if(privateData()->currentClickable.isValid()) {
     Clickable click = privateData()->currentClickable;
     switch(click.type) {
@@ -624,9 +622,8 @@ void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) {
         break;
     }
   } else {
         break;
     }
   } else {
-
     // Buffer-specific actions
     // Buffer-specific actions
-    Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value<BufferId>());
+    ChatItem::addActionsToMenu(menu, pos);
   }
 }
 
   }
 }
 
index 149ef69..9c817bf 100644 (file)
@@ -144,17 +144,13 @@ void NetworkModelActionProvider::registerAction(ActionType type, const QPixmap &
 void NetworkModelActionProvider::addActions(QMenu *menu, BufferId bufId, QObject *receiver, const char *method) {
   if(!bufId.isValid())
     return;
 void NetworkModelActionProvider::addActions(QMenu *menu, BufferId bufId, QObject *receiver, const char *method) {
   if(!bufId.isValid())
     return;
-  _messageFilter = 0;
-  _contextItem = QString();
   addActions(menu, Client::networkModel()->bufferIndex(bufId), receiver, method);
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, const QModelIndex &index, QObject *receiver, const char *method, bool isCustomBufferView) {
   if(!index.isValid())
     return;
   addActions(menu, Client::networkModel()->bufferIndex(bufId), receiver, method);
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, const QModelIndex &index, QObject *receiver, const char *method, bool isCustomBufferView) {
   if(!index.isValid())
     return;
-  _messageFilter = 0;
-  _contextItem = QString();
-  addActions(menu, QList<QModelIndex>() << index, receiver, method, isCustomBufferView);
+  addActions(menu, QList<QModelIndex>() << index, 0, QString(), receiver, method, isCustomBufferView);
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, QObject *receiver, const char *slot) {
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, QObject *receiver, const char *slot) {
@@ -164,19 +160,18 @@ void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter,
 void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, const QString &chanOrNick, QObject *receiver, const char *method) {
   if(!filter)
     return;
 void NetworkModelActionProvider::addActions(QMenu *menu, MessageFilter *filter, BufferId msgBuffer, const QString &chanOrNick, QObject *receiver, const char *method) {
   if(!filter)
     return;
-  _messageFilter = filter;
-  _contextItem = chanOrNick;
-  addActions(menu, QList<QModelIndex>() << Client::networkModel()->bufferIndex(msgBuffer), receiver, method);
+  addActions(menu, QList<QModelIndex>() << Client::networkModel()->bufferIndex(msgBuffer), filter, chanOrNick, receiver, method, false);
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, const QList<QModelIndex> &indexList, QObject *receiver,  const char *method, bool isCustomBufferView) {
 }
 
 void NetworkModelActionProvider::addActions(QMenu *menu, const QList<QModelIndex> &indexList, QObject *receiver,  const char *method, bool isCustomBufferView) {
-  addActions(menu, indexList, 0, receiver, method, isCustomBufferView);
+  addActions(menu, indexList, 0, QString(), receiver, method, isCustomBufferView);
 }
 
 // add a list of actions sensible for the current item(s)
 void NetworkModelActionProvider::addActions(QMenu *menu,
                                             const QList<QModelIndex> &indexList,
                                             MessageFilter *filter,
 }
 
 // add a list of actions sensible for the current item(s)
 void NetworkModelActionProvider::addActions(QMenu *menu,
                                             const QList<QModelIndex> &indexList,
                                             MessageFilter *filter,
+                                            const QString &contextItem,
                                             QObject *receiver,
                                             const char *method,
                                             bool isCustomBufferView)
                                             QObject *receiver,
                                             const char *method,
                                             bool isCustomBufferView)
@@ -186,6 +181,7 @@ void NetworkModelActionProvider::addActions(QMenu *menu,
 
   _indexList = indexList;
   _messageFilter = filter;
 
   _indexList = indexList;
   _messageFilter = filter;
+  _contextItem = contextItem;
   _receiver = receiver;
   _method = method;
 
   _receiver = receiver;
   _method = method;
 
@@ -268,6 +264,7 @@ void NetworkModelActionProvider::addNetworkItemActions(QMenu *menu, const QModel
 void NetworkModelActionProvider::addBufferItemActions(QMenu *menu, const QModelIndex &index, bool isCustomBufferView) {
   BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
 
 void NetworkModelActionProvider::addBufferItemActions(QMenu *menu, const QModelIndex &index, bool isCustomBufferView) {
   BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
 
+  menu->addSeparator();
   switch(bufferInfo.type()) {
     case BufferInfo::ChannelBuffer:
       addAction(BufferJoin, menu, index, InactiveState);
   switch(bufferInfo.type()) {
     case BufferInfo::ChannelBuffer:
       addAction(BufferJoin, menu, index, InactiveState);
index 10cdebc..688a8fc 100644 (file)
@@ -138,7 +138,8 @@ private:
   void handleGeneralAction(ActionType, QAction *);
   void handleExternalAction(ActionType, QAction *);
 
   void handleGeneralAction(ActionType, QAction *);
   void handleExternalAction(ActionType, QAction *);
 
-  void addActions(QMenu *, const QList<QModelIndex> &indexList, MessageFilter *filter, QObject *receiver, const char *slot, bool allowBufferHide);
+  void addActions(QMenu *, const QList<QModelIndex> &indexList, MessageFilter *filter, const QString &chanOrNick,
+                  QObject *receiver, const char *slot, bool allowBufferHide);
 
   bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags<ItemActiveState>(ActiveState | InactiveState));
   Action * addAction(ActionType, QMenu *, bool condition = true);
 
   bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags<ItemActiveState>(ActiveState | InactiveState));
   Action * addAction(ActionType, QMenu *, bool condition = true);