Commit Graph

3468 Commits

Author SHA1 Message Date
Enrico Forestieri
5a43b86141 Allow context menus in mathed
It is now possible to get a context menu for math insets.
InsetMathSpace was already providing a specific context menu,
but it was never triggered because the math hull inset is not
descendable. It is still so, but now when a context menu is
requested all the insets inside the math hull are examined.
If the inset under the cursor provides a context menu, it
is shown instead of the general math one.

Fixes #12100.
2021-03-05 21:21:41 +01:00
Jean-Marc Lasgouttes
f5340fd6d9 Fix missing initialization
Spotted by Coverity.
2021-03-05 13:06:10 +01:00
Enrico Forestieri
52ce0ff49a Fix bug #11007
The math color inset inherits the mode of the containing inset.
This mode is inferred by the kind of font in effect. Setting the
right mode allows to insert spaces where these should be allowed.
Another small glitch was that the selection was always parsed in
math mode, so that any space was swallowed, even if the inset would
allow them.
2021-02-28 22:32:11 +01:00
Enrico Forestieri
61db164302 Fix bug #11444 2021-02-28 14:56:42 +01:00
Enrico Forestieri
7b526d6461 Fix bug #3751
We lack the necessary font (cmb10) for drawing bold uppercase greek
letters. It would be overkill adding it for this sole purpose, so
adopt the same poor man's bold strategy used with \boldsymbol.
2021-02-27 21:40:28 +01:00
Enrico Forestieri
195b928f92 Fix bug #3294 2021-02-27 14:49:55 +01:00
Enrico Forestieri
3cf5a064db Amend 368e983a 2021-02-23 21:48:54 +01:00
Enrico Forestieri
368e983abb Fix bug #12165 2021-02-23 20:00:50 +01:00
Enrico Forestieri
2629bd6dfb Improve fix for #12153
Use a WYSIWYM approach instead of a WYSIWYG one.
2021-02-23 17:34:19 +01:00
Jean-Marc Lasgouttes
a5fd5d3cd2 "12 pixels ought to be enough for anyone"
Fixes bug #12153.
2021-02-22 19:35:08 +01:00
Jean-Marc Lasgouttes
41d29ce387 Reduce the value of (above|below)displayskip
The value of 10pt is too large, use a 'mean' value of 8.5pt.

Tentative fix to bug #12153.
2021-02-21 20:40:09 +01:00
Enrico Forestieri
4e0d7f753b Draw real dots
A new method for drawing ellipses has been added to the painter
and used for drawing real dots for math decorations and the various
\cdots, \ddots, \vdots, etc., latex commands.
2021-02-21 00:39:12 +01:00
Enrico Forestieri
11392b7b33 Fix arrows at ends of math decorations
For math decorations with arrows at both ends the code was simply
stretching a prototype symbol, thus distorting the arrows.

Another drawing mode is introduced allowing to draw an element by
maintaining its aspect ratio also when it has to be drawn at the
other end of a decoration. An element drawn using this mode is simply
shifted to the other side by adding either the width or the height,
and a finer adjustment can be obtained by specifying an additional
horizontal or vertical shift.
2021-02-14 01:25:07 +01:00
Enrico Forestieri
400cb1b80f Fix small glitch with \underXXXarrow and \overXXXarrow
When the argument is long enough, the arrow in the on-screen representation
was not covering the first or the last glyphs. For example, using
\overrightarrow{abcdefghijklmnopqrstuvwxyz}
the 'a' was drawn outside the covering arrow.
2021-02-12 23:56:27 +01:00
Enrico Forestieri
2ba8ebab67 Slightly increase size of math decorations
Correspondingly tweak some shapes for better results.

Part of #12132.
2021-02-12 23:16:03 +01:00
Juergen Spitzmueller
e35574b3ce Store the AuthorList in the cut stack
Otherwise we crash when we paste text with markup into a different buffer
that has change tracking disabled (in this case, markup is now kept).
2021-02-09 16:54:21 +01:00
Jean-Marc Lasgouttes
c311451518 Fix math class code in InsetMathColor
The current code is too naïve and asserts on MC_UNKNOWN class.

