From e087722900e32c3718b0655d2716bf6fbbdfddc1 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Thu, 20 Dec 2018 12:56:30 +0100 Subject: [PATCH] Maintain default status for all dialogs using ButtonController Should fix rest of #11417 --- src/frontends/qt4/ButtonController.cpp | 23 +++++++++++++++++------ src/frontends/qt4/ButtonController.h | 12 +++++++----- src/frontends/qt4/GuiInclude.cpp | 4 ---- src/frontends/qt4/GuiRef.cpp | 2 -- src/frontends/qt4/InsetParamsDialog.cpp | 2 +- 5 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/frontends/qt4/ButtonController.cpp b/src/frontends/qt4/ButtonController.cpp index ccac674e4a..25dcee7541 100644 --- a/src/frontends/qt4/ButtonController.cpp +++ b/src/frontends/qt4/ButtonController.cpp @@ -114,6 +114,7 @@ public: QPushButton * cancel_; QPushButton * restore_; QCheckBox * auto_apply_; + QPushButton * default_; typedef QList Widgets; Widgets read_only_; @@ -205,7 +206,7 @@ bool ButtonController::setReadOnly(bool ro) // refreshReadOnly(); This will enable all widgets in dialogs, no matter if // they allowed to be enabled, so when you plan to // reenable this call, read this before: - // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg128222.html + // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg128222.html refresh(); return ro; } @@ -243,7 +244,9 @@ void ButtonController::refresh() const bool const enabled = policy().buttonStatus(ButtonPolicy::AUTOAPPLY); d->auto_apply_->setEnabled(enabled); } - + if (d->default_) + // Somewhere in the chain this can lose default status (#11417) + d->default_->setDefault(true); } @@ -263,15 +266,19 @@ void ButtonController::addCheckedLineEdit(QLineEdit * input, QWidget * label) } -void ButtonController::setOK(QPushButton * obj) +void ButtonController::setOK(QPushButton * obj, bool const default_button) { d->okay_ = obj; + if (default_button) + d->default_ = obj; } -void ButtonController::setApply(QPushButton * obj) +void ButtonController::setApply(QPushButton * obj, bool const default_button) { d->apply_ = obj; + if (default_button) + d->default_ = obj; } @@ -281,15 +288,19 @@ void ButtonController::setAutoApply(QCheckBox * obj) } -void ButtonController::setCancel(QPushButton * obj) +void ButtonController::setCancel(QPushButton * obj, bool const default_button) { d->cancel_ = obj; + if (default_button) + d->default_ = obj; } -void ButtonController::setRestore(QPushButton * obj) +void ButtonController::setRestore(QPushButton * obj, bool const default_button) { d->restore_ = obj; + if (default_button) + d->default_ = obj; } diff --git a/src/frontends/qt4/ButtonController.h b/src/frontends/qt4/ButtonController.h index 8f07cfb003..46e5d0d0e7 100644 --- a/src/frontends/qt4/ButtonController.h +++ b/src/frontends/qt4/ButtonController.h @@ -92,11 +92,13 @@ public: // //@{ - /// Store pointers to these widgets. - void setOK(QPushButton * obj); - void setApply(QPushButton * obj); - void setCancel(QPushButton * obj); - void setRestore(QPushButton * obj); + /// Store pointers to these widgets. \param default_button determines + /// the default button of the dialog (bound to return). This is + /// OK by default. + void setOK(QPushButton * obj, bool const default_button = true); + void setApply(QPushButton * obj, bool const default_button = false); + void setCancel(QPushButton * obj, bool const default_button = false); + void setRestore(QPushButton * obj, bool const default_button = false); void setAutoApply(QCheckBox * obj); //@} diff --git a/src/frontends/qt4/GuiInclude.cpp b/src/frontends/qt4/GuiInclude.cpp index 43f71d7344..c55d71fa7f 100644 --- a/src/frontends/qt4/GuiInclude.cpp +++ b/src/frontends/qt4/GuiInclude.cpp @@ -154,10 +154,6 @@ void GuiInclude::typeChanged(int v) listingsGB->setEnabled(false); break; } - //see this thread - // http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg118471.html - //for the reason this is here. - buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); } diff --git a/src/frontends/qt4/GuiRef.cpp b/src/frontends/qt4/GuiRef.cpp index 94d2b5a223..5d46a471c7 100644 --- a/src/frontends/qt4/GuiRef.cpp +++ b/src/frontends/qt4/GuiRef.cpp @@ -385,8 +385,6 @@ void GuiRef::updateContents() // Activate OK/Apply buttons if the users inserts a new ref // and we have a valid pre-setting. bc().setValid(isValid() && new_inset); - // Somewhere in the chain this can lose default status (#11417) - buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); } diff --git a/src/frontends/qt4/InsetParamsDialog.cpp b/src/frontends/qt4/InsetParamsDialog.cpp index 5c86260ed9..a36de56988 100644 --- a/src/frontends/qt4/InsetParamsDialog.cpp +++ b/src/frontends/qt4/InsetParamsDialog.cpp @@ -253,7 +253,7 @@ void InsetParamsDialog::updateView() bool const update_widget = (synchronizedCB->isChecked() || immediateApplyCB->isChecked()); updateView(update_widget); - + // Somewhere in the chain this can lose default status (#11417) buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); } -- 2.39.2