Add EventFilterInterface::onMouseEvent()
Some event consumers don't want to overload N methods and just overload one instead
This commit is contained in:
@@ -54,6 +54,14 @@ public:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/// @brief Provided for convenience, aggregates all other overloads
|
||||
/// receives all mouse event types, if you return true here then the specialized counterparts won't be called
|
||||
/// Example, if true is returned here for a mouse press, then onMouseButtonPress() won't be called
|
||||
virtual bool onMouseEvent(View *, QMouseEvent *)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -214,21 +214,6 @@ bool WidgetResizeHandler::onMouseEvent(View *widget, QMouseEvent *e)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool WidgetResizeHandler::onMouseButtonPress(View *view, QMouseEvent *ev)
|
||||
{
|
||||
return onMouseEvent(view, ev);
|
||||
}
|
||||
|
||||
bool WidgetResizeHandler::onMouseButtonRelease(View *view, QMouseEvent *ev)
|
||||
{
|
||||
return onMouseEvent(view, ev);
|
||||
}
|
||||
|
||||
bool WidgetResizeHandler::onMouseButtonMove(View *view, QMouseEvent *ev)
|
||||
{
|
||||
return onMouseEvent(view, ev);
|
||||
}
|
||||
|
||||
bool WidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
|
||||
{
|
||||
const QPoint globalPos = Qt5Qt6Compat::eventGlobalPos(e);
|
||||
|
||||
@@ -38,7 +38,8 @@ class DOCKS_EXPORT WidgetResizeHandler : public QObject, public EventFilterInter
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Feature {
|
||||
enum Feature
|
||||
{
|
||||
Feature_None = 0,
|
||||
Feature_NativeShadow = 1,
|
||||
Feature_NativeResize = 2,
|
||||
@@ -143,11 +144,7 @@ public:
|
||||
|
||||
private:
|
||||
// EventFilterInterface:
|
||||
bool onMouseButtonPress(View *, QMouseEvent *) override;
|
||||
bool onMouseButtonRelease(View *, QMouseEvent *) override;
|
||||
bool onMouseButtonMove(View *, QMouseEvent *) override;
|
||||
|
||||
bool onMouseEvent(View *, QMouseEvent *e);
|
||||
bool onMouseEvent(View *, QMouseEvent *) override;
|
||||
void setTarget(View *w);
|
||||
bool mouseMoveEvent(QMouseEvent *e);
|
||||
void updateCursor(CursorPosition m);
|
||||
|
||||
@@ -163,9 +163,13 @@ public:
|
||||
|
||||
for (EventFilterInterface *filter : filters) {
|
||||
|
||||
// Filter might have been deleted meanwhile
|
||||
if (std::find(q->d->m_globalEventFilters.cbegin(), q->d->m_globalEventFilters.cend(), filter) == q->d->m_globalEventFilters.cend())
|
||||
continue;
|
||||
|
||||
if (filter->onMouseEvent(view.get(), ev))
|
||||
return true;
|
||||
|
||||
switch (ev->type()) {
|
||||
case QEvent::MouseButtonPress:
|
||||
if (filter->onMouseButtonPress(view.get(), ev))
|
||||
@@ -450,4 +454,4 @@ Platform::DisplayType Platform_qt::displayType() const
|
||||
bool Platform_qt::isLeftMouseButtonPressed() const
|
||||
{
|
||||
return qGuiApp->mouseButtons() & Qt::LeftButton;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,10 @@ public:
|
||||
bool handleMouseEvent(QMouseEvent *ev)
|
||||
{
|
||||
for (EventFilterInterface *filter : qAsConst(q->d->m_viewEventFilters)) {
|
||||
|
||||
if (filter->onMouseEvent(q, ev))
|
||||
return true;
|
||||
|
||||
switch (ev->type()) {
|
||||
case QEvent::MouseButtonPress:
|
||||
if (filter->onMouseButtonPress(q, ev))
|
||||
|
||||
Reference in New Issue
Block a user