This seems to be necessary on windows, where math editing can get very
slow. Note that other methods like rbearing already use a cache.
In the future all these caches for single characters shall be unified.
(cherry picked from commit d3979e798c)
In full screen mode, it is possible to restrict the text width. In
this case, the paint bar should not be painted outside of this
restricted area.
Fixes bug #11286.
(cherry picked from commit 7485225cc6)
Call gunzip with quoted filenames as they may contain spaces or
other special characters.
In computing the length of the extension, the code does not account
for the prefix "unzipped_", which is added when the zipped filename
does not have one of the extensions "gz", "z", "Z", or "svgz", and
thus the used index is out of bounds. See also this thread:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg207360.html
(cherry picked from commit 69726b832b)
(cherry picked from commit 7296e0e6ba)
To reproduce: Do a search for text in a footnote (say) that is
currently closed. Click inside the now open footnote. It will close
by itself.
We need to know whether we can go into the inset, not whether we can
edit once we're there.
(cherry picked from commit 4484cc7751)
This commit removes the adhoc code in GuiPrefs and moves it to LyXRC,
so that it triggers in every preference change.
The code has also been updated to trigger on more variables, e.g.
font_*_foundry.
Note that the actual function that are called have not been changed
(addPreviews and LFUN_SCREEN_FONT_UPDATE), although there are doubts
that they behave as needed (see FIXMEs).
Fixes bug #11498.
(cherry picked from commit 954531f247)
A typical problem when change tracking is on is:
1/ insert a new space between two words (as if you want to insert a new one)
2/ move the cursor
3/ see how one has one inserted and one deleted space, whereas one would expect nothing.
The problem is fixed in a general way in master, but here we propose
a simpler one, where the spaces that we keep are the ones at the end
of the sequence of spaces.
Part of #11412.
When change tracking is active, it may happen that spaces are marked
as deleted instead of being removed. Therefore it is better to measure
the change of size of the paragraph to know how to offset the cursor.
Moreover, it the cursor was strictly after the start of the sequence
of spaces, we ensure that it is still the case.
This commit is _not_ a backport from master, which has diverged.
Part of bug #11412/
Remove special handling of spaces at end of paragraph. Now they are
handled like interword spaces by both DEPM methods.
Fix off-by-one error in loop when testing for end of paragraph.
Part of bug #11412.
(adapted from commit c00234503f)
Now we search in priority with the GUI language, and then the
language(s) specified in the LANGUAGES environment variable.
Preoviously, the GUI language would only be considered when
LANGUAGES was not set (which was a bug).
Take this opportunity to remove old compatibility code from 2007.
(cherry picked from commit e203bf519b)
When splitting parameters at commas, take into account that
commas inside curly braces are not parameter separators.
(cherry picked from commit 6316b9b7ae)
Otherwise, we will ask about it again next time, when the file
may have changed. Also, if we crash again, we'll over-write that
file, which we may not want to do.
See bug #11464.
(cherry picked from commit b804e8851c)
This is a follow-up to 714b731e. This fixes the issue when the cursor
is in front of a space
abc| def
and one inserts another space (to start a word). DEPM would eat one
space and produce
abc |def
instead of
abc | def
Additionally, fix the same_par boolean, wheich did not take the cell
index into account.
Related to ticket #11412.
(cherry picked from commit 7848d3c90c)
The PATH prefix modified through the GUI was set without
replacing embedded environment variables. This might have
caused problems on Windows with external python installations.
(cherry picked from commit 472bdf5910)
This adds a new (boolean) parameter "active" to the label cache, where
we track whether a label is deleted in ct mode (the same could be done,
if wanted, for labels in notes and inactive branches).
Deleted (inactive) labels are neither considered in the uniqueness check
nor added to the outliner. This also means that undeleted references to
deleted labels are now (correctly) marked as BROKEN.
Cherry-picked from:
[3ae6bff538/lyxgit]
[a550a613e8/lyxgit]
[c457ea90e/lyxgit]
[5cfd25697/lyxgit]
[5afacb144/lyxgit]
[54366c38e/lyxgit]
Fixes: #6563
If we use that, the document actually needs to be in utf8 encoding, and
the CJK environment needs to account for it.
Candidate for stable.
(cherry picked from commit d193cd05a8)
The column is flushed when the display of equations is flushed.
Not sure what to do with RtL languages.
Fixes bug 11324.
(cherry picked from commit 7cb0284a3f)
This broke the activation and de-activation of plural, capitalize,
etc. I guess that tells us how much those get used....
(cherry picked from commit 9b3f9cc687)
In particular, introduce the new InsetMathScript::allowLimits method
that checks for that and honor it in getStatus/ddoDispatch.
Do the same for (over|under)brace
(cherry picked from commit 7b7ed64a0e)
(cherry picked from commit 6cfd733dea)
In many cases, the origin xo_ of insets was forgotten.
Also fix spacing between text and label in rtl
Fixes bug #11425.
(cherry picked from commit 5c1d65afee)
(cherry picked from commit 5fc035f99c)
For some reason, adding a LTR/RTL Override unicode character before a
MinionPro string increases the ascent of the line.
This creates vertical offset issues when painting if the ascent used
as reference is the one of the font. Use the QTextLine ascent instead
for better results.
This is a followup to 1bed76e2a.
Fixes (reopened) ticket #11284.
Fixes ticket #10532.
Fixes ticket #10767.
(cherry picked from commit d8498d4785)
We need to do this unconditionally, since there is no (trivial and non-
awkward) way to update it when the bibliography paragraphs are modified.
Fixes: #4899
(cherry picked from commit 35534231d4)
When blinking the caret, it looks like a cool idea to only update the
small rectangle containing the caret. Actually it is an awful idea, since
the paint event will paint some rows, and these rows will not be
properly painted outside of the small rectangle. Unfortunately, the
painter will skip those "painted" rows on next paint events.
This leads to painting errors that depend on the ordering of "real"
and "caret" paint events. This is the reason why they only appeared
with split screens.
Quote of the day: ``The real problem is that programmers have spent far
too much time worrying about efficiency in the wrong places and at the
wrong times; premature optimization is the root of all evil (or at
least most of it) in programming.''
-- Donald Knuth, The Art of Computer Programming.
Fixes bug #11354.
(cherry picked from commit fba9f5b9e8)
Eventually, all overridden virtual methods should be marked properly.
Currently, clang only warns about those in classes that already use
override in at least one place (which was the case dor GuiApplication).
(cherry picked from commit c8f4b68423)
We need to bail out here early since otherwise the cache is prematurely
set to valid even if it is invalid with the bibliography environment.
The following checks (for timestamps of bib files) are only targeted
at bib(la)tex.
The fix is already in master.
We used to need a hack to set the size of the layout combo, but
the code was changed in Qt 4.5 or so. Hence the appearance of this
bug in 2009. We can now just remove this hack, and all seems to
work correctly.
(cherry picked from commit d7f4346a19)
I'm not entirely happy with this way of doing it. It seems messy.
But there is not another clear option right now.
(cherry picked from commit 4f0ccae399)
We need to load the master document before applying the params, since
otherwise the TOC reset (and other things) happen before the master
has been loaded (and set as parent).
(cherry picked from commit ac3693c04f)
When selecting text, in some cases a DocIterator could be forwarded
to a (non-existant) paragraph after the end. The critical part of
this fix is to break the loop at the correct place. The following
are additional improvements:
- increase readability by defining a bool named "in_last_par"
- use cur.selectionEnd().pit() instead of cur.selectionEnd().paragraph().id()
- use it.lastpos() instead of it.paragraph().size()
This commit fixes a regression introduced by 23de5e5e, and reported
at #11204.
Thanks to Jürgen and JMarc.
(cherry picked from commit d12798759a)
In the context menu for a selection, we now only show the options
"Accept Change" and "Reject Change" if there is actually a change in
the selection. Similarly, in the toolbar, the buttons are only
enabled when there is a change in the selection.
This fixes#10338.
(cherry picked from commit 23de5e5e19)
Spaces are now conserved when they surround current cursor. Examples:
abc | def
becomes
abc | def
after DEPM and
abc |
is kept as it is.
Fixes ticket #11412.
(cherry picked from commit dff0c5729e)
Enclose in braces an optional argument of a math macro when it
starts with an incomplete script inset or ends with a delimiter
size-modifier macro.
(cherry picked from commit 2dcb730026)
Make MathData::setBuffer set the buffer of insets that it contains.
Remove corresponding code from InsetMathNest.
update the buffer() property in the following tabular-feature
actions : copy-row, add-row, copy-col, add-col.
(cherry picked from commit 837bcbb043)
The backslash is the escape character used in our parser. Hence,
when used as a path separator on Windows, it has to be itself
escaped or the path enclosed in either double or single quotes.
Windows users are maybe trained to quote paths containing spaces
but not paths with backslashes. So, we automatically escape the
backslashes when they are not already enclosed in quotes.
(cherry picked from commit 4c9df62c6c)
https://marc.info/?l=lyx-devel&m=154458979925296&w=2
This is related to the fix for #9158 and the caching of bibfile
information. On Windows, it is incredibly slow to run kpsewhich,
which we do to check where files actually are, so as to get info
about them (e.g., timestamps). So we have started to cache that
as a map. The map is supposed to be invalidated when various
things happen, but an oversight was causing it to be invalidated
on every cut operation. This is because cutting uses a temporary
Buffer, and the operations on it were affecting the *global* cache
of biblio file info. (It makes sense to have a global cache, since
these files are not document-specific.) Basically, we have to update
the list of bibfiles in that temporary Buffer---but that is one of
the things that invalidated the cache. The solution is only to
invalidate the cache if the list of bibfiles has actually changed
(a sensible idea anyway). The only time that will happen in the
temporary Buffer is when the copied information contains a BibTeX
inset. That should be fairly rare.
The boost signal was sent synchronously, and so made the Qt signal to be posted
in FileMonitor::changed after the boost signal returned, so after the sender was
possibly destroyed.
The solution is to make the boost signal asynchronous using the Qt event loop.
Thanks to Scott Kostyshak for the report and MWE.
(cherry picked from commit 131f4b92ba)
With Qt 5.11 at least, RtL text will be drawn RtL even when the
(undocumented) flag Qt::TextForceLeftToRight is applied to the
QTextLayout object. This creates selection issues for Hebrew text
marked as English.
The solution is to do the same as in breakAt_helper, that is prepend
the string with a direction override unicode character.
Doing this requires to introduce a TEXTLAYOUT_OFFSET constant that has
to be used wisely to account for this extra character.
Fixes bug #11284.
(cherry picked from commit 1bed76e2a1)
As of LaTeX2e 2018, characters are made active earlier, which results
in new expansion problems.
Following a suggestion of Markus Kohm (pc) and the TL mailing list [1],
we embrace non-ASCII input paths in \detokenize. This relies on e-tex,
but I think we can assume this is nowadays available everywhere.
[1] http://tug.org/pipermail/tex-live/2018-May/041691.htmlFixes: #11146
(cherry picked from commit 8bd65041f2)
When deciding how to strike out deleted math in change-tracking
mode, differentiate only on begin-of-line or not, and not on
after-paragraph-break or not.
The assumption that a new paragraph is always started after a
float seems to be not true and was causing this bug.
(cherry picked from commit bd21aa99d2)
This is a fixup to 4ecbff00. When a file is loaded and the cursor is
set, it is required to first compute metrics to be able to scroll the
screen correctly.
Fixes bug #11377.
(cherry picked from commit 2dc84b69d5)
When using QTextDocument to check the natutal size of a text, one has
to remove the text margin, which is not useful here.
Fixes bug #11353.
(cherry picked from commit 7db99672e6)
Instead of "Save" (permanently) and "Apply" (temporarily), OK and Apply
now always save permanently, unless the new checkbox "Apply to current
session only" is checked.
Addresses: #10016
(cherry picked from commit c7bdb3b342)
If we were not ready to paint the screen, this does not mean that we
should give up on repainting, just potpone it.
I thought that it was bad to call update() in the paint event, but I
cannot find reference to this anymore and everything seems to work as
intended.
Fixes part of bug #11323.
(cherry picked from commit 38f09c177b)
(cherry picked from commit 2617a4dd50)
When a raster image with an advertised pixel density different
from 72 dpi is included in a latex file, the output image dimensions
are scaled by the ratio 72/pixel_density. Hence, if a clipping
bounding box is specified, it has to be scaled by the same ratio,
otherwise the images will be clipped differently on screen and output.
Here we use the extractbb command (present in any TeX distribution)
to ask about the output dimensions of the image as dictated by the
pixel density and compute the scaling ratio by the knowledge of the
actual dimensions. If, for whatever reason, extractbb is not found,
everything goes as before, because the clipping bounding box will
simply not be corrected.
(cherry picked from commit 380f34a114)
On Windows, start viewers in detached processes in order to avoid
a crash of the QProcess destructor when their thread terminates.
The opening of a console window is avoided by redirecting to the
null device all standard I/O channels.
If an RTL language is set via environment in polyglossia, only a nested
\\text<lang> command will reset the direction for LTR languages
Fixes rest of # 10111.
(cherry picked from commit 2d4ac90fd2)
This avoids failures when running install_name_tool on Mac when creating relocatable binaries using the bundled private frameworks.
(cherry picked from commit d9c0807227)
This can happen when the inset that contains the cursor is outside of
the screen.
THis is only a workaround. The real solution would be a
processUpdateFlags(FitCursor) call, but the code is not ready for that
yet.
Fixes bug #11296.
(cherry picked from commit 17576fb83b)
We do not know what to do with horizontal scrolling events, so we ignore them.
Note that the code has to be different between Qt4 and Qt5.
Fixes bug #11257.
(cherry picked from commit 2cfbc5ecf6)
1/ Handle space in color name in set-color (with quoting)
2/ read properly branch inset which name has a space
Fixes bug #11108.
(cherry picked from commit 819cf53c22)
Now any sequence of spaces around old cursor will be removed, even at
start or end of paragraph. Sequences of more than 2 characters are
also taken into account.
The version of DEPM which acts on a sequence of paragraphs is also
rewritten to match the local one.
(cherry picked from commit 20976e81fb)
(cherry picked from commit c54fe6c584)
The part of code that removed space at start of paragraph have been
there forever, but its intent is unclear. For example, cutting text at
the end of a paragraph will lead to remove space at the start of this
same paragraph.
The removal of this functionality is offset by a rewrite of DEPM that
makes it more thorough.
Fixes bug #10503.
(cherry picked from commit e4dba53232)
Also fix a glitch in non-refstyle import (getOpt() returns the option
with delimiter, so do not add them in ERT once more)
Candidate for stable
(cherry picked from commit faf40fb408)
1. Do not attempt to mix diverging btUnits (e.g., chapters and sections).
2. use parse_text to properly parse the contents.
(cherry picked from commit 68d48b0015)