X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt%2FInsetParamsDialog.cpp;h=67cbfdd94e1f5182c5ad791a3c3f56f935fc17dd;hb=cc257b4927f8833836a6f6caab6f91c5022063db;hp=5cb25ac0601360d5c5a90b32a2e305e134b41a0f;hpb=9a147255df735d35dd03c3279bdbb35e39678ce0;p=lyx.git diff --git a/src/frontends/qt/InsetParamsDialog.cpp b/src/frontends/qt/InsetParamsDialog.cpp index 5cb25ac060..67cbfdd94e 100644 --- a/src/frontends/qt/InsetParamsDialog.cpp +++ b/src/frontends/qt/InsetParamsDialog.cpp @@ -59,7 +59,7 @@ namespace frontend { struct InsetParamsDialog::Private { - Private() : widget_(0), inset_(0), changed_(false) {} + Private() : widget_(nullptr), inset_(nullptr), changed_(false) {} /// InsetParamsWidget * widget_; /// The inset that was used at last Restore or Apply operation. @@ -80,6 +80,8 @@ InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget) widget->dialogTitle()), d(new Private) { setupUi(this); + // Remove margins since the widget is embedded in dialog which provides them + widget->layout()->setContentsMargins(0, 0, 0, 0); setInsetParamsWidget(widget); immediateApplyCB->setChecked(false); synchronizedCB->setChecked(true); @@ -87,6 +89,8 @@ InsetParamsDialog::InsetParamsDialog(GuiView & lv, InsetParamsWidget * widget) setFocusProxy(widget); newPB = buttonBox->addButton(qt_("Ne&w Inset"), QDialogButtonBox::ActionRole); + // fix height to minimum + setFixedHeight(sizeHint().height()); } InsetParamsDialog::~InsetParamsDialog() @@ -193,20 +197,22 @@ docstring InsetParamsDialog::checkWidgets(bool immediate) ? d->widget_->creationCode() : LFUN_INSET_MODIFY; bool const lfun_ok = lyx::getStatus(FuncRequest(code, argument)).enabled(); + bool const changed_inset = ins && (ins != d->inset_ || d->changed_); buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!immediate && widget_ok - && !read_only && valid_argument); - bool const can_be_restored = !immediate && !read_only - && ins && (ins != d->inset_ || d->changed_); + && !read_only && valid_argument + && (!ins || changed_inset)); + bool const can_be_restored = !immediate && !read_only && changed_inset; buttonBox->button(QDialogButtonBox::Reset)->setEnabled(can_be_restored); - buttonBox->button(QDialogButtonBox::Apply)->setEnabled(ins && !immediate + buttonBox->button(QDialogButtonBox::Apply)->setEnabled(!immediate && lfun_ok && widget_ok - && !read_only && valid_argument); + && !read_only && valid_argument + && changed_inset); immediateApplyCB->setEnabled(ins && !read_only); // This seems to be the only way to access custom buttons QList buttons = buttonBox->buttons(); - for (int i = 0; i < buttons.size(); ++i) { - if (buttonBox->buttonRole(buttons.at(i)) == QDialogButtonBox::ActionRole) - buttons.at(i)->setEnabled(widget_ok && !read_only + for (auto & button : buttons) { + if (buttonBox->buttonRole(button) == QDialogButtonBox::ActionRole) + button->setEnabled(widget_ok && !read_only && valid_argument && newInsetAllowed()); } @@ -259,71 +265,6 @@ void InsetParamsDialog::updateView() buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); } - -Dialog * createDialog(GuiView & lv, InsetCode code) -{ - InsetParamsWidget * widget; - switch (code) { - case ERT_CODE: - widget = new GuiERT; - break; - case FLOAT_CODE: - widget = new FloatPlacement(true); - break; - case BIBITEM_CODE: - widget = new GuiBibitem; - break; - case BRANCH_CODE: - widget = new GuiBranch; - break; - case BOX_CODE: - widget = new GuiBox; - break; - case HYPERLINK_CODE: - widget = new GuiHyperlink; - break; - case COUNTER_CODE: - widget = new GuiCounter(lv, nullptr); - break; - case INFO_CODE: - widget = new GuiInfo; - break; - case LABEL_CODE: - widget = new GuiLabel; - break; - case LINE_CODE: - widget = new GuiLine; - break; - case MATH_SPACE_CODE: - widget = new GuiHSpace(true); - break; - case NOMENCL_CODE: - widget = new GuiNomenclature; - break; - case NOMENCL_PRINT_CODE: - widget = new GuiPrintNomencl; - break; - case SPACE_CODE: - widget = new GuiHSpace(false); - break; - case TABULAR_CODE: - widget = new GuiTabular; - break; - case VSPACE_CODE: - widget = new GuiVSpace; - break; - default: return 0; - } - InsetParamsDialog * dialog = new InsetParamsDialog(lv, widget); - return dialog; -} - - -Dialog * createDialog(GuiView & lv, string const & name) -{ - return createDialog(lv, insetCode(name)); -} - } // namespace frontend } // namespace lyx