commit e087722900e32c3718b0655d2716bf6fbbdfddc1
Author: Juergen Spitzmueller <[email protected]>
Date: Thu Dec 20 12:56:30 2018 +0100
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 ccac674..25dcee7 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<QWidget *> 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/[email protected]/msg128222.html
+ // http://www.mail-archive.com/[email protected]/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 8f07cfb..46e5d0d 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 43f71d7..c55d71f 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/[email protected]/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 94d2b5a..5d46a47 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 5c86260..a36de56 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);
}