]> git.lyx.org Git - features.git/commitdiff
AutoInsert option also for flex insets
authorJuergen Spitzmueller <spitz@lyx.org>
Mon, 17 Dec 2012 12:32:40 +0000 (13:32 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Mon, 17 Dec 2012 12:32:40 +0000 (13:32 +0100)
lib/doc/Customization.lyx
lib/layouts/beamer.layout
src/Text3.cpp
src/insets/InsetLayout.cpp

index b852ed7a4384927f415da7c237274b59984bd7ea..a7a8ca4f4f3779989c91526f222bc45d861df9a5 100644 (file)
@@ -10974,7 +10974,7 @@ Classic
 
 \begin_layout Itemize
 
-\change_inserted -712698321 1355661160
+\change_inserted -712698321 1355747298
 \begin_inset Flex Code
 status collapsed
 
@@ -11013,8 +11013,8 @@ status collapsed
 \end_inset
 
 , this argument is automatically inserted when the respective style is selected.
- This option is currently only available for paragraph styles, not for InsetLayo
-uts.
+ Currently, only one argument per style\SpecialChar \slash{}
+layout can be automatically inserted.
 \change_inserted 155139281 1354198988
 
 \end_layout
index f65a2ff54f81d4568b5ea143d67c509ae5b5eb7a..c180a9dc07096d9760634b55972ff94fa8e38298 100644 (file)
@@ -1348,6 +1348,7 @@ InsetLayout Flex:Alert
     Tooltip        "Specify the overlay settings (see beamer manual)"
     LeftDelim      <
     RightDelim     >
+    AutoInsert     1
   EndArgument
 End
 
@@ -1365,6 +1366,7 @@ InsetLayout Flex:Structure
     Tooltip        "Specify the overlay settings (see beamer manual)"
     LeftDelim      <
     RightDelim     >
+    AutoInsert     1
   EndArgument
 End
 
@@ -1382,6 +1384,7 @@ InsetLayout Flex:Only
     Tooltip        "Specify the overlay settings (see beamer manual)"
     LeftDelim      <
     RightDelim     >
+    AutoInsert     1
   EndArgument
 End
 
@@ -1399,6 +1402,7 @@ InsetLayout Flex:Uncover
     Tooltip        "Specify the overlay settings (see beamer manual)"
     LeftDelim      <
     RightDelim     >
+    AutoInsert     1
   EndArgument
 End
 
index 9400526c84d3271d7e10aa5688eb857e002424ab..22f4b9922d3321fb6c0ab9cb5e22740c79eb017c 100644 (file)
@@ -295,6 +295,8 @@ static bool doInsertInset(Cursor & cur, Text * text,
                        // Merge multiple paragraphs -- hack
                        while (cur.lastpit() > 0)
                                mergeParagraph(bparams, cur.text()->paragraphs(), 0);
+                       if (cmd.action() == LFUN_FLEX_INSERT)
+                               return true;
                        Cursor old = cur;
                        cur.leaveInset(*inset);
                        if (cmd.action() == LFUN_PREVIEW_INSERT
@@ -1699,7 +1701,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_CAPTION_INSERT:
        case LFUN_FOOTNOTE_INSERT:
        case LFUN_NOTE_INSERT:
-       case LFUN_FLEX_INSERT:
        case LFUN_BOX_INSERT:
        case LFUN_BRANCH_INSERT:
        case LFUN_PHANTOM_INSERT:
@@ -1720,6 +1721,37 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                cur.forceBufferUpdate();
                break;
 
+       case LFUN_FLEX_INSERT: {
+               // Open the inset, and move the current selection
+               // inside it.
+               bool const sel = cur.selection();
+               doInsertInset(cur, this, cmd, true, true);
+               // Insert auto-insert arguments
+               bool autoargs = false;
+               Layout::LaTeXArgMap args = cur.inset().getLayout().latexargs();
+               Layout::LaTeXArgMap::const_iterator lait = args.begin();
+               Layout::LaTeXArgMap::const_iterator const laend = args.end();
+               for (; lait != laend; ++lait) {
+                       Layout::latexarg arg = (*lait).second;
+                       if (arg.autoinsert) {
+                               // The cursor might have been invalidated by the replaceSelection.
+                               cur.buffer()->changed(true);
+                               FuncRequest cmd(LFUN_ARGUMENT_INSERT, (*lait).first);
+                               lyx::dispatch(cmd);
+                               autoargs = true;
+                       }
+               }
+               if (!autoargs) {
+                       if (sel)
+                               cur.leaveInset(cur.inset());
+                       cur.posForward();
+               }
+               // Some insets are numbered, others are shown in the outline pane so
+               // let's update the labels and the toc backend.
+               cur.forceBufferUpdate();
+               break;
+       }
+
        case LFUN_TABULAR_INSERT:
                // if there were no arguments, just open the dialog
                if (doInsertInset(cur, this, cmd, false, true))
index 3fee6fb009e25abc22224c23da65416d4a83ffd0..b6dcf582dd51a9eb6578ba0c16276b2545a573f8 100644 (file)
@@ -511,6 +511,7 @@ void InsetLayout::readArgument(Lexer & lex)
 {
        Layout::latexarg arg;
        arg.mandatory = false;
+       arg.autoinsert = false;
        bool error = false;
        bool finished = false;
        arg.font = inherit_font;
@@ -534,6 +535,9 @@ void InsetLayout::readArgument(Lexer & lex)
                } else if (tok == "mandatory") {
                        lex.next();
                        arg.mandatory = lex.getBool();
+               } else if (tok == "autoinsert") {
+                       lex.next();
+                       arg.autoinsert = lex.getBool();
                } else if (tok == "leftdelim") {
                        lex.next();
                        arg.ldelim = lex.getDocString();