From 6419b54383b0e0c149ca6143e3cabc0bcb29e8ff Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Wed, 19 Jul 2023 12:59:58 +0400 Subject: [PATCH] Extract controls side deduction code --- ui/platform/ui_platform_utility.h | 11 +++++++++++ ui/platform/ui_platform_window_title.cpp | 12 ++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ui/platform/ui_platform_utility.h b/ui/platform/ui_platform_utility.h index 4fa6a5d..64c8dd9 100644 --- a/ui/platform/ui_platform_utility.h +++ b/ui/platform/ui_platform_utility.h @@ -56,6 +56,17 @@ void ShowWindowMenu(not_null widget, const QPoint &point); [[nodiscard]] TitleControls::Layout TitleControlsLayout(); [[nodiscard]] rpl::producer TitleControlsLayoutValue(); [[nodiscard]] rpl::producer TitleControlsLayoutChanged(); +[[nodiscard]] bool TitleControlsOnLeft( + const TitleControls::Layout &layout = TitleControlsLayout()) { + if (ranges::contains(layout.left, TitleControl::Close)) { + return true; + } else if (ranges::contains(layout.right, TitleControl::Close)) { + return false; + } else if (layout.left.size() > layout.right.size()) { + return true; + } + return false; +} void FixPopupMenuNativeEmojiPopup(not_null menu); diff --git a/ui/platform/ui_platform_window_title.cpp b/ui/platform/ui_platform_window_title.cpp index 1a47b1a..4162364 100644 --- a/ui/platform/ui_platform_window_title.cpp +++ b/ui/platform/ui_platform_window_title.cpp @@ -340,9 +340,9 @@ AbstractButton *TitleControls::controlWidget(Control control) const { } void TitleControls::updateControlsPosition() { - const auto controlsLayout = TitleControlsLayout(); - auto controlsLeft = controlsLayout.left; - auto controlsRight = controlsLayout.right; + auto controlsLayout = TitleControlsLayout(); + auto &controlsLeft = controlsLayout.left; + auto &controlsRight = controlsLayout.right; const auto moveFromTo = [&](auto &from, auto &to) { for (const auto control : from) { if (!ranges::contains(to, control)) { @@ -351,11 +351,7 @@ void TitleControls::updateControlsPosition() { } from.clear(); }; - if (ranges::contains(controlsLeft, Control::Close)) { - moveFromTo(controlsRight, controlsLeft); - } else if (ranges::contains(controlsRight, Control::Close)) { - moveFromTo(controlsLeft, controlsRight); - } else if (controlsLeft.size() > controlsRight.size()) { + if (TitleControlsOnLeft(controlsLayout)) { moveFromTo(controlsRight, controlsLeft); } else { moveFromTo(controlsLeft, controlsRight);