diff --git a/ui/platform/mac/ui_window_mac.h b/ui/platform/mac/ui_window_mac.h index 717c5e3..284b7ae 100644 --- a/ui/platform/mac/ui_window_mac.h +++ b/ui/platform/mac/ui_window_mac.h @@ -33,11 +33,12 @@ private: void setupBodyTitleAreaEvents() override; void init(); - void toggleCustomTitle(bool visible); + void updateCustomTitleVisibility(bool force = false); const std::unique_ptr _private; const not_null _title; const not_null _body; + bool _titleVisible = true; #ifdef OS_OSX struct WindowDrag { diff --git a/ui/platform/mac/ui_window_mac.mm b/ui/platform/mac/ui_window_mac.mm index 550584e..433bd73 100644 --- a/ui/platform/mac/ui_window_mac.mm +++ b/ui/platform/mac/ui_window_mac.mm @@ -207,7 +207,8 @@ void WindowHelper::Private::close() { Fn WindowHelper::Private::toggleCustomTitleCallback() { return crl::guard(_owner->window(), [=](bool visible) { - _owner->toggleCustomTitle(visible); + _owner->_titleVisible = visible; + _owner->updateCustomTitleVisibility(true); }); } @@ -286,7 +287,7 @@ WindowHelper::WindowHelper(not_null window) : nullptr) , _body(Ui::CreateChild(window.get())) { if (_title->shouldBeHidden()) { - toggleCustomTitle(false); + updateCustomTitleVisibility(); } init(); } @@ -303,27 +304,25 @@ void WindowHelper::setTitle(const QString &title) { _title->setText(title); } window()->setWindowTitle( - (!_title || _title->isHidden()) ? title : QString()); + (!_title || !_titleVisible) ? title : QString()); } void WindowHelper::setTitleStyle(const style::WindowTitle &st) { if (_title) { _title->setStyle(st); if (_title->shouldBeHidden()) { - toggleCustomTitle(false); + updateCustomTitleVisibility(); } } } -void WindowHelper::toggleCustomTitle(bool visible) { - if (_title->shouldBeHidden()) { - visible = false; - } - if (!_title || _title->isHidden() != visible) { +void WindowHelper::updateCustomTitleVisibility(bool force) { + auto visible = !_title->shouldBeHidden() && _titleVisible; + if (!_title || (!force && _title->isHidden() != visible)) { return; } _title->setVisible(visible); - window()->setWindowTitle(visible ? QString() : _title->text()); + window()->setWindowTitle(_titleVisible ? QString() : _title->text()); } void WindowHelper::setMinimumSize(QSize size) {