X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f9bbbd82f43c40971f20a463ad63706ef6f91170..832b7c4a1b820043fd0b0191d937050107694ed9:/src/middleclickactioneventfilter.cpp diff --git a/src/middleclickactioneventfilter.cpp b/src/middleclickactioneventfilter.cpp index e0917850a..7f98e727e 100644 --- a/src/middleclickactioneventfilter.cpp +++ b/src/middleclickactioneventfilter.cpp @@ -1,54 +1,57 @@ -/*************************************************************************** - * Copyright (C) 2017 Kai Uwe Broulik * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2017 Kai Uwe Broulik + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "middleclickactioneventfilter.h" #include #include +#include #include #include -MiddleClickActionEventFilter::MiddleClickActionEventFilter(QObject *parent) : QObject(parent) +MiddleClickActionEventFilter::MiddleClickActionEventFilter(QObject *parent) + : QObject(parent) { - } MiddleClickActionEventFilter::~MiddleClickActionEventFilter() = default; bool MiddleClickActionEventFilter::eventFilter(QObject *watched, QEvent *event) { - if (event->type() == QEvent::MouseButtonPress - || event->type() == QEvent::MouseButtonRelease) { + if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease) { QMouseEvent *me = static_cast(event); if (me->button() == Qt::MiddleButton) { QToolBar *toolBar = qobject_cast(watched); - - QAction *action = toolBar->actionAt(me->pos()); - if (action) { - if (event->type() == QEvent::MouseButtonPress) { - m_lastMiddlePressedAction = action; - } else if (event->type() == QEvent::MouseButtonRelease) { - if (m_lastMiddlePressedAction == action) { - emit actionMiddleClicked(action); + if (toolBar) { + QAction *action = toolBar->actionAt(me->pos()); + if (action) { + if (event->type() == QEvent::MouseButtonPress) { + m_lastMiddlePressedAction = action; + } else if (event->type() == QEvent::MouseButtonRelease) { + if (m_lastMiddlePressedAction == action) { + Q_EMIT actionMiddleClicked(action); + } + m_lastMiddlePressedAction = nullptr; + } + } + } + QMenu *menu = qobject_cast(watched); + if (menu) { + QAction *action = menu->actionAt(me->pos()); + if (action) { + if (event->type() == QEvent::MouseButtonPress) { + m_lastMiddlePressedAction = action; + } else if (event->type() == QEvent::MouseButtonRelease) { + if (m_lastMiddlePressedAction == action) { + Q_EMIT actionMiddleClicked(action); + return true; + } + m_lastMiddlePressedAction = nullptr; } - m_lastMiddlePressedAction = nullptr; } } } @@ -56,3 +59,5 @@ bool MiddleClickActionEventFilter::eventFilter(QObject *watched, QEvent *event) return QObject::eventFilter(watched, event); } + +#include "moc_middleclickactioneventfilter.cpp"