DolphinController::DolphinController(DolphinView* dolphinView) :
QObject(dolphinView),
m_zoomLevel(0),
- m_openTab(false),
+ m_mouseButtons(Qt::NoButton),
m_url(),
m_dolphinView(dolphinView),
m_itemView(0)
{
if (m_itemView != 0) {
disconnect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
- this, SLOT(updateOpenTabState()));
+ this, SLOT(updateMouseButtonState()));
}
m_itemView = view;
// TODO: this is a workaround until Qt-issue 176832 has been fixed
connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
- this, SLOT(updateOpenTabState()));
+ this, SLOT(updateMouseButtonState()));
}
}
void DolphinController::triggerItem(const QModelIndex& index)
{
- const bool openTab = m_openTab;
- m_openTab = false;
+ if (m_mouseButtons & Qt::RightButton) {
+ // a context menu is opened - assure that no triggering is done
+ return;
+ }
+
+ const bool openTab = m_mouseButtons & Qt::MidButton;
+ m_mouseButtons = Qt::NoButton;
const KFileItem item = itemForIndex(index);
if (index.isValid() && (index.column() == KDirModel::Name)) {
emit viewportEntered();
}
-void DolphinController::updateOpenTabState()
+void DolphinController::updateMouseButtonState()
{
- m_openTab = QApplication::mouseButtons() & Qt::MidButton;
+ m_mouseButtons = QApplication::mouseButtons();
}
#include "dolphincontroller.moc"
void hideToolTip();
private slots:
- void updateOpenTabState();
+ void updateMouseButtonState();
private:
int m_zoomLevel;
- bool m_openTab; // TODO: this is a workaround until Qt-issue 176832 has been fixed
+ Qt::MouseButtons m_mouseButtons; // TODO: this is a workaround until Qt-issue 176832 has been fixed
KUrl m_url;
DolphinView* m_dolphinView;
QAbstractItemView* m_itemView;