Match Plasma panel edge areas for clicks and scrolling
This commit is contained in:
@@ -17,7 +17,7 @@ public:
|
||||
bool event(QEvent *event) override
|
||||
{
|
||||
if (event->type() == QEvent::Wheel || event->type() == QEvent::MouseButtonPress
|
||||
|| event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::MouseMove) {
|
||||
|| event->type() == QEvent::MouseButtonRelease || event->type() == QEvent::MouseButtonDblClick || event->type() == QEvent::MouseMove) {
|
||||
++delivered;
|
||||
return true;
|
||||
}
|
||||
@@ -31,6 +31,7 @@ class PanelControllerTest : public QObject
|
||||
private:
|
||||
static void setup(PanelController &controller, PanelWindow &window, QJSEngine &engine)
|
||||
{
|
||||
window.resize(400, 40);
|
||||
controller.setParentItem(window.contentItem());
|
||||
controller.setProperty("active", true);
|
||||
controller.setProperty("locateArea", QVariant::fromValue(engine.evaluate(
|
||||
@@ -52,15 +53,15 @@ private:
|
||||
QCoreApplication::sendEvent(&window, &event);
|
||||
}
|
||||
private Q_SLOTS:
|
||||
void scrollHitTestingDoesNotExpandClickTargets()
|
||||
void clicksAndScrollsShareWidgetAreas()
|
||||
{
|
||||
QJSEngine engine;
|
||||
PanelWindow window;
|
||||
PanelController controller;
|
||||
setup(controller, window, engine);
|
||||
controller.setLocateArea(engine.evaluate(u"(function(x,y,scrolling) { return scrolling ? 'launcher' : 'empty'; })"_s));
|
||||
controller.setLocateArea(engine.evaluate(u"(function(x,y) { return 'launcher'; })"_s));
|
||||
controller.setProperty("scrollActions", QVariantMap{{u"launcher"_s, u"brightness"_s}, {u"empty"_s, u"volume"_s}});
|
||||
controller.setProperty("clickActions", QVariantMap{{u"leftClick"_s, u"mute"_s}});
|
||||
controller.setProperty("clickActions", QVariantMap{{u"leftClick"_s, u"mute"_s}, {u"leftDoubleClick"_s, u"overview"_s}});
|
||||
QSignalSpy scrolling(&controller, &PanelController::actionRequested);
|
||||
QSignalSpy clicking(&controller, &PanelController::clickRequested);
|
||||
wheel(window, 120);
|
||||
@@ -68,8 +69,11 @@ private Q_SLOTS:
|
||||
QCOMPARE(scrolling.first(), QVariantList({u"brightness"_s, 1}));
|
||||
mouse(window, QEvent::MouseButtonPress, 20);
|
||||
mouse(window, QEvent::MouseButtonRelease, 20);
|
||||
QCOMPARE(clicking.count(), 1);
|
||||
QCOMPARE(clicking.first(), QVariantList({u"leftClick"_s}));
|
||||
mouse(window, QEvent::MouseButtonPress, 20);
|
||||
mouse(window, QEvent::MouseButtonDblClick, 20);
|
||||
mouse(window, QEvent::MouseButtonRelease, 20);
|
||||
QCOMPARE(clicking.count(), 0);
|
||||
QCOMPARE(window.delivered, 5); // Plasma handles both clicks, including margin forwarding.
|
||||
}
|
||||
void wheelOverridesAndNormalBehaviour()
|
||||
{
|
||||
@@ -145,11 +149,24 @@ private Q_SLOTS:
|
||||
mouse(window, QEvent::MouseButtonRelease, 20);
|
||||
QCOMPARE(actions.count(), 0);
|
||||
}
|
||||
void releaseOutsidePanelDoesNotClick()
|
||||
{
|
||||
QJSEngine engine;
|
||||
PanelWindow window;
|
||||
PanelController controller;
|
||||
setup(controller, window, engine);
|
||||
controller.setProperty("clickActions", QVariantMap{{u"leftClick"_s, u"mute"_s}});
|
||||
QSignalSpy actions(&controller, &PanelController::clickRequested);
|
||||
mouse(window, QEvent::MouseButtonPress, 1);
|
||||
mouse(window, QEvent::MouseButtonRelease, -1);
|
||||
QCOMPARE(actions.count(), 0);
|
||||
}
|
||||
void disabledAndOtherWindowsAreUntouched()
|
||||
{
|
||||
QJSEngine engine;
|
||||
PanelWindow window;
|
||||
PanelWindow popup;
|
||||
popup.resize(400, 40);
|
||||
PanelController controller;
|
||||
setup(controller, window, engine);
|
||||
QSignalSpy actions(&controller, &PanelController::actionRequested);
|
||||
|
||||
Reference in New Issue
Block a user