José Matos [Mon, 17 Jun 2024 10:31:10 +0000 (11:31 +0100)]
Fix functions that used functions but did not defined it
The functions were selected from the parser files where document is
always defined.
The only case was this code was used was on document.warning.
Since our documents are well formed this code was never active and thus
the reason why we did not saw this before.
One possible solution to assure that these type of errors do not occur
is to make the convention that all the functions in lyx2lyx_tools have
as the first argument document.
José Matos [Sun, 16 Jun 2024 06:34:34 +0000 (07:34 +0100)]
Add common pattern in linter exclusion list
# ambiguous-variable-name (E741)
Derived from the **pycodestyle** linter.
## What it does
Checks for the use of the characters 'l', 'O', or 'I' as variable names.
## Why is this bad?
In some fonts, these characters are indistinguishable from the
numerals one and zero. When tempted to use 'l', use 'L' instead.
## Reason to ignore in LyX?
With appropriated fonts that is not an issue. In our case we just use
the 'l', in particular in the context of iterators: 'i', 'j', 'k', 'l'.
Udi Fogiel [Tue, 11 Jun 2024 18:14:27 +0000 (21:14 +0300)]
Remove hebrew letter document class
The only difference from regular letter is the alignment of
"Send To Address" layout, but it no longer reflect the output
corrctly, probably because LyX revert the alignment of layouts
in RTL context now.
InsetMathMacoTemplate: recompute metrics on editXY too
This inset can change dimensions when edited (like macros can).
Therefore Update::SinglePar should be set with editXY() like it is
already set for edit().
With this patch, 3 draw strategies (set in prefs with
\draw_strategy partial|backingstore|full) are available:
- "partial": only draw the parts of text that have changed since last
paint event (default for X11 and windows)
- "backingstore": the same, but drawing happens on an offspring
pixmap; this breaks subpixel rendering (default for Wayland and
macOS)
- "full": the screen is fully redrawn at each paint event and should
therefore always be correct; this is presumably slower but
introducing it will allow to test it.
José Matos [Mon, 10 Jun 2024 09:38:28 +0000 (10:38 +0100)]
Update configure.py to Python3+
Remove Python 2 support
This simplifies the code and allows to use other more modern features,
like formatted strings, that were not possible while keeping Python 2
compatibility.
The code was expecting that all properties were specified
in the argument and not only some. Simply do not process
those properties not specified in the argument.
Udi-Fogiel [Sun, 9 Jun 2024 10:36:35 +0000 (13:36 +0300)]
missing background in xetex and fix RTL stuff in preview
* previwes with xetex did not produce any background (\pagecolor does not work for some reason), adding the direct command for that, \special{background <color>} inside the preview box solved it.
* similar to #12923 we should push the color node in horizontal mode
* there is a bug in preview with LuaTeX with main RTL language, this commit fix this bug, but it should be removed when it is fixed upstream (the code related to \pr@set@pagerightoffset)
Reset require_fresh_start_ after buffer has been viewed/exported
The LFUN buffer-reset-export states to start afresh the export for the
next run, but in fact, the boolean was never reset, so that this was
done for all subsequent runs unless the buffer had been closed and
reopened.
Now the lfun does what it states and only acts on the next pass.
Thibaut Cuvelier [Sun, 19 May 2024 23:09:43 +0000 (01:09 +0200)]
InsetGraphics: use the `scale` CSS property instead of `width` with percentages.
The effect is closer to what LyX offers. Previously, the percentage was of the HTML container (often, the whole page), meaning that images were oversized. Now, the scale is respected in the same way as LyX, but its bounding box is off. Overall, the result is better, but not what users expect.
Fix up a4d9315b: handle metrics of not visible paragraphs
The code is not ready for situations where some paragraphs that are
not visible have metrics available. This has been made visible by a4d9315b, which removes a couple of full metrics updates: the screen
was not correctly scrolled after a scrollToCursor() call.
In PararagraphMetrics, some methods are added to be able to handle the
fact that paragraphs have or do not have a position.
In TextMetrics, a new method returns the first visible paragraph.
Finally, in BufferView::updateMetrics, the paragraphs' positions are
reset (in the case where everything is not cleared) and some care is
taken to skip the ones that are not relevant.
The assumption outside of this method is that all the paragraphs that
are in the TextMetrics are visible (we are talking about top-level
TextMetrics here). This could be changed (in order to avoid
recomputing paragraph metrics), but the cost is high in terms of
complexity and it is not clear that the gain in terms of performance
would be important.