Pavel Sanda wrote: > commit b88ed81e7f1d2f59bb606351d95e093380b4eead > Author: Pavel Sanda <sa...@lyx.org> > Date: Thu Feb 8 21:33:37 2018 +0100 > > Unify graphics-groups inside marked block functionality. > > Fixes #11026.
Richard, can this go to 2.3.2? P > > https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg203683.html > --- > lib/ui/stdcontext.inc | 1 + > src/BufferView.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ > src/FuncCode.h | 3 ++- > src/LyXAction.cpp | 11 +++++++++++ > 4 files changed, 59 insertions(+), 1 deletions(-) > > diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc > index 3e49092..9acf334 100644 > --- a/lib/ui/stdcontext.inc > +++ b/lib/ui/stdcontext.inc > @@ -358,6 +358,7 @@ Menuset > Item "Apply Last Text Style|A" "textstyle-apply" > Submenu "Text Style|x" "edit_textstyles" > Item "Paragraph Settings...|P" "layout-paragraph" > + OptItem "Unify Graphics Groups|U" "graphics-unify" > LanguageSelector > Separator > Item "Fullscreen Mode" "ui-toggle fullscreen" > diff --git a/src/BufferView.cpp b/src/BufferView.cpp > index b2e3186..ad8ed46 100644 > --- a/src/BufferView.cpp > +++ b/src/BufferView.cpp > @@ -1151,6 +1151,10 @@ bool BufferView::getStatus(FuncRequest const & cmd, > FuncStatus & flag) > flag.setEnabled(true); > break; > > + case LFUN_GRAPHICS_UNIFY: > + flag.setEnabled(cur.selection()); > + break; > + > case LFUN_WORD_FINDADV: { > FindAndReplaceOptions opt; > istringstream iss(to_utf8(cmd.argument())); > @@ -1697,6 +1701,47 @@ void BufferView::dispatch(FuncRequest const & cmd, > DispatchResult & dr) > break; > } > > + case LFUN_GRAPHICS_UNIFY: { > + > + cur.recordUndoFullBuffer(); > + > + DocIterator from, to; > + from = cur.selectionBegin(); > + to = cur.selectionEnd(); > + > + string newId = cmd.getArg(0); > + bool fetchId=newId.empty(); //if we wait for groupId from first > graphics inset > + > + InsetGraphicsParams grp_par; > + InsetGraphics::string2params(graphics::getGroupParams(buffer_, > newId), buffer_, grp_par); > + > + if (!from.nextInset()) //move to closest inset > + from.forwardInset(); > + > + while (!from.empty() && from < to) { > + Inset * inset = from.nextInset(); > + if (!inset) > + break; > + if (inset->lyxCode() == GRAPHICS_CODE) { > + InsetGraphics * ig = inset->asInsetGraphics(); > + if (!ig) > + break; > + InsetGraphicsParams inspar = ig->getParams(); > + if (fetchId) { > + grp_par = inspar; > + fetchId = false; > + > + } else { > + grp_par.filename = inspar.filename; > + ig->setParams(grp_par); > + } > + } > + from.forwardInset(); > + } > + dr.screenUpdate(Update::Force); //needed if triggered from > context menu > + break; > + } > + > case LFUN_STATISTICS: { > DocIterator from, to; > if (cur.selection()) { > diff --git a/src/FuncCode.h b/src/FuncCode.h > index 4a59831..cce61f0 100644 > --- a/src/FuncCode.h > +++ b/src/FuncCode.h > @@ -476,7 +476,8 @@ enum FuncCode > LFUN_DEVEL_MODE_TOGGLE, // lasgouttes 20170723 > //370 > LFUN_EXPORT_CANCEL, // rgh, 20171227 > - LFUN_BUFFER_ANONYMIZE, // sanda, 20180201 > + LFUN_BUFFER_ANONYMIZE, // sanda, 20180201 > + LFUN_GRAPHICS_UNIFY, // sanda, 20180207 > LFUN_LASTACTION // end of the table > }; > > diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp > index 193c822..a4bc7d1 100644 > --- a/src/LyXAction.cpp > +++ b/src/LyXAction.cpp > @@ -3555,6 +3555,17 @@ void LyXAction::init() > */ > { LFUN_SET_GRAPHICS_GROUP, "set-graphics-group", Noop, Edit }, > > +/*! > + * \var lyx::FuncCode lyx::LFUN_GRAPHICS_UNIFY > + * \li Action: Set the same group for all graphics insets in the marked > block. > + * \li Syntax: graphics-unify [<GROUP>] > + * \li Params: <GROUP>: Id for an existing group. In case the Id is an empty > string, > + the group Id from the first graphics inset will be > used. > + * \li Origin: sanda, 7 Feb 2018 > + * \endvar > + */ > + { LFUN_GRAPHICS_UNIFY, "graphics-unify", Noop, Edit }, > + > > /*! > * \var lyx::FuncCode lyx::LFUN_SPACE_INSERT