See discussion here:
https://marc.info/?l=lyx-devel&m=161267112524889&w=2
2021-02-08 13:13:21 +01:00
Enrico Forestieri
3cf5a71463 Amend [5ed01cd6/lyxgit]
This commit takes into account also the case in which a prime follows
a superscript, a case not explicitly mentioned in bug 1633.
This case has to be accounted for in a different way. We cannot look
ahead when exporting, so we simply tell TeXMathStream to output an
empty group if we just output a superscript and a prime comes next.
2021-02-06 20:07:31 +01:00
Jean-Marc Lasgouttes
720f439868 Fix default limits value for (under|over)brace
Fixes bug #12107.
2021-02-05 14:37:26 +01:00
Enrico Forestieri
5ed01cd616 Avoid double superscript errors
Fixes #1633
2021-02-05 01:03:09 +01:00
Enrico Forestieri
8202e4e571 Disable direct insertion of multiple spaces in mathed text
Fixes #1311
2021-02-04 21:20:45 +01:00
Enrico Forestieri
b475cf8707 Amend [bc806084/lyxgit]
Rise a bit \dot, \ddots & co., as with some fonts they might
be drawn too close to the symbol they decorate.
2021-02-03 11:45:52 +01:00
Enrico Forestieri
d999d8e8d9 Improve alignment of math decorations
This patch takes into account the skewness of a character for properly
align a decoration. Unfortunately, the required amount of shift depends
on single chars, so that the recently introduced FontMetrics::italicSlope()
method cannot be used with all characters. A heuristics that produces
satisfactory results is using the italic slope only with characters whose
italic correction (kerning) is zero.

Part of #11491
2021-02-02 19:39:52 +01:00
Enrico Forestieri
bc806084cd Improve appearance of dots at higher zoom levels
Make \dot, \ddot and friends more round when increasing zoom

Part of #11491
2021-02-01 20:02:37 +01:00
Enrico Forestieri
9f3920447e Make math decorations scalable with zoom level
Fixes #11491
2021-02-01 02:53:00 +01:00
Enrico Forestieri
22ee249c3e Allow pasting references to mathed
A reference can be directly inserted into mathed but cannot be pasted
because the pasted material is returned in plain text format. This patch
allows getting a string from the cut stack in a suitable format allowing
the math parser to actually create an InsetRef.

Fixes #11539
2021-01-30 01:32:40 +01:00
Kornel Benko
ea5e16d075 Replace calls from make_unique to lyx::make_unique
After advice from Yuriy Skalko to satisfy compilation with clang8
2021-01-15 11:36:14 +01:00
Jean-Marc Lasgouttes
86191314cb Record undo properly when inserting math script
The current code did not always record undo at the right level.

Fixes bug #10843.
2021-01-13 11:41:29 +01:00
Richard Kimberly Heck
e438c0f90b Fix bug #11010.
Handle LFUN_PHANTOM_INSERT in math.
2021-01-09 19:17:47 -05:00
Jean-Marc Lasgouttes
9e1db65932 Move handling of LFUN_COPY to BufferView
It turns out that the code is the same in texted ans mathed and that
whatever is done in InsetTabular is not useful.

This means that we do not need to deal Text::dispatch idiosyncrasies
(in particular forcing the cursor to be visible).

