Changeset View
Changeset View
Standalone View
Standalone View
geometry.cpp
Show First 20 Lines • Show All 500 Lines • ▼ Show 20 Line(s) | 475 | if (options->windowSnapZone() || !borderSnapZone.isNull() || options->centerSnapZone()) { | |||
---|---|---|---|---|---|
501 | const int snapY = borderSnapZone.height() * snapAdjust; | 501 | const int snapY = borderSnapZone.height() * snapAdjust; | ||
502 | if (snapX || snapY) { | 502 | if (snapX || snapY) { | ||
503 | QRect geo = c->geometry(); | 503 | QRect geo = c->geometry(); | ||
504 | const QPoint cp = c->clientPos(); | 504 | const QPoint cp = c->clientPos(); | ||
505 | const QSize cs = geo.size() - c->clientSize(); | 505 | const QSize cs = geo.size() - c->clientSize(); | ||
506 | int padding[4] = { cp.x(), cs.width() - cp.x(), cp.y(), cs.height() - cp.y() }; | 506 | int padding[4] = { cp.x(), cs.width() - cp.x(), cp.y(), cs.height() - cp.y() }; | ||
507 | 507 | | |||
508 | // snap to titlebar / snap to window borders on inner screen edges | 508 | // snap to titlebar / snap to window borders on inner screen edges | ||
509 | Client::Position titlePos = c->titlebarPosition(); | 509 | AbstractClient::Position titlePos = c->titlebarPosition(); | ||
510 | if (padding[0] && (titlePos == Client::PositionLeft || (c->maximizeMode() & MaximizeHorizontal) || | 510 | if (padding[0] && (titlePos == AbstractClient::PositionLeft || (c->maximizeMode() & MaximizeHorizontal) || | ||
511 | screens()->intersecting(geo.translated(maxRect.x() - (padding[0] + geo.x()), 0)) > 1)) | 511 | screens()->intersecting(geo.translated(maxRect.x() - (padding[0] + geo.x()), 0)) > 1)) | ||
512 | padding[0] = 0; | 512 | padding[0] = 0; | ||
513 | if (padding[1] && (titlePos == Client::PositionRight || (c->maximizeMode() & MaximizeHorizontal) || | 513 | if (padding[1] && (titlePos == AbstractClient::PositionRight || (c->maximizeMode() & MaximizeHorizontal) || | ||
514 | screens()->intersecting(geo.translated(maxRect.right() + padding[1] - geo.right(), 0)) > 1)) | 514 | screens()->intersecting(geo.translated(maxRect.right() + padding[1] - geo.right(), 0)) > 1)) | ||
515 | padding[1] = 0; | 515 | padding[1] = 0; | ||
516 | if (padding[2] && (titlePos == Client::PositionTop || (c->maximizeMode() & MaximizeVertical) || | 516 | if (padding[2] && (titlePos == AbstractClient::PositionTop || (c->maximizeMode() & MaximizeVertical) || | ||
517 | screens()->intersecting(geo.translated(0, maxRect.y() - (padding[2] + geo.y()))) > 1)) | 517 | screens()->intersecting(geo.translated(0, maxRect.y() - (padding[2] + geo.y()))) > 1)) | ||
518 | padding[2] = 0; | 518 | padding[2] = 0; | ||
519 | if (padding[3] && (titlePos == Client::PositionBottom || (c->maximizeMode() & MaximizeVertical) || | 519 | if (padding[3] && (titlePos == AbstractClient::PositionBottom || (c->maximizeMode() & MaximizeVertical) || | ||
520 | screens()->intersecting(geo.translated(0, maxRect.bottom() + padding[3] - geo.bottom())) > 1)) | 520 | screens()->intersecting(geo.translated(0, maxRect.bottom() + padding[3] - geo.bottom())) > 1)) | ||
521 | padding[3] = 0; | 521 | padding[3] = 0; | ||
522 | if ((sOWO ? (cx < xmin) : true) && (qAbs(xmin - cx) < snapX)) { | 522 | if ((sOWO ? (cx < xmin) : true) && (qAbs(xmin - cx) < snapX)) { | ||
523 | deltaX = xmin - cx; | 523 | deltaX = xmin - cx; | ||
524 | nx = xmin - padding[0]; | 524 | nx = xmin - padding[0]; | ||
525 | } | 525 | } | ||
526 | if ((sOWO ? (rx > xmax) : true) && (qAbs(rx - xmax) < snapX) && (qAbs(xmax - rx) < deltaX)) { | 526 | if ((sOWO ? (rx > xmax) : true) && (qAbs(rx - xmax) < snapX) && (qAbs(xmax - rx) < deltaX)) { | ||
527 | deltaX = rx - xmax; | 527 | deltaX = rx - xmax; | ||
▲ Show 20 Lines • Show All 165 Lines • ▼ Show 20 Line(s) | |||||
693 | 693 | | |||
694 | #define SNAP_BORDER_RIGHT \ | 694 | #define SNAP_BORDER_RIGHT \ | ||
695 | if ((sOWO?(newrx>xmax):true) && (qAbs(xmax-newrx)<deltaX)) \ | 695 | if ((sOWO?(newrx>xmax):true) && (qAbs(xmax-newrx)<deltaX)) \ | ||
696 | { \ | 696 | { \ | ||
697 | deltaX = qAbs(xmax-newrx); \ | 697 | deltaX = qAbs(xmax-newrx); \ | ||
698 | newrx = xmax; \ | 698 | newrx = xmax; \ | ||
699 | } | 699 | } | ||
700 | switch(mode) { | 700 | switch(mode) { | ||
701 | case Client::PositionBottomRight: | 701 | case AbstractClient::PositionBottomRight: | ||
702 | SNAP_BORDER_BOTTOM | 702 | SNAP_BORDER_BOTTOM | ||
703 | SNAP_BORDER_RIGHT | 703 | SNAP_BORDER_RIGHT | ||
704 | break; | 704 | break; | ||
705 | case Client::PositionRight: | 705 | case AbstractClient::PositionRight: | ||
706 | SNAP_BORDER_RIGHT | 706 | SNAP_BORDER_RIGHT | ||
707 | break; | 707 | break; | ||
708 | case Client::PositionBottom: | 708 | case AbstractClient::PositionBottom: | ||
709 | SNAP_BORDER_BOTTOM | 709 | SNAP_BORDER_BOTTOM | ||
710 | break; | 710 | break; | ||
711 | case Client::PositionTopLeft: | 711 | case AbstractClient::PositionTopLeft: | ||
712 | SNAP_BORDER_TOP | 712 | SNAP_BORDER_TOP | ||
713 | SNAP_BORDER_LEFT | 713 | SNAP_BORDER_LEFT | ||
714 | break; | 714 | break; | ||
715 | case Client::PositionLeft: | 715 | case AbstractClient::PositionLeft: | ||
716 | SNAP_BORDER_LEFT | 716 | SNAP_BORDER_LEFT | ||
717 | break; | 717 | break; | ||
718 | case Client::PositionTop: | 718 | case AbstractClient::PositionTop: | ||
719 | SNAP_BORDER_TOP | 719 | SNAP_BORDER_TOP | ||
720 | break; | 720 | break; | ||
721 | case Client::PositionTopRight: | 721 | case AbstractClient::PositionTopRight: | ||
722 | SNAP_BORDER_TOP | 722 | SNAP_BORDER_TOP | ||
723 | SNAP_BORDER_RIGHT | 723 | SNAP_BORDER_RIGHT | ||
724 | break; | 724 | break; | ||
725 | case Client::PositionBottomLeft: | 725 | case AbstractClient::PositionBottomLeft: | ||
726 | SNAP_BORDER_BOTTOM | 726 | SNAP_BORDER_BOTTOM | ||
727 | SNAP_BORDER_LEFT | 727 | SNAP_BORDER_LEFT | ||
728 | break; | 728 | break; | ||
729 | default: | 729 | default: | ||
730 | abort(); | 730 | abort(); | ||
731 | break; | 731 | break; | ||
732 | } | 732 | } | ||
733 | 733 | | |||
▲ Show 20 Lines • Show All 75 Lines • ▼ Show 20 Line(s) | |||||
809 | #define SNAP_WINDOW_C_RIGHT if ( (sOWO?(newrx>lrx):true) \ | 809 | #define SNAP_WINDOW_C_RIGHT if ( (sOWO?(newrx>lrx):true) \ | ||
810 | && (newcy == lry || newry == ly) \ | 810 | && (newcy == lry || newry == ly) \ | ||
811 | && qAbs(lrx-newrx) < deltaX ) { \ | 811 | && qAbs(lrx-newrx) < deltaX ) { \ | ||
812 | deltaX = qAbs( lrx - newrx - 1 ); \ | 812 | deltaX = qAbs( lrx - newrx - 1 ); \ | ||
813 | newrx = lrx - 1; \ | 813 | newrx = lrx - 1; \ | ||
814 | } | 814 | } | ||
815 | 815 | | |||
816 | switch(mode) { | 816 | switch(mode) { | ||
817 | case Client::PositionBottomRight: | 817 | case AbstractClient::PositionBottomRight: | ||
818 | SNAP_WINDOW_BOTTOM | 818 | SNAP_WINDOW_BOTTOM | ||
819 | SNAP_WINDOW_RIGHT | 819 | SNAP_WINDOW_RIGHT | ||
820 | SNAP_WINDOW_C_BOTTOM | 820 | SNAP_WINDOW_C_BOTTOM | ||
821 | SNAP_WINDOW_C_RIGHT | 821 | SNAP_WINDOW_C_RIGHT | ||
822 | break; | 822 | break; | ||
823 | case Client::PositionRight: | 823 | case AbstractClient::PositionRight: | ||
824 | SNAP_WINDOW_RIGHT | 824 | SNAP_WINDOW_RIGHT | ||
825 | SNAP_WINDOW_C_RIGHT | 825 | SNAP_WINDOW_C_RIGHT | ||
826 | break; | 826 | break; | ||
827 | case Client::PositionBottom: | 827 | case AbstractClient::PositionBottom: | ||
828 | SNAP_WINDOW_BOTTOM | 828 | SNAP_WINDOW_BOTTOM | ||
829 | SNAP_WINDOW_C_BOTTOM | 829 | SNAP_WINDOW_C_BOTTOM | ||
830 | break; | 830 | break; | ||
831 | case Client::PositionTopLeft: | 831 | case AbstractClient::PositionTopLeft: | ||
832 | SNAP_WINDOW_TOP | 832 | SNAP_WINDOW_TOP | ||
833 | SNAP_WINDOW_LEFT | 833 | SNAP_WINDOW_LEFT | ||
834 | SNAP_WINDOW_C_TOP | 834 | SNAP_WINDOW_C_TOP | ||
835 | SNAP_WINDOW_C_LEFT | 835 | SNAP_WINDOW_C_LEFT | ||
836 | break; | 836 | break; | ||
837 | case Client::PositionLeft: | 837 | case AbstractClient::PositionLeft: | ||
838 | SNAP_WINDOW_LEFT | 838 | SNAP_WINDOW_LEFT | ||
839 | SNAP_WINDOW_C_LEFT | 839 | SNAP_WINDOW_C_LEFT | ||
840 | break; | 840 | break; | ||
841 | case Client::PositionTop: | 841 | case AbstractClient::PositionTop: | ||
842 | SNAP_WINDOW_TOP | 842 | SNAP_WINDOW_TOP | ||
843 | SNAP_WINDOW_C_TOP | 843 | SNAP_WINDOW_C_TOP | ||
844 | break; | 844 | break; | ||
845 | case Client::PositionTopRight: | 845 | case AbstractClient::PositionTopRight: | ||
846 | SNAP_WINDOW_TOP | 846 | SNAP_WINDOW_TOP | ||
847 | SNAP_WINDOW_RIGHT | 847 | SNAP_WINDOW_RIGHT | ||
848 | SNAP_WINDOW_C_TOP | 848 | SNAP_WINDOW_C_TOP | ||
849 | SNAP_WINDOW_C_RIGHT | 849 | SNAP_WINDOW_C_RIGHT | ||
850 | break; | 850 | break; | ||
851 | case Client::PositionBottomLeft: | 851 | case AbstractClient::PositionBottomLeft: | ||
852 | SNAP_WINDOW_BOTTOM | 852 | SNAP_WINDOW_BOTTOM | ||
853 | SNAP_WINDOW_LEFT | 853 | SNAP_WINDOW_LEFT | ||
854 | SNAP_WINDOW_C_BOTTOM | 854 | SNAP_WINDOW_C_BOTTOM | ||
855 | SNAP_WINDOW_C_LEFT | 855 | SNAP_WINDOW_C_LEFT | ||
856 | break; | 856 | break; | ||
857 | default: | 857 | default: | ||
858 | abort(); | 858 | abort(); | ||
859 | break; | 859 | break; | ||
▲ Show 20 Lines • Show All 2650 Lines • Show Last 20 Lines |