From: Jürgen Spitzmüller Date: Mon, 10 Sep 2007 16:06:01 +0000 (+0000) Subject: * src/insets/InsetCommand.{cpp,h}: X-Git-Tag: 1.6.10~8403 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=59c2e75e41c4a6e210dde757646e064c65f535a5;p=features.git * src/insets/InsetCommand.{cpp,h}: - implement edit function that opens the inset's dialog. * src/BufferView.cpp (doDispatch): - call inset->edit (i.e. open dialog) for EDITABLE insets on next-inset-toggle (bug 2907) * src/Text3.cpp (doDispatch: INDEX_INSERT): - move inset->edit to where it belongs. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20193 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/BufferView.cpp b/src/BufferView.cpp index cec416633d..ae5a4ddc5f 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -913,12 +913,16 @@ Update::flags BufferView::dispatch(FuncRequest const & cmd) // if there is an inset at cursor, see whether it // wants to toggle. Inset * inset = cur.nextInset(); - if (inset && inset->isActive()) { - Cursor tmpcur = cur; - tmpcur.pushLeft(*inset); - inset->dispatch(tmpcur, tmpcmd); - if (tmpcur.result().dispatched()) { - cur.dispatched(); + if (inset) { + if (inset->isActive()) { + Cursor tmpcur = cur; + tmpcur.pushLeft(*inset); + inset->dispatch(tmpcur, tmpcmd); + if (tmpcur.result().dispatched()) { + cur.dispatched(); + } + } else if (inset->editable() == Inset::IS_EDITABLE) { + inset->edit(cur, true); } } // if it did not work, try the underlying inset. diff --git a/src/Text3.cpp b/src/Text3.cpp index d537f33633..3d767bf106 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -1202,12 +1202,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) recordUndo(cur); cur.clearSelection(); insertInset(cur, inset); - inset->edit(cur, true); // Show the dialog for the nomenclature entry, since the // description entry still needs to be filled in. if (cmd.action == LFUN_NOMENCL_INSERT) - InsetCommandMailer("nomenclature", - *reinterpret_cast(inset)).showDialog(&cur.bv()); + inset->edit(cur, true); cur.posRight(); break; } diff --git a/src/insets/InsetCommand.cpp b/src/insets/InsetCommand.cpp index c98ea20a87..a97b84d2ab 100644 --- a/src/insets/InsetCommand.cpp +++ b/src/insets/InsetCommand.cpp @@ -132,8 +132,8 @@ void InsetCommand::doDispatch(Cursor & cur, FuncRequest & cmd) } case LFUN_MOUSE_RELEASE: { - if (!mailer_name_.empty() && !cur.selection()) - InsetCommandMailer(mailer_name_, *this).showDialog(&cur.bv()); + if (!cur.selection()) + edit(cur, true); break; } @@ -165,6 +165,13 @@ bool InsetCommand::getStatus(Cursor & cur, FuncRequest const & cmd, } +void InsetCommand::edit(Cursor & cur, bool) +{ + if (!mailer_name_.empty()) + InsetCommandMailer(mailer_name_, *this).showDialog(&cur.bv()); +} + + void InsetCommand::replaceContents(std::string const & from, string const & to) { if (getContents() == from) diff --git a/src/insets/InsetCommand.h b/src/insets/InsetCommand.h index 9a745b86ff..a22152ce4d 100644 --- a/src/insets/InsetCommand.h +++ b/src/insets/InsetCommand.h @@ -81,6 +81,8 @@ public: { return p_[name]; } + /// + void edit(Cursor & cur, bool left); /// FIXME remove virtual void replaceContents(std::string const & from, std::string const & to); ///