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

Reply via email to