@@ -828,52 +828,37 @@ void BuildSpellcheckerSection(SectionBuilder &builder) {
828828 }, spellchecker->lifetime ());
829829 }
830830
831- const auto sliding = (!isSystem && container)
832- ? container->add (
833- object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
834- container,
835- object_ptr<Ui::VerticalLayout>(container)))
836- : nullptr ;
837- const auto inner = sliding ? sliding->entity () : nullptr ;
838-
839831 if (!isSystem) {
840- const auto autoDownload = builder.addButton ({
841- .id = u" advanced/auto_download_dictionaries" _q,
842- .title = tr::lng_settings_auto_download_dictionaries (),
843- .st = &st::settingsButtonNoIcon,
844- .container = inner,
845- .toggled = rpl::single (settings->autoDownloadDictionaries ()),
846- .keywords = { u" dictionary" _q, u" download" _q, u" spellcheck" _q },
847- });
848-
849- if (autoDownload) {
850- autoDownload->toggledValue (
851- ) | rpl::filter ([=](bool enabled) {
852- return (enabled != settings->autoDownloadDictionaries ());
853- }) | rpl::on_next ([=](bool enabled) {
854- settings->setAutoDownloadDictionaries (enabled);
855- Core::App ().saveSettingsDelayed ();
856- }, autoDownload->lifetime ());
857- }
832+ builder.scope ([&] {
833+ const auto autoDownload = builder.addButton ({
834+ .id = u" advanced/auto_download_dictionaries" _q,
835+ .title = tr::lng_settings_auto_download_dictionaries (),
836+ .st = &st::settingsButtonNoIcon,
837+ .toggled = rpl::single (settings->autoDownloadDictionaries ()),
838+ .keywords = { u" dictionary" _q, u" download" _q, u" spellcheck" _q },
839+ });
858840
859- builder.addButton ({
860- .id = u" advanced/manage_dictionaries" _q,
861- .title = tr::lng_settings_manage_dictionaries (),
862- .st = &st::settingsButtonNoIcon,
863- .container = inner,
864- .label = Spellchecker::ButtonManageDictsState (session),
865- .onClick = [=] {
866- controller->show (Box<Ui::ManageDictionariesBox>(session));
867- },
868- .keywords = { u" dictionary" _q, u" manage" _q, u" spellcheck" _q },
869- });
841+ if (autoDownload) {
842+ autoDownload->toggledValue (
843+ ) | rpl::filter ([=](bool enabled) {
844+ return (enabled != settings->autoDownloadDictionaries ());
845+ }) | rpl::on_next ([=](bool enabled) {
846+ settings->setAutoDownloadDictionaries (enabled);
847+ Core::App ().saveSettingsDelayed ();
848+ }, autoDownload->lifetime ());
849+ }
870850
871- if (spellchecker && sliding) {
872- spellchecker->toggledValue (
873- ) | rpl::on_next ([=](bool enabled) {
874- sliding->toggle (enabled, anim::type::normal);
875- }, container->lifetime ());
876- }
851+ builder.addButton ({
852+ .id = u" advanced/manage_dictionaries" _q,
853+ .title = tr::lng_settings_manage_dictionaries (),
854+ .st = &st::settingsButtonNoIcon,
855+ .label = Spellchecker::ButtonManageDictsState (session),
856+ .onClick = [=] {
857+ controller->show (Box<Ui::ManageDictionariesBox>(session));
858+ },
859+ .keywords = { u" dictionary" _q, u" manage" _q, u" spellcheck" _q },
860+ });
861+ }, spellchecker ? spellchecker->toggledValue () : nullptr );
877862 }
878863
879864 builder.addSkip ();
@@ -933,36 +918,44 @@ void BuildUpdateSection(SectionBuilder &builder, bool atTop) {
933918 label->setAttribute (Qt::WA_TransparentForMouseEvents);
934919 }
935920
936- const auto options = container
937- ? container->add (
938- object_ptr<Ui::SlideWrap<Ui::VerticalLayout>>(
939- container,
940- object_ptr<Ui::VerticalLayout>(container)))
941- : nullptr ;
942- const auto inner = options ? options->entity () : nullptr ;
921+ auto optionsShown = rpl::producer<bool >(nullptr );
922+ if (toggle) {
923+ Core::UpdateChecker checker;
924+ optionsShown = rpl::combine (
925+ toggle->toggledValue (),
926+ downloading->events_starting_with (
927+ checker.state () == Core::UpdateChecker::State::Download)
928+ ) | rpl::map ([](bool check, bool downloading) {
929+ return check && !downloading;
930+ });
931+ }
932+ auto options = (Ui::SlideWrap<Ui::VerticalLayout>*)nullptr ;
933+ auto install = (Ui::SettingsButton*)nullptr ;
934+ auto check = (Ui::SettingsButton*)nullptr ;
935+ builder.scope ([&] {
936+ install = cAlphaVersion ()
937+ ? nullptr
938+ : builder.addButton ({
939+ .id = u" advanced/install_beta" _q,
940+ .title = tr::lng_settings_install_beta (),
941+ .st = &st::settingsButtonNoIcon,
942+ .toggled = rpl::single (cInstallBetaVersion ()),
943+ .keywords = { u" beta" _q, u" update" _q, u" version" _q },
944+ });
943945
944- const auto install = cAlphaVersion ()
945- ? nullptr
946- : builder.addButton ({
947- .id = u" advanced/install_beta" _q,
948- .title = tr::lng_settings_install_beta (),
946+ check = builder.addButton ({
947+ .id = u" advanced/check_update" _q,
948+ .title = tr::lng_settings_check_now (),
949949 .st = &st::settingsButtonNoIcon,
950- .container = inner,
951- .toggled = rpl::single (cInstallBetaVersion ()),
952- .keywords = { u" beta" _q, u" update" _q, u" version" _q },
950+ .onClick = [] {
951+ Core::UpdateChecker checker;
952+ cSetLastUpdateCheck (0 );
953+ checker.start ();
954+ },
955+ .keywords = { u" check" _q, u" update" _q, u" version" _q },
953956 });
954-
955- const auto check = builder.addButton ({
956- .id = u" advanced/check_update" _q,
957- .title = tr::lng_settings_check_now (),
958- .st = &st::settingsButtonNoIcon,
959- .container = inner,
960- .onClick = [] {
961- Core::UpdateChecker checker;
962- cSetLastUpdateCheck (0 );
963- checker.start ();
964- },
965- .keywords = { u" check" _q, u" update" _q, u" version" _q },
957+ }, std::move (optionsShown), [&](auto wrap) {
958+ options = wrap;
966959 });
967960
968961 if (check && container) {
@@ -1033,13 +1026,6 @@ void BuildUpdateSection(SectionBuilder &builder, bool atTop) {
10331026 }
10341027
10351028 Core::UpdateChecker checker;
1036- options->toggleOn (rpl::combine (
1037- toggle->toggledValue (),
1038- downloading->events_starting_with (
1039- checker.state () == Core::UpdateChecker::State::Download)
1040- ) | rpl::map ([](bool check, bool downloading) {
1041- return check && !downloading;
1042- }));
10431029
10441030 checker.checking () | rpl::on_next ([=] {
10451031 options->setAttribute (Qt::WA_TransparentForMouseEvents);
0 commit comments