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 | } | 582 | } | ||
▲ Show 20 Lines • Show All 245 Lines • ▼ Show 20 Line(s) | 824 | if (options->borderlessMaximizedWindows()) { | |||
828 | setNoBorder(rules()->checkNoBorder(m_requestedMaximizeMode == MaximizeFull)); | 828 | setNoBorder(rules()->checkNoBorder(m_requestedMaximizeMode == MaximizeFull)); | ||
829 | changeMaximizeRecursion = false; | 829 | changeMaximizeRecursion = false; | ||
830 | } | 830 | } | ||
831 | 831 | | |||
832 | // Conditional quick tiling exit points | 832 | // Conditional quick tiling exit points | ||
833 | const auto oldQuickTileMode = quickTileMode(); | 833 | const auto oldQuickTileMode = quickTileMode(); | ||
834 | if (quickTileMode() != QuickTileMode(QuickTileFlag::None)) { | 834 | if (quickTileMode() != QuickTileMode(QuickTileFlag::None)) { | ||
835 | if (oldMode == MaximizeFull && | 835 | if (oldMode == MaximizeFull && | ||
836 | !clientArea.contains(m_geomMaximizeRestore.center())) { | 836 | !clientArea.contains(geometryRestore().center())) { | ||
837 | // Not restoring on the same screen | 837 | // Not restoring on the same screen | ||
838 | // TODO: The following doesn't work for some reason | 838 | // TODO: The following doesn't work for some reason | ||
839 | //quick_tile_mode = QuickTileNone; // And exit quick tile mode manually | 839 | //quick_tile_mode = QuickTileNone; // And exit quick tile mode manually | ||
840 | } else if ((oldMode == MaximizeVertical && m_requestedMaximizeMode == MaximizeRestore) || | 840 | } else if ((oldMode == MaximizeVertical && m_requestedMaximizeMode == MaximizeRestore) || | ||
841 | (oldMode == MaximizeFull && m_requestedMaximizeMode == MaximizeHorizontal)) { | 841 | (oldMode == MaximizeFull && m_requestedMaximizeMode == MaximizeHorizontal)) { | ||
842 | // Modifying geometry of a tiled window | 842 | // Modifying geometry of a tiled window | ||
843 | updateQuickTileMode(QuickTileFlag::None); // Exit quick tile mode without restoring geometry | 843 | updateQuickTileMode(QuickTileFlag::None); // Exit quick tile mode without restoring geometry | ||
844 | } | 844 | } | ||
845 | } | 845 | } | ||
846 | 846 | | |||
847 | if (m_requestedMaximizeMode == MaximizeFull) { | 847 | if (m_requestedMaximizeMode == MaximizeFull) { | ||
848 | m_geomMaximizeRestore = oldGeometry; | 848 | setGeometryRestore(oldGeometry); | ||
849 | // TODO: Client has more checks | 849 | // TODO: Client has more checks | ||
850 | if (options->electricBorderMaximize()) { | 850 | if (options->electricBorderMaximize()) { | ||
851 | updateQuickTileMode(QuickTileFlag::Maximize); | 851 | updateQuickTileMode(QuickTileFlag::Maximize); | ||
852 | } else { | 852 | } else { | ||
853 | updateQuickTileMode(QuickTileFlag::None); | 853 | updateQuickTileMode(QuickTileFlag::None); | ||
854 | } | 854 | } | ||
855 | if (quickTileMode() != oldQuickTileMode) { | 855 | if (quickTileMode() != oldQuickTileMode) { | ||
856 | emit quickTileModeChanged(); | 856 | emit quickTileModeChanged(); | ||
857 | } | 857 | } | ||
858 | setFrameGeometry(workspace()->clientArea(MaximizeArea, this)); | 858 | setFrameGeometry(workspace()->clientArea(MaximizeArea, this)); | ||
859 | workspace()->raiseClient(this); | 859 | workspace()->raiseClient(this); | ||
860 | } else { | 860 | } else { | ||
861 | if (m_requestedMaximizeMode == MaximizeRestore) { | 861 | if (m_requestedMaximizeMode == MaximizeRestore) { | ||
862 | updateQuickTileMode(QuickTileFlag::None); | 862 | updateQuickTileMode(QuickTileFlag::None); | ||
863 | } | 863 | } | ||
864 | if (quickTileMode() != oldQuickTileMode) { | 864 | if (quickTileMode() != oldQuickTileMode) { | ||
865 | emit quickTileModeChanged(); | 865 | emit quickTileModeChanged(); | ||
866 | } | 866 | } | ||
867 | 867 | | |||
868 | if (m_geomMaximizeRestore.isValid()) { | 868 | if (geometryRestore().isValid()) { | ||
869 | setFrameGeometry(m_geomMaximizeRestore); | 869 | setFrameGeometry(geometryRestore()); | ||
870 | } else { | 870 | } else { | ||
871 | setFrameGeometry(workspace()->clientArea(PlacementArea, this)); | 871 | setFrameGeometry(workspace()->clientArea(PlacementArea, this)); | ||
872 | } | 872 | } | ||
873 | } | 873 | } | ||
874 | } | 874 | } | ||
875 | 875 | | |||
876 | void XdgShellClient::setGeometryRestore(const QRect &geo) | | |||
877 | { | | |||
878 | m_geomMaximizeRestore = geo; | | |||
879 | } | | |||
880 | | ||||
881 | MaximizeMode XdgShellClient::maximizeMode() const | 876 | MaximizeMode XdgShellClient::maximizeMode() const | ||
882 | { | 877 | { | ||
883 | return m_maximizeMode; | 878 | return m_maximizeMode; | ||
884 | } | 879 | } | ||
885 | 880 | | |||
886 | MaximizeMode XdgShellClient::requestedMaximizeMode() const | 881 | MaximizeMode XdgShellClient::requestedMaximizeMode() const | ||
887 | { | 882 | { | ||
888 | return m_requestedMaximizeMode; | 883 | return m_requestedMaximizeMode; | ||
889 | } | 884 | } | ||
890 | 885 | | |||
891 | QRect XdgShellClient::geometryRestore() const | | |||
892 | { | | |||
893 | return m_geomMaximizeRestore; | | |||
894 | } | | |||
895 | | ||||
896 | bool XdgShellClient::noBorder() const | 886 | bool XdgShellClient::noBorder() const | ||
897 | { | 887 | { | ||
898 | if (m_serverDecoration) { | 888 | if (m_serverDecoration) { | ||
899 | if (m_serverDecoration->mode() == ServerSideDecorationManagerInterface::Mode::Server) { | 889 | if (m_serverDecoration->mode() == ServerSideDecorationManagerInterface::Mode::Server) { | ||
900 | return m_userNoBorder || isFullScreen(); | 890 | return m_userNoBorder || isFullScreen(); | ||
901 | } | 891 | } | ||
902 | } | 892 | } | ||
903 | if (m_xdgDecoration && m_xdgDecoration->requestedMode() != XdgDecorationInterface::Mode::ClientSide) { | 893 | if (m_xdgDecoration && m_xdgDecoration->requestedMode() != XdgDecorationInterface::Mode::ClientSide) { | ||
▲ Show 20 Lines • Show All 1165 Lines • Show Last 20 Lines |