In some cases, it might happen that this method is called in cases
where no metrics is know for the current paragraph or where its
position is not set.
Take care of these cases to avoid assertions.
Remove setting of inset positions in the method, but make sure that
updateMetrics(false) is always called to get everything right.
In the new code, updateMetrics(bool) os the method that sets
everything right with minimal effort.
Make sure paragraph positions are updated when scrolling
Sometimes quick selection-scrolling could cause a crash because the
position of some paragraphs is not computed. To fix that, in
BufferView::showCursor, make sure that the metrics are always kept
clean using updateMetrics(false), which is lighweight.
As a consequence, the 'update' parameter of showCursor and
scrollDocView is not needed anymore. Its removal is mechanical and
accounts for most of this commit.
The only other significant change is that, when creating synthetic
mouse events and relying on scroll() for small moves, the full metrics
recomputation is replaced by the lighter version.
More work is still to come on this code, but this should be going in
the right direction.
Avoid crash when InsetBibitem::updateCommand shows a dialog
This is one of the places where a dialog is shown (indicating that
some bibtems have been renamed) while the metrics are not up to date.
Then a draw operation can be triggered too early and a crash can ensue.
Use ad-hoc solution for this case and use Buffer::setBusy(). The
Alert::warning helper cannot really do that since it doe snot know the
current buffer.
José Matos [Thu, 27 Jun 2024 20:20:49 +0000 (21:20 +0100)]
Remove profiling.py
The hotshot module used there only works for Python 2.
BTW the profiling turned out not be necessary.
As a case in point Python 3.13 is twice as fast as Python 3.6 when using
lyx2lyx. Not only that but Python 3 is almost 10 times faster than using
Python 2 for this particular case.
\cprotect'ed insets do not need forced local font switch; in fact files
with this break in compilation. E.g. a caption with an URL containing
the char '#' and caption text set to a secondary language.
Recent versions of qmake complain loudly when the locale
does not explicitley specify the utf8 codeset. Specifically,
the configure script exports LC_ALL=C and that implies the
ascii codeset. Previously, this was silently changed to utf8,
whereas now we get a warning for each qmake invocation.
So, explicitly set utf8 before calling qmake.
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)