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;
|
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;
|
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)
|
bool WidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
|
||||||
{
|
{
|
||||||
const QPoint globalPos = Qt5Qt6Compat::eventGlobalPos(e);
|
const QPoint globalPos = Qt5Qt6Compat::eventGlobalPos(e);
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ class DOCKS_EXPORT WidgetResizeHandler : public QObject, public EventFilterInter
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
enum Feature {
|
enum Feature
|
||||||
|
{
|
||||||
Feature_None = 0,
|
Feature_None = 0,
|
||||||
Feature_NativeShadow = 1,
|
Feature_NativeShadow = 1,
|
||||||
Feature_NativeResize = 2,
|
Feature_NativeResize = 2,
|
||||||
@@ -143,11 +144,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// EventFilterInterface:
|
// EventFilterInterface:
|
||||||
bool onMouseButtonPress(View *, QMouseEvent *) override;
|
bool onMouseEvent(View *, QMouseEvent *) override;
|
||||||
bool onMouseButtonRelease(View *, QMouseEvent *) override;
|
|
||||||
bool onMouseButtonMove(View *, QMouseEvent *) override;
|
|
||||||
|
|
||||||
bool onMouseEvent(View *, QMouseEvent *e);
|
|
||||||
void setTarget(View *w);
|
void setTarget(View *w);
|
||||||
bool mouseMoveEvent(QMouseEvent *e);
|
bool mouseMoveEvent(QMouseEvent *e);
|
||||||
void updateCursor(CursorPosition m);
|
void updateCursor(CursorPosition m);
|
||||||
|
|||||||
@@ -163,9 +163,13 @@ public:
|
|||||||
|
|
||||||
for (EventFilterInterface *filter : filters) {
|
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())
|
if (std::find(q->d->m_globalEventFilters.cbegin(), q->d->m_globalEventFilters.cend(), filter) == q->d->m_globalEventFilters.cend())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (filter->onMouseEvent(view.get(), ev))
|
||||||
|
return true;
|
||||||
|
|
||||||
switch (ev->type()) {
|
switch (ev->type()) {
|
||||||
case QEvent::MouseButtonPress:
|
case QEvent::MouseButtonPress:
|
||||||
if (filter->onMouseButtonPress(view.get(), ev))
|
if (filter->onMouseButtonPress(view.get(), ev))
|
||||||
@@ -450,4 +454,4 @@ Platform::DisplayType Platform_qt::displayType() const
|
|||||||
bool Platform_qt::isLeftMouseButtonPressed() const
|
bool Platform_qt::isLeftMouseButtonPressed() const
|
||||||
{
|
{
|
||||||
return qGuiApp->mouseButtons() & Qt::LeftButton;
|
return qGuiApp->mouseButtons() & Qt::LeftButton;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,10 @@ public:
|
|||||||
bool handleMouseEvent(QMouseEvent *ev)
|
bool handleMouseEvent(QMouseEvent *ev)
|
||||||
{
|
{
|
||||||
for (EventFilterInterface *filter : qAsConst(q->d->m_viewEventFilters)) {
|
for (EventFilterInterface *filter : qAsConst(q->d->m_viewEventFilters)) {
|
||||||
|
|
||||||
|
if (filter->onMouseEvent(q, ev))
|
||||||
|
return true;
|
||||||
|
|
||||||
switch (ev->type()) {
|
switch (ev->type()) {
|
||||||
case QEvent::MouseButtonPress:
|
case QEvent::MouseButtonPress:
|
||||||
if (filter->onMouseButtonPress(q, ev))
|
if (filter->onMouseButtonPress(q, ev))
|
||||||
|
|||||||
Reference in New Issue
Block a user