Make InsetGrid::colAlign a normal method and make it check whether
buffer is valid before using it. This avoids crashes as we have seen
in 2.3.3 (see e.g. #11686).
There is still an assertion so that failure is noticeable before release.
This helper method is used to set the inset position cache at drawing
time. However this is already done by the drawing code itself
(MathRow::draw, RowPainter::paintInset), so that there is no need to
do this same work again in a different place.
Note that the inset positions are still set in InsetTabular::draw for
each cell.
This commit comes with a mild risk attached (it might be that some of
these calls were useful after all!), but all of this is fixable.
If the first character in the first cell of an aligned math environment is
'[', and the environment does not use top or bottom vertical alignment,
then LyX did write the '[' unprotected so that it got misinterpreted as
optional argument, both when reading the .lyx file in LyX and when reading
the .tex file in LaTeX => data loss!
The fix is to output an empty optional argument in this case, which is
interpreted as default alignment both by LyX and LaTeX. It would also be
possible to output \[ in the first cell instead, but this would be more
difficult to implement.
AMS align environment should have some spacing between odd and even columns.
Add a new virtual method displayColSpace() to InsetMathGrid, InsetMathHull and
InsetMathSplit.
A longstanding problem... (related: #1861)
The columns in AMS math environments have a fixed alignment (colAlign() in
InsetMathGrid.cpp). We set this alignment for display (Georg's
displayColAlign()) in InsetMathHull and InsetMathSplit. This is done according
to tests and documentation for the various environments.
There is also some mechanical code factoring via colAlign().
Finally, I disable setting the horizontal alignment in InsetMathSplit, which has
no impact on the LaTeX output, and has no longer any impact on the screen. (As
for vertical alignment I discovered that it was in fact customisable for
\aligned & friends! I hope that the more faithful interface will let other
users discover that too.)
The tabular-features LFUN was merged with "inset-modify tabular" when
simplifying the tabular dialog at b5049e7. This choice later indirectly caused a
few regressions (#7308, #9794).
I reintroduce tabular-feature to allow more flexibility for user
commands, whereas "inset-modify tabular" is now reserved for the tabular
dialog. In particular, inset-modify tabular is no longer caught by math grid
insets. The name tabular-feature is kept to avoid renaming icons.
Known issues:
* After successfully applying a tabular command, the cursor is truncated to the
table.
* Note that the tabular dialog still has similar issues that are inherited from
the achitecture of the dialog menu. For instance the pref change can be
mis-dispatched to an inset inside a cell and cause an error, for instance:
Lexer.cpp (934): Missing 'Note'-tag in InsetNote::string2params. Got
tabular instead. Line: 0
Maybe the inset-modify LFUN should be modified to treat commands coming from
the wrong dialog (by checking the type) as unknown and undispatched so that
the parent can get it. In that case a non AtPoint variant of inset-modify
could be reintroduced in order to generalise tabular-feature. See:
http://mid.gmane.org/n4rdk1$efj$1@ger.gmane.org
AMS align environment should have some spacing between odd and even columns.
Add a new virtual method displayColSpace() to InsetMathGrid, InsetMathHull and
InsetMathSplit.
I have no clue why this was automatically committed, I just applied the path, nothing more.
This reverts commit bb5470b5d1.
# Conflicts:
# src/mathed/InsetMathGrid.cpp
# src/mathed/InsetMathSplit.cpp
AMS align environment should have some spacing between odd and even columns.
Add a new virtual method displayColSpace() to InsetMathGrid, InsetMathHull and
InsetMathSplit.
A longstanding problem... (related: #1861)
The columns in AMS math environments have a fixed alignment (colAlign() in
InsetMathGrid.cpp). We set this alignment for display (Georg's
displayColAlign()) in InsetMathHull and InsetMathSplit. This is done according
to tests and documentation for the various environments.
There is also some mechanical code factoring via colAlign().
Finally, I disable setting the horizontal alignment in InsetMathSplit, which has
no impact on the LaTeX output, and has no longer any impact on the screen. (As
for vertical alignment I discovered that it was in fact customisable for
\aligned & friends! I hope that the more faithful interface will let other
users discover that too.)
WriteStream is now built from an otexstream instead of an odocstream, and
therefore counts lines in a TexRow. Calls to TexRow are added in relevant places
in math insets.
This finishes adding line tracking for math in the source panel and for forward
search.
The math parser aborts with an error message on \begin{align} and
\begin{align*} if this is not the hull inset. This is now fixed, however
this is not complete support for these two environments (the GUI does not
respect the numbering). It is only the minimal fix that ensures that no data
loss occurs for documents imported by tex2lyx.
- proper message passing for all tabular features
- properly define which feature needs an argument
* replace LFUN_TABULAR_FEATURE with LFUN_INSET_MODIFY
- The math tables are also affected. In the future a common base class
between math and text table will solve this inconsistency.
- There is a hack in GuiApplication in order to not rename the toolbar
icons. This will have to be cleaned up with a general icon naming for
LFUN_INSET_MODIFY... to be discussed.
* Tabular Dialog:
- big cleanup, lots and lots of bug fixing here
- migrated to InsetParamsWidget
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33495 a592a061-630c-0410-9148-cb99ea01b6c8
Math manual loads and save correctly it seems but expect some instability period.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31898 a592a061-630c-0410-9148-cb99ea01b6c8
http://bugzilla.lyx.org/show_bug.cgi?id=1527
* src/mathed/*.cpp:
- Track mode (math or text) when outputting latex code and
properly wrap commands that are in the wrong mode with
either \ensuremath or \lyxmathsym.
* src/mathed/MathParser.cpp:
- Parse \ensuremath and \lyxmathsym, such that exported latex
produces the same result when imported back.
- Replace latex commands with corresponding unicode symbols.
* src/Encoding.cpp:
- Implement Encodings::fromLaTeXCommand() for converting either
a single or a sequence of latex commands to unicode symbols.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25270 a592a061-630c-0410-9148-cb99ea01b6c8
Now support/* should have no dependencies on src/* anymore.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8