Changeset View
Changeset View
Standalone View
Standalone View
src/middleclickactioneventfilter.cpp
Show All 15 Lines | |||||
16 | * Free Software Foundation, Inc., * | 16 | * Free Software Foundation, Inc., * | ||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * | 17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * | ||
18 | ***************************************************************************/ | 18 | ***************************************************************************/ | ||
19 | 19 | | |||
20 | #include "middleclickactioneventfilter.h" | 20 | #include "middleclickactioneventfilter.h" | ||
21 | 21 | | |||
22 | #include <QAction> | 22 | #include <QAction> | ||
23 | #include <QEvent> | 23 | #include <QEvent> | ||
24 | #include <QMenu> | ||||
24 | #include <QMouseEvent> | 25 | #include <QMouseEvent> | ||
25 | #include <QToolBar> | 26 | #include <QToolBar> | ||
26 | 27 | | |||
27 | MiddleClickActionEventFilter::MiddleClickActionEventFilter(QObject *parent) : QObject(parent) | 28 | MiddleClickActionEventFilter::MiddleClickActionEventFilter(QObject *parent) : QObject(parent) | ||
28 | { | 29 | { | ||
29 | 30 | | |||
30 | } | 31 | } | ||
31 | 32 | | |||
32 | MiddleClickActionEventFilter::~MiddleClickActionEventFilter() = default; | 33 | MiddleClickActionEventFilter::~MiddleClickActionEventFilter() = default; | ||
33 | 34 | | |||
34 | bool MiddleClickActionEventFilter::eventFilter(QObject *watched, QEvent *event) | 35 | bool MiddleClickActionEventFilter::eventFilter(QObject *watched, QEvent *event) | ||
35 | { | 36 | { | ||
36 | if (event->type() == QEvent::MouseButtonPress | 37 | if (event->type() == QEvent::MouseButtonPress | ||
37 | || event->type() == QEvent::MouseButtonRelease) { | 38 | || event->type() == QEvent::MouseButtonRelease) { | ||
38 | QMouseEvent *me = static_cast<QMouseEvent *>(event); | 39 | QMouseEvent *me = static_cast<QMouseEvent *>(event); | ||
39 | 40 | | |||
40 | if (me->button() == Qt::MiddleButton) { | 41 | if (me->button() == Qt::MiddleButton) { | ||
41 | QToolBar *toolBar = qobject_cast<QToolBar *>(watched); | 42 | QToolBar *toolBar = qobject_cast<QToolBar *>(watched); | ||
42 | 43 | if (toolBar) { | |||
43 | QAction *action = toolBar->actionAt(me->pos()); | 44 | QAction *action = toolBar->actionAt(me->pos()); | ||
44 | if (action) { | 45 | if (action) { | ||
45 | if (event->type() == QEvent::MouseButtonPress) { | 46 | if (event->type() == QEvent::MouseButtonPress) { | ||
46 | m_lastMiddlePressedAction = action; | 47 | m_lastMiddlePressedAction = action; | ||
47 | } else if (event->type() == QEvent::MouseButtonRelease) { | 48 | } else if (event->type() == QEvent::MouseButtonRelease) { | ||
48 | if (m_lastMiddlePressedAction == action) { | 49 | if (m_lastMiddlePressedAction == action) { | ||
49 | emit actionMiddleClicked(action); | 50 | emit actionMiddleClicked(action); | ||
50 | } | 51 | } | ||
51 | m_lastMiddlePressedAction = nullptr; | 52 | m_lastMiddlePressedAction = nullptr; | ||
52 | } | 53 | } | ||
53 | } | 54 | } | ||
54 | } | 55 | } | ||
56 | QMenu *menu = qobject_cast<QMenu *>(watched); | ||||
57 | if (menu) { | ||||
58 | QAction *action = menu->actionAt(me->pos()); | ||||
59 | if (action) { | ||||
60 | if (event->type() == QEvent::MouseButtonPress) { | ||||
61 | m_lastMiddlePressedAction = action; | ||||
62 | } else if (event->type() == QEvent::MouseButtonRelease) { | ||||
63 | if (m_lastMiddlePressedAction == action) { | ||||
64 | emit actionMiddleClicked(action); | ||||
65 | return true; | ||||
66 | } | ||||
67 | m_lastMiddlePressedAction = nullptr; | ||||
68 | } | ||||
69 | } | ||||
70 | } | ||||
elvisangelaccio: This could maybe go as the `else` branch of `if (toolBar)` ? | |||||
71 | } | ||||
55 | } | 72 | } | ||
56 | 73 | | |||
57 | return QObject::eventFilter(watched, event); | 74 | return QObject::eventFilter(watched, event); | ||
58 | } | 75 | } |
This could maybe go as the else branch of if (toolBar) ?