void ScaleWidget::setScale(DBIScale newScale) { if (_inSetScale) return; _inSetScale = true; auto guard = base::scope_guard([this] { _inSetScale = false; }); if (newScale == cScreenScale()) newScale = dbisAuto; if (newScale == dbisAuto && !_auto->checked()) { _auto->setChecked(true); } else if (newScale != dbisAuto && _auto->checked()) { _auto->setChecked(false); } _newScale = newScale; if (newScale == dbisAuto) newScale = cScreenScale(); if (_scale->activeSection() != newScale - 1) { _scale->setActiveSection(newScale - 1); } if (cEvalScale(newScale) != cEvalScale(cRealScale())) { Ui::show(Box<ConfirmBox>(lang(lng_settings_need_restart), lang(lng_settings_restart_now), base::lambda_guarded(this, [this] { cSetConfigScale(_newScale); Local::writeSettings(); App::restart(); }), base::lambda_guarded(this, [this] { App::CallDelayed(st::boxDuration, this, [this] { setScale(cRealScale()); }); }))); } else { cSetConfigScale(newScale); Local::writeSettings(); } }
void SettingsInner::setScale(DBIScale newScale) { if (cConfigScale() == newScale) return; cSetConfigScale(newScale); App::writeConfig(); App::wnd()->getTitle()->showUpdateBtn(); if (newScale == dbisAuto && !_dpiAutoScale.checked()) { _dpiAutoScale.setChecked(true); } else if (newScale != dbisAuto && _dpiAutoScale.checked()) { _dpiAutoScale.setChecked(false); } if (newScale == dbisAuto) newScale = cScreenScale(); if (_dpiSlider.selected() != newScale - 1) { _dpiSlider.setSelected(newScale - 1); } if (cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) { ConfirmBox *box = new ConfirmBox(lang(lng_settings_need_restart), lang(lng_settings_restart_now), lang(lng_settings_restart_later)); connect(box, SIGNAL(confirmed()), this, SLOT(onRestartNow())); App::wnd()->showLayer(box); } }