X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FText.cpp;h=1028d5c3d631831975eba6198a252e250aec309d;hb=68fe13dfa1ed24891d930b0d9b8b79e217c7f1e4;hp=f6f75d90453f631b5c1a459566bf87ea210e9657;hpb=f226c9d3fce674cebf9228b553c55fcff1acca93;p=lyx.git diff --git a/src/Text.cpp b/src/Text.cpp index f6f75d9045..1028d5c3d6 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -599,7 +599,6 @@ static void breakParagraph(Text & text, pit_type par_offset, pos_type pos, // end of a paragraph tmp->setPlainOrDefaultLayout(bparams.documentClass()); - // layout stays the same with latex-environments if (keep_layout) { tmp->setLayout(par.layout()); tmp->setLabelWidthString(par.params().labelWidthString()); @@ -665,7 +664,6 @@ static void breakParagraph(Text & text, pit_type par_offset, pos_type pos, par.setPlainOrDefaultLayout(bparams.documentClass()); } - // layout stays the same with latex-environments if (keep_layout) { par.setLayout(tmp->layout()); par.setLabelWidthString(tmp->params().labelWidthString()); @@ -701,9 +699,10 @@ void Text::breakParagraph(Cursor & cur, bool inverse_logic) cpar.eraseChar(cur.pos(), cur.buffer()->params().trackChanges); // What should the layout for the new paragraph be? - bool keep_layout = inverse_logic ? - !layout.isEnvironment() - : layout.isEnvironment(); + bool keep_layout = layout.isEnvironment() + || (layout.isParagraph() && layout.parbreak_is_newline); + if (inverse_logic) + keep_layout = !keep_layout; // We need to remember this before we break the paragraph, because // that invalidates the layout variable @@ -851,7 +850,7 @@ void Text::insertChar(Cursor & cur, char_type c) static docstring const number_seperators = from_ascii(".,:"); if (cur.current_font.fontInfo().number() == FONT_ON) { - if (!isDigit(c) && !contains(number_operators, c) && + if (!isDigitASCII(c) && !contains(number_operators, c) && !(contains(number_seperators, c) && cur.pos() != 0 && cur.pos() != cur.lastpos() && @@ -859,7 +858,7 @@ void Text::insertChar(Cursor & cur, char_type c) tm.displayFont(pit, cur.pos() - 1).fontInfo().number() == FONT_ON) ) number(cur); // Set current_font.number to OFF - } else if (isDigit(c) && + } else if (isDigitASCII(c) && cur.real_current_font.isVisibleRightToLeft()) { number(cur); // Set current_font.number to ON @@ -1924,6 +1923,15 @@ docstring Text::asString(pit_type beg, pit_type end, int options) const } +void Text::forToc(docstring & os, size_t maxlen, bool shorten) const +{ + LASSERT(maxlen > 10, maxlen = 30); + for (size_t i = 0; i != pars_.size() && os.length() < maxlen; ++i) + pars_[i].forToc(os, maxlen); + if (shorten && os.length() >= maxlen) + os = os.substr(0, maxlen - 3) + from_ascii("..."); +} + void Text::charsTranspose(Cursor & cur) {