Commit Graph

29446 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
df19a70900 Remove unused #include 2024-04-28 12:33:33 +02:00
Jean-Marc Lasgouttes
2660df9b99 Move Lexer to support/ directory (and lyx::support namespace)
This requires quite a bit of trivial code shuffling.
2024-04-28 12:23:13 +02:00
Jean-Marc Lasgouttes
ed2f3cb9cf Set buffer when creating a MathData from parts of another one
This is triggered by selecting part of an equation under Xcb platform
(x11). Indeed, the current selection has to be sent to the X11 server
and BufferView::requestSelection() is called. Eventually
cap::grabSelection() is the function that creates this partial
MathData object.

Fixes ticket #12947.
2024-04-25 17:22:22 +02:00
Jean-Marc Lasgouttes
b45a957929 Set buffer_ correctly when inseting a math macro over a selection
The code that handles this special macro insertion (in
Cursor::mathMacroClose())) is very weird: it inserts the contents of
the macro _after_ the macro and later, since the macro is 'greedy', it
will eat this contents and put it in its first macro cell.

Does it make sense to you? It does not ake sense to me either. Anyway,
this is the point where one should make sure that the buffer is set.

Fixes ticket #12682.
2024-04-25 14:32:18 +02:00
Jean-Marc Lasgouttes
af3521881c typo 2024-04-25 14:27:22 +02:00
Jean-Marc Lasgouttes
c013799887 Force a Buffer * argument to math insets constructor
Make sure that math insets have a proper buffer. To this end, make the
Buffer* parameter of InsetMath mandatory and fix the compilation
errors that ensue.
2024-04-24 16:27:04 +02:00
Jean-Marc Lasgouttes
57d7130655 Force a Buffer * argument to MathData constructor
In order to ensure that MathData objects have a valid buffer, the
default MathData() constructor is deleted. This means that a buffer
shall be specified for each MathData object created.

This is fairly mechanical, actually. In particular, in most
InsetMathXxx cases, in MathData and in MathParser, the available
buffer_ member is used.

More specific cases:
- lyxfind.cpp takes the buffer from the Cursor

- calls to vector<MathData>::resize take an additional
  MathData(buffer_) parameter. There are cases where resize actually
  remove cells, and in this case clear() or even erase() have been
  used.

- in InsetMathMacroTemplate, the optional parameters of the
  constructors cannot be allowed anymore (a default value cannot
  depend on another parameter). Therefore there a now two constructors
  instead.

- in MathAutoCorrect.cpp, the MathData objects are not bound to a
  buffer, so that std::nullptr is used instead.

- in MathExtern, use a buffer when one is specified, std::nulptr
  instead.
2024-04-24 16:26:57 +02:00
Jean-Marc Lasgouttes
f3c5ff9cb7 Try to make sure that math insets have a properly set buffer_ member
Set the buffer of contents that is added to a MathData object through
MathData::insert() (both versions)
MathData::push_back()
asArray()

Also in math macros, initialize look_ with the relevant buffer.

This reduces the number of insets hat do not have a proper buffer.

See #13050 for discussion of this issue.
2024-04-22 17:52:23 +02:00
Juergen Spitzmueller
b8ff824a4f Handle the case of outdated chkconfig.ltx in user directory 2024-04-20 14:57:12 +02:00
Richard Kimberly Heck
c395eda347 Set Buffer for MathData when creating macro view 2024-04-18 18:25:47 -04:00
Richard Kimberly Heck
7c140f743d Little bit more debug info for unset Buffer members. 2024-04-18 18:25:47 -04:00
Jean-Marc Lasgouttes
1a11abe439 Always repaint the gray area below main inset
Now that SingleParUpdate does not always lead to a full screen update
when the height of the paragraph changes (see new behavior of
updateMatrics(bool)), it is necessary to make sure that the grey area
below the main page is always repainted.
2024-04-17 23:12:09 +02:00
Jean-Marc Lasgouttes
c1fd622c51 Sanitize cursors after a buffer has been reloaded
When a buffer is reloaded, its content may remain the same, but the
memory allocation is new, so that the inset pointers in cursors are
now wrong. This requires to sanitize the cursors held by the buffer
views.

Before the biginset branch, some full metrics computation call that is
now removed probably did that as a side effect. Now we have to be more
precise.