Fix bug #11225.
2021-01-08 19:31:42 +01:00
Enrico Forestieri
fece5d4f37 Correctly terminate a user math macro in certain circumstances
If a macro has only optionals and none is specified and a [ immediately
follows, we have to terminate the macro with {}, otherwise what follows
is taken to be an optional argument.

Fixes #11665.
2021-01-07 00:57:36 +01:00
Thibaut Cuvelier
e3c1fc2ad5 Implement \case for AASTeX. 2021-01-06 14:08:00 +01:00
Jean-Marc Lasgouttes
28bca59dec Fix unused paramaters warnings 2021-01-06 11:57:22 +01:00
Enrico Forestieri
d85710d32e Make paste in ensuremath work as in simple math hulls
The ensuremath math inset derives from InsetMathNest, so that only the
first cell of a grid gets pasted. This patch makes it a fixed 1x1 grid
inset so that pasting works as in normal simple math hulls, i.e., all
cells are pasted, one after the other.

Fixes #11617.
2021-01-06 02:07:25 +01:00
Richard Kimberly Heck
59096c9265 Move assignment where needed 2021-01-05 18:22:09 -05:00
Richard Kimberly Heck
cf07d4825f Fix bug #11104. Activate refstyle support for InsetMathRef.
At the moment, there is no support for plurals and capitalization.
A long comment explains why. Support could be added for that without
a format change.
2021-01-05 18:17:53 -05:00
Richard Kimberly Heck
79a21be5c3 Micro optimization and constness 2021-01-05 17:45:50 -05:00
Richard Kimberly Heck
0786b80828 Fix MathML delimiters again.
Patch from lynx.
2021-01-03 19:29:04 -05:00
Thibaut Cuvelier
649755f481 Rename WriteStream to TeXMathStream. 2021-01-02 19:52:23 +01:00
Thibaut Cuvelier
ecafea8227 Rename MathStream to MathMLStream. 2021-01-02 19:52:23 +01:00
Yuriy Skalko
cafa1d4ae4 Fix C++20 compilation on systems where char_type is wchar_t 2020-12-30 09:42:50 +02:00
Thibaut Cuvelier
372b32c0a6 Fix MathML output of InsetMathDelim
Patch by lynx (https://www.lyx.org/trac/ticket/12050).
2020-12-20 00:21:10 +01:00
Jean-Marc Lasgouttes
405b5c04a7 Fixup 005f69de: code cleanup.
Since we are not sure of where the cursor ends up after invoking
Cursor::handleNest it is safer to reset the cursor at each cell,
rather than reuse the same one over and over.

Related to bug #12035.
2020-12-19 17:12:28 +01:00
Jean-Marc Lasgouttes
005f69de23 Fix crash after b0937fb9.
Now the cursor is not left inside color inset, so it is not needed to
pop_back.

Fix bug #12035.
2020-12-17 22:04:46 +01:00
Jean-Marc Lasgouttes
99fb1c7003 Overhaul (no)limits support
- Add limits support to InsetMathScript
- Add limits support to InsetMathClass
- Fix bug where limits changing is disabled in inline math

Now the MathData objects remember whether they are in diaply mode.

Fixes bug #12045.
2020-12-09 14:10:17 +01:00
Yuriy Skalko
e292dd70bf More enums & includes refactoring 2020-12-06 18:26:41 +02:00
Yuriy Skalko
9cb98136ce Cleanup headers 2020-12-03 00:38:27 +02:00
Yuriy Skalko
efaffb897d Simplify InsetMathGrid structs 2020-12-03 00:38:18 +02:00
Yuriy Skalko
ecf62a8f21 Refactor OutputParams
Now all Inset hierarchy uses OutputParams.h included in Inset.h.
Forward declare some enums to reduce header dependencies.
2020-11-30 13:05:03 +02:00
Yuriy Skalko
813eb0f9f7 Cleanup included headers 2020-11-29 00:25:14 +02:00
Yuriy Skalko
8793c2eed9 Replace ;; 2020-11-27 12:16:54 +02:00
Yuriy Skalko
6a21ec854b Move several common types to support/types.h 2020-11-27 12:16:22 +02:00
Yuriy Skalko
43b16548b4 Cleanup headers 2020-11-25 02:43:16 +02:00
Richard Kimberly Heck
2ae77d5091 Only set buffer if it is not null.
Yuriy found these specific problems. They do not cause a crash, but
they are not good.
2020-11-24 17:07:16 -05:00
Richard Kimberly Heck
5691b89858 nullptr 2020-11-24 17:07:16 -05:00
Yuriy Skalko
7ca2f2b58d Use range-based loops 2020-11-21 20:32:16 +02:00
Yuriy Skalko
09eba40418 Remove unused header 2020-11-21 00:32:35 +02:00
Thibaut Cuvelier
0fe3d05344 XML: add tag-type information in XML tags. It is not yet used. 2020-11-20 18:41:03 +01:00
Yuriy Skalko
b56a64a8ef Typo 2020-11-20 15:57:34 +02:00
Yuriy Skalko
f953d88c88 Simplify constructors 2020-11-20 15:57:26 +02:00
Yuriy Skalko
9b1dc338b2 Simplify Changers 2020-11-12 14:22:00 +02:00
Richard Kimberly Heck
fdd0a6f849 Revert "Improve structure of updateMacros"
The problem here is that the check against TEXT_CODE only
catches InsetText, and not its subclasses. Same for the check
against MATH_HULL_CODE. So there is reason not to check codes
here.

This reverts commit 5a54ccfa87.
2020-11-11 11:26:11 -05:00
Yuriy Skalko
01e673635b MacroData refactoring 2020-11-06 21:33:56 +02:00
Yuriy Skalko
5a54ccfa87 Improve structure of updateMacros 2020-11-06 21:33:41 +02:00
Thibaut Cuvelier
85a8664ba5 MathML: make InsetMathXArrow generate valid XML entities when required.
Before this, it only supported HTML entities.
2020-11-05 02:18:47 +01:00
Yuriy Skalko
d38eddb397 Match header/source function argument naming 2020-11-01 22:23:44 +02:00
Yuriy Skalko
5061db891c Use const references 2020-11-01 22:23:26 +02:00
Yuriy Skalko
524073d09f Move HullType functions declared in InsetMath.h into InsetMath.cpp 2020-10-29 15:52:28 +02:00
Yuriy Skalko
10272e4747 Move include of own header to the top. Fix dependencies 2020-10-25 19:58:57 +02:00
Yuriy Skalko
a7018252b7 Constify 2020-10-25 09:28:34 +02:00
Yuriy Skalko
d25c10ed81 Remove duplicate and unused header includes in .cpp files 2020-10-19 18:01:11 +03:00
Yuriy Skalko
a3eeb8a4b5 Clean math headers 2020-10-16 23:05:46 +03:00
Yuriy Skalko
fbefdb10a5 Move Cursor.h from Clipboard.h 2020-10-16 08:02:51 +03:00
Pavel Sanda
560ff6d40d Move MetricsInfo.h from InsetMathSize.h 2020-10-14 14:58:18 +02:00
Jean-Marc Lasgouttes
c516c86d19 Make cursor width depend on current font
This makes the cursor more visible wrt current font.

Moreover make the cursor width scalable by default.
2020-10-13 17:27:52 +02:00
Yuriy Skalko
2a594d3e90 Remove unused forward declarations 2020-10-13 09:57:36 +03:00
Yuriy Skalko
238fd9ac50 Right exception rethrowing 2020-10-12 15:14:55 +02:00
Yuriy Skalko
919a06718a Constify 2020-10-12 15:06:16 +02:00
Yuriy Skalko
7d38a4d126 Loop refactoring 2020-10-09 09:04:20 +03:00
Yuriy Skalko
fe85162a29 Refactoring 2020-10-05 14:55:00 +02:00
Yuriy Skalko
d82adc625b Amend efc0877f
Add more `override` specifiers. Replace `throw()` to `noexcept`.
2020-10-05 09:37:15 +02:00
Yuriy Skalko
14b0da28c2 Amend efc0877f 2020-10-03 21:17:17 +02:00
Yuriy Skalko
715b8cda54 Refactoring based on cppcheck suggestions 2020-10-03 13:39:51 +02:00
Yuriy Skalko
efc0877f8f Add override specifiers to improve code maintainability 2020-10-03 12:43:48 +02:00
Richard Kimberly Heck
2afc68ede2 Whitespace 2020-10-02 13:11:28 -04:00
Jean-Marc Lasgouttes
dd65a97b55 Pass parameters as const references when possible
Fixes some cppcheck warnings.
2020-10-02 18:56:01 +02:00
Jean-Marc Lasgouttes
4d9a2c2e59 Fixup f96b99dc: do not initialize cache too late 2020-10-02 12:17:57 +02:00
Jean-Marc Lasgouttes
a97b384b07 Fixup f96b99dc: thinko
Setting the res value and returning from the function at the same time
does not make sense. After reflection, it is the "return" that shall
go.

No idea what effect it had.
2020-10-02 12:06:32 +02:00
Thibaut Cuvelier
91982ee105 DocBook: new lines around formulae. 2020-09-19 20:43:39 +02:00
Thibaut Cuvelier
78a361778f DocBook: fix float tags (was unduly overridden).
The output was not valid for floats without title.
2020-09-19 20:43:38 +02:00
Thibaut Cuvelier
39ad6e84f0 DocBook: improve equation formatting (new lines for block equations). 2020-09-19 20:43:38 +02:00
Thibaut Cuvelier
87dae26e4a Simplify code to generate only one paragraph at a time. 2020-09-19 20:43:37 +02:00
Yuriy Skalko
fb7b7e5223 Refactor runCommand 2020-09-11 16:13:23 +02:00
Jean-Marc Lasgouttes
eda3219662 Remove unneeded space for \nolimits 2020-09-09 10:35:35 +02:00
Enrico Forestieri
fcd14df230 Avoid spurious requirements
The macros defined in the symbols file are only used for on-screen
representation, so that their definition should not require the use
on any latex package. Their definition should be taken into account
only when they are overridden by user macros with same name.
2020-09-09 01:32:51 +02:00
Jean-Marc Lasgouttes
a58bcf1d27 Fixup f96b99dcb3: read correctly \limits after macros
Move InsetMacro::limits_ to InsetMacro::Private, where it should have
been from the start. This means that limits_ is now copied when the
macro is cloned.
2020-09-07 12:13:42 +02:00
Enrico Forestieri
062d94c5da Fix on-screen display of special math fonts
Make sure that the on-screen representation of the special math fonts
mathbb, mathds, mathfrak, mathcal, and mathscr matches the latex output.
2020-09-06 18:16:04 +02:00
Jean-Marc Lasgouttes
cc349fd031 Add space before display math that starts a paragraph
This extra spacing was missing and is important for detecting extra
par breaks before equations (which are most of the times not wanted).

To do that, add a new member vmode to MetricsInfo which is equivalent
to LaTeX's \ifvmode (start of paragraph).

If in vmode, add the equivalent of an empty line before a display math inset.

At the same time, tweak value of \(above|below)displayskip, which was
12pt, whereas LaTeX uses 10pt in 10pt size (our reference).

Fixes bug #11891.
2020-08-25 13:20:37 +02:00
Juergen Spitzmueller
55f7b337cc Simplification 2020-08-17 13:29:55 +02:00
Stephan Witt
c88f331a06 Avoid a type mismatch warning resp. error for signed vs unsigned typed values comparison 2020-08-17 12:25:35 +02:00