2 * SPDX-FileCopyrightText: 2017 Kai Uwe Broulik <kde@privat.broulik.de>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "middleclickactioneventfilter.h"
12 #include <QMouseEvent>
15 MiddleClickActionEventFilter::MiddleClickActionEventFilter(QObject
*parent
)
20 MiddleClickActionEventFilter::~MiddleClickActionEventFilter() = default;
22 bool MiddleClickActionEventFilter::eventFilter(QObject
*watched
, QEvent
*event
)
24 if (event
->type() == QEvent::MouseButtonPress
|| event
->type() == QEvent::MouseButtonRelease
) {
25 QMouseEvent
*me
= static_cast<QMouseEvent
*>(event
);
27 if (me
->button() == Qt::MiddleButton
) {
28 QToolBar
*toolBar
= qobject_cast
<QToolBar
*>(watched
);
30 QAction
*action
= toolBar
->actionAt(me
->pos());
32 if (event
->type() == QEvent::MouseButtonPress
) {
33 m_lastMiddlePressedAction
= action
;
34 } else if (event
->type() == QEvent::MouseButtonRelease
) {
35 if (m_lastMiddlePressedAction
== action
) {
36 Q_EMIT
actionMiddleClicked(action
);
38 m_lastMiddlePressedAction
= nullptr;
42 QMenu
*menu
= qobject_cast
<QMenu
*>(watched
);
44 QAction
*action
= menu
->actionAt(me
->pos());
46 if (event
->type() == QEvent::MouseButtonPress
) {
47 m_lastMiddlePressedAction
= action
;
48 } else if (event
->type() == QEvent::MouseButtonRelease
) {
49 if (m_lastMiddlePressedAction
== action
) {
50 Q_EMIT
actionMiddleClicked(action
);
53 m_lastMiddlePressedAction
= nullptr;
60 return QObject::eventFilter(watched
, event
);
63 #include "moc_middleclickactioneventfilter.cpp"