X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetQuotes.cpp;h=122266d8081beab35aa10312baff19cb92f1b1ed;hb=d6f1915684328c6e3fe61c6eef8846b5cabec334;hp=26abda076c8eb81175b3345ec10fe3a3f279b841;hpb=e7645f24391648fb08cf6b6d808fcabec76be744;p=lyx.git diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp index 26abda076c..122266d808 100644 --- a/src/insets/InsetQuotes.cpp +++ b/src/insets/InsetQuotes.cpp @@ -54,6 +54,12 @@ char const * const times_char = "sd"; // List of known quote chars char const * const quote_char = ",'`<>"; +// Unicode characters needed by each quote type +char_type const display_quote_char[2][5] = { + { 0x201a, 0x2019, 0x2018, 0x2039, 0x203a}, + { 0x201e, 0x201d, 0x201c, 0x00ab, 0x00bb} +}; + // Index of chars used for the quote. Index is [side, language] int quote_index[2][6] = { { 2, 1, 0, 0, 3, 4 }, // "'',,<>" @@ -82,29 +88,25 @@ char const * const latex_quote_babel[2][5] = { } // namespace anon -InsetQuotes::InsetQuotes(string const & str) +InsetQuotes::InsetQuotes(Buffer const & buf, string const & str) { parseString(str); + setBuffer(const_cast(buf)); } - -InsetQuotes::InsetQuotes(QuoteLanguage l, QuoteSide s, QuoteTimes t) - : language_(l), side_(s), times_(t) -{ -} - - InsetQuotes::InsetQuotes(Buffer const & buf, char_type c) : language_(buf.params().quotes_language), times_(buf.params().quotes_times) { setSide(c); + setBuffer(const_cast(buf)); } -InsetQuotes::InsetQuotes(char_type c, QuoteLanguage l, QuoteTimes t) - : language_(l), times_(t) +InsetQuotes::InsetQuotes(Buffer const & buf, char_type c, QuoteTimes t) + : language_(buf.params().quotes_language), times_(t) { setSide(c); + setBuffer(const_cast(buf)); } @@ -181,38 +183,8 @@ void InsetQuotes::parseString(string const & s) docstring InsetQuotes::displayString() const { Language const * loclang = buffer().params().language; - string disp; - disp += quote_char[quote_index[side_][language_]]; - if (times_ == DoubleQuotes) - disp += disp; - - - docstring retdisp; - if (disp == "<<") - retdisp = docstring(1, 0x00ab); //'«'; - else if (disp == ">>") - retdisp = docstring(1, 0x00bb); //'»'; -#if 0 - // The below are supposed to work, but something fails. - else if (disp == ",,") - retdisp = docstring(1, 0x201e); - else if (disp == "''") - retdisp == docstring(1, 0x201d); - else if (disp == "``") - retdisp == docstring(1, 0x201c); - else if (disp == "<") - retdisp = docstring(1, 0x2039); - else if (disp == ">") - retdisp = docstring(1, 0x203a); - else if (disp == ",") - retdisp = docstring(1, 0x201a); - else if (disp == "'") - retdisp = docstring(1, 0x2019); - else if (disp == "`") - retdisp = docstring(1, 0x2018); -#endif - else - retdisp = from_ascii(disp); + int const index = quote_index[side_][language_]; + docstring retdisp = docstring(1, display_quote_char[times_][index]); // in french, spaces are added inside double quotes if (times_ == DoubleQuotes && prefixIs(loclang->code(), "fr")) {