Commit Graph

29172 Commits

Author SHA1 Message Date
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
Jean-Marc Lasgouttes
a635e461a1 Remove code that has been dead for almost 20 years 2023-11-30 10:07:44 +01:00
Richard Kimberly Heck
1aa890629b Better variable name
I think this one must be a leftover from before the ranges.
2023-11-27 21:35:54 -05:00
Richard Kimberly Heck
1bc5453cab Amend 28e8bf742.
The default 'empty' layout has "UNDEFINED" for the LabelString.
2023-11-17 19:32:49 -05:00
Enrico Forestieri
ee19d67524 Amend 58103cf2
- Do not clear the initial selection to allow consecutive changes
  (this is in line with the behavior in texted)
- Make the color changes last so that the underline is the right color
- Allow to operate on selections that span multiple cells in a grid
- Use \boldsymbol instead of \mathbf to make everything bold
2023-11-17 19:03:46 +01:00
Richard Kimberly Heck
ac0a12de68 Let label strings work with branches.
A better patch will be attached to bug #12974.
2023-11-16 20:23:12 -05:00
Richard Kimberly Heck
28e8bf742c Fix layout names for branches. 2023-11-16 20:05:38 -05:00
Jean-Marc Lasgouttes
149a34a483 fixup 2b0841b0: forgot to add new file 2023-11-10 14:39:27 +01:00
Jean-Marc Lasgouttes
2b0841b0c9 Move LYX_(BEGIN|END)_MUTE_GCC_WARNING macros to their own header.
It was not nice to other build systems to define that in configure.ac.
2023-11-10 13:14:34 +01:00
Jean-Marc Lasgouttes
c2653e451c Avoid dangling-reference warning in several places
This new warning in gcc 13 is annoying because it happens in certain
parts of our code where it is harmless to pass a temporary variable to
a function that returns a reference.

This patch introduces a new pair of macros,
LYX_BEGIN_MUTE_GCC_WARNING(warn) and LYX_END_MUTE_GCC_WARNING, which
can be used to define a block of code where a given GCC warning is disabled.

The macros are no-ops with compilers other than gcc, although some
compilers that pretend to be GCC make be mis-detected. The worse that
can happen AFAIU is a bunch of warnings.

The macro relies on an intimidating set of for nested macros. The goal
of these macros is to build a nested string bit by bit. Here is how it
works:

PRAGMA_IGNORE(dangling-reference)
  => PRAGMA_IGNORE_1(-Wdangling-reference)
  => PRAGMA_IGNORE_2("-Wdangling-reference")
  => PRAGMA_IGNORE_3(GCC diagnostic ignored "-Wdangling-reference")
  => _Pragma("GCC diagnostic ignored \""-Wdangling-reference\"")

The next question is: what is _Pragma() good for? Well, it is a
version of #pragma that can be used in a macro.

And finally, what are those pragmas good for? The 'push' and 'pop'
ones make changes to warnings local. The 'ignored' ones allow
to disable some warnings. And disabling -Wpragmas ensures that we do
not have a warning if we try to disable a warning that is not
supported by the compiler.
2023-11-10 10:36:52 +01:00
Juergen Spitzmueller
3698281943 Read separated required arg without enquoting 2023-11-09 22:06:39 +01:00
Enrico Forestieri
039de52ad9 Amend 58103cf2
The \underbar macro is a text mode macro that can also be used
in math mode. However, when inserting it in mathed, LyX helpfully
wraps it in a \text inset. One can dissolve such text inset and
the macro would appear in math mode without any problem. But the
output routine thinks that the user is shooting itself in the
foot and tries to protect him by wrapping \underbar in the
\lyxmathsym macro, whose definition is normally added to the
preamble when an unicode character is used in math mode.

Of course, this is not the case for \underbar and a compile
error arises. The easier solution is to simply add lyxmathsym as
a requirement for \underbar in lib/symbols, but this means
that the definition of \lyxmathsym would be added even when not
necessary (because in the validation routine we miss the info
about the current mode). The correct solution is acknowledging
the dual nature of \underbar as a text-mode macro that can also
be used in math mode. Luckily the correct solution is almost as
easy as the easier one and is what is done in this commit.
2023-11-09 00:21:21 +01:00
Yuriy Skalko
53784b90ae Better dialog resizing behavior 2023-11-09 00:15:16 +01:00
Pavel Sanda
6d19388ab8 Fix mangling names in temp directory (amends eef0c8e8).
Separate mangled-name tables for xhtml and latex exports.

LaTeX route should stay as it were (counter+mangled path within filenames in
temp directory)

xHTML route uses hash of path + filename only. We won't use counters because
(unlike in LaTeX export) they stay visible in final export directory and
generally change across LyX sessions.
Hash is short with collision handling because path-length limits of Windows.

cf https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg220582.html
2023-11-08 21:42:54 +01:00
Juergen Spitzmueller
f74cc0ec92 Limit nomencl backwards support to case when old package is really used
This is only needed for very old versions of the nomencl package
(before March 2005)

No need to output compatibility code with newer versions

