As evidenced in #11552, at loading time there is no way to tell
whether braces were added by LyX with certainty. However, after
[503f7db2/lyxgit], LyX does not automatically removes brace insets.
So, in case one faces the problems mentioned in [e8f480e7/lyxgit],
the workaround of adding a brace inset now will not be frustrated.
In essence, after [503f7db2/lyxgit], the real fix for #11552 would
have been reverting the part in [e8f480e7/lyxgit] that was adding
the braces on output.
When a macro with optionals appeared inside the optional argument of
another one, the onscreen display and latex output were wrong. This
issue was addressed at [e8f480e7/lyxgit] by enclosing in braces macros
with optional arguments. However, this was done even when the macro
with optionals was in a non-optional argument of another macro.
This commit limits the bracing to the cases where it is really needed
and allows to address some particular issues evidenced in #11552.
If none of the optional arguments of a macro is used, there is no
following '[' after the macro name. Unfortunately, at loading time
the macro machinery is still not initialized, so the optionals()
member of InsetMathMacro is unusable. Hence, we have to track the
creation of macros with optionals as already we do for all macros.
The collected information is only used at loading time, because
the macros are dynamic and they may loose or acquire optional args.
Fixes the particular case reported at #11552.
Instead of remembering the caret ascent and descent for the cell that contains the cursor, the new code remembers caret dimension for each MathRow object. This makes the code much less fragile (ans slightly smaller).
This fixes caret size issues when the Update::SinglePar flag is active.
Fixes bug #11541.
Characters that needed to be inserted in text mode in mathed were not
correctly inserted. Here we do two fixes:
1/ in niceInsert(), do not replace the contents of the active insets
first cell with selection, insert selection instead. This wa sthe
cause of the bug: an empty selection replaced the contents that was
already in the cell.
2/ do not use niceInsert() anyway, insert() is perfect for what we
want to do.
Fixes bug #11527.
While math style (scriptstyle,...) is not really something that can be
set, it is useful for text subscripts and superscripts and therefore
it makes sense to handle it in some places.
With this change, style is still not a first class feature, but good
enough for now. In particular, it is taken into account in update().
Before this commit, navigating with the cursor was visiting either
the nucleus or the script depending on the direction (left or right)
of the cursor movement. Now the 2.3.x behavior of always going through
the nucleus is restored (at least for overset and underset, as stackrel
seems to behave oddly also in 2.3.x).
This is a follow up to 503c7c16.
The new argument for placing cursor after insertion of inset is:
* if inset has no cell, do nothing
* otherwise, place inset in entry cell.
+ if entry cell is not empty (we pasted a selection), go to next cell
+ if this next cell does not exit, stay after the inset.
Make MathData::setBuffer set the buffer of insets that it contains.
Remove corresponding code from InsetMathNest.
update the buffer() property in the following tabular-feature
actions : copy-row, add-row, copy-col, add-col.
This can happen when the inset that contains the cursor is outside of
the screen.
THis is only a workaround. The real solution would be a
processUpdateFlags(FitCursor) call, but the code is not ready for that
yet.
Fixes bug #11296.
The enum is now made of flags that can be combined.
This introduces several new values for Inset::DisplayType:
BreakBefore, BreakAfter and Display=BreakBefore|BreakAfter. This
last value replaces AlignCenter.
Additionally the flags NoBoundary and CanBreakAfter are introduced for
future use.
Now a left aligned displayed inset will be defined as Display|LeftAlign.
A newline inset is characterized as BreakAfter.
This structure is used in breakRow to avoid explicit calls to
isNewline() or isEnvSeparator(). More improvements will be built on
top of this.
Additionally several redundant display() methods (which returned
Inline) have been removed.
The part of code that removed space at start of paragraph have been
there forever, but its intent is unclear. For example, cutting text at
the end of a paragraph will lead to remove space at the start of this
same paragraph.
The removal of this functionality is offset by a rewrite of DEPM that
makes it more thorough.
Fixes bug #10503.