From 34fc25a56c6933220b31075f7a5834b421170f34 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sun, 7 Feb 2021 17:39:10 +0400 Subject: [PATCH] Ensure controls aren't duplicated --- ui/platform/ui_platform_window_title.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ui/platform/ui_platform_window_title.cpp b/ui/platform/ui_platform_window_title.cpp index 8b0d926..d83c9a9 100644 --- a/ui/platform/ui_platform_window_title.cpp +++ b/ui/platform/ui_platform_window_title.cpp @@ -21,6 +21,19 @@ namespace Ui { namespace Platform { +namespace { + +template +void RemoveDuplicates(std::vector &v) { + auto end = v.end(); + for (auto it = v.begin(); it != end; ++it) { + end = std::remove(it + 1, end, *it); + } + + v.erase(end, v.end()); +} + +} // namespace TitleControls::TitleControls( not_null parent, @@ -197,10 +210,12 @@ void TitleControls::updateControlsPosition() { void TitleControls::updateControlsPositionBySide( const std::vector &controls, bool right) { - const auto preparedControls = right + auto preparedControls = right ? (ranges::view::reverse(controls) | ranges::to_vector) : controls; + RemoveDuplicates(preparedControls); + auto position = 0; for (const auto &control : preparedControls) { const auto widget = controlWidget(control);