Changeset View
Changeset View
Standalone View
Standalone View
autotests/test_screen_edges.cpp
Show First 20 Lines • Show All 460 Lines • ▼ Show 20 Line(s) | 456 | auto setPos = [&event] (const QPoint &pos) { | |||
---|---|---|---|---|---|
461 | event.event_y = pos.y(); | 461 | event.event_y = pos.y(); | ||
462 | }; | 462 | }; | ||
463 | event.root = XCB_WINDOW_NONE; | 463 | event.root = XCB_WINDOW_NONE; | ||
464 | event.child = XCB_WINDOW_NONE; | 464 | event.child = XCB_WINDOW_NONE; | ||
465 | event.event = (*it)->window(); | 465 | event.event = (*it)->window(); | ||
466 | event.same_screen_focus = 1; | 466 | event.same_screen_focus = 1; | ||
467 | event.time = QDateTime::currentMSecsSinceEpoch(); | 467 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
468 | setPos(QPoint(0, 50)); | 468 | setPos(QPoint(0, 50)); | ||
469 | QVERIFY(s->isEntered(&event)); | 469 | auto isEntered = [s] (xcb_enter_notify_event_t *event) { | ||
470 | return s->handleEnterNotifiy(event->event, QPoint(event->root_x, event->root_y), QDateTime::fromMSecsSinceEpoch(event->time)); | ||||
471 | }; | ||||
472 | QVERIFY(isEntered(&event)); | ||||
470 | // doesn't trigger as the edge was not triggered yet | 473 | // doesn't trigger as the edge was not triggered yet | ||
471 | QVERIFY(spy.isEmpty()); | 474 | QVERIFY(spy.isEmpty()); | ||
472 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 475 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
473 | 476 | | |||
474 | // test doesn't trigger due to too much offset | 477 | // test doesn't trigger due to too much offset | ||
475 | QTest::qWait(160); | 478 | QTest::qWait(160); | ||
476 | setPos(QPoint(0, 100)); | 479 | setPos(QPoint(0, 100)); | ||
477 | event.time = QDateTime::currentMSecsSinceEpoch(); | 480 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
478 | QVERIFY(s->isEntered(&event)); | 481 | QVERIFY(isEntered(&event)); | ||
479 | QVERIFY(spy.isEmpty()); | 482 | QVERIFY(spy.isEmpty()); | ||
480 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | 483 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | ||
481 | 484 | | |||
482 | // doesn't trigger as we are waiting too long already | 485 | // doesn't trigger as we are waiting too long already | ||
483 | QTest::qWait(200); | 486 | QTest::qWait(200); | ||
484 | setPos(QPoint(0, 101)); | 487 | setPos(QPoint(0, 101)); | ||
485 | event.time = QDateTime::currentMSecsSinceEpoch(); | 488 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
486 | QVERIFY(s->isEntered(&event)); | 489 | QVERIFY(isEntered(&event)); | ||
487 | QVERIFY(spy.isEmpty()); | 490 | QVERIFY(spy.isEmpty()); | ||
488 | QCOMPARE(Cursor::pos(), QPoint(1, 101)); | 491 | QCOMPARE(Cursor::pos(), QPoint(1, 101)); | ||
489 | 492 | | |||
490 | // doesn't activate as we are waiting too short | 493 | // doesn't activate as we are waiting too short | ||
491 | QTest::qWait(50); | 494 | QTest::qWait(50); | ||
492 | setPos(QPoint(0, 100)); | 495 | setPos(QPoint(0, 100)); | ||
493 | event.time = QDateTime::currentMSecsSinceEpoch(); | 496 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
494 | QVERIFY(s->isEntered(&event)); | 497 | QVERIFY(isEntered(&event)); | ||
495 | QVERIFY(spy.isEmpty()); | 498 | QVERIFY(spy.isEmpty()); | ||
496 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | 499 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | ||
497 | 500 | | |||
498 | // and this one triggers | 501 | // and this one triggers | ||
499 | QTest::qWait(110); | 502 | QTest::qWait(110); | ||
500 | setPos(QPoint(0, 101)); | 503 | setPos(QPoint(0, 101)); | ||
501 | event.time = QDateTime::currentMSecsSinceEpoch(); | 504 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
502 | QVERIFY(s->isEntered(&event)); | 505 | QVERIFY(isEntered(&event)); | ||
503 | QVERIFY(!spy.isEmpty()); | 506 | QVERIFY(!spy.isEmpty()); | ||
504 | QCOMPARE(Cursor::pos(), QPoint(1, 101)); | 507 | QCOMPARE(Cursor::pos(), QPoint(1, 101)); | ||
505 | 508 | | |||
506 | // now let's try to trigger again | 509 | // now let's try to trigger again | ||
507 | QTest::qWait(351); | 510 | QTest::qWait(351); | ||
508 | setPos(QPoint(0, 100)); | 511 | setPos(QPoint(0, 100)); | ||
509 | event.time = QDateTime::currentMSecsSinceEpoch(); | 512 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
510 | QVERIFY(s->isEntered(&event)); | 513 | QVERIFY(isEntered(&event)); | ||
511 | QCOMPARE(spy.count(), 1); | 514 | QCOMPARE(spy.count(), 1); | ||
512 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | 515 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | ||
513 | // it's still under the reactivation | 516 | // it's still under the reactivation | ||
514 | QTest::qWait(50); | 517 | QTest::qWait(50); | ||
515 | setPos(QPoint(0, 100)); | 518 | setPos(QPoint(0, 100)); | ||
516 | event.time = QDateTime::currentMSecsSinceEpoch(); | 519 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
517 | QVERIFY(s->isEntered(&event)); | 520 | QVERIFY(isEntered(&event)); | ||
518 | QCOMPARE(spy.count(), 1); | 521 | QCOMPARE(spy.count(), 1); | ||
519 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | 522 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | ||
520 | // now it should trigger again | 523 | // now it should trigger again | ||
521 | QTest::qWait(250); | 524 | QTest::qWait(250); | ||
522 | setPos(QPoint(0, 100)); | 525 | setPos(QPoint(0, 100)); | ||
523 | event.time = QDateTime::currentMSecsSinceEpoch(); | 526 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
524 | QVERIFY(s->isEntered(&event)); | 527 | QVERIFY(isEntered(&event)); | ||
525 | QCOMPARE(spy.count(), 2); | 528 | QCOMPARE(spy.count(), 2); | ||
526 | QCOMPARE(spy.first().first().value<ElectricBorder>(), ElectricLeft); | 529 | QCOMPARE(spy.first().first().value<ElectricBorder>(), ElectricLeft); | ||
527 | QCOMPARE(spy.last().first().value<ElectricBorder>(), ElectricLeft); | 530 | QCOMPARE(spy.last().first().value<ElectricBorder>(), ElectricLeft); | ||
528 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | 531 | QCOMPARE(Cursor::pos(), QPoint(1, 100)); | ||
529 | 532 | | |||
530 | // let's disable pushback | 533 | // let's disable pushback | ||
531 | auto config = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig); | 534 | auto config = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig); | ||
532 | config->group("Windows").writeEntry("ElectricBorderPushbackPixels", 0); | 535 | config->group("Windows").writeEntry("ElectricBorderPushbackPixels", 0); | ||
533 | config->sync(); | 536 | config->sync(); | ||
534 | s->setConfig(config); | 537 | s->setConfig(config); | ||
535 | s->reconfigure(); | 538 | s->reconfigure(); | ||
536 | // it should trigger directly | 539 | // it should trigger directly | ||
537 | QTest::qWait(350); | 540 | QTest::qWait(350); | ||
538 | event.time = QDateTime::currentMSecsSinceEpoch(); | 541 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
539 | QVERIFY(s->isEntered(&event)); | 542 | QVERIFY(isEntered(&event)); | ||
540 | QCOMPARE(spy.count(), 3); | 543 | QCOMPARE(spy.count(), 3); | ||
541 | QCOMPARE(spy.at(0).first().value<ElectricBorder>(), ElectricLeft); | 544 | QCOMPARE(spy.at(0).first().value<ElectricBorder>(), ElectricLeft); | ||
542 | QCOMPARE(spy.at(1).first().value<ElectricBorder>(), ElectricLeft); | 545 | QCOMPARE(spy.at(1).first().value<ElectricBorder>(), ElectricLeft); | ||
543 | QCOMPARE(spy.at(2).first().value<ElectricBorder>(), ElectricLeft); | 546 | QCOMPARE(spy.at(2).first().value<ElectricBorder>(), ElectricLeft); | ||
544 | QCOMPARE(Cursor::pos(), QPoint(0, 100)); | 547 | QCOMPARE(Cursor::pos(), QPoint(0, 100)); | ||
545 | 548 | | |||
546 | // now let's unreserve again | 549 | // now let's unreserve again | ||
547 | s->unreserve(ElectricTopLeft, &callback); | 550 | s->unreserve(ElectricTopLeft, &callback); | ||
▲ Show 20 Lines • Show All 92 Lines • ▼ Show 20 Line(s) | 621 | { | |||
640 | event.root_y = trigger.y(); | 643 | event.root_y = trigger.y(); | ||
641 | event.event_x = trigger.x(); | 644 | event.event_x = trigger.x(); | ||
642 | event.event_y = trigger.y(); | 645 | event.event_y = trigger.y(); | ||
643 | event.root = XCB_WINDOW_NONE; | 646 | event.root = XCB_WINDOW_NONE; | ||
644 | event.child = XCB_WINDOW_NONE; | 647 | event.child = XCB_WINDOW_NONE; | ||
645 | event.event = s->windows().first(); | 648 | event.event = s->windows().first(); | ||
646 | event.same_screen_focus = 1; | 649 | event.same_screen_focus = 1; | ||
647 | event.time = QDateTime::currentMSecsSinceEpoch(); | 650 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
648 | QVERIFY(s->isEntered(&event)); | 651 | auto isEntered = [s] (xcb_enter_notify_event_t *event) { | ||
652 | return s->handleEnterNotifiy(event->event, QPoint(event->root_x, event->root_y), QDateTime::fromMSecsSinceEpoch(event->time)); | ||||
653 | }; | ||||
654 | QVERIFY(isEntered(&event)); | ||||
649 | QVERIFY(spy.isEmpty()); | 655 | QVERIFY(spy.isEmpty()); | ||
650 | QTEST(Cursor::pos(), "expected"); | 656 | QTEST(Cursor::pos(), "expected"); | ||
651 | 657 | | |||
652 | // do the same without the event, but the check method | 658 | // do the same without the event, but the check method | ||
653 | Cursor::setPos(trigger); | 659 | Cursor::setPos(trigger); | ||
654 | s->check(trigger, QDateTime::currentDateTime()); | 660 | s->check(trigger, QDateTime::currentDateTime()); | ||
655 | QVERIFY(spy.isEmpty()); | 661 | QVERIFY(spy.isEmpty()); | ||
656 | QTEST(Cursor::pos(), "expected"); | 662 | QTEST(Cursor::pos(), "expected"); | ||
Show All 30 Lines | 666 | { | |||
687 | event.root_y = 50; | 693 | event.root_y = 50; | ||
688 | event.event_x = 0; | 694 | event.event_x = 0; | ||
689 | event.event_y = 50; | 695 | event.event_y = 50; | ||
690 | event.root = XCB_WINDOW_NONE; | 696 | event.root = XCB_WINDOW_NONE; | ||
691 | event.child = XCB_WINDOW_NONE; | 697 | event.child = XCB_WINDOW_NONE; | ||
692 | event.event = s->windows().first(); | 698 | event.event = s->windows().first(); | ||
693 | event.same_screen_focus = 1; | 699 | event.same_screen_focus = 1; | ||
694 | event.time = QDateTime::currentMSecsSinceEpoch(); | 700 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
695 | QVERIFY(s->isEntered(&event)); | 701 | auto isEntered = [s] (xcb_enter_notify_event_t *event) { | ||
702 | return s->handleEnterNotifiy(event->event, QPoint(event->root_x, event->root_y), QDateTime::fromMSecsSinceEpoch(event->time)); | ||||
703 | }; | ||||
704 | QVERIFY(isEntered(&event)); | ||||
696 | QVERIFY(spy.isEmpty()); | 705 | QVERIFY(spy.isEmpty()); | ||
697 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 706 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
698 | 707 | | |||
699 | client.setGeometry(screens()->geometry()); | 708 | client.setGeometry(screens()->geometry()); | ||
700 | client.setActive(true); | 709 | client.setActive(true); | ||
701 | client.setFullScreen(true); | 710 | client.setFullScreen(true); | ||
702 | ws.setActiveClient(&client); | 711 | ws.setActiveClient(&client); | ||
703 | emit s->checkBlocking(); | 712 | emit s->checkBlocking(); | ||
704 | // the signal doesn't trigger for corners, let's go over all windows just to be sure that it doesn't call for corners | 713 | // the signal doesn't trigger for corners, let's go over all windows just to be sure that it doesn't call for corners | ||
705 | for (auto e: s->findChildren<Edge*>()) { | 714 | for (auto e: s->findChildren<Edge*>()) { | ||
706 | e->checkBlocking(); | 715 | e->checkBlocking(); | ||
707 | QCOMPARE(e->activatesForTouchGesture(), false); | 716 | QCOMPARE(e->activatesForTouchGesture(), false); | ||
708 | } | 717 | } | ||
709 | // calling again should not trigger | 718 | // calling again should not trigger | ||
710 | QTest::qWait(160); | 719 | QTest::qWait(160); | ||
711 | Cursor::setPos(0, 50); | 720 | Cursor::setPos(0, 50); | ||
712 | event.time = QDateTime::currentMSecsSinceEpoch(); | 721 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
713 | QVERIFY(s->isEntered(&event)); | 722 | QVERIFY(isEntered(&event)); | ||
714 | QVERIFY(spy.isEmpty()); | 723 | QVERIFY(spy.isEmpty()); | ||
715 | // and no pushback | 724 | // and no pushback | ||
716 | QCOMPARE(Cursor::pos(), QPoint(0, 50)); | 725 | QCOMPARE(Cursor::pos(), QPoint(0, 50)); | ||
717 | 726 | | |||
718 | // let's make the client not fullscreen, which should trigger | 727 | // let's make the client not fullscreen, which should trigger | ||
719 | client.setFullScreen(false); | 728 | client.setFullScreen(false); | ||
720 | emit s->checkBlocking(); | 729 | emit s->checkBlocking(); | ||
721 | for (auto e: s->findChildren<Edge*>()) { | 730 | for (auto e: s->findChildren<Edge*>()) { | ||
722 | QCOMPARE(e->activatesForTouchGesture(), e->border() == KWin::ElectricRight); | 731 | QCOMPARE(e->activatesForTouchGesture(), e->border() == KWin::ElectricRight); | ||
723 | } | 732 | } | ||
724 | event.time = QDateTime::currentMSecsSinceEpoch(); | 733 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
725 | QVERIFY(s->isEntered(&event)); | 734 | QVERIFY(isEntered(&event)); | ||
726 | QVERIFY(!spy.isEmpty()); | 735 | QVERIFY(!spy.isEmpty()); | ||
727 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 736 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
728 | 737 | | |||
729 | // let's make the client fullscreen again, but with a geometry not intersecting the left edge | 738 | // let's make the client fullscreen again, but with a geometry not intersecting the left edge | ||
730 | QTest::qWait(351); | 739 | QTest::qWait(351); | ||
731 | client.setFullScreen(true); | 740 | client.setFullScreen(true); | ||
732 | client.setGeometry(client.geometry().translated(10, 0)); | 741 | client.setGeometry(client.geometry().translated(10, 0)); | ||
733 | emit s->checkBlocking(); | 742 | emit s->checkBlocking(); | ||
734 | spy.clear(); | 743 | spy.clear(); | ||
735 | Cursor::setPos(0, 50); | 744 | Cursor::setPos(0, 50); | ||
736 | event.time = QDateTime::currentMSecsSinceEpoch(); | 745 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
737 | QVERIFY(s->isEntered(&event)); | 746 | QVERIFY(isEntered(&event)); | ||
738 | QVERIFY(spy.isEmpty()); | 747 | QVERIFY(spy.isEmpty()); | ||
739 | // and a pushback | 748 | // and a pushback | ||
740 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 749 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
741 | 750 | | |||
742 | // just to be sure, let's set geometry back | 751 | // just to be sure, let's set geometry back | ||
743 | client.setGeometry(screens()->geometry()); | 752 | client.setGeometry(screens()->geometry()); | ||
744 | emit s->checkBlocking(); | 753 | emit s->checkBlocking(); | ||
745 | Cursor::setPos(0, 50); | 754 | Cursor::setPos(0, 50); | ||
746 | QVERIFY(s->isEntered(&event)); | 755 | QVERIFY(isEntered(&event)); | ||
747 | QVERIFY(spy.isEmpty()); | 756 | QVERIFY(spy.isEmpty()); | ||
748 | // and no pushback | 757 | // and no pushback | ||
749 | QCOMPARE(Cursor::pos(), QPoint(0, 50)); | 758 | QCOMPARE(Cursor::pos(), QPoint(0, 50)); | ||
750 | 759 | | |||
751 | // the corner should always trigger | 760 | // the corner should always trigger | ||
752 | s->unreserve(KWin::ElectricLeft, &callback); | 761 | s->unreserve(KWin::ElectricLeft, &callback); | ||
753 | event.event_x = 99; | 762 | event.event_x = 99; | ||
754 | event.event_y = 99; | 763 | event.event_y = 99; | ||
755 | event.root_x = 99; | 764 | event.root_x = 99; | ||
756 | event.root_y = 99; | 765 | event.root_y = 99; | ||
757 | event.event = s->windows().first(); | 766 | event.event = s->windows().first(); | ||
758 | event.time = QDateTime::currentMSecsSinceEpoch(); | 767 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
759 | Cursor::setPos(99, 99); | 768 | Cursor::setPos(99, 99); | ||
760 | QVERIFY(s->isEntered(&event)); | 769 | QVERIFY(isEntered(&event)); | ||
761 | QVERIFY(spy.isEmpty()); | 770 | QVERIFY(spy.isEmpty()); | ||
762 | // and pushback | 771 | // and pushback | ||
763 | QCOMPARE(Cursor::pos(), QPoint(98, 98)); | 772 | QCOMPARE(Cursor::pos(), QPoint(98, 98)); | ||
764 | QTest::qWait(160); | 773 | QTest::qWait(160); | ||
765 | event.time = QDateTime::currentMSecsSinceEpoch(); | 774 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
766 | Cursor::setPos(99, 99); | 775 | Cursor::setPos(99, 99); | ||
767 | QVERIFY(s->isEntered(&event)); | 776 | QVERIFY(isEntered(&event)); | ||
768 | QVERIFY(!spy.isEmpty()); | 777 | QVERIFY(!spy.isEmpty()); | ||
769 | } | 778 | } | ||
770 | 779 | | |||
771 | void TestScreenEdges::testClientEdge() | 780 | void TestScreenEdges::testClientEdge() | ||
772 | { | 781 | { | ||
773 | using namespace KWin; | 782 | using namespace KWin; | ||
774 | Client client(workspace()); | 783 | Client client(workspace()); | ||
775 | client.setGeometry(QRect(10, 50, 10, 50)); | 784 | client.setGeometry(QRect(10, 50, 10, 50)); | ||
Show All 31 Lines | |||||
807 | event.root_y = 50; | 816 | event.root_y = 50; | ||
808 | event.event_x = 0; | 817 | event.event_x = 0; | ||
809 | event.event_y = 50; | 818 | event.event_y = 50; | ||
810 | event.root = XCB_WINDOW_NONE; | 819 | event.root = XCB_WINDOW_NONE; | ||
811 | event.child = XCB_WINDOW_NONE; | 820 | event.child = XCB_WINDOW_NONE; | ||
812 | event.event = s->windows().first(); | 821 | event.event = s->windows().first(); | ||
813 | event.same_screen_focus = 1; | 822 | event.same_screen_focus = 1; | ||
814 | event.time = QDateTime::currentMSecsSinceEpoch(); | 823 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
815 | QVERIFY(s->isEntered(&event)); | 824 | auto isEntered = [s] (xcb_enter_notify_event_t *event) { | ||
825 | return s->handleEnterNotifiy(event->event, QPoint(event->root_x, event->root_y), QDateTime::fromMSecsSinceEpoch(event->time)); | ||||
826 | }; | ||||
827 | QVERIFY(isEntered(&event)); | ||||
816 | // autohiding panels shall activate instantly | 828 | // autohiding panels shall activate instantly | ||
817 | QCOMPARE(client.isHiddenInternal(), false); | 829 | QCOMPARE(client.isHiddenInternal(), false); | ||
818 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 830 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
819 | 831 | | |||
820 | // now let's reserve the client for each of the edges, in the end for the right one | 832 | // now let's reserve the client for each of the edges, in the end for the right one | ||
821 | client.setHiddenInternal(true); | 833 | client.setHiddenInternal(true); | ||
822 | s->reserve(&client, KWin::ElectricTop); | 834 | s->reserve(&client, KWin::ElectricTop); | ||
823 | s->reserve(&client, KWin::ElectricBottom); | 835 | s->reserve(&client, KWin::ElectricBottom); | ||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Line(s) | |||||
877 | event2.root_y = 50; | 889 | event2.root_y = 50; | ||
878 | event2.event_x = 0; | 890 | event2.event_x = 0; | ||
879 | event2.event_y = 50; | 891 | event2.event_y = 50; | ||
880 | event2.root = XCB_WINDOW_NONE; | 892 | event2.root = XCB_WINDOW_NONE; | ||
881 | event2.child = XCB_WINDOW_NONE; | 893 | event2.child = XCB_WINDOW_NONE; | ||
882 | event2.event = s->windows().first(); | 894 | event2.event = s->windows().first(); | ||
883 | event2.same_screen_focus = 1; | 895 | event2.same_screen_focus = 1; | ||
884 | event2.time = QDateTime::currentMSecsSinceEpoch(); | 896 | event2.time = QDateTime::currentMSecsSinceEpoch(); | ||
885 | QVERIFY(s->isEntered(&event2)); | 897 | QVERIFY(isEntered(&event2)); | ||
886 | QCOMPARE(client.keepBelow(), false); | 898 | QCOMPARE(client.keepBelow(), false); | ||
887 | QCOMPARE(client.isHiddenInternal(), false); | 899 | QCOMPARE(client.isHiddenInternal(), false); | ||
888 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | 900 | QCOMPARE(Cursor::pos(), QPoint(1, 50)); | ||
889 | } | 901 | } | ||
890 | 902 | | |||
891 | void TestScreenEdges::testTouchEdge() | 903 | void TestScreenEdges::testTouchEdge() | ||
892 | { | 904 | { | ||
893 | qRegisterMetaType<KWin::ElectricBorder>("ElectricBorder"); | 905 | qRegisterMetaType<KWin::ElectricBorder>("ElectricBorder"); | ||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | 948 | auto setPos = [&event] (const QPoint &pos) { | |||
941 | event.event_y = pos.y(); | 953 | event.event_y = pos.y(); | ||
942 | }; | 954 | }; | ||
943 | event.root = XCB_WINDOW_NONE; | 955 | event.root = XCB_WINDOW_NONE; | ||
944 | event.child = XCB_WINDOW_NONE; | 956 | event.child = XCB_WINDOW_NONE; | ||
945 | event.event = (*it)->window(); | 957 | event.event = (*it)->window(); | ||
946 | event.same_screen_focus = 1; | 958 | event.same_screen_focus = 1; | ||
947 | event.time = QDateTime::currentMSecsSinceEpoch(); | 959 | event.time = QDateTime::currentMSecsSinceEpoch(); | ||
948 | setPos(QPoint(0, 50)); | 960 | setPos(QPoint(0, 50)); | ||
949 | QCOMPARE(s->isEntered(&event), false); | 961 | auto isEntered = [s] (xcb_enter_notify_event_t *event) { | ||
962 | return s->handleEnterNotifiy(event->event, QPoint(event->root_x, event->root_y), QDateTime::fromMSecsSinceEpoch(event->time)); | ||||
963 | }; | ||||
964 | QCOMPARE(isEntered(&event), false); | ||||
950 | QVERIFY(approachingSpy.isEmpty()); | 965 | QVERIFY(approachingSpy.isEmpty()); | ||
951 | // let's also verify the check | 966 | // let's also verify the check | ||
952 | s->check(QPoint(0, 50), QDateTime::currentDateTime(), false); | 967 | s->check(QPoint(0, 50), QDateTime::currentDateTime(), false); | ||
953 | QVERIFY(approachingSpy.isEmpty()); | 968 | QVERIFY(approachingSpy.isEmpty()); | ||
954 | 969 | | |||
955 | s->gestureRecognizer()->startSwipeGesture(QPoint(0, 50)); | 970 | s->gestureRecognizer()->startSwipeGesture(QPoint(0, 50)); | ||
956 | QCOMPARE(approachingSpy.count(), 1); | 971 | QCOMPARE(approachingSpy.count(), 1); | ||
957 | s->gestureRecognizer()->cancelSwipeGesture(); | 972 | s->gestureRecognizer()->cancelSwipeGesture(); | ||
▲ Show 20 Lines • Show All 115 Lines • Show Last 20 Lines |