]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetQuotes.cpp
* Fix merging of cells (multicolumn, multirow) when the first cell in the selection...
[lyx.git] / src / insets / InsetQuotes.cpp
index 95a71abc45ba499e26950e6cffb6c6d1687d432e..8586ce18d5372382689ae1cbcacbb93ddede55f5 100644 (file)
@@ -114,7 +114,7 @@ InsetQuotes::InsetQuotes(Buffer * buf, char_type c, QuoteTimes t)
 }
 
 
-docstring InsetQuotes::name() const
+docstring InsetQuotes::layoutName() const
 {
        return from_ascii("Quotes");
 }
@@ -261,35 +261,39 @@ void InsetQuotes::read(Lexer & lex)
 }
 
 
-int InsetQuotes::latex(odocstream & os, OutputParams const & runparams) const
+void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const
 {
        const int quoteind = quote_index[side_][language_];
        string qstr;
 
        if (language_ == FrenchQuotes && times_ == DoubleQuotes
-           && prefixIs(runparams.local_font->language()->code(), "fr")) {
+           && prefixIs(runparams.local_font->language()->code(), "fr")
+           && !runparams.use_polyglossia) {
                if (side_ == LeftQuote)
                        qstr = "\\og "; //the spaces are important here
                else
                        qstr = " \\fg{}"; //and here
-       } else if (lyxrc.fontenc == "T1") {
+       } else if (lyxrc.fontenc == "T1" && !runparams.use_polyglossia) {
                qstr = latex_quote_t1[times_][quoteind];
 #ifdef DO_USE_DEFAULT_LANGUAGE
        } else if (doclang == "default") {
 #else
        } else if (!runparams.use_babel) {
 #endif
+               // these are also used by polyglossia
                qstr = latex_quote_ot1[times_][quoteind];
        } else {
                qstr = latex_quote_babel[times_][quoteind];
        }
 
        // Always guard against unfortunate ligatures (!` ?`)
-       if (prefixIs(qstr, "`"))
-               qstr.insert(0, "{}");
+       if (prefixIs(qstr, "`")) {
+               char_type const lastchar = os.lastChar();
+               if (lastchar == '!' || lastchar == '?')
+                       qstr.insert(0, "{}");
+       }
 
        os << from_ascii(qstr);
-       return 0;
 }
 
 
@@ -325,12 +329,18 @@ docstring InsetQuotes::xhtml(XHTMLStream & xs, OutputParams const & op) const
 }
 
 
-void InsetQuotes::tocString(odocstream & os) const
+void InsetQuotes::toString(odocstream & os) const
 {
        os << displayString();
 }
 
 
+void InsetQuotes::forToc(docstring & os, size_t) const
+{
+       os += displayString();
+}
+
+
 void InsetQuotes::validate(LaTeXFeatures & features) const
 {
        bool const use_babel = features.useBabel();