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);