]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetQuotes.cpp
Fix crash after undo following replacement of a multicell selection (#8973).
[lyx.git] / src / insets / InsetQuotes.cpp
index 4e47361bf752910cdfca7968e7aa5f28b90daac4..70911fd65940f7dcfcbbe40968fa10ca5a3a2003 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");
 }
@@ -230,14 +230,15 @@ void InsetQuotes::draw(PainterInfo & pi, int x, int y) const
 {
        // FIXME: should we add a language or a font parameter member?
        docstring const text = displayString();
-
+       FontInfo font = pi.base.font;
+       font.setPaintColor(pi.textColor(font.realColor()));
        if (text.length() == 2 && text[0] == text[1]) {
-               pi.pain.text(x, y, text[0], pi.base.font);
-               int const t = theFontMetrics(pi.base.font)
+               pi.pain.text(x, y, text[0], font);
+               int const t = theFontMetrics(font)
                        .width(',');
-               pi.pain.text(x + t, y, text[0], pi.base.font);
+               pi.pain.text(x + t, y, text[0], font);
        } else {
-               pi.pain.text(x, y, text, pi.base.font);
+               pi.pain.text(x, y, text, font);
        }
 }
 
@@ -261,7 +262,7 @@ 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;
@@ -287,15 +288,18 @@ int InsetQuotes::latex(odocstream & os, OutputParams const & runparams) const
        }
 
        // 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;
 }
 
 
-int InsetQuotes::plaintext(odocstream & os, OutputParams const &) const
+int InsetQuotes::plaintext(odocstringstream & os, 
+        OutputParams const &, size_t) const
 {
        docstring const str = displayString();
        os << str;
@@ -327,12 +331,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();