From a65f1e54dc26d5f35844d33b2170f7c57568b355 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Fri, 28 Dec 2018 14:34:14 +0100 Subject: [PATCH] Properly set up paste and textstyle-apply MenuButtons when no buffer is open. --- src/frontends/qt4/GuiToolbar.cpp | 39 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/frontends/qt4/GuiToolbar.cpp b/src/frontends/qt4/GuiToolbar.cpp index 39e4812276..8d638665b7 100644 --- a/src/frontends/qt4/GuiToolbar.cpp +++ b/src/frontends/qt4/GuiToolbar.cpp @@ -336,17 +336,17 @@ void DynamicMenuButton::updateTriggered() LASSERT(m, return); GuiView const & owner = bar_->owner(); BufferView const * bv = owner.currentBufferView(); - if (!bv) { - m->clear(); - setEnabled(false); - setMinimumWidth(sizeHint().width()); - d->text_class_.reset(); - d->inset_ = nullptr; - return; - } string const & menutype = tbitem_.name_; if (menutype == "dynamic-custom-insets" || menutype == "dynamic-char-styles") { + if (!bv) { + m->clear(); + setEnabled(false); + setMinimumWidth(sizeHint().width()); + d->text_class_.reset(); + d->inset_ = nullptr; + return; + } DocumentClassConstPtr text_class = bv->buffer().params().documentClassPtr(); InsetText const * inset = &(bv->cursor().innerText()->inset()); @@ -367,6 +367,12 @@ void DynamicMenuButton::updateTriggered() && inset->insetAllowed(FLEX_CODE)); } else if (menutype == "textstyle-apply") { m->clear(); + setPopupMode(QToolButton::MenuButtonPopup); + QToolButton::setIcon(getIcon(FuncRequest(LFUN_TEXTSTYLE_APPLY), false)); + if (!bv) { + setEnabled(false); + return; + } vector ffList = bv->cursor().innerText()->getFreeFonts(); unsigned int i = 0; Action * default_act = nullptr; @@ -390,14 +396,19 @@ void DynamicMenuButton::updateTriggered() m->addAction(reset_act); if (default_act) QToolButton::setDefaultAction(default_act); - - QToolButton::setIcon(getIcon(FuncRequest(LFUN_TEXTSTYLE_APPLY), false)); - - setPopupMode(QToolButton::MenuButtonPopup); setEnabled(lyx::getStatus(FuncRequest(LFUN_TEXTSTYLE_APPLY)).enabled() || lyx::getStatus(FuncRequest(LFUN_FONT_DEFAULT)).enabled()); } else if (menutype == "paste") { m->clear(); + setPopupMode(QToolButton::MenuButtonPopup); + Action * default_action = new Action(FuncRequest(LFUN_PASTE), + getIcon(FuncRequest(LFUN_PASTE), false), + qt_("Paste"), qt_("Paste"), this); + if (!bv) { + setEnabled(false); + QToolButton::setDefaultAction(default_action); + return; + } docstring_list const sel = cap::availableSelections(&bv->buffer()); docstring_list::const_iterator cit = sel.begin(); @@ -412,11 +423,7 @@ void DynamicMenuButton::updateTriggered() Action * act = new Action(func, QIcon(), toqstr(lb), toqstr(s), this); m->addAction(act); } - Action * default_action = new Action(FuncRequest(LFUN_PASTE), - getIcon(FuncRequest(LFUN_PASTE), false), - qt_("Paste"), qt_("Paste"), this); QToolButton::setDefaultAction(default_action); - setPopupMode(QToolButton::MenuButtonPopup); setEnabled(lyx::getStatus(FuncRequest(LFUN_PASTE)).enabled()); } } -- 2.39.2