diff --git a/doomsday/client/src/updater/updateavailabledialog.cpp b/doomsday/client/src/updater/updateavailabledialog.cpp index a2b42e3730..552631dbcb 100644 --- a/doomsday/client/src/updater/updateavailabledialog.cpp +++ b/doomsday/client/src/updater/updateavailabledialog.cpp @@ -90,19 +90,6 @@ DENG2_OBSERVES(ToggleWidget, Toggle) checking->rule().setRect(self.rule()); self.add(checking); - //settings = new ButtonWidget; - //self.add(settings); - - /// @todo The dialog buttons should support a opposite-aligned button. - /*settings->setSizePolicy(ui::Filled, ui::Filled); - settings->setImage(self.style().images().image("gear")); - settings->rule() - .setInput(Rule::Left, self.area().contentRule().left()) - .setInput(Rule::Bottom, self.buttons().contentRule().bottom()) - .setInput(Rule::Height, self.buttons().contentRule().height()) - .setInput(Rule::Width, settings->rule().height()); - settings->setAction()));*/ - autoCheck = new ToggleWidget; self.area().add(autoCheck); autoCheck->setAlignment(ui::AlignLeft); @@ -225,7 +212,10 @@ void UpdateAvailableDialog::editSettings() st->setAnchorAndOpeningDirection(buttonWidget(DialogWidget::Id1)->rule(), ui::Up); st->setDeleteAfterDismissed(true); if(st->exec(root())) - { + { + // The Gear button will soon be deleted, so we'll need to detach from it. + st->detachAnchor(); + d->autoCheck->setInactive(UpdaterSettings().onlyCheckManually()); d->showProgress(true, SHOW_ANIM_SPAN); emit checkAgain(); diff --git a/doomsday/libappfw/include/de/widgets/popupwidget.h b/doomsday/libappfw/include/de/widgets/popupwidget.h index f47c8bed70..48b9227ca7 100644 --- a/doomsday/libappfw/include/de/widgets/popupwidget.h +++ b/doomsday/libappfw/include/de/widgets/popupwidget.h @@ -57,6 +57,11 @@ class LIBAPPFW_PUBLIC PopupWidget : public PanelWidget Rule const &anchorX() const; Rule const &anchorY() const; + /** + * Replace the anchor with rules of matching constant value. + */ + void detachAnchor(); + /** * Tells the popup to delete itself after being dismissed. The default is that * the popup does not get deleted. diff --git a/doomsday/libappfw/src/widgets/popupwidget.cpp b/doomsday/libappfw/src/widgets/popupwidget.cpp index aec2c71794..cda3f2feba 100644 --- a/doomsday/libappfw/src/widgets/popupwidget.cpp +++ b/doomsday/libappfw/src/widgets/popupwidget.cpp @@ -244,6 +244,13 @@ Rule const &PopupWidget::anchorY() const return *d->anchorY; } +void PopupWidget::detachAnchor() +{ + setAnchorX(Constf(anchorX().value())); + setAnchorY(Constf(anchorY().value())); + d->updateLayout(); +} + void PopupWidget::setDeleteAfterDismissed(bool deleteAfterDismiss) { d->deleteAfterDismiss = deleteAfterDismiss;