To this effect, introduce WorkAreaManager::sanitizeCursors() and use
it in Buffer::reload().
2024-04-16 23:48:01 +02:00
Richard Kimberly Heck
4e8aa89eb9 Defer construction of temporary cursor.
We were doing this on every mouse movement. I.e., for every single
pixel the mouse traverses. It can be expensive if there are a lot
of math insets.
2024-04-16 12:15:50 -04:00
José Matos
cdcaf0e7b6 Convert $${python} placeholder for graphic conversions 2024-04-14 21:30:02 +01:00
Juergen Spitzmueller
09c72d7c8d Set cursor font after pasting to PassThru inset (#12592) 2024-04-13 11:36:10 +02:00
Juergen Spitzmueller
cab03f2680 Fix indentation 2024-04-13 10:11:24 +02:00
Juergen Spitzmueller
5477451e36 Disable language package choice if the class preloads a package 2024-04-13 10:07:18 +02:00
Koji Yokota
b07a263c18 Fix wrong position of conversion windows of the input method #11723, #13054 2024-04-12 21:22:31 +09:00
Jean-Marc Lasgouttes
83e7c74f6b Fixup 'Avoid metrics computation on resize when width did not change'
When the width of the window did not change, computing full metrics is
not necessary in BufferView::resize(), but it is better to redraw the
screen (especially with Wayland).

Typical use cases are when using M-x to open the minibuffer or going
in and out of an equation (which shows/hides the math toolbars).
2024-04-10 15:32:03 +02:00
Jean-Marc Lasgouttes
c3fb9fe95f Comment out too verbose debug output 2024-04-10 14:06:30 +02:00
Jean-Marc Lasgouttes
c7f53afd31 Fix compilation with msvc 2019
'uint' is not defined, 'unsigned int' is better.
2024-04-07 20:43:00 +02:00
Jean-Marc Lasgouttes
89901123c5 Fix crash when deleting inset with backspace
See description here:
https://marc.info/?l=lyx-devel&m=171243435229412&w=2

cutSelectionHelper did not request a metrics update when the selection
was inner to a paragraph. The new code is better, but it was not
necessary before the biginset branch because of a full metrics
computation that hid this missing case.
2024-04-07 19:29:53 +02:00
Juergen Spitzmueller
6a2a9086ad Comment on 9198ed5965 2024-04-07 06:24:37 +02:00
Juergen Spitzmueller
9198ed5965 Fix assertion when pasting paragraph with insets in lyxrc.ct_markup_copied
This has to be done after the inset buffers have been initialized.
2024-04-06 09:47:22 +02:00
Pavel Sanda
77273303a5 Improve stats update times for buffer switches and toolbar toggles. 2024-04-05 22:59:07 +02:00
Pavel Sanda
6f8b944d39 * quote-insert lfun description 2024-04-05 19:47:20 +02:00
Pavel Sanda
7976cc2dac Allow relative statistics values in statusbar.
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg221311.html
2024-04-05 19:36:23 +02:00
Jean-Marc Lasgouttes
9fd397ac1c Indicate that, by default, mouse LFUN do not require a metrics update
This is done easily in LyXAction.cpp. Remember that, by default, each
function is supposed to request a full metrics computation.

Part of bug #12297.
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
73678dcde9 Avoid full metrics computation when entering/leaving inset
Annotate function LFUN_FINISHED_xxx to indicate that they do not
require a full metrics computation.

Remove an "optimization" that meant that when the cursor changed
inset, a full metrics computation was requested.

Part of bug #12297
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
5e8578837f Avoid some full metrics computations related to math previews
When entering/leaving a math hull inset, a Update::Force flag was set,
in case the metrics of the inset would change because of a switch
between normal and preview representation.

When entering the inset, this code is now used only when the inset was
in preview mode.

In both cases, Update::Force is replaced with Update::SinglePar.

This requites in Text::dispatch to honor Update::SinglePar when it has
been set by some lfun, even when singleparupdate is false.

Part of bug #12297.
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
f7218cec18 Avoid metrics computation on resize when width did not change
Entering a math inset triggers a work area reize because the math
toobars appear automatically. However, by default these toolbars are
at the bottom of the screen and their presence does not change the
typesetting of paragraphs. Therefore it is useful to avoid a call to
updateMetrics() in the case where the width of the work area did not
change.

Part of bug #12297.
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
1d1f95d2ed Reduce metrics updates from 4 to 1 when loading file
The number of metrics updates when loading file and showing it in a
new work area is unreasonable.

The first avoided call to updateMetrics() was an explicit resize in
BufferView::init(). Instead, an assertion is suppressed by exiting
early BufferView::processUpdateFlags() when BufferView::ready()
returns false. This is a new method introduced to factor in some
existing tests.

Two other metrics computations are avoided by setting the enclosing
View object busy() while creating the new tab. To make this work
properly, GuiWorkArea::scheduleRedraw has to return early in this
case.

When saving an unnamed document or invoking "Save as...", call
setBusy(false) earlier so that repainting occurs correctly.

Fixes bug #12976.
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
2449693301 Do not compute metrics at each preview when loading file
With the branch-test.lyx file from #12297, loading takes forever when
previews are activated. This is because each preview element causes a
full screen metrics recomputation.

This commit just skips these calls and only does one when all previews
have been obtained. As a result, computing the previews takes 1 second
instead of 25 seconds on branch-test.lyx.

Part of bug #12297.
2024-04-05 13:06:26 +02:00
Jean-Marc Lasgouttes
f15d2ebf38 Improve the code that limits scrolling at top/bottom
The most visible part of this commit is the move of part of
BufferView::updateMetrics to a new TextMetrics::updateMetrics. This
new method makes sure that metrics are known for all visible paragraphs
(starting from anchor), and that the positions of the paragraphs have
been recorded.

This method is called up to 3 times in BufferView::updateMetrics:
* unconditionally, to update all visible metrics,
* then, if the bottom of the document is visible and too high, after
  updating the anchor ypos,
* and similarly if the top of the document is visible and too low.

This fixes for example the case where one jumps to Section 5.3 at the
end of Tutorial and 'scroll_below_document' is false.

Some now redundant code is removed from BufferView::scrollToCursor.

The anchor-setting code in BufferView::draw is not clearly useful, but
left here just in case. It generates a debug warning, though.

Part of bug #12297.
2024-04-05 13:03:22 +02:00
Jean-Marc Lasgouttes
08010c6a5e Implement quick scroll
Replace flag parameter for updateMetrics() by a `force' boolean. When
it is false, the method keeps the metrics of paragraphs that are still
visible in WorkArea instead of computing everything afresh. All it has
to do is update their positions.

Add code to updateMetrics() to update the value of the anchor pit/ypos
(similar to the one in draw()).

Update processUpdateFlags() to use this when update flag is ForceDraw.

Modify scrollDocView() to just change the anchor paragraph position
when the scrolling operation would re-use some of the existing
paragraphs.

The time needed to update the metrics when scrolling with mouse in the
branch-test.lyx document is now divided by 20!

Part of bug #12297.
2024-04-05 13:03:22 +02:00
Jean-Marc Lasgouttes
0b6105b924 Introduce new helpers ParagraphMetrics::top/bottom
This avoids code with position/ascent/descent that is difficult to follow.

No change in function intended.
2024-04-05 13:03:22 +02:00
Jean-Marc Lasgouttes
7f85024f80 In the no-draw phase, do not cache the positions of not visible insets
This can make a big difference for a very large branch that contains
lots of equations.

This is complementary to the previous patch, since instead of reducing
the number of calls to updatePosCache, we make it faster.

In the same test of scrolling with mouse wheel through the
branch-test.lyx document, one finds a 23% improvement for
BufferView::updateMetrics().

Part of bug #12297.
2024-04-05 13:03:22 +02:00
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
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
Juergen Spitzmueller
bf0152185b Make string translatable 2023-10-21 12:52:49 +02:00
Juergen Spitzmueller
4658cf95f7 Disambiguate "Language"
Some translations need a different term for programming languages.
2023-10-21 12:34:47 +02:00
Juergen Spitzmueller
906f2b8507 Fix tautology spotted by coverity
The if and else paths have been identical since the removal of dvipost
(a450797b2a)
2023-10-20 09:53:38 +02:00
Juergen Spitzmueller
33da28e5a5 Fix coverity-detected issue CID 403672
Error handling issues  (CHECKED_RETURN)
Calling "translateString" without checking return value
(as is done elsewhere 15 out of 18 times).

AFAICS we do not need the boolean return value in these two cases.
2023-10-20 09:35:55 +02:00
Jean-Marc Lasgouttes
99ecdd6ceb Fixup 65cb9fa4: avoid extra spacing when selecting math
This was happening whenever a selection started/ended after a fraction
inset.
2023-10-18 12:30:55 +02:00
Juergen Spitzmueller
72e242267b Only apply ui_style if it has changed 2023-10-15 11:20:49 +02:00
Juergen Spitzmueller
81fda3ac55 Warn user that uistyle reset to default requires restart 2023-10-15 11:02:45 +02:00
Juergen Spitzmueller
cfcc57bd89 Simplify 2023-10-15 11:02:35 +02:00
Juergen Spitzmueller
462a701e62 Make new gui element translatable 2023-10-15 09:40:58 +02:00
Juergen Spitzmueller
41e3f1ec98 complement tooltip 2023-10-15 09:17:31 +02:00
Eugene Chornyi
d2132751a7 Implement ui style selection dialog 12832 attempt 2 2023-10-15 08:46:12 +02:00
Daniel Ramoeller
5a9ea580e4 Correctly update Outliner icon size
Fix for #12453
2023-10-14 12:48:09 +02:00
Jean-Marc Lasgouttes
ff7696f184 Do not use Color_selectionmath when selection is gone
It might happen that the selection goes away without recomputing
metrics (for example with char-forward). The added test is a bit of a
band-aid for this situation. A better solution would be to understand
better when metrics computation is triggered in mathed.
2023-10-12 11:30:47 +02:00
Jean-Marc Lasgouttes
174dc2c8be Use Color_selectionmath as needed for multi-cell selection in math
This is complementary to partial selection implemented at 65cb9fa4.
2023-10-12 11:30:47 +02:00
Eugene Chornyi
a99a16ae58 Revert 072ba7bd and f1deb1c6 2023-10-11 23:22:17 +02:00
Eugene Chornyi
f1deb1c658 amend 072ba7bd 2023-10-11 22:03:29 +02:00
Pavel Sanda
c9c5a2a9d8 Add space padding around word count forgotten part of (#12625).
Again from Daniel.
2023-10-11 21:07:12 +02:00
Pavel Sanda
5ed59b3c09 Remove ugly frame around word count (#12625).
Requested and tested by Daniel.
2023-10-11 21:01:56 +02:00
Thibaut Cuvelier
be44cb8516 MathML: don't output delimiters in InsetMathBinom and InsetMathDelim if the delimiter is a space. 2023-10-11 20:37:38 +02:00
Eugene Chornyi
072ba7bd2e Implement ui style selection dialog 12832 2023-10-11 20:06:52 +02:00
Scott Kostyshak
1273f25c76 Fix three sign-compare compiler warning
Fixes three similar warnings. One of them is the following:

src/insets/InsetInfo.cpp:1583:20: error: comparison of integers of different signs: 'int' and 'std::basic_string<wchar_t>::size_type' (aka 'unsigned long') [-Werror,-Wsign-compare]
        for (int i = 0; i < sequence.length(); ++i) {
                        ~ ^ ~~~~~~~~~~~~~~~~~
2023-10-10 10:13:37 -04:00
Thibaut Cuvelier
531a37baee XHTML: implement InsetInfo. 2023-10-10 09:57:17 -04:00
Thibaut Cuvelier
d8a0f1aadd DocBook: fix a crash in docbookSimpleAllParagraphs.
When having the code preview pane open with examples/Language_Support/Mixing_Japanese_with_other_Languages_(with_CJKutf8), clicking at random on paragraphs sometimes yielded a crash: *par when par is the end of the iterator. LyX could output the whole document as DocBook without this patch and still generates the same output with it (i.e. no text is missing).
2023-10-10 09:57:17 -04:00
Thibaut Cuvelier
43921861b9 DocBook: in InsetInfo, ensure that no db:date is inserted within a db:date. 2023-10-10 09:57:17 -04:00
Thibaut Cuvelier
78b157b61e DocBook: fix closing formatting after deleted text.
Previously, when closing font tags, only the previous character's font was used. However, if that character is deleted, it had no change of having the right font tags opened/closed. Hence, look further to compare the font of the current character to output with the font of the previously output character.
2023-10-10 09:57:17 -04:00
Thibaut Cuvelier
b9fc4bae44 DocBook: fix formatting of TODOs.
The lines were very long; this commit truncates them to 120 characters.
2023-10-10 09:57:17 -04:00
Thibaut Cuvelier
0c2f3dedd6 DocBook: add support for InsetInfo.
A similar patch would be required for LyXHTML, but it will come later. The main impact is that some text isn't output in XHTML (like DocBook before this patch).

The code isn't as clean as it could be. I avoided touching anything not related to DocBook, as the release of 2.4 is nearing, while leaving comments for parts to improve for the next release cycle. Given that the code compiles, there are no risks for TeX or XHTML outputs; for DocBook, less content is skipped, which is a net improvement for users.
2023-10-10 09:57:17 -04:00
Pavel Sanda
cc257b4927 Few string fixes from Dan. 2023-10-09 20:41:57 +02:00
Juergen Spitzmueller
90307cf212 Amend 3f0bb8aa43
Account for the paragraph marker
2023-10-04 13:49:34 +02:00
Juergen Spitzmueller
3f0bb8aa43 Fix assertion on paste with empty pars 2023-10-04 13:40:38 +02:00
Juergen Spitzmueller
5cb53606b6 Introduce color_selectionmath
To have a distinctive color for selected math which works in both modes

Also, link color_selectionmath with QPalette::HighlightedText, so we
won't need to special-case on lyxrc.use_system_colors any longer
2023-10-04 13:10:07 +02:00
Jean-Marc Lasgouttes
65cb9fa4df Use Color_selectiontext as needed for partial selection in math
Currently, selected math hull insets use Color_selectiontext when
system colors are in use. This commit implements the same behavior
for partial selection.

This is done by introducing two element types (BEGIN_SEL and END_SEL)
to MathRow.
2023-10-03 12:51:11 +02:00
Juergen Spitzmueller
2b69dc54da Revert the logic of 343a9749ab
It might be better to be explicit also with black, after all.
2023-10-01 12:20:40 +02:00
Juergen Spitzmueller
242381464b Simplify 2023-10-01 11:38:10 +02:00
Juergen Spitzmueller
6df25c3585 When box background is "none", frame color != black and page color has been set
then use the page color as box background, not white
2023-10-01 11:08:11 +02:00
Juergen Spitzmueller
343a9749ab No need to use \fcolorbox with explicit black frame and no background
White background, however, is always treated explicit (think non-white
page background)
2023-10-01 10:12:52 +02:00
Juergen Spitzmueller
2854355fe3 Require xcolor whenever we use an \fcolorbox 2023-10-01 09:35:53 +02:00
Juergen Spitzmueller
3e063daeab Revert "Amend 087f6bce"
This reverts commit a6882a1db0.
2023-10-01 09:26:26 +02:00
Scott Kostyshak
a6882a1db0 Amend 087f6bce
Explanation from Udi:

  There is a missing validation for the requirement of xcolor in
  InsetBox::validate, the case we use Boxed with non-default color.

Patch from Udi.
2023-09-30 20:22:59 -04:00
Scott Kostyshak
10403b7959 Amend 04bfbc0f
Patch from Udi.
2023-09-30 20:20:03 -04:00
Udi-Fogiel
48eda746da proper unicode support for hebrew in 8bit engines 2023-09-30 17:09:41 +02:00
Juergen Spitzmueller
04bfbc0f7a Limit RTL hack to classic engines (#12919)
It breaks with LuaTeX, is definitely not needed with XeTeX, and it is
doubted whether it is needed at all (but this needs further testing).
2023-09-30 17:00:51 +02:00
Juergen Spitzmueller
8b1f1c29ff Style 2023-09-30 13:58:57 +02:00
Udi Fogiel
7ccdc6edf5 fix nested uwave 2023-09-30 13:44:03 +02:00
Juergen Spitzmueller
fc9684a130 Prevent access to null local_font 2023-09-30 13:01:20 +02:00
Juergen Spitzmueller
1d00389bf8 Update tex2lyx tests after recent format change 2023-09-30 09:59:36 +02:00
Juergen Spitzmueller
087f6bce71 Introduce default box frame color (#12921)
This better aligns with dark mode
2023-09-30 09:56:27 +02:00
Juergen Spitzmueller
7aa00f0b92 Fix quote menu item, from Dan
Current language is relevant here, not main language
2023-09-29 13:09:20 +02:00
Pavel Sanda
6141b437b1 pdfcolmk is an empty stub for many years now (bug #12920).
Patch from Udi.
2023-09-28 00:36:35 +02:00
Scott Kostyshak
ff9dfa96f2 DocBook: fix case with emphasis at end of footnote
For ML discussion, see here:

  https://www.mail-archive.com/search?l=mid&q=CAK0LPyiusCMu-X7KpgO0d1-rh4e3%3DRwR5ooXE_fdb7UVuB0VUA%40mail.gmail.com

Patch from Thibaut Cuvelier.
2023-09-25 10:41:21 -04:00
Jean-Marc Lasgouttes
549969a563 Improve comments 2023-09-25 12:51:33 +02:00
Jean-Marc Lasgouttes
71d9f6e90d Avoid row breaking at inconvenient places.
When it turns out that breaking a STRING row element was not
sufficient in Row::shortenIfNeeded, we still remember the shortest
width that one can obtain. Later, when we try to split a previous
element of the row, we have a better idea of how much of the row
remains after it.

To this end, change the signature of Element::splitAt to use an enum:
FIT (was: force=false), FORCE (was: force= true) and BEST_EFFORT
(split at max_width, but do not return an error if the string is too
large).

Fixes bug #12660.
2023-09-25 12:46:54 +02:00
Jean-Marc Lasgouttes
1ca43e1938 Revert "Avoid row breaking at inconvenient places."
The solution did create new issues.

Fixes bug #12899.
Unfixes bug #12660.

This reverts commit f7de345f85.
2023-09-25 12:28:51 +02:00
Jean-Marc Lasgouttes
9156712895 Make sure that caret width is not null in mathed
The same test exists in texted.

Fixes bug #12904.
2023-09-24 13:07:55 +02:00
Enrico Forestieri
ddf81b4e19 Amend 12e3d46b
Also account for alerts regarding documents that are explicitly
allowed to execute external commands through the settings.
2023-09-23 16:18:28 +02:00
Enrico Forestieri
12e3d46b5b Do not change font in html text without gui
As reported here:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg220399.html
if an alert is displayed when the gui is not available Qt6 crashes
when the text contains html directives and the font is changed.
2023-09-23 13:48:01 +02:00
Jean-Marc Lasgouttes
94c6d45b74 When drawing macro names, enforce LtR direction
Add a Direction parameter to the Painter::text methods that take a
FontInfo parameter.

In drawStrRed and drawStrBlack, force the direction to LtR.

Fixes bug #12905.
2023-09-22 12:41:44 +02:00
Juergen Spitzmueller
cd5a88029c Remove unneeded method
which is also not available in Qt < 5.13, as it turns out.
2023-09-18 11:36:16 +02:00
Juergen Spitzmueller
b13685d9bb Prefer following, not previous, item in selection manager after deletion (#12871) 2023-09-18 10:02:34 +02:00
Juergen Spitzmueller
d3102380bc Amend ac275a66b5
Set depth correctly in the active branch
2023-09-18 09:27:38 +02:00
Juergen Spitzmueller
63b99beedd Bit refactoring 2023-09-18 08:13:23 +02:00
Juergen Spitzmueller
ac275a66b5 Get rid of unnecessary flickering when clicking in outliner
No need to collapse and re-expand the node where the currently selected
item is in.
2023-09-17 19:17:12 +02:00
Juergen Spitzmueller
610e2f501b Fix double-click expansion of outliner 2023-09-17 16:45:19 +02:00
Juergen Spitzmueller
013d52ed2b Fix readability
here, "custom" was exactly the opposite (non-custom, i.e., default
margins)
2023-09-17 14:31:36 +02:00
Juergen Spitzmueller
d99a13da18 Amend c8d4b99559 2023-09-17 14:17:05 +02:00
Juergen Spitzmueller
d9af7a0fff Fix change tracking glitch (#12912) 2023-09-16 13:31:00 +02:00
Juergen Spitzmueller
c8d4b99559 Fix display of disabled page margins (#12887)
while preserving input values on geometry toggle
2023-09-16 11:00:10 +02:00
Juergen Spitzmueller
e08bbc89bc Fix brokenBiblio() and fixBiblio() with change tracking (#12909) 2023-09-16 08:34:43 +02:00
Juergen Spitzmueller
1812c946fc Fix nomencl launching
The problem here was that we checked depfile changes too late.
After all these subsequent LaTeX runs, the files's checksums
did not change any longer.
2023-09-15 18:08:10 +02:00
Daniel Ramoeller
ceb1a4c393 Only split view rather than split and move
Fix for #12893
2023-09-15 14:05:33 +02:00
Jean-Marc Lasgouttes
68ba1b57b4 Rename shortenIfNeeded first parameter to `max_width'
The short name `w' was not meaningful.
2023-09-15 14:05:33 +02:00
Juergen Spitzmueller
ed9e7d41f5 Do not paste deleted text with CT on (#12900) 2023-09-14 19:26:20 +02:00
Juergen Spitzmueller
91186013ba Fix result of deleteSpaces()
With change tracking on, spaces that are marked as ADDED are really
removed (and not marked deleted) if the changeAuthor is the current
author; see Paragraph::eraseChar().

The function tried to account for that but had the logic upside down.

Consequently actually deleted spaces haven't been counted and the
result was off.

This fixes an assertion when pasting in CT parts with deleted stuff
(#12901)
2023-09-13 13:50:40 +02:00
Juergen Spitzmueller
81dc79e6d6 whitespace 2023-09-13 13:21:37 +02:00
Juergen Spitzmueller
43ddd3b037 Fix indentation 2023-09-12 16:39:23 +02:00
Juergen Spitzmueller
be1bf5c05c Fix nullpointer (#12898)
Also, quit method early if file does not exist
2023-09-10 14:47:59 +02:00
Juergen Spitzmueller
ea55ca5e84 Handle bibtex location field syntax file1;file2
This is used, for instance, by zotero with the "betterbibtex" exporter

See #12896
2023-09-09 13:00:36 +02:00
Juergen Spitzmueller
ac59b04922 Only create a new view for lyxfiles-open if no view is open (#12894) 2023-09-08 17:47:47 +02:00
Juergen Spitzmueller
90e05de396 Revert "No need (any longer?) to create a new view for lyxfiles-open"
This reverts commit 9f238ca201.
2023-09-08 16:37:06 +02:00
Juergen Spitzmueller
9f238ca201 No need (any longer?) to create a new view for lyxfiles-open 2023-09-08 16:16:01 +02:00
Juergen Spitzmueller
117e259f0a Handle multiple files in file and localfile BibTeX field (#12896) 2023-09-08 14:02:23 +02:00
Daniel Ramoeller
3318febd0c Improve Open External Target dialog text
Fix for #12897
2023-09-08 10:39:45 +02:00
Daniel Ramoeller
fdcb160ed8 Fix bug #11497 2023-09-06 22:52:42 -04:00
Juergen Spitzmueller
5840806a4c Update tex2lyx tests 2023-09-06 08:42:22 +02:00
Juergen Spitzmueller
87620d7349 Add forgotten file formatted change (from 2ad57dcb6b)
This means that lyx2lyx reversion in beta5 is essentially broken
as it ends in a document containing an unknown header
2023-09-06 08:37:43 +02:00
Pavel Sanda
7980523448 Typo fix from Jose 2023-09-05 20:48:34 +02:00
Jean-Marc Lasgouttes
100e759f17 When splitting a bufferview, keep the scrollbar position
This is actually better thean making sure that the cursor is visible.

Fixes bug #12689.
2023-09-05 14:33:18 +02:00
Juergen Spitzmueller
375bb32a3d More style polishing 2023-09-05 12:07:05 +02:00
Juergen Spitzmueller
6bb72cc28c With Qt6 on linux, we need to catch StyleChange here 2023-09-05 12:01:17 +02:00
Juergen Spitzmueller
7c8c3657fd Also change pdf module highlighting on the fly on mode change 2023-09-05 11:48:53 +02:00
Juergen Spitzmueller
51fd28ed4d Update highlighting colors in runtime (dark/light) mode change
Until now, this required a restart.
2023-09-05 11:14:59 +02:00
Juergen Spitzmueller
32f89cbbf5 Style only 2023-09-05 11:13:58 +02:00
Pavel Sanda
625c61f1d5 Output python version in About dialog.
Patch from Jose.
2023-09-04 21:50:51 +02:00
Jean-Marc Lasgouttes
0c6101b0cb Put comment where it belongs 2023-09-04 11:07:34 +02:00
Juergen Spitzmueller
b11164524d GuiLyXFiles: make sure language selector is disabled when dialog is reopened 2023-09-04 07:58:59 +02:00
Juergen Spitzmueller
4393382f02 GuiLyXFiles: fix button controller handling 2023-09-03 15:09:13 +02:00
Enrico Forestieri
1cbcb30353 Fix assertion when canceling file dialog
Without this patch, when a file has to be loaded (for example,
after "Document->Settings->Local Class" or "Insert->Graphics")
and the file dialog is canceled, both Qt5 and Qt6 assert:
ASSERT failure in QList::at: "index out of range"
2023-09-02 18:15:09 +02:00
Jean-Marc Lasgouttes
7eecab5902 Check whether MathRow exists when computing caret metrics
Fixes bug #12888.
2023-09-02 17:21:03 +02:00
Jean-Marc Lasgouttes
e651e15a99 Improve caret position when splitting a view
The old code only worked for toplevel cursors and did not show current cursor.
Note that the two windows do not have exactly the same offset.

Fixes bug #12689.
2023-09-02 17:21:03 +02:00
Juergen Spitzmueller
aaae3ad5cc Remove redundant code and clarify strings 2023-09-02 14:28:33 +02:00
Jean-Marc Lasgouttes
2092663365 Add _v_() debug helper maco
This can be used with streams.
  LYXERR0(_v_(var))
leads to the message
 "var=<value of var>"
2023-09-01 16:45:15 +02:00
Juergen Spitzmueller
58e36a27b6 Doc additions by Pavel 2023-08-30 15:40:16 +02:00
Juergen Spitzmueller
4dc9e0c4e6 Improve CITATION_OPEN
* The lyxpaperview script now only provides the paths and let us do the opening
* We use our own viewers for local files rather than QDesktopServices

Plus several minor improvements and code cleanup
2023-08-30 15:30:29 +02:00
Jean-Marc Lasgouttes
0912f7c356 Update caret if needed when changing depth
Fixes bug #12856.
2023-08-30 13:45:00 +02:00
Jean-Marc Lasgouttes
d27f309905 Use correct cursor when creating undo group
This affects where cursor will be after undo. In this case, we want
obviously the 'old' cursor.

Fixes bug #12874.
2023-08-29 17:25:51 +02:00
Juergen Spitzmueller
2195543188 Add message dialog to LFUN_CITATION_OPEN chain
This addresses security concerns.
2023-08-29 14:43:59 +02:00
Enrico Forestieri
c088cc4413 Fix detection of xcb during configure
The QT_FEATURE_xcb macro is not in the private headers anymore.
They keep changing APIs...
2023-08-28 10:52:08 +02:00
Juergen Spitzmueller
53f4f8c103 Change "library directory" to "system directory" (#12709) 2023-08-26 12:03:20 +02:00
Juergen Spitzmueller
7057a45587 Add accelerator 2023-08-26 11:44:00 +02:00
Richard Kimberly Heck
344dc1f822 Polish formatted reference patch, and add documentation. 2023-08-25 15:24:13 -04:00
Pavel Sanda
2e32e2c123 Revert UI fix for two digit numbers. It actually does not work.
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg220179.html
2023-08-25 18:52:27 +02:00
Richard Kimberly Heck
e8f8239f68 Polish 2023-08-24 21:24:35 -04:00
Alexander Dunlap
1a800bf3e5 Put use_formatted_reference code in addToToc instead of updateBuffer
to handle forward references.
2023-08-24 21:24:35 -04:00
Richard Kimberly Heck
2ad57dcb6b Preview formatted references in the work area.
Patch from Daniel Ramoeller <d.lyx@web.de>, fixed up by RKH.
2023-08-24 21:24:31 -04:00
Alexander Dunlap
ca3004fc67 Assign equation numbers in updateBuffer instead of
addToToc so that they can be used in updateToc to
assign label cross-refs
2023-08-24 21:14:53 -04:00
Richard Kimberly Heck
89a479f60d Fix bug #12797.
Use plaintext to give some display of equations in TOC.
2023-08-24 21:05:50 -04:00
Juergen Spitzmueller
effd65a586 Amend 101363352c
Instead of just disabling MOUSE_MOTION on inset buttons, we now register
the coordinates where the latest mouse press happens, and if that's on
the inset button we are on when releasing, we toggle the inset.

Thus, minimal unintentional mouse movements don't lead to the button not
to respond.
2023-08-24 09:56:09 +02:00
Pavel Sanda
06198fbe18 Alow two digit number of remembered files in ui.
Reported by Dan.
2023-08-22 22:02:32 +02:00
Juergen Spitzmueller
101363352c Tentative fix for the inset problems on Mac (#12418, maybe #12820, #12279)
This is committed now in order to get testing from Mac users in the next
prerelease. Subject to change or even reversion.
2023-08-21 19:20:06 +02:00
Richard Kimberly Heck
784a7210ba Use master buffer setting when exporting 2023-08-18 19:25:04 -04:00
Stephan Witt
d409555bda Amend change 5c8e3a5f0d - correct include directives 2023-08-18 12:52:25 +02:00
Juergen Spitzmueller
15f9129a26 Improve readability of code and comments 2023-08-18 10:02:48 +02:00
Juergen Spitzmueller
fe57b19294 Mirror all delimiters in RTL context with luabidi, regardless of the language or script (#12881)
Patch by Udi Fogiel
2023-08-18 09:20:26 +02:00
Juergen Spitzmueller
5c8e3a5f0d Remove Qt < 5.2 conditionals and special code
We require Qt 5.2 at least for LyX 2.4
2023-08-18 09:04:12 +02:00
Juergen Spitzmueller
5d084c86c9 Add direction switch with Babel/bidi (#12864)
Patch by Udi Fogiel
2023-08-17 14:29:23 +02:00
Juergen Spitzmueller
315c2f132a Account for babel's bidi option (#12866)
bidi=bidi-{r,l} load the bidi package
2023-08-17 14:25:33 +02:00