]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetIndex.cpp
InsetTabular.cpp: fix #6585 also for wrapped floats - thanks Vincent
[lyx.git] / src / insets / InsetIndex.cpp
index bb86b4695700a9233bdc6b2d27d4332e524d3adf..233495bea137aa484929782e24f13f1a4aa589af 100644 (file)
@@ -23,7 +23,6 @@
 #include "IndicesList.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
-#include "MetricsInfo.h"
 #include "output_latex.h"
 #include "output_xhtml.h"
 #include "sgml.h"
@@ -37,6 +36,7 @@
 #include "frontends/alert.h"
 
 #include <ostream>
+#include <algorithm>
 
 using namespace std;
 using namespace lyx::support;
@@ -153,15 +153,19 @@ int InsetIndex::latex(odocstream & os,
                                subst(spart2, from_ascii("\\"), docstring());
                        os << ppart;
                        os << '@';
+                       i += count_char(ppart, '\n');
                }
                docstring const tpart = *it;
                os << tpart;
+               i += count_char(tpart, '\n');
                if (it2 < levels_plain.end())
                        ++it2;
        }
        // write the bit that followed "|"
-       if (!cmd.empty())
+       if (!cmd.empty()) {
                os << "|" << cmd;
+               i += count_char(cmd, '\n');
+       }
        os << '}';
        return i;
 }
@@ -197,7 +201,7 @@ bool InsetIndex::showInsetDialog(BufferView * bv) const
 
 void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY: {
                if (cmd.getArg(0) == "changetype") {
@@ -207,6 +211,9 @@ void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
                InsetIndexParams params;
                InsetIndex::string2params(to_utf8(cmd.argument()), params);
                params_.index = params.index;
+               // what we really want here is a TOC update, but that means
+               // a full buffer update
+               cur.forceBufferUpdate();
                break;
        }
 
@@ -224,7 +231,7 @@ void InsetIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
 bool InsetIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
                FuncStatus & flag) const
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY:
                if (cmd.getArg(0) == "changetype") {
@@ -366,6 +373,7 @@ void InsetIndex::validate(LaTeXFeatures & features) const
            && !params_.index.empty()
            && params_.index != "idx")
                features.require("splitidx");
+       InsetCollapsable::validate(features);
 }
 
 
@@ -417,7 +425,7 @@ void InsetIndexParams::read(Lexer & lex)
 ///////////////////////////////////////////////////////////////////////
 
 InsetPrintIndex::InsetPrintIndex(Buffer * buf, InsetCommandParams const & p)
-       : InsetCommand(buf, p, "index_print")
+       : InsetCommand(buf, p)
 {}
 
 
@@ -463,7 +471,7 @@ bool InsetPrintIndex::isCompatibleCommand(string const & s)
 
 void InsetPrintIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY: {
                if (cmd.argument() == from_ascii("toggle-subindex")) {
@@ -485,10 +493,9 @@ void InsetPrintIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
                }
                InsetCommandParams p(INDEX_PRINT_CODE);
                // FIXME UNICODE
-               InsetCommand::string2params("index_print",
-                       to_utf8(cmd.argument()), p);
+               InsetCommand::string2params(to_utf8(cmd.argument()), p);
                if (p.getCmdName().empty()) {
-                       cur.noUpdate();
+                       cur.noScreenUpdate();
                        break;
                }
                setParams(p);
@@ -505,7 +512,7 @@ void InsetPrintIndex::doDispatch(Cursor & cur, FuncRequest & cmd)
 bool InsetPrintIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
        FuncStatus & status) const
 {
-       switch (cmd.action) {
+       switch (cmd.action()) {
 
        case LFUN_INSET_MODIFY: {
                if (cmd.argument() == from_ascii("toggle-subindex")) {
@@ -519,8 +526,7 @@ bool InsetPrintIndex::getStatus(Cursor & cur, FuncRequest const & cmd,
                } if (cmd.getArg(0) == "index_print"
                    && cmd.getArg(1) == "CommandInset") {
                        InsetCommandParams p(INDEX_PRINT_CODE);
-                       InsetCommand::string2params("index_print",
-                               to_utf8(cmd.argument()), p);
+                       InsetCommand::string2params(to_utf8(cmd.argument()), p);
                        if (suffixIs(p.getCmdName(), '*')) {
                                status.setEnabled(true);
                                status.setOnOff(false);