Allow moving window controls vertically.

This commit is contained in:
John Preston 2022-03-15 19:40:38 +04:00
parent ba40979470
commit d98c3d539b
2 changed files with 8 additions and 5 deletions

View file

@ -481,7 +481,8 @@ SeparateTitleControls::SeparateTitleControls(
std::unique_ptr<SeparateTitleControls> SetupSeparateTitleControls( std::unique_ptr<SeparateTitleControls> SetupSeparateTitleControls(
not_null<RpWindow*> window, not_null<RpWindow*> window,
const style::WindowTitle &st, const style::WindowTitle &st,
Fn<void(bool maximized)> maximize) { Fn<void(bool maximized)> maximize,
rpl::producer<int> controlsTop) {
auto result = std::make_unique<SeparateTitleControls>( auto result = std::make_unique<SeparateTitleControls>(
window->body(), window->body(),
st, st,
@ -491,11 +492,12 @@ std::unique_ptr<SeparateTitleControls> SetupSeparateTitleControls(
auto &lifetime = raw->wrap.lifetime(); auto &lifetime = raw->wrap.lifetime();
rpl::combine( rpl::combine(
window->body()->widthValue(), window->body()->widthValue(),
window->additionalContentPaddingValue() window->additionalContentPaddingValue(),
) | rpl::start_with_next([=](int width, int padding) { controlsTop ? std::move(controlsTop) : rpl::single(0)
) | rpl::start_with_next([=](int width, int padding, int top) {
raw->wrap.setGeometry( raw->wrap.setGeometry(
padding, padding,
0, top,
width - 2 * padding, width - 2 * padding,
raw->controls.geometry().height()); raw->controls.geometry().height());
}, lifetime); }, lifetime);

View file

@ -150,7 +150,8 @@ struct SeparateTitleControls {
[[nodiscard]] auto SetupSeparateTitleControls( [[nodiscard]] auto SetupSeparateTitleControls(
not_null<RpWindow*> window, not_null<RpWindow*> window,
const style::WindowTitle &st, const style::WindowTitle &st,
Fn<void(bool maximized)> maximize = nullptr) Fn<void(bool maximized)> maximize = nullptr,
rpl::producer<int> controlsTop = nullptr)
-> std::unique_ptr<SeparateTitleControls>; -> std::unique_ptr<SeparateTitleControls>;
} // namespace Platform } // namespace Platform