Commit Graph

29208 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
d19ade9a61 Remove some redundant calls to updatePosCache
The setting of insets positions was done twice in updateMetrics.
When one of the paragraph is a huge branch, this can be very expensive.

This leads to a 17% improvement on updateMetrics time on a scrolling test.

Part of bug #12297
2024-04-05 13:03:22 +02:00
Jean-Marc Lasgouttes
9a96726bcd Enable Update::SinglePar in nested insets too
The idea of single par update is to try to re-break only the paragraph
containing the cursor (if this paragraph contains insets etc.,
re-breaking will recursively descend).

The existing single paragraph update mechanism was tailored to work
only at top level. Indeed changing a paragraph nested into an inset may
lead to larger changes.

This commit tries a rather naive approach that seems to work well: we
need a full redraw if either

1/ the height has changed
or
2/ the width has changed and it was equal to the text metrics width;
   the goal is to catch the case of a one-row inset that grows with
   its contents, but optimize the case of typing in a short paragraph
   part of a larger inset.

NOTE: if only the height has changed, then it should be
  possible to update all metrics at minimal cost. However,
  since this is risky, we do not try that right now.

Part of bug #12297.
2024-04-05 13:03:22 +02:00
Jean-Marc Lasgouttes
f5bbadbad9 Implement undo coalescing
if the undo element we want to add only changes stuff that was already
modified by the previous one on undo stack (in the same group), then
skip it. There is nothing to gain in adding it to the stack.

The typical use case is when doing a search and replace in a large
document that does many replacements in each paragraph. In this case,
the same paragraph would be stored repeatedly.