Furthermore, this breaks the use of the glossary package which also
has .glo extension (#12968)
2023-11-08 16:17:58 +01:00
Enrico Forestieri
bdaad03a45 Do not accumulate underline changes
If an element is underlined in mathed by using the text properties
dialog, the changes accumulate. So, for example, to change a single
underline to a double one, one would need removing the previous
underline first. This commit allows using the text properties
dialog and simply replace an underline type with another one.

However, this works only if the underlined element is not included
in some other inset. For example, given "\uline{\text{abc}}",
selecting the 'b' and choosing a double underline produces
"\uline{\text{a\uuline{b}c}}". But, given "\text{\uline{abc}}", and
operating as before produces "\text{\uline{a}\uuline{b}\uline{c}}".
2023-11-08 09:17:38 +01:00
Enrico Forestieri
ea30f1feb1 Amend 58103cf2
Give a variable a more meaningful name and fix a typo.
2023-11-08 08:56:40 +01:00
Jean-Marc Lasgouttes
9c3d9cded0 Update math macro display when entering from above/balow
This change forces metrics computation in all cases when cursor enters
a math inset from above/below, but I do not have a better idea right now.

Fixes bug #12952.
2023-11-07 15:46:04 +01:00
Enrico Forestieri
f8f2355445 Silence compiler warning 2023-11-06 21:03:23 +01:00
Enrico Forestieri
9d95147528 Amend 58103cf2
Correct file name.
2023-11-06 18:46:22 +01:00
Enrico Forestieri
58103cf214 Allow using the text properties dialog in mathed
Until now only the color of the text could be changed by using
the text properties dialog. This commit allows changing all
other properties except for strikethrough. It is possible to
also add underlining with the limitation that the changes
accumulate. This requires other work but I think that underlining
and strikethrough are not so important in mathed and can be
refined at a later time.

Fixes #12958
2023-11-06 18:04:44 +01:00
Juergen Spitzmueller
d2db3d4578 escape spaces in labels
refstyle doesn't work with these. See
https://marc.info/?l=lyx-users&m=169926958114185&w=2
2023-11-06 14:18:03 +01:00
Jean-Marc Lasgouttes
04a24211a6 Fix word selection expansion when going to the left
The proper way to do word-wise selection is to compute the words
around both the cursor and the anchor.

Note that code is uglier than it should because CursorData::normalAnchor()
returns a CursorSlice instead of a DocIterator.

Fixes bug #12533.
2023-11-06 11:53:03 +01:00
Juergen Spitzmueller
27033f41aa Fix comment 2023-11-05 12:38:09 +01:00
Juergen Spitzmueller
098b4f3348 Amend ec2da3a509 2023-11-05 12:28:27 +01:00
Juergen Spitzmueller
ec2da3a509 Prevent data loss when closing LyX while document dialog has unapplied changes (#12955)
Entails new strings, but I think the severity allows for that.
2023-11-05 12:09:33 +01:00
Enrico Forestieri
75a08df529 Inherit outer font in text-in-math environments
Some text-in-math environments such as \text, \mbox, \fbox, and
\makebox, inherit the outer text font. This commit reflects this
in the on-screen representation.

Fixes #12950.
2023-11-02 17:54:02 +01:00
Juergen Spitzmueller
5d193c7b62 Revert "Show full inset context-menu when clicking on text part of collapsible (#10370)"
This reverts commit 6c4afc1ccb.

This needs more thinking to get the menus sane.
2023-11-02 10:17:06 +01:00
Enrico Forestieri
e0e1350b7e Revert "Inherit outer font in text-in-math environments"
This reverts commit d72b9b0238.

Unfortunately, the font taken into account is the font at the
current cursor position rather than the font of the corresponding
math inset.
2023-11-02 01:59:54 +01:00
Enrico Forestieri
d72b9b0238 Inherit outer font in text-in-math environments
The text-in-math environments such as \text, \mbox, \fbox, \makebox
and so on, inherit the outer text font. This commit reflects this
in the on-screen representation.

Fixes #12950.
2023-11-01 22:21:49 +01:00
Juergen Spitzmueller
07c99393be Consider PackageOptions with parskip 2023-10-30 12:54:29 +01:00
Juergen Spitzmueller
6c5dc39cd5 Amend 9de9ec1e88
When setting halfline parskip with parskip provided, we still need
to set this explicitly, as we don't know the current \parskip value.

Also improve code readability.
2023-10-30 12:17:14 +01:00
Juergen Spitzmueller
9de9ec1e88 Do not add empty \parskip definition (reported in #12946) 2023-10-30 09:22:14 +01:00
Pavel Sanda
28f81d1be5 Revert "MathML: don't output delimiters in InsetMathBinom and InsetMathDelim if the delimiter is a space."
This reverts commit be44cb8516, see #12891.
2023-10-27 21:18:45 +02:00
Juergen Spitzmueller
e9998fb1cc Enter table after insertion (#12101)
posForward() jumped over the inset, which is not what is wanted here,
I think (cf. other inset insertion methods)
2023-10-22 10:19:50 +02:00
Juergen Spitzmueller
8e619462e1 Disable OUTLINE functions when min or max toclevel is reached 2023-10-21 13:49:50 +02:00
Juergen Spitzmueller
2b33da5944 Let OUTLINE functions jump from section to part if there is no chapter
Fixes #12938
2023-10-21 13:48:50 +02:00