From e32fd68ac69cada52a65598d4781f1cc735145fc Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 16 Jan 2009 17:25:32 +0100 Subject: [PATCH 1/1] Fix a regression that would show some wrong context menu entries in some cases --- src/qtui/chatitem.cpp | 7 ++----- src/uisupport/networkmodelactionprovider.cpp | 15 ++++++--------- src/uisupport/networkmodelactionprovider.h | 3 ++- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/qtui/chatitem.cpp b/src/qtui/chatitem.cpp index 9b7c2203..098c78eb 100644 --- a/src/qtui/chatitem.cpp +++ b/src/qtui/chatitem.cpp @@ -286,9 +286,9 @@ void ChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { } void ChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) { - Q_UNUSED(menu); Q_UNUSED(pos); + Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value()); } // ************************************************************ @@ -602,8 +602,6 @@ void ContentsChatItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { } 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) { @@ -624,9 +622,8 @@ void ContentsChatItem::addActionsToMenu(QMenu *menu, const QPointF &pos) { break; } } else { - // Buffer-specific actions - Client::mainUi()->actionProvider()->addActions(menu, chatScene()->filter(), data(MessageModel::BufferIdRole).value()); + ChatItem::addActionsToMenu(menu, pos); } } diff --git a/src/uisupport/networkmodelactionprovider.cpp b/src/uisupport/networkmodelactionprovider.cpp index 149ef698..9c817bfa 100644 --- a/src/uisupport/networkmodelactionprovider.cpp +++ b/src/uisupport/networkmodelactionprovider.cpp @@ -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; - _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; - _messageFilter = 0; - _contextItem = QString(); - addActions(menu, QList() << index, receiver, method, isCustomBufferView); + addActions(menu, QList() << index, 0, QString(), receiver, method, isCustomBufferView); } 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; - _messageFilter = filter; - _contextItem = chanOrNick; - addActions(menu, QList() << Client::networkModel()->bufferIndex(msgBuffer), receiver, method); + addActions(menu, QList() << Client::networkModel()->bufferIndex(msgBuffer), filter, chanOrNick, receiver, method, false); } void NetworkModelActionProvider::addActions(QMenu *menu, const QList &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 &indexList, MessageFilter *filter, + const QString &contextItem, QObject *receiver, const char *method, bool isCustomBufferView) @@ -186,6 +181,7 @@ void NetworkModelActionProvider::addActions(QMenu *menu, _indexList = indexList; _messageFilter = filter; + _contextItem = contextItem; _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(); + menu->addSeparator(); switch(bufferInfo.type()) { case BufferInfo::ChannelBuffer: addAction(BufferJoin, menu, index, InactiveState); diff --git a/src/uisupport/networkmodelactionprovider.h b/src/uisupport/networkmodelactionprovider.h index 10cdebc6..688a8fc7 100644 --- a/src/uisupport/networkmodelactionprovider.h +++ b/src/uisupport/networkmodelactionprovider.h @@ -138,7 +138,8 @@ private: void handleGeneralAction(ActionType, QAction *); void handleExternalAction(ActionType, QAction *); - void addActions(QMenu *, const QList &indexList, MessageFilter *filter, QObject *receiver, const char *slot, bool allowBufferHide); + void addActions(QMenu *, const QList &indexList, MessageFilter *filter, const QString &chanOrNick, + QObject *receiver, const char *slot, bool allowBufferHide); bool checkRequirements(const QModelIndex &index, ItemActiveStates requiredActiveState = QFlags(ActiveState | InactiveState)); Action * addAction(ActionType, QMenu *, bool condition = true); -- 2.20.1