Fixes bug #12564.
2024-04-05 12:50:20 +02:00
Stephan Witt
4c1db7cad8 #13049 add window activation for preferences to avoid it be hidden by main window on mac after alert prompts 2024-04-05 10:47:49 +02:00
Jean-Marc Lasgouttes
51562ff377 Do not include <QDate> in InsetInfo.h
This is used by getDate/getTime, which actually should not be
InsetInfoParams methods, but functions in anonymous namespace.
2024-04-04 17:47:33 +02:00
Juergen Spitzmueller
aa7ff14933 Allow for multiple accelerator alternatives
This needs some testing before it could go to 2.4.x eventually
2024-04-04 17:12:48 +02:00
Jean-Marc Lasgouttes
6260689fd5 Compilation fix with Qt < 5.7
Qt::ImAnchorRectangle has only been introduced in Qt 5.7. Since it is
used to answer a query from the IM machinery, there is no need for
it with older Qt versions.
2024-04-03 12:41:45 +02:00
Juergen Spitzmueller
728175f9ac Dissolve some shortcut conflicts in the wake of f3a4602c4c 2024-04-03 08:28:00 +02:00
Richard Kimberly Heck
f374869687 Update doc info for quote-insert 2024-04-02 12:46:36 -04:00
Juergen Spitzmueller
f3a4602c4c Smarter menu length calculation
It is possible I have missed some shortcut conflicts, so please report
if you find any.
2024-04-02 14:41:54 +02:00
Daniel Ramoeller
638c04dd6a FindAdv: no paragraph indentation for more space in the search string
See #11555
2024-04-02 09:22:53 +02:00
Kornel Benko
07cacef398 FindAdv: Handle neg-spaces like normal space if searching without format 2024-04-02 09:22:53 +02:00
Kornel Benko
8de81e8dc1 Rename hasToString() to findUsesToString()
There are special cases where the toString() exist,
but still plaintext() is not to be used by find.
2024-04-02 09:22:53 +02:00
Juergen Spitzmueller
98080ca0d5 Fix label escaping in InsetMathRef (#12980)
This was completely broken: the IDs have been escaped in the LyX file
(which they absolutely shouldn't) but not in all LaTeX output (which
they should).
2024-04-02 08:15:53 +02:00
Juergen Spitzmueller
31ec96e01f Fix context menu of InsetMathRef 2024-04-01 17:59:56 +02:00
Juergen Spitzmueller
a020bbc4a8 Fix backslash LaTeXifying in InsetCommand
\ was transformed very early to \textbackslash{}, but then the following
routines escaped braces in the string, so we wrongly ended up in
\textbackslash\{\} and "\{} in the output
2024-04-01 10:57:27 +02:00
Juergen Spitzmueller
812e306dad Factor out shared method
Amends babb5b007b
2024-03-31 12:40:27 +02:00
Juergen Spitzmueller
babb5b007b Fix crash with quick search starting with mathed selection
setCursorSelection does not work with math. Copy the method from
spellchecker.
2024-03-30 10:14:34 +01:00
Juergen Spitzmueller
698f922d19 Do not enter page break in heading (#13040)
Rather than that, put it before or after, or disallow,
depending on the position.
2024-03-28 18:03:54 +01:00
Juergen Spitzmueller
60cffcd9b7 Fix alignment of screen font preview in prefs (remaining part of #13046) 2024-03-24 09:00:41 +01:00
Jean-Marc Lasgouttes
4dfebbe9da Fix display of a math hull inset in a tight inset
This is a kind of hack. This allows InsetMathHull to state that it
needs some elbow room beyond its width, in order to fit the numbering
and/or the left margin (with left alignment), which are outside of the
inset itself.

To this end, InsetMathHull::metrics() sets a value in
MetricsInfo::extrawidth and this value is added later to the width of
the row that contains the inset (when this row is tight or shorter
than the max allowed width).

Fixes bug #12320.
2024-03-22 15:40:40 +01:00
Jean-Marc Lasgouttes
6d62d8009f Revert "Fix display of a math hull inset in a tight inset"
This commit will be replaed by a better solution.

Part of ticket #12320.

This reverts commit 4bbd4a45e7.
2024-03-22 15:08:26 +01:00
Thibaut Cuvelier
fd37845075 Amend 16660d12.
The previous commit introduced wrong behaviours for <>. The new code carefully escapes what needs to be escaped from LaTeX, using the now-standard XML tools (XMLStream).
2024-03-21 21:32:45 +01:00
Thibaut Cuvelier
16660d12b4 MathML in HTML: don't escape <> for a raw LaTeX output.
In some cases (I only found numbered equations), the LaTeX output still has a bit of HTML. For numbered equations, using \tag{X} (as suggested in https://www.lyx.org/trac/ticket/13048) would require fiddling with the output. KaTeX doesn't support \label. This patch is probably the easiest and most reliable fix.

Fixes https://www.lyx.org/trac/ticket/13048.
2024-03-21 00:29:23 +01:00
Patrick de Visschere
3f790725d9 Using the latest commit and building lyx with cmake on macos-sonoma with
xcode fails with multiple error messages like this one:

----------
CMake Error in po/CMakeLists.txt:
       The custom command generating

     <build-directory>/po/LyX2.4.cat.pot

       is attached to multiple targets:

     translations
     update-gmo

  but none of these is a common dependency of the other(s).  This is not
  allowed by the Xcode "new build system".
2024-03-20 11:44:22 +01:00
Jürgen Spitzmüller
0d3d91c055 Add $$OrigAbsName placeholder to external
This produces the absolute path to the original file.

Documentation will follow in die time (after documentation has been
unfrozen)
2024-03-20 07:57:43 +01:00
Pavel Sanda
f7e6086e67 TableUI - allow expading of TableAlignCO (part of #13046). 2024-03-19 19:23:22 +01:00
Juergen Spitzmueller
b1e2986df8 Use docstring for preview snippet all the way down
No need to convert back and forth
2024-03-16 11:57:48 +01:00
Juergen Spitzmueller
f9c60d477d Simplify b3fe9cb704 2024-03-16 05:01:53 +01:00
Juergen Spitzmueller
b3fe9cb704 Prevent iconv exception in previews (#13042)
The preview loader assumes all content is in the main document encoding.

As soon as content was not encodable, LyX crashed. We now check for that
and if non-encodable glyphs are found, we do not produce a preview snippet
and warn.

Ideally, the preview loader should be made aware of encoding changes, or
we should generally use utf8 for previews.
2024-03-16 04:52:51 +01:00
Thibaut Cuvelier
7e6597a5b4 MathML: don't let the processor stretch operators when they are single characters for LyX.
The main goal is to match TeX' behaviour. If you want stretchy operators, use InsetMathDelim / \left & \right. This patch will change the output in many files, but making the rendering much closer to that of TeX (which users should expect, due to LyX' roots in TeX).
2024-03-11 02:00:47 +01:00
Thibaut Cuvelier
8f820d7ccb MathML: stop stretching all delimiters.
No form? Reference: https://w3c.github.io/mathml-core/#dfn-form. The MathML processor is smart enough to determine whether the delimiter is prefix or postfix.

No stretchy/symmetric/fence in all cases? Reference: https://w3c.github.io/mathml-core/#algorithm-for-determining-the-properties-of-an-embellished-operator and https://w3c.github.io/mathml-core/#operator-dictionary-human (example entry: U+0028). Delimiters have the right properties by default.
2024-03-11 01:40:16 +01:00
Thibaut Cuvelier
be03d69946 MathML: don't output delimiters in InsetMathBinom and
InsetMathDelim if the delimiter is a space.
2024-03-11 01:30:48 +01:00
Thibaut Cuvelier
9e6b810b37 Extract vert, langle, rangle in MathExtern like parentheses and brackets.
This patch is part of a series that aims at solving https://www.lyx.org/trac/ticket/12891. It is an excerpt of the patch that lynx published at https://www.lyx.org/trac/ticket/12270.
2024-03-11 01:22:12 +01:00
Thibaut Cuvelier
b1a4eb118c Improve const correctness. 2024-03-11 01:15:53 +01:00
Thibaut Cuvelier
93444892c5 Memorise whether delims are extracted from MathExtern.
This patch is part of a series that aims at solving https://www.lyx.org/trac/ticket/12891. It should not change any output.
2024-03-11 01:10:15 +01:00
Thibaut Cuvelier
1680eaf5f0 Reduce code duplication. 2024-03-10 16:58:45 +01:00
Thibaut Cuvelier
011c3d73c0 MathML: consider ordinary and alphabetical characters as identifiers instead of operators.
The goal is to consider all Greek letters as identifiers instead of operators.

Solves: https://www.lyx.org/trac/ticket/12948.
2024-03-09 20:59:12 +01:00
Thibaut Cuvelier
1b11dfeca5 Simplify a loop with a for-each.
These loops were brought by C++11. The next step could be using std::any_of.
2024-03-09 20:46:54 +01:00
Thibaut Cuvelier
5c5765061f DocBook: amend e3020a6b.
Book authorship and authorship can be quite distinct. As far as I know, there is no standard way to represent book authorship in DocBook bibliographies.
2024-03-01 13:45:28 +01:00
Thibaut Cuvelier
3973bbcf99 DocBook: authorsToDocBookAuthorGroup never needs to return anything. 2024-03-01 13:32:17 +01:00
Thibaut Cuvelier
e3020a6b2d DocBook: support bookauthor in bibliographies. 2024-03-01 13:22:34 +01:00
Juergen Spitzmueller
88a2414839 Do not \cprotect in table cells 2024-03-01 07:18:28 +01:00
Jean-Marc Lasgouttes
677a2c2cd1 Fixup 71d9f6e9: swap two tests to avoid line breaking issues
The new approach to line breaking introduced in 71d9f6e9 is correct,
but the newly introduced min_row_wid should not be updated when the
remaining line width after a break is larger than next_width.

Swapping the two tests fixes remaining issues.

Fixes (for good?) #12899.
2024-02-29 10:46:26 +01:00
Jean-Marc Lasgouttes
8f61b0859c Fix support for screen fractional scaling with Wayland
The display was wrong when a backing store is in use (which is the case
with Wayland). To fix this in GuiWorkArea::Private::resetScreen(), the
pixelRatio is now stored as a double instead of an int.

Concerning support for QT_SCALE_FACTOR, the existing code was wrong
because this value is already taken into account in devicePixelRatioF
for Qt > 5.6 (no fractional scaling support before that). The
situation is as follows:

                   Qt < 5.6    5.6 <= Qt < 6  Qt 6
devicePixelRatio   int(ratio)  int(ratio)     ratio
devicePixelRatioF  N/A         ratio          ratio

So it is only between Qt 5.6 and Qt 6 that devicePixelRatioF() has to
be used instead of devicePixelRatio().
QGuiApplication::devicePixelRatio() does not have a 'F' version, it
always returns the real thing.

Fixes ticket #13039.
2024-02-29 10:28:15 +01:00
Jean-Marc Lasgouttes
23105b2edd Fix compilation on ubuntu 18.04
One of Qt 5.9 or gcc 7.5 does not like the or-ing of several enum flags.
2024-02-28 17:00:54 +01:00
Jean-Marc Lasgouttes
789a886af8 fixup 97cf2b6a: avoid leak 2024-02-27 18:37:07 +01:00
Jean-Marc Lasgouttes
97cf2b6aef Avoid crash when inserting macro template in tabular inset
The issue here is that macro templates are forbidden in InsetTabular
(why? I do not know) and Text::getStatus does not enforce that
properly. Text::insertInset is called and does nothing (because
insertion is forbidden) and yet the cursor is changed to point into
this non existent inset.

Solution:

1/ block insertion of macro templates when not allowed

2/ (additional safety) when insertion of a math macro inset failed, do
   not try to set cursor inside the non-existing inset.

Additionally clarify comments.
2024-02-27 18:21:57 +01:00
Thibaut Cuvelier
27c01ee1d3 Amend 8e0bc01d
std::set::find only appeared in C++20. Rather use std::set::find for compatibility.
2024-02-27 00:45:21 +01:00
Thibaut Cuvelier
baccce7d2d DocBook: in a table, fix a typo in a condition.
Before this patch, all table cells had a semicolon at the beginning of their style:

<td style='; border-bottom:

This unwanted behaviour is only due to a typo in a condition when concatenating two styles: the previous code was checking the second part of the style once the first was output, instead of the first one.
2024-02-26 16:09:52 +01:00
Thibaut Cuvelier
8e0bc01d50 DocBook: when a similar tag is present multiple times in the bibliography entry, output it only once.
Other copies have an error message.
2024-02-26 16:06:26 +01:00
Thibaut Cuvelier
2be72a1534 DocBook: in bibliographies, fix support for editors.
Also, add TODOs for similar problems lurking around.
2024-02-26 15:52:35 +01:00
Thibaut Cuvelier
6b1441036f Use C++11 string literals to make code easier to read. 2024-02-26 15:24:36 +01:00
Thibaut Cuvelier
3fdf3aafe8 DocBook: restore index ranges. 2024-02-26 15:15:32 +01:00
Thibaut Cuvelier
5dd36404f2 DocBook: simplify building an error message. 2024-02-26 15:09:10 +01:00
Thibaut Cuvelier
c71f703914 DocBook: update bibliography handling for 337f953426. 2024-02-26 14:58:35 +01:00
Thibaut Cuvelier
e311606a30 Update comment: a function was renamed. 2024-02-26 02:17:48 +01:00
Juergen Spitzmueller
ce27f5beca Consider biblatex author -> bookauthor mapping in preview 2024-02-25 08:10:23 +01:00
Juergen Spitzmueller
43ee724fcf update tex2lyx tests
in all these cases, though, typographic rather than plain quotes should
be used.
2024-02-25 07:03:06 +01:00
Juergen Spitzmueller
82064f7bff Properly parse biblatex crossref'ed book titles 2024-02-24 15:51:35 +01:00
Juergen Spitzmueller
3eaa374506 Fix name type parsing 2024-02-24 15:27:56 +01:00
Juergen Spitzmueller
5b11066a37 Properly resolve crossref'ed data in BiblioInfo
This needs to take the mappings into account as well, not just
plain fields.
2024-02-24 15:26:41 +01:00
Juergen Spitzmueller
1f48af5f55 tex2lyx: simplify babel shorthands detection 2024-02-24 10:48:34 +01:00
Juergen Spitzmueller
9a3fe51474 tex2lyx: properly import \tikzset 2024-02-24 08:28:40 +01:00
Juergen Spitzmueller
a600ca5389 tex2lyx: consider recently added babel shorthands 2024-02-24 08:15:40 +01:00
Richard Kimberly Heck
16e7e93d54 Fix return value. Committed wrong version. 2024-02-09 20:40:56 -05:00
Richard Kimberly Heck
88e739b44b Do not error out if -geometry is used with QPA_XCB defined. 2024-02-09 20:34:33 -05:00
Richard Kimberly Heck
91bd457a67 Fix display of counters for included listings. 2024-02-09 19:54:56 -05:00
Juergen Spitzmueller
61aa19ef9c Amend ad6aa8ba4b
Apparently, the cell is not queried in all cases.
2024-02-08 09:00:57 +01:00
Juergen Spitzmueller
ad6aa8ba4b Restrict caption insertion in tables to where it makes sense (#13037)
This requires to move insetAllowed() to the cell level, as only cells
in the caption row of a longtable actually can take a caption.
2024-01-28 12:13:27 +01:00
Juergen Spitzmueller
ae423757e9 Amend 37dce94086
PassThruChars should also be considered
2024-01-26 10:16:13 +01:00
Enrico Forestieri
48a065e89e Always use utf-8 in scripts with Python3
In order to perform a conversion of graphic format LyX generates
a python script containing the path of the original file to convert.
While Python2 needs the file in the native encoding of the OS, in
Python3 the encoding has to strictly be how announced by the first
line of a script, in our case utf-8.
2024-01-25 10:17:23 +01:00
Jean-Marc Lasgouttes
b08cb7fb30 Initialize members correctly.
Spotted by coverity.
2024-01-22 11:20:36 +01:00
Juergen Spitzmueller
4cfa3488e5 Restore parent after buffer reload (#13031) 2024-01-19 09:09:28 +01:00
Juergen Spitzmueller
b29b0f8754 Only strip outer braces in listings options
trim stripped also multiple subsequent braces
2024-01-17 14:45:09 +01:00
Juergen Spitzmueller
7b5fe0321e Prevent crash with statistics while view is busy (#12935) 2024-01-16 14:14:04 +01:00
Juergen Spitzmueller
153be65d14 Restrict Adv. Search pane to sides and floating (#12982)
The horizontal reordering for bottom and top is too broken.

This needs some major investigation (probably for 2.5).
2024-01-14 11:34:05 +01:00
Juergen Spitzmueller
3b7f6d614d AdvFind: fix alignment of checkboxes (#13020) 2024-01-13 12:20:18 +01:00
Juergen Spitzmueller
6f4054222c Only fix simple search height if there are no other widgets in the dock area (#13005) 2024-01-13 11:58:35 +01:00
Juergen Spitzmueller
37dce94086 Don't add \text<script> wrapper in pass-thru context (#13022) 2024-01-12 16:28:37 +01:00
Jean-Marc Lasgouttes
8dd9cfcf5c Pass two string parameters as reference
Spotted by coverity
2024-01-12 16:02:36 +01:00
Jean-Marc Lasgouttes
1599c503df Pass a two parameters parameter by reference
Note that there is also a vector parameter that is passed by value.
However it is modified as a local copy and I do not want to change
this now.

Spotted by coverity.
2024-01-12 15:55:45 +01:00
Jean-Marc Lasgouttes
765c380a5b Pass strings as reference
Spotted by coverity.
2024-01-12 14:34:45 +01:00
Jean-Marc Lasgouttes
952851a9bc Do not pass list of columns parameter by value
There is no need for copying this information.

Noticed by coverity scan.
2024-01-12 12:16:31 +01:00
Richard Kimberly Heck
59b08c8171 Fix bug #13017.
The problem is caused by removing temporary aux, etc, files while
we are in the process of exporting. As Jürgen suggested, we really
do not need to remove these files until we are preparing to export:
They are not used internally. So now we just schedule the removal
and do it then.
2024-01-11 17:23:52 -05:00
Jean-Marc Lasgouttes
4a2474c246 Remove obsolete comment 2024-01-04 18:44:33 +01:00
Udi-Fogiel
9ebc7d9512 Amend 7441172d
colswitch was checking for oldstyle instead of normalcolor
to see if we need \normalcolor, which lead to appearence
of \color{none} in some cases, but "none" is not a known
color.
2023-12-29 20:10:50 +01:00
Enrico Forestieri
24cc72266e Change the way a filepath is displayed
Instead of displaying the complete path, display the file name
first and then the path enclosed in parenthesis.

In this way files with same name but different path can still be
distinguished and, at the same time, files with different names
but same path are more easily spotted in case the complete path
is truncated by file managers.
2023-12-29 19:20:25 +01:00
Koji Yakota
1e6b5448c1 Temporary fix for #11723. 2023-12-25 11:44:21 -05:00
Richard Kimberly Heck
1a214f2380 Remove redundant code 2023-12-23 13:17:56 -05:00
Juergen Spitzmueller
378397a6c6 Amend 782f6eae00
Rows should only be removed in ct mode if they have been added
in ct mode by the same author (otherwise mark them deleted)
2023-12-20 08:49:54 +01:00
Jean-Marc Lasgouttes
2d5fa181a1 Fix previews in yellow notes and disabled branches
While it is not necessary to run validate() on insets that do not
produce output (yellow notes and disabled branches), it has to be done
for previewing, since a construct inside the inset may require some
support.

This is done in two steps:

1. in PreviewLoader::dumpPreamble, indicate that a preview is being
   prepared. It is not clear why the `for_preview' boolean was not set
   before.

2. in Inset(Branch|Note)::validate, always call the parent's validate
   method when previewing.

It should have been possible to move the code from 2. to
InsetText::validate, but the weird code in handling
InsetNoteParams::Comment in html makes it difficult.
2023-12-19 17:56:18 +01:00
Jean-Marc Lasgouttes
3695b631c6 Remove unused variables 2023-12-19 17:32:55 +01:00
Juergen Spitzmueller
782f6eae00 Fix tracking of table row/column deletion with added material (#12984) 2023-12-19 16:45:16 +01:00
Daniel Ramoeller
a67a58036f Don't inherit font in Label inset
Fix for #12404.
2023-12-19 16:10:33 +01:00
Juergen Spitzmueller
1aa131de87 Output added par break marker inside argument for commands (#13014) 2023-12-19 15:48:07 +01:00
Jean-Marc Lasgouttes
8832f816ce Show change bar for an end-of-paragraph change
Fixes bug #13003.
2023-12-11 17:57:44 +01:00
Jean-Marc Lasgouttes
94118b865e Disable properly math inset locking
It is not clear whether this feature was once documented and used (it
would have been 20 years ago).

It is mostly disable now, but there was a remaining bit that is
annoying now.

I'll try to restore this later.
2023-12-08 15:32:21 +01:00
Juergen Spitzmueller
ac5cc01717 Amend 3698281943 once more
We need to trim off tabs and spaces
2023-12-03 11:18:42 +01:00
Juergen Spitzmueller
4ba94f74a5 Amend 3698281943 for the sake of the (not exceptionally bright) layout test 2023-12-03 10:36:59 +01:00