Added Ui::Show implementation for Window::SessionController.

This commit is contained in:
23rd 2022-02-25 09:21:53 +03:00
parent ed5b83bc62
commit 6bcca6c94e
3 changed files with 58 additions and 1 deletions

View File

@ -1802,4 +1802,44 @@ SessionController::~SessionController() {
resetFakeUnreadWhileOpened();
}
Show::Show(not_null<SessionNavigation*> navigation)
: Show(&navigation->parentController()->window()) {
}
Show::Show(not_null<Controller*> window)
: _window(base::make_weak(window.get())) {
}
Show::~Show() = default;
void Show::showBox(
object_ptr<Ui::BoxContent> content,
Ui::LayerOptions options) const {
if (const auto window = _window.get()) {
window->show(std::move(content), options);
}
}
void Show::hideLayer() const {
if (const auto window = _window.get()) {
window->show(
object_ptr<Ui::BoxContent>{ nullptr },
Ui::LayerOption::CloseOther);
}
}
not_null<QWidget*> Show::toastParent() const {
const auto window = _window.get();
Assert(window != nullptr);
return window->widget()->bodyWidget();
}
bool Show::valid() const {
return !_window.empty();
}
Show::operator bool() const {
return valid();
}
} // namespace Window

View File

@ -13,6 +13,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/timer.h"
#include "dialogs/dialogs_key.h"
#include "ui/layers/layer_widget.h"
#include "ui/layers/show.h"
#include "window/window_adaptive.h"
class PhotoData;
@ -568,4 +569,20 @@ private:
void ActivateWindow(not_null<SessionController*> controller);
class Show : public Ui::Show {
public:
explicit Show(not_null<SessionNavigation*> navigation);
explicit Show(not_null<Controller*> window);
~Show();
void showBox(
object_ptr<Ui::BoxContent> content,
Ui::LayerOptions options = Ui::LayerOption::KeepOther) const override;
void hideLayer() const override;
[[nodiscard]] not_null<QWidget*> toastParent() const override;
[[nodiscard]] bool valid() const override;
operator bool() const override;
private:
const base::weak_ptr<Controller> _window;
};
} // namespace Window

@ -1 +1 @@
Subproject commit 214c5e8e226172e07f6e36984a65e0757a994a32
Subproject commit d2e482dac3e5ddbc200228d14d04d7d624c98af7