Changeset View
Changeset View
Standalone View
Standalone View
xdgshellclient.cpp
Show First 20 Lines • Show All 563 Lines • ▼ Show 20 Line(s) | 563 | if (m_bufferGeometry != bufferGeometry) { | |||
---|---|---|---|---|---|
564 | m_bufferGeometry = bufferGeometry; | 564 | m_bufferGeometry = bufferGeometry; | ||
565 | bufferGeometryIsChanged = true; | 565 | bufferGeometryIsChanged = true; | ||
566 | } | 566 | } | ||
567 | 567 | | |||
568 | if (!frameGeometryIsChanged && !bufferGeometryIsChanged) { | 568 | if (!frameGeometryIsChanged && !bufferGeometryIsChanged) { | ||
569 | return; | 569 | return; | ||
570 | } | 570 | } | ||
571 | 571 | | |||
572 | if (m_unmapped && m_geomMaximizeRestore.isEmpty() && !m_frameGeometry.isEmpty()) { | 572 | if (m_unmapped && geometryRestore().isEmpty() && !m_frameGeometry.isEmpty()) { | ||
573 | // use first valid geometry as restore geometry | 573 | // use first valid geometry as restore geometry | ||
574 | m_geomMaximizeRestore = m_frameGeometry; | 574 | setGeometryRestore(m_frameGeometry); | ||
575 | } | 575 | } | ||
576 | 576 | | |||
577 | if (frameGeometryIsChanged) { | 577 | if (frameGeometryIsChanged) { | ||
578 | if (hasStrut()) { | 578 | if (hasStrut()) { | ||
579 | workspace()->updateClientArea(); | 579 | workspace()->updateClientArea(); | ||
580 | } | 580 | } | ||
581 | updateWindowRules(Rules::Position | Rules::Size); | 581 | updateWindowRules(Rules::Position | Rules::Size); | ||
582 | emit frameGeometryChanged(this, frameGeometryBeforeUpdateBlocking()); | 582 | emit frameGeometryChanged(this, frameGeometryBeforeUpdateBlocking()); | ||
▲ Show 20 Lines • Show All 246 Lines • ▼ Show 20 Line(s) | 825 | if (options->borderlessMaximizedWindows()) { | |||
829 | setNoBorder(rules()->checkNoBorder(m_requestedMaximizeMode == MaximizeFull)); | 829 | setNoBorder(rules()->checkNoBorder(m_requestedMaximizeMode == MaximizeFull)); | ||
830 | changeMaximizeRecursion = false; | 830 | changeMaximizeRecursion = false; | ||
831 | } | 831 | } | ||
832 | 832 | | |||
833 | // Conditional quick tiling exit points | 833 | // Conditional quick tiling exit points | ||
834 | const auto oldQuickTileMode = quickTileMode(); | 834 | const auto oldQuickTileMode = quickTileMode(); | ||
835 | if (quickTileMode() != QuickTileMode(QuickTileFlag::None)) { | 835 | if (quickTileMode() != QuickTileMode(QuickTileFlag::None)) { | ||
836 | if (oldMode == MaximizeFull && | 836 | if (oldMode == MaximizeFull && | ||
837 | !clientArea.contains(m_geomMaximizeRestore.center())) { | 837 | !clientArea.contains(geometryRestore().center())) { | ||
838 | // Not restoring on the same screen | 838 | // Not restoring on the same screen | ||
839 | // TODO: The following doesn't work for some reason | 839 | // TODO: The following doesn't work for some reason | ||
840 | //quick_tile_mode = QuickTileNone; // And exit quick tile mode manually | 840 | //quick_tile_mode = QuickTileNone; // And exit quick tile mode manually | ||
841 | } else if ((oldMode == MaximizeVertical && m_requestedMaximizeMode == MaximizeRestore) || | 841 | } else if ((oldMode == MaximizeVertical && m_requestedMaximizeMode == MaximizeRestore) || | ||
842 | (oldMode == MaximizeFull && m_requestedMaximizeMode == MaximizeHorizontal)) { | 842 | (oldMode == MaximizeFull && m_requestedMaximizeMode == MaximizeHorizontal)) { | ||
843 | // Modifying geometry of a tiled window | 843 | // Modifying geometry of a tiled window | ||
844 | updateQuickTileMode(QuickTileFlag::None); // Exit quick tile mode without restoring geometry | 844 | updateQuickTileMode(QuickTileFlag::None); // Exit quick tile mode without restoring geometry | ||
845 | } | 845 | } | ||
846 | } | 846 | } | ||
847 | 847 | | |||
848 | if (m_requestedMaximizeMode == MaximizeFull) { | 848 | if (m_requestedMaximizeMode == MaximizeFull) { | ||
849 | m_geomMaximizeRestore = oldGeometry; | 849 | setGeometryRestore(oldGeometry); | ||
850 | // TODO: Client has more checks | 850 | // TODO: Client has more checks | ||
851 | if (options->electricBorderMaximize()) { | 851 | if (options->electricBorderMaximize()) { | ||
852 | updateQuickTileMode(QuickTileFlag::Maximize); | 852 | updateQuickTileMode(QuickTileFlag::Maximize); | ||
853 | } else { | 853 | } else { | ||
854 | updateQuickTileMode(QuickTileFlag::None); | 854 | updateQuickTileMode(QuickTileFlag::None); | ||
855 | } | 855 | } | ||
856 | if (quickTileMode() != oldQuickTileMode) { | 856 | if (quickTileMode() != oldQuickTileMode) { | ||
857 | emit quickTileModeChanged(); | 857 | emit quickTileModeChanged(); | ||
858 | } | 858 | } | ||
859 | setFrameGeometry(workspace()->clientArea(MaximizeArea, this)); | 859 | setFrameGeometry(workspace()->clientArea(MaximizeArea, this)); | ||
860 | workspace()->raiseClient(this); | 860 | workspace()->raiseClient(this); | ||
861 | } else { | 861 | } else { | ||
862 | if (m_requestedMaximizeMode == MaximizeRestore) { | 862 | if (m_requestedMaximizeMode == MaximizeRestore) { | ||
863 | updateQuickTileMode(QuickTileFlag::None); | 863 | updateQuickTileMode(QuickTileFlag::None); | ||
864 | } | 864 | } | ||
865 | if (quickTileMode() != oldQuickTileMode) { | 865 | if (quickTileMode() != oldQuickTileMode) { | ||
866 | emit quickTileModeChanged(); | 866 | emit quickTileModeChanged(); | ||
867 | } | 867 | } | ||
868 | 868 | | |||
869 | if (m_geomMaximizeRestore.isValid()) { | 869 | if (geometryRestore().isValid()) { | ||
870 | setFrameGeometry(m_geomMaximizeRestore); | 870 | setFrameGeometry(geometryRestore()); | ||
871 | } else { | 871 | } else { | ||
872 | setFrameGeometry(workspace()->clientArea(PlacementArea, this)); | 872 | setFrameGeometry(workspace()->clientArea(PlacementArea, this)); | ||
873 | } | 873 | } | ||
874 | } | 874 | } | ||
875 | } | 875 | } | ||
876 | 876 | | |||
877 | void XdgShellClient::setGeometryRestore(const QRect &geo) | | |||
878 | { | | |||
879 | m_geomMaximizeRestore = geo; | | |||
880 | } | | |||
881 | | ||||
882 | MaximizeMode XdgShellClient::maximizeMode() const | 877 | MaximizeMode XdgShellClient::maximizeMode() const | ||
883 | { | 878 | { | ||
884 | return m_maximizeMode; | 879 | return m_maximizeMode; | ||
885 | } | 880 | } | ||
886 | 881 | | |||
887 | MaximizeMode XdgShellClient::requestedMaximizeMode() const | 882 | MaximizeMode XdgShellClient::requestedMaximizeMode() const | ||
888 | { | 883 | { | ||
889 | return m_requestedMaximizeMode; | 884 | return m_requestedMaximizeMode; | ||
890 | } | 885 | } | ||
891 | 886 | | |||
892 | QRect XdgShellClient::geometryRestore() const | | |||
893 | { | | |||
894 | return m_geomMaximizeRestore; | | |||
895 | } | | |||
896 | | ||||
897 | bool XdgShellClient::noBorder() const | 887 | bool XdgShellClient::noBorder() const | ||
898 | { | 888 | { | ||
899 | if (m_serverDecoration) { | 889 | if (m_serverDecoration) { | ||
900 | if (m_serverDecoration->mode() == ServerSideDecorationManagerInterface::Mode::Server) { | 890 | if (m_serverDecoration->mode() == ServerSideDecorationManagerInterface::Mode::Server) { | ||
901 | return m_userNoBorder || isFullScreen(); | 891 | return m_userNoBorder || isFullScreen(); | ||
902 | } | 892 | } | ||
903 | } | 893 | } | ||
904 | if (m_xdgDecoration && m_xdgDecoration->requestedMode() != XdgDecorationInterface::Mode::ClientSide) { | 894 | if (m_xdgDecoration && m_xdgDecoration->requestedMode() != XdgDecorationInterface::Mode::ClientSide) { | ||
▲ Show 20 Lines • Show All 1165 Lines • Show Last 20 Lines |