mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Don't expand minimum window size for folders
Turn them into horizontal automatically instead
This commit is contained in:
parent
702aa944dd
commit
6c64c22f83
6 changed files with 29 additions and 9 deletions
|
@ -653,7 +653,8 @@ Widget::Widget(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (session().settings().dialogsFiltersEnabled()
|
if (session().settings().dialogsFiltersEnabled()
|
||||||
&& Core::App().settings().chatFiltersHorizontal()) {
|
&& (Core::App().settings().chatFiltersHorizontal()
|
||||||
|
|| !controller->enoughSpaceForFilters())) {
|
||||||
toggleFiltersMenu(true);
|
toggleFiltersMenu(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -844,7 +844,16 @@ void SetupTopContent(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupView(not_null<Ui::VerticalLayout*> content) {
|
void SetupView(
|
||||||
|
not_null<Window::SessionController*> controller,
|
||||||
|
not_null<Ui::VerticalLayout*> content) {
|
||||||
|
const auto wrap = content->add(
|
||||||
|
object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
|
||||||
|
content,
|
||||||
|
object_ptr<Ui::VerticalLayout>(content)));
|
||||||
|
wrap->toggleOn(controller->enoughSpaceForFiltersValue());
|
||||||
|
content = wrap->entity();
|
||||||
|
|
||||||
Ui::AddDivider(content);
|
Ui::AddDivider(content);
|
||||||
Ui::AddSkip(content);
|
Ui::AddSkip(content);
|
||||||
Ui::AddSubsectionTitle(content, tr::lng_filters_view_subtitle());
|
Ui::AddSubsectionTitle(content, tr::lng_filters_view_subtitle());
|
||||||
|
@ -900,7 +909,7 @@ void Folders::setupContent(not_null<Window::SessionController*> controller) {
|
||||||
|
|
||||||
_save = SetupFoldersContent(controller, content);
|
_save = SetupFoldersContent(controller, content);
|
||||||
|
|
||||||
SetupView(content);
|
SetupView(controller, content);
|
||||||
|
|
||||||
Ui::ResizeFitChild(this, content);
|
Ui::ResizeFitChild(this, content);
|
||||||
}
|
}
|
||||||
|
|
|
@ -566,11 +566,6 @@ void MainWindow::updatePalette() {
|
||||||
|
|
||||||
int MainWindow::computeMinWidth() const {
|
int MainWindow::computeMinWidth() const {
|
||||||
auto result = st::windowMinWidth;
|
auto result = st::windowMinWidth;
|
||||||
if (const auto session = _controller->sessionController()) {
|
|
||||||
if (const auto add = session->filtersWidth()) {
|
|
||||||
result += add;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_rightColumn) {
|
if (_rightColumn) {
|
||||||
result += _rightColumn->width();
|
result += _rightColumn->width();
|
||||||
}
|
}
|
||||||
|
|
|
@ -230,6 +230,7 @@ void Controller::setupSideBar() {
|
||||||
}, _sessionController->lifetime());
|
}, _sessionController->lifetime());
|
||||||
|
|
||||||
if (_sessionController->session().settings().dialogsFiltersEnabled()
|
if (_sessionController->session().settings().dialogsFiltersEnabled()
|
||||||
|
&& _sessionController->enoughSpaceForFilters()
|
||||||
&& !Core::App().settings().chatFiltersHorizontal()) {
|
&& !Core::App().settings().chatFiltersHorizontal()) {
|
||||||
_sessionController->toggleFiltersMenu(true);
|
_sessionController->toggleFiltersMenu(true);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1315,6 +1315,7 @@ SessionController::SessionController(
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
|
||||||
rpl::merge(
|
rpl::merge(
|
||||||
|
enoughSpaceForFiltersValue() | rpl::skip(1) | rpl::to_empty,
|
||||||
Core::App().settings().chatFiltersHorizontalChanges() | rpl::to_empty,
|
Core::App().settings().chatFiltersHorizontalChanges() | rpl::to_empty,
|
||||||
session->data().chatsFilters().changed()
|
session->data().chatsFilters().changed()
|
||||||
) | rpl::start_with_next([=] {
|
) | rpl::start_with_next([=] {
|
||||||
|
@ -1322,7 +1323,8 @@ SessionController::SessionController(
|
||||||
crl::on_main(this, [this] {
|
crl::on_main(this, [this] {
|
||||||
if (SessionNavigation::session().data().chatsFilters().has()) {
|
if (SessionNavigation::session().data().chatsFilters().has()) {
|
||||||
const auto isHorizontal
|
const auto isHorizontal
|
||||||
= Core::App().settings().chatFiltersHorizontal();
|
= Core::App().settings().chatFiltersHorizontal()
|
||||||
|
|| !enoughSpaceForFilters();
|
||||||
content()->toggleFiltersMenu(isHorizontal);
|
content()->toggleFiltersMenu(isHorizontal);
|
||||||
toggleFiltersMenu(!isHorizontal);
|
toggleFiltersMenu(!isHorizontal);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2588,6 +2590,16 @@ int SessionController::filtersWidth() const {
|
||||||
return _filters ? st::windowFiltersWidth : 0;
|
return _filters ? st::windowFiltersWidth : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SessionController::enoughSpaceForFilters() const {
|
||||||
|
return widget()->width() >= widget()->minimumWidth() + st::windowFiltersWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
rpl::producer<bool> SessionController::enoughSpaceForFiltersValue() const {
|
||||||
|
return widget()->widthValue() | rpl::map([=] {
|
||||||
|
return enoughSpaceForFilters();
|
||||||
|
}) | rpl::distinct_until_changed();
|
||||||
|
}
|
||||||
|
|
||||||
rpl::producer<FilterId> SessionController::activeChatsFilter() const {
|
rpl::producer<FilterId> SessionController::activeChatsFilter() const {
|
||||||
return _activeChatsFilter.value();
|
return _activeChatsFilter.value();
|
||||||
}
|
}
|
||||||
|
|
|
@ -546,6 +546,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] int filtersWidth() const;
|
[[nodiscard]] int filtersWidth() const;
|
||||||
|
[[nodiscard]] bool enoughSpaceForFilters() const;
|
||||||
|
[[nodiscard]] rpl::producer<bool> enoughSpaceForFiltersValue() const;
|
||||||
[[nodiscard]] rpl::producer<FilterId> activeChatsFilter() const;
|
[[nodiscard]] rpl::producer<FilterId> activeChatsFilter() const;
|
||||||
[[nodiscard]] FilterId activeChatsFilterCurrent() const;
|
[[nodiscard]] FilterId activeChatsFilterCurrent() const;
|
||||||
void setActiveChatsFilter(
|
void setActiveChatsFilter(
|
||||||
|
|
Loading…
Add table
Reference in a new issue