]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/middleclickactioneventfilter.cpp
DolphinStatusbar: Fix background and margins for non-Breeze styles
[dolphin.git] / src / middleclickactioneventfilter.cpp
index e0917850a0ea36e754b4e2c8235c36f234c643e5..7f98e727e8a5da69d343705d4a45b40246765f86 100644 (file)
@@ -1,54 +1,57 @@
-/***************************************************************************
- *   Copyright (C) 2017 Kai Uwe Broulik <kde@privat.broulik.de>            *
- *                                                                         *
- *   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 <kde@privat.broulik.de>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #include "middleclickactioneventfilter.h"
 
 #include <QAction>
 #include <QEvent>
+#include <QMenu>
 #include <QMouseEvent>
 #include <QToolBar>
 
-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<QMouseEvent *>(event);
 
         if (me->button() == Qt::MiddleButton) {
             QToolBar *toolBar = qobject_cast<QToolBar *>(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<QMenu *>(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"