Commit Graph

28633 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
a65e12d6f3 Reimplement support for numbering of equation previews
This patch simplifies and fixes the generation of previews with
numbering. Instead of saving the counter values (which is complicated
and error prone), the \thequation macro is set to the numbers_ string
which has been computed by updateBuffer for screen display.

Harcoding the number in the formula means that two equations with
different numbers have different previews, which is the subject of the
bug.

The special code for saving counters in updateBuffer and outputing
them in preparePreview from 645f9fdf (ticket #6894) is removed and
replaced by this simpler approach.

This fixes ticket #11535.
2022-07-26 22:47:53 +02:00
Jean-Marc Lasgouttes
a42f7ea7cd Rename eolString() to eol() and pass a MathTeXStream parameter
This is completely equivalent, but will allow in eol() to determine
whether one is preparing a preview.

Related to bug #11535.
2022-07-26 22:21:44 +02:00
Jean-Marc Lasgouttes
01da93521d Fixup 1d08af62: unused variable 2022-07-26 00:54:54 +02:00
Jean-Marc Lasgouttes
1d08af621d Implement on screen numbering for Subequation module
The module subequation allows to number equations in the "Subfigure"
inset to be numbered (1a), (1b), (1c), etc.

To implement this on screen, we need to redefine temporarily the
"equation" counter to use this different numbering.

To this end, implement Counters::copy method that can be used to
backup full counter definitions.

Fixes bug #12567.
2022-07-26 00:49:09 +02:00
Jean-Marc Lasgouttes
f5c7acb140 Revert "Implement on screen numbering for Subequation module"
This reverts commit c6f35b6ad6.
2022-07-26 00:47:28 +02:00
Jean-Marc Lasgouttes
1fc08f57e1 Revert "Rename eolString() to eol() ans pass a MathTeXStream parameter"
This reverts commit 2db682b97e.
2022-07-26 00:46:13 +02:00
Jean-Marc Lasgouttes
7261fa9448 Revert "Reimplement support for numbering of equation previews"
This reverts commit f4da29306f.
2022-07-26 00:45:57 +02:00
Jean-Marc Lasgouttes
f0c180a29b Improve comment 2022-07-26 00:44:16 +02:00
Jean-Marc Lasgouttes
f4da29306f Reimplement support for numbering of equation previews
This patch simplifies and fixes the generation of previews with
numbering. Instead of saving the counter values (which is complicated
and error prone), the \thequation macro is set to the numbers_ string
which has been computed by updateBuffer for screen display.

Harcoding the number in the formula means that two equations with
different numbers have different previews, which is the subject of the
bug.

The special code for saving counters in updateBuffer and putputing
them in preparePreview from 645f9fdf (ticket #6894) is removed and
replaced by this simpler approach.

This fixes ticket #11535.
2022-07-26 00:19:20 +02:00
Jean-Marc Lasgouttes
2db682b97e Rename eolString() to eol() ans pass a MathTeXStream parameter
This is completely equivalent, but will allow in eol() to determine
whether one is preparing a preview.

Related to bug #11535.
2022-07-26 00:19:07 +02:00
Jean-Marc Lasgouttes
c6f35b6ad6 Implement on screen numbering for Subequation module
The module subequation allows to number equations in the "Subfigure"
inset to be numbered (1a), (1b), (1c), etc.

To implement this on screen, we need to redefine temporarily the
"equation" counter to use this different numbering.

To this end, implement Counters::copy method that can be used to
backup full counter definitions.

Fixes bug #12567.
2022-07-25 23:53:46 +02:00
Jean-Marc Lasgouttes
ad3e6c69b2 Export ' as ’ in HTML
This is similar to what LaTeX does in its output.

See the (long) discussion in ticket #11244.
2022-07-25 23:07:23 +02:00
Jean-Marc Lasgouttes
2203078111 Fix flicker due to changing metrics while selecting with the mouse
This patch has been backported from the lyx-unstable branch
https://gitlab.com/gadmm/lyx-unstable/-/commit/9d7ed42389ba

Actual author is Guillaume Munch.

Fixes bug #8951.
2022-07-25 23:04:08 +02:00
Daniel Ramoeller
f5e66ba3c2 Improved layout adoption on paste
The layout from the paste content is adopted only if
- the paragraph is empty (ie. empty after the selection has been
  erased) and Standard or Plain Layout, or
- empty and multiple lines are pasted, or
- multiple lines are pasted at the beginning of a paragraph

As for what other applications do:
- MS Word decides the adoption of a layout depending on whether the end of line
character is copied
- Libre Writer adopts the paste content layout only if the paragraph is empty
(otherwise it makes *all* pasted paragraph the target layout)

In LyX, as in Libre Writer, one cannot copy the end of line character by
selecting a single line. However, the Libre Writer solution is problematic
because one always has to make sure that a paragraph is in Standard layout if
one wants to paste several lines with their source layout. The implemented
behaviour differs from Libre Writer in that the source format is kept when end
of line characters are pasted, i.e. several lines are pasted, and hence does
what MS Word does in that situation.

Fix for bug #11023: Copy and paste from one list into another often leads to
undesired result.
2022-07-25 22:56:00 +02:00
Jean-Marc Lasgouttes
61d68d05bd Add proper extension as needed in Save as and Export
Introduce the new FileName method ensureExtension, which does the following:
* if the extension is already correct (in a case-insensitive way), do nothing.
* if it is not correct, add the extension to the file name.

This is different from changeExtension that will fail in a case where
the file contains dots, but not a real extension, like newfile2.1.

Use this new method in renameBuffer() and exportBufferAs().

Fixes bug #11008.
2022-07-25 22:52:07 +02:00
Jean-Marc Lasgouttes
7823d3b01b Fix display of bindings for StaticMenuButton
This requires to add a parameter to GuiToolbar::addItem so that it is
possble to make a difference between toolbar buttons and menu items.

The long-term solution is to rely on the menu backend for such things.

Fixes bug #12004.
2022-07-19 20:58:06 +02:00
Jean-Marc Lasgouttes
23a27e90ba Revert "Fix display of bindings for View-other-formats dynamic toolbar menu"
This reverts commit e2e7794c7e.
2022-07-19 13:36:12 +02:00
Jean-Marc Lasgouttes
e2e7794c7e Fix display of bindings for View-other-formats dynamic toolbar menu
Do it the same way as in menus. Also remove the tooltip, which is not used.

Fixes bug #12004.
2022-07-19 13:30:31 +02:00
Jean-Marc Lasgouttes
cd83386363 Disable flex-insert when inset does not exist
This is useful when adding icons to the toolbar that insert insets not
availble by default (but provided by a module).

Fixes bug #11690.
2022-07-19 12:31:50 +02:00
Jean-Marc Lasgouttes
96e7fcd4e0 When pasting as LaTeX, honor textclass and modules
There are several small parts that are needed here:

* Implement LayoutModuleList::asString() that returns a comma-separated
  list of modules.

* in Converter::convert(), handle the new tokens $$c for the current
  textclass and $$m for the list of modules.

* in Buffer::importFile(), pass the current buffer as parameter instead
  of nullptr.

* in pasteClipboardText(), copy the parameters of the current buffer to
  the internal one used for importation, so that the textclass and
  modules information is available to convert().

* finally, modify configure.py to pass "-c $$c -m $$m" to tex2lyx for
  the latexclipoard->lyx converter.

Fixes bug #11312.
2022-07-19 00:28:28 +02:00
Jean-Marc Lasgouttes
efef533d91 Fix forcing of text class for LaTeX snippets
When the input document is not a full document, make sure that the -c
is taken into account.
2022-07-18 19:40:41 +02:00
Jean-Marc Lasgouttes
2b24c03e8b Do not override (Back)Tab in Adv F&R when it is useful
In Advanced Find and Replace, Tab can be used to move the focus from
Search field to the replace field. This is inconvenient when Tab has
another use, like completion.

To fix this, check that the function bound to Tab is disabled before switching focus.

The same is done for BackTab.

Fixes bug #11114.
2022-07-18 12:02:28 +02:00
Daniel Ramoeller
3305b9301e Properly draw changed Captions
Fix for bug #12555.
2022-07-17 15:11:45 +02:00
Jean-Marc Lasgouttes
45191d04f9 Rename Row::right_boundary to end_boundary
This is more correct for RtL paragraphs.
2022-07-16 18:13:47 +02:00
Jean-Marc Lasgouttes
045aff3d9f Avoid duplicates in minibuffer history
The removal of duplicates is done in LastCommandsSection::add and uses
the erase-remove idiom for performance.

Most of the patch is a cleanup of GuiCommandBuffer:

* remove history_ member, that was a copy of the session lastcommands
  vector. Use instead a wrapper history() around it and a addHistory
  wrapper for adding new entries.

* Make sure that there is only one place where commands are added to
  history. The code used to maintain a list for interactive editing,
  and a list for saving the session. They could be different in terms
  of leading/trailing spaces.

* [unrelated] remove command_ member, which is just a copy of
  LyXAction list of commmands. Use directly lyxaction instead.
2022-07-13 19:53:08 +02:00
Enrico Forestieri
4a7a19352c Fix bug #12561
In mathed it is assumed that a labeled line is also implicitly numbered.
However, latex allows to label an equation without numbering it.
The label is then assigned the value of a nearby numbered one.
This commit drops the above mathed assumption in order to allow to import
valid latex code with a labeled but not numbered equation line.

The screen representation omits the line number and encloses the label
in square brackets for further differentiation. However, it is still not
possible to label an equation without numbering it using the GUI.
2022-07-13 19:11:03 +02:00
Jean-Marc Lasgouttes
f71a11f693 Fixup 95da2707: document getAlias. 2022-07-13 13:10:57 +02:00
Scott Kostyshak
c63e9d4caa Style 2022-07-12 17:55:04 -04:00
Daniel Ramoeller
95da270711 Check for icon aliases
The aliases are defined by a file in the (system or user) image
directory. The format is pretty simple: each line is like
  <str1> <str2>
Where every instance of <str1> will be replaced with <str2>.

Fixes bug #12509.
2022-07-12 23:35:48 +02:00
Scott Kostyshak
21eb2c4f74 Allow negative values for counters
enumi, for example, can be negative.
2022-07-09 16:40:22 -04:00
Jean-Marc Lasgouttes
2104ae8068 Fixup c30b0aac: protect against bad recursion
Adding this particular line created bad redraw interactions. See
thread on lyx-devel here:
https://marc.info/?l=lyx-devel&m=165648365808777&w=2

The code is reorganized a bit:

- the part of updateGUI() that (en|dis)abled elements is not moved to
  updateBottons ; the rest is renamed updateWorkAreas()

- only updateButtons is called now in eventFilter

- finally the recursion curse is fixed now in updateWorkAreas() by
  setting the old_buffer value _before_ calling copy_params. This
  avoid recursion if some bad update were to happen again.
2022-07-02 13:10:16 +02:00
Jean-Marc Lasgouttes
4c6dce1b0b Remove useless message (and avoid endless loop)
When changing the document class, the message "Converting document to
new document class..." is shown in minibuffer. This message leads to
weird GUI update interactions with the FindAndReplace panel, and
ultimately infinite loops. It would only be useful if the conversion
took a long time.

See this thread for rreference:
https://marc.info/?l=lyx-devel&m=165648365808777&w=2

Therefore, just remove it.
2022-06-30 12:30:01 +02:00
Jean-Marc Lasgouttes
c75522bbb7 Fix crash when dissolving a top level math inset
This should be disabled not only for math hull, but also macro template.

Fixes bug #12562.
2022-06-29 22:52:16 +02:00
Jean-Marc Lasgouttes
ae528715d3 Fix ToC action when cursor is in adv. F&R pane
This important part is the last point, the rest is what is needed to
make it happen.

* implement (FindAndReplace|FindAndReplaceWidget)::hasWorkArea, that
  tell whether a work area is own by the advanced find & replace
  widget.

* factor out method find() from GuiView::findOrBuild.

* implement GuiView::hasVisibleWorkArea, that tells whether a workarea
  is visible in the view (current tab in a split or adv. f&r
  workarea).

* Finally, in TocWidget::sendDispatch, change the current workarea
  temporarily to the document workarea before dispatching the
  function. The code tries to be as careful as possible to handle all
  cases. The future will tell whether it is good enough.
2022-06-29 11:09:14 +02:00
Jean-Marc Lasgouttes
2283440e77 whitespace 2022-06-28 23:51:09 +02:00
Pavel Sanda
6874c86cb5 Fix gcc 13 compilation.
Spotted by Jose.
2022-06-28 10:26:42 +02:00
Jean-Marc Lasgouttes
f2f0b30222 Fix line breaking thinko with Qt4
The test on whether to keep trailing spaces was inverted.
2022-06-27 16:12:02 +02:00
Juergen Spitzmueller
b7f0a90364 Amend [7efdbeaddf226/lyxgit]
We do not ship the nonfloat module, actually (I had a private copy).
2022-06-13 16:12:16 +02:00
Juergen Spitzmueller
7efdbeaddf Better UI for captions outside floats (#12554) 2022-06-13 13:22:58 +02:00
Jean-Marc Lasgouttes
ab54158447 Honor key bindings for commit string
When the commit string from the inputMethodEvent can be interpreted as
characters bound to some action, dispatch this action instead of
inserting the string.

This is useful on an international keyboard, when diaresis+space gives
a plain double quote. It is better in this case to enter a smart
quote.

Adapted from a patch from Daniel Ramoeller <d.lyx@web.de>.

Fixes bug #10377.
2022-06-13 11:22:50 +02:00
Juergen Spitzmueller
c29f31e982 Merge branch 'master' of git.lyx.org:lyx 2022-06-12 13:35:52 +02:00
Daniel Ramoeller
b2a7b715a2 Make space names more standard
Fix for bug #12547.

- "Interword" becomes "Normal"
- "Protected" becomes "Non-Breaking"

Plus a minor fixes to the "Horizontal Space Settings" dialog:
- Indicate that when "Non-Breaking" is disabled, the space will be non-breaking
2022-06-12 13:35:29 +02:00
Jean-Marc Lasgouttes
9ee952ce14 Allow to break rows before and after label and index insets
Since they are elements that do not appear in output, there is no
reason to make breaking around them difficult.
2022-06-09 21:29:21 +02:00
Jean-Marc Lasgouttes
254b2b0bfa Implement CanBreakBefore row flag
This is used for elements that allow to break a row before them
(similar to CanBreakAfter).
2022-06-09 21:27:43 +02:00
Kornel Benko
d0862d59e6 FindAdv: Remove needless functions 2022-06-06 13:18:08 +02:00
Daniel Ramoeller
d9f51be6ed Show size of named spaces in dialog
Fix for bug #12467.
2022-06-03 12:37:39 +02:00
Enrico Forestieri
0aad230154 Always validate a macro definition
If a user-defined macro appears only in the argument of another
macro its definition is not validated and this leads to errors.

Fixes bug #12524.
2022-05-31 22:17:14 +02:00
Jean-Marc Lasgouttes
e82cead90f Fix documentation of Row::splitAt 2022-05-31 17:04:20 +02:00
Kornel Benko
46c573c082 FindAdv: Use modified check to determine if char is a word-char.
Amends 652ffc9c(3)
2022-05-29 14:12:38 +02:00
Kornel Benko
5f5a43eb9e Guard 'isNumberChar()' from char outside ucs4-range 2022-05-29 14:08:36 +02:00
Kornel Benko
82af8778f1 Introduce isNumberChar(char_type) function
In FindAdv we use Qt to interpret regular expressions.
Regex uses for instance '\w', '\d' etc.
'\d' finds not just '0-9' but also e.g. '߂' (Nko Digit Two: U+07c2)
'\w' includes also such numbers.

ATM, only FindAdv uses this function.
2022-05-29 12:16:53 +02:00
Kornel Benko
0d6e3bcdc3 FindAdv: Amend 652ffc9c(2): Fix handling search for whole words if in mathed.
Didn't know, how to get char-value cursor is pointing to.
Hopefully someone knows a better way as in this patch.
2022-05-28 21:17:13 +02:00
Juergen Spitzmueller
52c5084d63 Forgot to pass third parameter 2022-05-28 20:41:56 +02:00
Juergen Spitzmueller
cd3116bbf9 Fix subfloat inset label (#11757)
This was broken at 9b7ccbfc/lyxgit
2022-05-27 09:26:40 +02:00
Kornel Benko
567d0e8fb4 FindAdv: Amend 652ffc9c: have to check inTexted() before using Paragraph 2022-05-26 17:17:49 +02:00
Kornel Benko
1ef1808c93 Amend b73ab025: Fix compilation with gcc-12 2022-05-26 14:05:49 +02:00
Kornel Benko
652ffc9c84 FindAdv: If searching for whole words, handle also the case that we are starting in the mid of a word.
In this case we skip the undesired word-characters before starting the search.

There are still some inconsistencies between LyX and Qt of 'what counts as a word-character',
but too hard to resolve.
2022-05-26 13:32:25 +02:00
Kornel Benko
bf60c61066 FindAdv: Fix expression checking for 'int' as if it were bool
Since the element 'match_len' in class MatchResult is an integer,
the check 'if (!match(...).match_len))' is changed to
'if (match(...).match_len) <= 0)'
2022-05-25 21:34:17 +02:00
Kornel Benko
df82386ce6 FindAdv: Attempt to make the code less crabbed
1.) The type of variable at_begin changes from bool to enum matchType
        true -> MatchStringAdv::MatchFromStart,
        false -> MatchStringAdv::MatchAnyPlace
2.) discard default parameter-values of
        MatchStringAdv::operator()
        MatchStringAdv::findAux()
2022-05-25 20:43:49 +02:00
Kornel Benko
d12bf6f979 FindAdv:
1.) Changed arrays dept and closes to vector-type because of runtime error in UserGuide.lyx
    with a big paragraph (size > 8900 chars) contained too many opening parentheses
2.) Removed one creation 'textcyrillic'-key because it is later anyway created
3.) Most important (thanks to Scott who found the failure)
    Move the check if the found string really is part of MATH to
    the relevant place.
    Without this change the search using 'Search only in maths' will fail miserably.
2022-05-24 23:41:31 +02:00
Juergen Spitzmueller
cd27fec2d7 BufferParams::copyForAdvFR(): include quote style 2022-05-23 14:32:01 +02:00
Kornel Benko
9e19258478 FindAdv: Do not search for accents if the command-parameter contains '\\'
The only exception are command-parameters '\\i', '\\imath' or '\\jmath'.

Example '\ddot{\\imath}'
2022-05-20 12:46:26 +02:00
Jean-Marc Lasgouttes
c6725df2db Fixup d723b903: Fix slow display of large paragraphs
When implementing multi-row string breaking, an extra createLine()
statement, which made sense in the original code, was kept by mistake.
This basically made the mechanism ineffective, because it created one
row with the correct length, plus a second one with all the remaining
text, which would have to be itself broken. This went undetected
because the display is still correct.

Additionally, this issue polluted the break cache to the extent that
the hit rate could be 0%.

Together, these two effects created a major slowdown with a document
containing a single ~30000 characters paragraph.

Fixes bug #12534.
2022-05-19 16:18:24 +02:00
Jean-Marc Lasgouttes
6dd5656a2c pmprof: fix missing output in the 100% miss case
Also update to the latest version of pmprof.
2022-05-19 11:37:51 +02:00
Juergen Spitzmueller
a77c84a0b4 Allow for several (comma-separated) PackageOptions 2022-05-19 10:31:37 +02:00
Jean-Marc Lasgouttes
32437bd59f Fixup 5f8959d4: keep cursor font when there was no selection
When toggleFree is called without a selection, the only result is to
change the cursor currentfont.

In the other cases (selection or implicit selection), we want to reset
the cursor font from the text font.

Fixes bug #12518.
2022-05-17 23:10:31 +02:00
Daniel Ramoeller
2b493ff70f Word selection on mouse motion
Partial fix for bug #9160.
2022-05-17 18:45:31 +02:00
Jean-Marc Lasgouttes
5f8959d40e Make sure that current cursor font is updated when changing font
Fixes bug #12518.
2022-05-17 12:15:58 +02:00
Juergen Spitzmueller
047004cb0f Merge branch 'master' into features/indexmacros 2022-05-14 16:29:46 +02:00
Kornel Benko
1464bd3f3f FindAdv: Amend(2) f845a4e9
Removing '\n' like in previous version with utf8-strings
This is needed e.g. for display math, which comes as
	"\n\\[\n.....\n\\]\n"
2022-05-14 14:49:52 +02:00
Kornel Benko
cd6d21ebb3 FindAdv: Amend f845a4e9
Also do not remove '\n' if in non-format-search mode. Otherwise
'\n' cannot be found with regex '\s'
2022-05-14 09:51:23 +02:00
Kornel Benko
f845a4e9a3 FindAdv: Do not handle stale empty latex commands if not in format-search mode
In non-format-search mode, we do not have any latex commands here.
2022-05-14 09:25:06 +02:00
Kornel Benko
115d6ceedd FindAdv: Don't check on '\\\\\n' if ignoring format
Since it can only happen if the lyx source contains two backslasches before
the inserted newline. And here it is the wrong case.
2022-05-14 08:56:00 +02:00
Kornel Benko
b0323628af FindAdv: Amend 6c735efb: Resolve some conflicts regex vs. math meaning of '$' 2022-05-13 12:00:47 +02:00
Kornel Benko
6c735efb1f FindAdv: In format search could '$'-char be interpreted as math-start.
To handle this case, we use '\lyxdollar' string instead.

Also try to handle '\n' in the docstring directly instead in the
string already converted to utf8.
(The utf8-version is still there, but commented out)
2022-05-13 09:30:30 +02:00
Kornel Benko
895aa9cd0f FindAdv: Remove invalid closings
If the searched area contains deleted parts, there may be more closing
as opening parentheses in latex output. We have to remove them before
further processing.
2022-05-12 13:22:21 +02:00
Kornel Benko
4b41f54575 FindAdv: Use unicode for space where possible
Search for different space-types should be done with
regular expression '\s'
2022-05-12 13:20:24 +02:00
Daniel Ramoeller
4dd1fbbce0 Use "Auto" value on cursor width spinbox
Fix for bug #12515.
2022-05-11 18:05:47 +02:00
Kornel Benko
8e256fbf0f FindAdv: Do not insert space for '\n' if there already are spaces around 2022-05-11 17:42:50 +02:00
Juergen Spitzmueller
8bf45dd3ea Shuffle and add some shortcuts 2022-05-10 13:29:51 +02:00
Kornel Benko
62ab563c25 FindAdv: Use private variable for_search
Using the new inline statements
	find_effective(), find_with_non_output(), find_with_deleted(),
	find_set_feature(), find_add_feature() and find_clean_features()
makes the code a slightly better readable.
2022-05-09 22:11:38 +02:00
Jean-Marc Lasgouttes
e6f5f428d7 Fix crash with LFUN_LAYOUT with multicell selection
This lfun (like several others) does not work with multicell
selection. Disable the lfun in this this case for now, until a nice
solution is found.

Fixes bug #12530.
2022-05-09 17:54:15 +02:00
Kornel Benko
441b0eab23 FindAdv: Amend 64af721a
The space handling is a nightmare.
2022-05-08 22:43:56 +02:00
Kornel Benko
64af721adc FindAdv: Handle normal and protected space also inside regular expression 2022-05-08 20:24:43 +02:00
Kornel Benko
286dcfc9c7 FindAdv: Correct the 'fix' in 4bb427a2
:(
2022-05-08 15:32:13 +02:00
Kornel Benko
4bb427a244 FindAdv: Amend 627cd6de: Use '~' instead of "\\ " for search if possible
Also fix a thinko in interpreting the found values.
The match_len describes the length of the second regex field,
while matchend is the length of the search field 0.
2022-05-08 14:30:45 +02:00
Kornel Benko
627cd6dec2 FindAdv: Simplify search for space also if not using regex
In the pattern-string convert occurences of
' ', '~'
and the values we get with
	space-insert normal
	space-insert protected
to "\s+".
2022-05-06 17:16:49 +02:00
Kornel Benko
70a762f91c FindAdv: Small improvements 2022-05-05 15:56:15 +02:00
Jean-Marc Lasgouttes
809a063358 Avoid crash when extending word selection
This happens when the cursor goes into a deeper inset, since
selectWord() was called on the wrong Text object.

Additionally, fix the new word selection when cursor goes before
existing selection.

Fixes bug #12529.
2022-05-05 11:13:29 +02:00
Thibaut Cuvelier
f352a375d9 InsetIndex: revamp IndexEntry to handle both legacy and modern index insets; simplify and adapt the XHTML code.
DocBook comes in another commit, as the modifications are not required to keep the code compilable.

A semicolon is no more used between an index term and the places it appears, because some languages need a space before it and others not: this wasn't handled at all. With a dash, this problem disappears.
2022-05-05 04:16:51 +02:00
Kornel Benko
9f30de3c5d FindAdv: Partly revert 02c7dbb8. Handle the space in Paragraph.cpp instead. 2022-05-04 15:59:57 +02:00
Kornel Benko
02c7dbb824 FindAdv: Better handling of lists
Still not optimal if searching different languages inside a list.
2022-05-03 16:33:53 +02:00
Kornel Benko
6a70a26a4a FindAdv: Debug messages 2022-05-01 16:03:45 +02:00
Juergen Spitzmueller
c0a3d654ff Add GUI for search-ignore 2022-04-30 14:23:54 +02:00
Kornel Benko
cbe2f61396 FindAdv: Re-add 'size' to the list of possible ignored formats 2022-04-30 09:30:15 +02:00
Thibaut Cuvelier
54a519a089 InsetIndex: simplify the implementation of the has* methods. 2022-04-30 03:23:59 +02:00
Thibaut Cuvelier
5c80671740 InsetIndex: add a method hasSubentries. 2022-04-30 03:23:59 +02:00
Thibaut Cuvelier
029d8d5839 InsetIndex: when parsing entries for XHTML, don't impose spaces around ! for subentries. 2022-04-30 03:23:59 +02:00
Thibaut Cuvelier
b5418f0d29 InsetIndex: add a few comments. 2022-04-30 03:23:59 +02:00
Thibaut Cuvelier
758792f6d6 InsetIndex: add a comment. 2022-04-30 03:23:59 +02:00
Thibaut Cuvelier
4a62c08e61 InsetIndex: refactor IndexEntry to be a full-fledged class, hiding its implementation details better than before. 2022-04-30 03:23:59 +02:00
Kornel Benko
48c069fa8a Amend a83159f0: Use logical operator ||.
Clang is not mocking here, but it looks more consistent.
2022-04-29 19:56:12 +02:00
Kornel Benko
531fed9543 FindAdv: Fix the length of leading string
We are removing leading values from the start of string, so
the size of removed data was wrong because s.find() could find
a position inside the leading part.
2022-04-29 19:23:50 +02:00
Scott Kostyshak
a83159f051 Fix Clang 14 warning -Wbitwise-instead-of-logical
Use the boolean operator '||' with bools instead of the bitwise
operator '|'.
2022-04-28 21:40:00 -04:00
Kornel Benko
769df229dc FindAdv: Avoid some duplicated code
Also handle (== ignore) \textgreek{} and \textcyrillic{} commands
2022-04-27 15:57:24 +02:00
Juergen Spitzmueller
f86c7994a5 Merge branch 'master' into features/indexmacros 2022-04-25 08:12:12 +02:00
Thibaut Cuvelier
5a53872259 DocBook: use the new system for index. 2022-04-25 02:36:35 +02:00
Juergen Spitzmueller
e6a7137a53 Mark aliases in the description 2022-04-24 16:51:42 +02:00
Juergen Spitzmueller
64ec812da5 Amend d8f540f51
Properly handle aliases
2022-04-24 16:51:16 +02:00
Juergen Spitzmueller
d8f540f51b Properly ignore debug levels in the GUI
Not only none and any, but also the aliases.
2022-04-24 14:21:56 +02:00
Kornel Benko
98cc6acd0b Amend 3b7a79f1: Use Debug::base_type instead of 'unsigned long long' where possible 2022-04-24 13:52:46 +02:00
Kornel Benko
3b7a79f137 FindAdv: Amend d09f5ce1: Added new debug level :findverbose
Fix the GUI handling for the new value using now 'unsigned long long' instead of 'int'
2022-04-24 13:27:36 +02:00
Kornel Benko
c7b6bf4519 FindAdv: Search also if layout of the searched paragraph has 'inpreamble' set
Using 'force' in call to TeXOnePar() enables the search of any string in document.
2022-04-23 20:33:47 +02:00
Juergen Spitzmueller
8917319924 Merge branch 'master' into features/indexmacros 2022-04-20 08:38:12 +02:00
Kornel Benko
e774ec1876 FindAdv: Fix search for '}'
Problem occured if
1.) not using regex and
2.) search without format and
3.) the search pattern ended with '}'.

then this last char '}' in the search pattern was discarded.
2022-04-19 23:28:27 +02:00
Juergen Spitzmueller
9318f1b338 Improve string 2022-04-19 15:12:56 +02:00
Kornel Benko
d09f5ce1d0 FindAdv, Debug: Added new debug level :findverbose
With the debug-level 'find' there are now less output.
The original output can be received now with debig-level 'findverbose'

Also constructions like
 LYXERR(Debug::FIND|Debug::FINDVERBOSE, "...");
are now possible.
2022-04-19 13:41:38 +02:00
Juergen Spitzmueller
5093e39170 Merge branch 'master' into features/indexmacros 2022-04-19 11:54:11 +02:00
Juergen Spitzmueller
7d7b21ec3e Introduce InsetIndexMacros
This adds native macros for subindexes (!level), |see and |seealso
as well as native support for ranges |( |) and pagination format
-- e.g., |textbf -- via the index dialog

Resolves #12478, #7232 and #5014

The feature is complete (incl. tex2lyx) except for

* file format change and lyx2lyx
* docbook/xhtml
* documentation
2022-04-19 11:46:08 +02:00
Jean-Marc Lasgouttes
50403c4ecf Improve selection when selecting out of inset by the left
1/ put cusror in some display inset
2/ use shift-left until the cursor exits the inset
3/ see how the selection extends on the right.

This is not really a selection drawing bug, but rather the fact that
the anchor will be normalized to the first position after the inset,
which is in the next row.

This can be avoided by using the boundary property.

See discussion in bug #12520.
2022-04-18 18:17:56 +02:00
Pavel Sanda
335f158896 * RELEASE-NOTES 2022-04-17 00:49:35 +02:00
Pavel Sanda
a4f5f245f8 forgotten bit 2022-04-17 00:38:17 +02:00
Pavel Sanda
02ffd6dd70 Allow syncing open/close status of branch inset with it's activation status.
This was kicked out by 742b39f4 (the code in inset toggle survived).
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg217311.html
2022-04-17 00:16:19 +02:00
Kornel Benko
28b206665f FindAdv: Convert '\%' in a regex to '%'
Regex contents comes from handling hullRegexp, so we
have to reverse some its handling, among others also for the char '%'
2022-04-16 15:10:33 +02:00
Kornel Benko
45756a50b4 FindAdv: Handling of '%' in searched string while not ignoring format
Difficult to decide, when to remove the sequence '%\n'.
The sequence is OK for latex output as a command separator,
but must be removed in searched string.

Alas, not all occurences are wrong. Sigh.
2022-04-15 17:09:08 +02:00
Kornel Benko
c2229d388b Find: Renamend for_searchAdv to for_serach in src/OutputParams.h
Since this variable is used by quick find too, the naming was misleading
2022-04-12 18:02:12 +02:00
Kornel Benko
8338d1032d FindQuick: Amend 4bd38d8a: Remove now unneeded code 2022-04-09 09:11:38 +02:00
Kornel Benko
4bd38d8a09 FindQuick: Handle quotes special (as in findadv) 2022-04-09 08:52:24 +02:00
Kornel Benko
801768af92 FindQuick: Amend 1f7d90d6: Add some not handled quotation marks 2022-04-08 19:59:55 +02:00
Jean-Marc Lasgouttes
7cb700bf67 Fix crash with countExpanders in Qt6
It is not a good idea to contruct a QChar from a char_type that is
really 32bits.

Use lyx::isSpace, which already catters for this case.

Since this code does not depend on qt anymore, move it to
support::countExpanders.

Get rid of Row::countSeparators, which is not used anymore.

Fixes bug #12519.
2022-04-08 12:14:41 +02:00
Kornel Benko
1f7d90d636 Find: Advanced + Quick:
Expand list of quotes to include also '» « › ‹'
Enable quick find to search for quotes too
2022-04-08 08:40:32 +02:00
Kornel Benko
aa66663364 FindAdv: Amend 58f70b9d
Consider plain-quotes, inner-quotes
1 independent if in regex or text
2 independent of quote style
3 independent of using dynamic marks
2022-04-06 19:00:20 +02:00
Kornel Benko
58f70b9da1 FindAdv: Handle search for quotes
Double quotes will be found if using the string '"' in pattern.
Single quotes needs "'" in pattern.
2022-04-05 17:04:51 +02:00
Juergen Spitzmueller
31ac9ed59f Fix indentation 2022-04-04 12:02:25 +02:00
Juergen Spitzmueller
bbf21502bf Initialize member 2022-04-04 11:43:55 +02:00
Kornel Benko
681334ce20 FindAdv: Amend 6e7fd68c: Handle InsetNoteParams::Comment too 2022-04-04 10:46:55 +02:00
Kornel Benko
6e7fd68c79 FindAdv: Allow to search in LyX-Note also if ignoring format 2022-04-03 19:03:47 +02:00
Kornel Benko
c559b69fe1 FindAdv: Amend 4125f6a9
Variables regexError and regexError only defined
when searching via QT-version >= 5
2022-04-03 18:05:15 +02:00
Kornel Benko
4125f6a9d3 FindAdv: Omit possible empty patterns
Normally this is done by the GUI, but searching for e.g. LyX-Comment
allows empty patterns.
2022-04-03 13:21:02 +02:00
Thibaut Cuvelier
26300c565f MathML: fix validity for fractions with units.
https://www.lyx.org/trac/ticket/12513

Contributed by lynx.
2022-04-03 03:00:03 +02:00
Kornel Benko
4feb6aaea9 Make clang happy
Omitting 'error: comparison of integer expressions of different signedness'
2022-04-02 17:01:02 +02:00
Juergen Spitzmueller
0ab862f942 Amend d96135a9dc 2022-04-02 12:05:18 +02:00
Juergen Spitzmueller
d96135a9dc Amend bcad19e504
Allow searching in notes and comments if non-output-content is true
2022-04-02 11:19:55 +02:00
Thibaut Cuvelier
50374e38e1 XHTML/CALS tables: create helper functions to share more code. 2022-04-02 03:34:33 +02:00
Thibaut Cuvelier
88f767e492 CALS tables: base implementation of row separators on the new code from XHTML. 2022-04-02 03:34:33 +02:00
Thibaut Cuvelier
8b9c162f51 CALS tables: fix implementation of multirow/col. 2022-04-02 03:34:33 +02:00
Thibaut Cuvelier
544adb065b XHTML tables: fix borders and implement booktabs.
https://www.lyx.org/trac/ticket/10154

Contributed by raccoon.
2022-04-02 03:34:33 +02:00
Thibaut Cuvelier
838157392a XHTML/DocBook tables: slight refactoring. 2022-04-02 03:34:33 +02:00
Thibaut Cuvelier
72f630cb8f DocBook: remove unused variable. 2022-04-02 03:34:32 +02:00
Thibaut Cuvelier
5488bebb30 XHTML/DocBook: merge code paths to generate a row in a table. 2022-04-02 03:34:32 +02:00
Thibaut Cuvelier
fa5db30d41 Remove debug output. 2022-04-02 03:34:32 +02:00
Kornel Benko
bcad19e504 FindAdv: Handle latex-output for comment-environment
Disable if in search-adv modus and not searching in not-printed contents,
enable otherwise
2022-04-01 20:14:47 +02:00
Kornel Benko
83e65161a8 FindAdv: Ignore comment-feature (but not its content)
TODO: Handle 'comment' like other features, but this needs more thinking.
2022-04-01 13:45:57 +02:00
Juergen Spitzmueller
1aa449785e Indentation 2022-04-01 11:34:26 +02:00
Thibaut Cuvelier
0ba1b68f69 DocBook: merge code duplicates for HTML and CALS tables. 2022-04-01 04:21:31 +02:00
Thibaut Cuvelier
ec01616247 XHTML/DocBook: merge code duplicates for horizontal alignment. 2022-04-01 04:01:40 +02:00
Thibaut Cuvelier
c7896cf922 XHTML/DocBook: merge code duplicates for vertical alignment. 2022-04-01 03:51:24 +02:00
Thibaut Cuvelier
7b6afb23ec MathML: fix underbraces to be stretchable.
Ticket: https://www.lyx.org/trac/ticket/12502

Contributed by lynx
2022-04-01 00:01:42 +02:00
Kornel Benko
570be4760b FindAdv: Amend a0daf5e5
1.) Completed non backslashed '{' and '}' in regex in non format-search
2022-03-31 11:39:46 +02:00
Kornel Benko
a0daf5e551 FindAdv: Optimizing
1.) Handle backslashed '{' and '}' in regex also in non format-search
2.) Simplify a complex regex in format-search
2022-03-30 22:15:22 +02:00
Kornel Benko
6888c26706 FindAdv: Amend 23fe87bf:
Write one line of code and produce 10 new errors :(
2022-03-29 18:00:13 +02:00
Kornel Benko
23fe87bfc9 FindAdv: Amend f78ddc49, Added handling of accented chars like \ddot{a}
Only important for search without format. The format search was already OK.
2022-03-29 17:25:29 +02:00
Scott Kostyshak
77fd682acb Doc for inset-forall: how to open branch insets
The functionality was mentioned, but it seems worth it to give the
command explicitly, so it is seen how "Branch:<branch name>" is used
to refer to the specific branch with name <branch name>.

Additionally, tweak a phrase in doc for buffer-forall.
2022-03-28 21:48:59 -04:00
Kornel Benko
f78ddc49ad FindAdv: Amend 93b6fe2c, forgot about uppercase greek symbols 2022-03-27 13:43:42 +02:00
Kornel Benko
93b6fe2c48 FindAdv: Use always converted latex macros
In some situation the macros are not used with their unicode
representation. For instance all greek characters are used
as \alpha, \beta, ... in the latex output.
For the search it is more convenient to use the corresponding UTF-8 codes.
2022-03-26 19:32:33 +01:00
Kornel Benko
49c52d4c8e Indentation 2022-03-22 10:43:23 +01:00
Kornel Benko
e6d998d33c FindAdv: If possible use unicode instead of math command when searching
Wrong behaviour before this commit:
Open new lyx-file
insert
	unicode-insert 0x025c 0x1d08
Open adv-find dialog
search for unicode 0x025c OK
search for unicode 0x1d08 OK
search with regex for unicode 0x025c OK
search with regex for unicode 0x1d08 ==> NOT OK (because we are searching for \textrevepsilon
	and this was mapped to 0x025c
2022-03-20 11:33:12 +01:00
Jean-Marc Lasgouttes
307a2f91ad Revert part of 503c7c16: InsetMathNest:edit resets anchor.
Fixes bug reported here:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg217265.html

1. Start a new document.
2. Start a math inset and inside put "1+2".
3. Put the cursor to the right of "+".
4. Press <Shift> + L three times. This will select the entire math inset
   (as expected).
5. Press <Shift> + R.

Before 503c7c16, the selection inside the math inset was preserved.
After 503c7c16, it is lost.

The problem is that InsetMathNest does too much for our needs and
resets the anchor (why, I do not know). Therefore, it is better to
duplicate the code.
2022-03-17 17:02:23 +01:00
Juergen Spitzmueller
b9ca608c2f Properly color red checkbox labels in validation (part of #12508) 2022-03-17 08:47:43 +01:00
Juergen Spitzmueller
a89ff030cf Amend 0f80de308c 2022-03-17 08:16:54 +01:00
Juergen Spitzmueller
0f80de308c 0 is a plausible intermediate length in positive context (#12508) 2022-03-17 08:15:09 +01:00
Kornel Benko
2e9c962a24 FindAdv: Generalize substitutions of commands to unicode inside regex 2022-03-16 13:46:24 +01:00
Kornel Benko
9bef4f9f1a Amend f8071449: Added conversion for unicode 0x2bb
Now regex using \textquoteleft works also without format search.
2022-03-15 13:01:51 +01:00
Kornel Benko
f80714497b FindAdv: Added conversion for unicode 0x2bb
In math-mode \textquoteleft was still not used as unicode
so it was not possible to find the char using regex
2022-03-15 10:35:22 +01:00
Daniel Ramoeller
f21899661a Add toggle feature for all, outer and inner borders
Fix for bug #12503.

Also some bug fixes for the set inner lines algorithm. See discussion of #12503.
2022-03-13 10:34:16 -04:00
Juergen Spitzmueller
a88f67ac60 Fix signal (#12506) 2022-03-13 10:26:26 +01:00
Jean-Marc Lasgouttes
dc502c8279 Fixup 12dfdbf0: intercept validate(), not latex()
The fake contents of the inset should be created before validate(), so
that the correct packages are loaded.
2022-03-10 17:10:17 +01:00
Jean-Marc Lasgouttes
a6db1383f5 Get rid of spelling and language marks in info inset
These are just annoying. Note that the language mark cannot currently
be specified in a layout file, but it is not clear that there is a
need for that. Therefore I used the simple and hackish way.
2022-03-10 13:35:45 +01:00
Jean-Marc Lasgouttes
12dfdbf0a3 Fix crash in InsetInfo when bindings change
This is actually a generic InsetInfo issue:

1/ the contents of the inset is computed in updateBuffer, so that it
   is available for drawing but also for latex output (think batch
   export). When it is called, it deletes the existing inner paragraph
   and replaces it by a new one

2/ metrics build a new Row object that represents to paragraph

3/ draw() relies on this information

Now, imagine that updateBuffer() is called after metrics(). This can
happen for many reasons, and does happen here (display a shortcut info
and change the shortcut file from cua to emacs).

This problem has been here forever, but is only visible now that the
(experimental) bookmark display code needs to read the underlying
paragraph id.

The solution is to compute the inset contents at metrics time. This
is done by moving the relevant code to a new standalone build() method
that is called in metrics() but also in latex().
2022-03-10 12:45:07 +01:00
Kornel Benko
498a5cd487 FindAdv: Added possibility to search also in deactvated branches
To include content of deactivated branches to the searched region
one has to use the lyx-funcion
	search-ignore non-output-content true
2022-03-10 10:51:02 +01:00
Pavel Sanda
b257e2999b Correct fix for search-ignore docs. 2022-03-08 21:51:41 +01:00
Jean-Marc Lasgouttes
d15a96d93d updateBuffer needs an undo group
Otherwise warning messages appear when loading a file that contains
missing modules, for example (which may require to adjust depths in
document).
2022-03-08 16:16:50 +01:00
Enrico Forestieri
955308de57 Amend 3f9e21b8
This avoids a compile error on cygwin.
2022-03-06 23:01:56 +01:00
Juergen Spitzmueller
1c2628b5de Do not try to access user_defined_bullet with nesting > 3
We only have 4 nesting labels available.

In the workarea, display a fallback label with deeper nesting.
2022-03-06 17:27:28 +01:00
Juergen Spitzmueller
b296941d90 Revert "Don't asssert on (too) deeply nested items"
This reverts commit 44d1756783.
2022-03-06 09:48:39 +01:00
Juergen Spitzmueller
44d1756783 Don't asssert on (too) deeply nested items
Use a fallback label instead.
2022-03-05 14:17:37 +01:00
Juergen Spitzmueller
ed2e242b1e Whitespace 2022-03-05 13:45:27 +01:00
Juergen Spitzmueller
c02fe70797 Use a more transparent lexic for bullet label functions 2022-03-05 09:00:47 +01:00
Juergen Spitzmueller
ad31043987 Remove unused function 2022-03-05 08:51:32 +01:00
Thibaut Cuvelier
ffc1976b97 Avoid copies of vectors. 2022-03-05 03:46:22 +01:00
Enrico Forestieri
8496b7dc9a Compile fix 2022-03-05 02:19:38 +01:00
Thibaut Cuvelier
422bb60a14 tex2lyx tests: set the encoding when reading a file, not all OSes default to UTF-8 2022-03-03 01:57:28 +01:00
Juergen Spitzmueller
b5b3f56abb Encoding::fromLaTeXCommand: properly record requirements when exiting early 2022-03-02 12:48:10 +01:00
Juergen Spitzmueller
0c73df6efb Revert "Adapt resulting lyx-file to amend 39c0b322 (changed tex2lyx output)"
This reverts commit 5e8969b597.
2022-03-02 12:30:16 +01:00
Kornel Benko
5e8969b597 Adapt resulting lyx-file to amend 39c0b322 (changed tex2lyx output) 2022-03-02 08:48:35 +01:00
Juergen Spitzmueller
39c0b322f7 Encodings::fromLaTeXCommand: properly set needsTermination on early exit 2022-03-02 08:11:34 +01:00
Juergen Spitzmueller
afd6e1d45e Fix indentation fix. 2022-03-02 07:11:27 +01:00
Thibaut Cuvelier
c66be94d14 Fix indentation. 2022-03-02 00:39:53 +01:00
Thibaut Cuvelier
997f0621c5 Rename LATEX debug level to OUTFILE and use it for DocBook, HTML, and XML messages. 2022-03-01 16:05:42 +01:00
Thibaut Cuvelier
1220f399a7 Use a static method instead of a method call on a global variable. 2022-03-01 03:15:30 +01:00
Kornel Benko
3002a20800 FindAdv: Add missed command after 030db93a 2022-02-28 09:53:12 +01:00
Juergen Spitzmueller
6c530e1215 Still more indentation fixes. 2022-02-28 08:04:55 +01:00
Thibaut Cuvelier
75be9b1200 Slightly simplify code by using for range. 2022-02-27 20:37:51 +01:00
Juergen Spitzmueller
9cd479a044 Clarify debug message 2022-02-27 15:12:33 +01:00
Juergen Spitzmueller
6d17c5a1d6 Another indentation fix 2022-02-27 14:53:01 +01:00
Juergen Spitzmueller
f2bd823217 Fix indentation 2022-02-27 14:45:16 +01:00
Juergen Spitzmueller
b04a930a27 Amend 8a0715d0bd
Also do not use the bb trick when exporting "nice".
2022-02-27 10:02:52 +01:00
Juergen Spitzmueller
8a0715d0bd Do not output eps bounding box for unknown/missing graphics (#8899)
Except for dvi/ps output chain for which this trick was meant.
Also, issue an error message in this case. This is analogous to
the other output flavors now.
2022-02-26 16:23:27 +01:00
Kornel Benko
de0dbfb61b Amend(2) b5d9bbfe: FindAdv: Added handling of some missing conversions 2022-02-23 18:22:16 +01:00
Thibaut Cuvelier
4cab1a77d2 Encodings::fromLaTeXCommand: if the command directly maps an entry of unicodesymbols, use it and bypass most of the logic.
This is important for commands like !`, that are equivalent to \textexclamdown. However, ! is matched earlier, because the logic works with prefixes, hence the output doesn't make sense.
2022-02-21 18:24:26 +01:00
Kornel Benko
407ae8db04 Amend b5d9bbfe: FindAdv: Added handling of some missing conversions 2022-02-21 14:52:56 +01:00
Kornel Benko
b5d9bbfecd FindAdv: Added handling of some missing conversions 2022-02-21 11:11:55 +01:00
Juergen Spitzmueller
0d7d8c37e3 Fix language direction switch issue
reported at https://marc.info/?l=lyx-users&m=164538003727435&w=2
2022-02-21 09:49:32 +01:00
Thibaut Cuvelier
cfb6f205fa DocBook, InsetFloat: avoid a potential nullptr dereference when detecting the type of table for filler content. 2022-02-20 21:31:13 +01:00
Jean-Marc Lasgouttes
bfe9818116 Make undo action no-ops when the buffer is read-only
Since the buffer cannot be modified, there is no point to record changes.
Avoids marking buffer dirty after running "inset-forall".
2022-02-20 19:48:13 +01:00
Jean-Marc Lasgouttes
a90a1aed06 Fixup cc426346: rename curs to bvcur
The name "curs" was chosen to avoid to hide the existing "cur" local variable.
Using "bvcur" makes the name easier to grasp.
2022-02-20 19:35:37 +01:00
Jean-Marc Lasgouttes
48ee2fd07b Do not call recordUndo(), lyx::dispatch handles it.
This avoids extra memory use (and would mark document dirty even if
read-only).
2022-02-20 19:33:22 +01:00
Jean-Marc Lasgouttes
3b28ac4637 inset-forall: clear selection after each action
This avoid a crash when doing
  command-sequence inset-forall Caption char-delete-forward; statistics; undo
in the user guide when a malformed selection is created.

The selection happens here because char-delete-forward will select the
caption instead of deleting it if the "force" parameter is not given.
This is a poor API IMO, it is the plain <del> action that should use a
special parameter.
2022-02-20 19:07:58 +01:00
Daniel Ramoeller
aad18e969a Combine the separation between different layouts (with same depth)
Fix for #12402.
2022-02-20 18:09:57 +01:00
Jean-Marc Lasgouttes
b365a47112 Avoid null pointer dereference
Spotted by coverity. In the real world, getInset should never return
nullptr when isInset is true.
2022-02-20 17:22:07 +01:00
Jean-Marc Lasgouttes
a900667ea1 Avoid null pointer dereference
Spotted by coverity.
2022-02-20 17:09:49 +01:00
Jean-Marc Lasgouttes
e263fe8e03 Fix unintialized variables spotted by coverity
The InsetWrap case happens in decodeInsetParaps (InsetCommand.cpp),
where the default constructor is invoked. In this case, lines was not
initialized.
2022-02-20 17:03:33 +01:00
Stephan Witt
6b0cd451fb #9287 query Standard User Defaults on mac and adjust cursor flash time accordingly 2022-02-20 13:06:54 +01:00
Thibaut Cuvelier
dec5330426 Amend 0dc7f34e: avoid using a C++20 function. 2022-02-20 02:03:51 +01:00
Thibaut Cuvelier
0dc7f34e00 unicodesymbols: parse supplementary lines to encode alternative ways to encode symbols in raw LaTeX. 2022-02-20 01:33:03 +01:00
Thibaut Cuvelier
3f9e21b826 CharInfo: allow to store several commands (both text and math) for each character.
Only the first one is returned by default with existing methods to guarantee compatibility with existing code.
2022-02-20 01:33:03 +01:00
Daniel Ramöller
df59649a18 Properly show labels from broken references in Cross-references dialog
Fix for bug #12456.

The labels are transmitted from Buffer to GuiRef by reference of refs_
in the getLabelList function. Previously, only one string was
transmitted. But I needed both the formatted string, e.g. "x enu:test"
or "Missing: enu:test", as well as the plain label, e.g. "enu:test".
The former is for the list of labels to choose from in GuiRef and the
latter for the label as shown in the line edit that contains the plain
label in order to create a new reference from it. Transmitting both is
what the pair achieves.
2022-02-19 18:14:47 +01:00
Juergen Spitzmueller
8fa7e27e7e child documents: allow inheritance of bibliography file list (#4427) 2022-02-19 14:09:59 +01:00
Juergen Spitzmueller
fcc139b06e Consider that "and" in BibTeX name lists is case-insensitive (#10465) 2022-02-19 11:58:11 +01:00
Juergen Spitzmueller
f7e8e3f10e Correct error message 2022-02-17 10:52:37 +01:00
Juergen Spitzmueller
755146287c Typo 2022-02-17 08:21:36 +01:00
Juergen Spitzmueller
266a5e04d4 InsetIndex: Some comments and indentation fixes 2022-02-17 08:19:33 +01:00
Juergen Spitzmueller
44d5676430 Report if index processor failed (#7820) 2022-02-17 07:25:00 +01:00
Juergen Spitzmueller
92aa12317e Reset font formatting of inset entries on creation (#11961) 2022-02-16 14:25:25 +01:00
Juergen Spitzmueller
6adb083384 Use copy 2022-02-16 14:24:46 +01:00
Juergen Spitzmueller
1888a2ccb5 Oops. 2022-02-16 13:17:30 +01:00
Juergen Spitzmueller
cc4de1501c More generic message
Nomencl processor can be something else than makeindex.
2022-02-16 13:16:24 +01:00
Juergen Spitzmueller
8cb7fb26d7 Fix run of index processor in the export chain (#2696)
It does not make sense to issue the index processor before the
pagination is fixed. Particularly, if (classic) BibTeX is run,
we need one or more extra LaTeX runs after that before issuing
the index processor, since the citation labels and references are
only expanded then, which might change pagination. As a consequence,
we ended up in wrong index references.

This fixes a 16 year old bug report.
2022-02-16 12:03:38 +01:00
Juergen Spitzmueller
9729b22d9e Always update buffer when language is being changed (#12481) 2022-02-15 16:17:19 +01:00
Juergen Spitzmueller
895de6f960 Whitespace 2022-02-15 12:50:25 +01:00
Juergen Spitzmueller
6fa457ddde Fix #10649 2022-02-15 10:24:39 +01:00
Juergen Spitzmueller
13f9edb770 Reset font when leaving insets while auto-inserting (fixes #12477) 2022-02-14 08:46:11 +01:00
Thibaut Cuvelier
a460097823 DocBook: use the existing unicodesymbols global table to map LaTeX ERTs to Unicode characters. 2022-02-14 03:03:22 +01:00
Enrico Forestieri
777ccce561 Fix bug #12466
Amend 109ea2be by reintroducing the command prefix that was
inadvertently removed. The prefix sets the proper environment
for latex.
2022-02-13 04:57:27 +01:00
Juergen Spitzmueller
2ab548b6f6 Fix tooltip and layout 2022-02-12 17:42:13 +01:00
Juergen Spitzmueller
b3ae129de7 Update tex2lyx tests 2022-02-12 17:11:18 +01:00
Juergen Spitzmueller
1da80d4d8f Add basic support for \DeclareMetadata
File format change
2022-02-12 17:10:34 +01:00
Juergen Spitzmueller
027545a2e6 Whitespace 2022-02-12 15:10:14 +01:00
Juergen Spitzmueller
a7c58e2ff3 Do not output hyperref option unicode with recent hyperref versions
unicode is true by default anyway, and it is now easier to opt out
via PackageOptions
2022-02-11 17:07:57 +01:00
Stephan Witt
cd995a2bc6 Avoid static members zoom_min_ and zoom_max_
Some compilers cannot use static class members by reference. std::min() and std::max() are passing parameters by const reference.
2022-02-09 10:59:18 +01:00
Jean-Marc Lasgouttes
5259b6ba62 Set a maximum value to zoom level
The minimal vamue is set to 10%, let's set the max to 1000%. This
avoids crashes when characters are too large.

The code is refactored to be more compact and the tests are more precise.

Fixes bug #12452.
2022-02-08 19:42:17 +01:00
Juergen Spitzmueller
f71f71d013 Amend 0789f2f2ae
Use getFont() which considers fonts_default_family adjustments
2022-02-07 16:21:20 +01:00
Thibaut Cuvelier
a1d297b2cc DocBook: add a TODO for a newly discovered bug. 2022-02-07 04:49:32 +01:00
Thibaut Cuvelier
35588958ea DocBook: in ERTs, allow the use of \string. 2022-02-07 04:47:40 +01:00
Thibaut Cuvelier
f6edfaa151 DocBook: refactor ERT recognition as a map, add many coded letters. 2022-02-07 03:25:51 +01:00
Thibaut Cuvelier
cd82b125d1 DocBook: in ERTs, recognise \oe. 2022-02-07 01:02:19 +01:00
Thibaut Cuvelier
812ce48e78 DocBook: in ERTs, recognise calls to the logos (as in InsetSpecialChar). 2022-02-07 00:27:58 +01:00
Daniel Ramoeller
122b452b20 Display manually set itemize symbols
Display manually set itemize symbols and their size in the work area.

Fix for bug #2277.

Also fixes a problem with document settings changed() not correctly emitted.
2022-02-06 17:58:50 +01:00
Juergen Spitzmueller
d66c27de66 Don't set open_font to false if lang hasn't been closed 2022-02-06 10:02:17 +01:00
Thibaut Cuvelier
643cbfe557 DocBook: don't force outputting an <abstract> when it would only contain comments.
Before this patch, LyX would forcibly create an <abstract> tag even when there was no abstract in the document; this behaviour is sometimes desirable, but not when the abstract only contains comments (that's not valid DocBook: there must be a paragraph or assimilated within the abstract).
2022-02-06 06:45:01 +01:00
Thibaut Cuvelier
34ea4080ec DocBook: support @ in index when used for sorting. 2022-02-06 06:23:53 +01:00
Thibaut Cuvelier
1eb19cb8e3 Amend 109ea2be4a
The Windows code wasn't adapted when a variable was renamed (unlike the Linux one).
2022-02-06 05:35:07 +01:00
Juergen Spitzmueller
28dd7b7de3 Do not set open_font true if none was open 2022-02-04 17:24:16 +01:00
Juergen Spitzmueller
cc4ed5e04b Do not try to pop from an empty stack 2022-02-04 17:23:52 +01:00
Jean-Marc Lasgouttes
b6010badfa Oops ! fixup 8c047143ef 2022-01-28 20:16:38 +01:00
Jean-Marc Lasgouttes
8c047143ef Code cleanup in GuiCompleter
processUpdateFlags does nothing if the update flags are None==0.
2022-01-28 19:49:53 +01:00
Pavel Sanda
33c68d7750 Revert 65b674ba4e.
We do not for what crash was this fix intended, but we know
that the fix introduced freeze in xhtml exports (e.g. merged manual).

https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg216835.html
2022-01-28 18:12:45 +01:00
Jean-Marc Lasgouttes
f400a2cfa9 Force redraw after completion
Inside a math inset when completing macro names, it could lead to crashes.

Note that this processUpdateFlags is present when outside of this if() branch.
2022-01-28 17:13:30 +01:00
José Matos
79a2ac575c Replace $${python} directly in the converter constructor 2022-01-27 18:32:57 +00:00
José Matos
b73ab0256d Fix compilation with gcc-12 2022-01-27 15:37:45 +00:00
Jean-Marc Lasgouttes
2da183bf4f Check layout type when inserting inset over selection
When inserting inset over a selection, the layout is transferred if
the inset covers full paragraphs.

This is not the right policy in the case of environments. Until proper
code is written and tested, limit ourselves to command layouts.

Fixes bug #12251.
2022-01-24 19:24:52 +01:00
Jean-Marc Lasgouttes
6c98ac5a7b Fix breaking of MANUAL_LABEL paragraph when label is too long
Typical example is a Labeling layout which label is an inline equation
larger than the screen. Before this commit, the row would not get
broken at all.

Two parts in the patch:

1/ when breaking the row in shortenIfNeeded, mark the last element as
   AlwaysBreakAfter instead of BreakAfter, in case the next element is
   NoBreakBefore.

2/ when nothing could be done, as last resort keep the first element
   of the row only.
2022-01-23 21:21:25 +01:00
Kornel Benko
f8f86a1a81 Next runtime messages to be ommitted if compiled with clang using flag '-fsanitize'.
Prevent the return of impossible values for 'enum flags'.
For instance the result of '~Update::Force' at src/BufferView.cpp:3025 without this patch
is '4294967293'.
2022-01-23 20:13:26 +01:00
Jean-Marc Lasgouttes
ec3a44fef5 brkstr2str_pos: avoid case where length is negative
The string that Qt sees is not the original string, since we add
zero-width nonbreaking spaces around it, plus an override character to
force rendering direction. This means that translating positions
between these two representation can be a bit tricky.

We use a max(foo, 0) here to make sure that our intermediate
computation is postive.

Fixes part of bug #12452.
2022-01-23 19:34:11 +01:00
Juergen Spitzmueller
942538c02d Fix bug 12459
When checking for branch color, take into account that some branches
are defined in the master document only, some only in the child.
2022-01-22 09:30:25 +01:00
Kornel Benko
2764ed20c2 Omit runtime messages if compiled with clang using flag '-fsanitize'.
Setting sufficiently high value allows to use
ColorCode enums for new up to 32000 branch insets.
Previous setting printed messages if using more than 25 new branch insets.
"'ColorCode' ... src/Color.cpp:435:10: runtime error:
load of value 128, which is not a valid value for type"
2022-01-21 11:02:09 +01:00
Jean-Marc Lasgouttes
a64244b844 Fixup 7485225c: better placement of deph bar
Fixes #12243.
2022-01-20 21:51:51 +01:00
Jean-Marc Lasgouttes
da3c3796ee Make LABEL_MANUAL label breakable when larger than the screen.
This is what the situation was in 2.3.X.
2022-01-17 18:27:25 +01:00
Jean-Marc Lasgouttes
6f7505300e When clearing a row, always clear the whole text area width
It is not a good idea to take into account the horizontal scrolling
that may have happened. For example, this leads to display glitches
when a Description label is larger than text width.

This explains why SingleParUpdate strategy did not work with home/end
on a long row.
2022-01-17 17:35:12 +01:00
Jean-Marc Lasgouttes
4f158ecfc8 Fix computation of LABEL_MANUAL label separation
The spacing of Labeling, Description and friends shall be computed
when breaking the row, not when tokenizing it. Indeed, this is the
right place to determine its correct value.

To this end add a new MARGINSPACE row element type.

This allows to remove TextMetrics::labelEnd, which is not used anymore.
2022-01-17 17:35:12 +01:00
Jean-Marc Lasgouttes
c638caddd8 Compilation fix for Qt4 2022-01-13 19:35:12 +01:00
Jean-Marc Lasgouttes
854fbc5262 Revert "Add UI for selecting backing store drawing strategy"
The need for this variable is too rare to deserve being exposed in UI.

This reverts commit a3fd3a09f1.
2022-01-13 17:09:42 +01:00
Jean-Marc Lasgouttes
61d062633c Better handling of trailing spaces in rows.
When a string is broken at the margin by the Qt algorithm, the space
at which breaking occurred is automatically skipped in width
computation. However, the ending space of the string is taken into
account and is visible for example at paragraph end.

When the trailing space is followed by a displayed inset, then the
space should be skipped too, which means that the width of the last
row element has to be recomputed. For the sake of performance, the
width of the element without trailing spaces is computed in advance in
FontMetrics::breakString.

This "no space" width will be used when trimming a row element of its trailing
spaces instead of the original one.

Additionally, do not trim trailing spaces when the row is flushed.

Fixes bug #12449.
2022-01-13 16:49:59 +01:00
Stephan Witt
678ab325c0 #12423 fix a focus change problem
The search widget triggers a showEvent() in updateTitle() leading to setting the focus to the default push button.
The check in updateTitle() for the need to restore the title avoids superfluous show events and avoids the unwanted focus change.
2022-01-09 22:33:43 +01:00
Stephan Witt
22045e455a #12434 add GUI debug messages for pinch-to-zoom gesture 2022-01-09 12:29:23 +01:00
Daniel Ramoeller
7134ebd793 Pinch to zoom fix
Amendment to fix for #12434.
2022-01-09 12:29:23 +01:00
Jean-Marc Lasgouttes
65394e1907 fix file name 2022-01-08 23:03:50 +01:00
Stephan Witt
d9b9307d14 #12451 Adjust color cache on change of dark/light mode 2022-01-05 08:26:45 +01:00
Jean-Marc Lasgouttes
d44c63e2c6 Set current cursor font when toggling emphasize
The change actually works for all font toggling with implicit selection.

Fixes bug #12450.
2022-01-04 18:58:55 +01:00
José Matos
109ea2be4a Add new placeholder $${python} to configure
This ensures that we use a consistent Python interpreter in LyX.

$${python} is replaced by the Python version found.

Users can apply this in preferences and use the same version defined by
LyX.
2022-01-04 00:21:34 +00:00
Scott Kostyshak
13a7269b9d Change LFUN arg from "zoom" to "zoomlevel"
This change is just to be more specific, to help when grepping and
reading.

The idea is from Daniel
(https://www.lyx.org/trac/ticket/12420?replyto=11#comment:11).

Amends cc787967 (and thus 49a17aaa).
2022-01-03 15:57:35 -05:00
Stephan Witt
11d42ac3df Remove temporary code comment. 2022-01-03 10:44:02 +01:00
Stephan Witt
d432403430 #12434 add event handler for pinch-to-zoom gesture 2022-01-03 07:37:03 +01:00
Enrico Forestieri
d4cfa5204c Fix bug #12447
Due to a thinko at 1fe75ae7 the code was not using the correct index.
2022-01-02 18:49:44 +01:00
Stephan Witt
df990b1027 Guard new code for builds with OS X 10.11 SDK and lesser (part 2). 2022-01-01 18:47:57 +01:00
Stephan Witt
718b735dfe Guard new code for builds with OS X 10.11 SDK and lesser. 2022-01-01 18:46:32 +01:00
Stephan Witt
47c92834df Correct white space. 2022-01-01 16:37:07 +01:00
Stephan Witt
2125863874 Qt6 QFontDatabase is a pure static class. Call the member functions directly. 2022-01-01 10:06:07 +01:00
Juergen Spitzmueller
64a60c72ea GuiGraphics: disable "Read from file" button if the values do not differ 2021-12-31 14:32:59 +01:00
Juergen Spitzmueller
8f3fdafd9e GuiGraphics: check more carefully whether we have a changed BB 2021-12-31 14:32:13 +01:00
Juergen Spitzmueller
ec722f3a48 GuiGraphics: read the BB values also for new graphics
that aren't in the cache yet.
2021-12-31 14:30:09 +01:00
Jean-Marc Lasgouttes
0789f2f2ae Fix font inside footnote inset
An inset that resets its font (like Footnote) does not care at all
about enclosing font. Therefore the real starting point is the class
default font. This avoid cases where the footnote contents is forced
to \normalsize.

It turns out that the Greyedout note inset, did inherit font but was
declared as not doing it. This commmit changes the definition by
adding \normalfont\normalsize so that no inheritance happens.

Note that actually \normalfont resets everything but the font size.
This does not matter for footnote (which has its own font size) and
greyedout (which is fixed now), but may matter elsewhere. Also, I do
not know what the situation with HTML is.
2021-12-31 13:40:53 +01:00
Scott Kostyshak
4bdb1ca4c2 Add comment regarding fsanitize + Clang issue
We could not figure out the root issue, or at least not to the point
where we felt changing this code considering we could not trigger
any bug from a user perspective.

For now, we just add a comment in the code.

For more information, see our ML discussion here:

  https://www.mail-archive.com/search?l=mid&q=20211227113249.53bf5a63%40admin1-desktop
2021-12-30 11:39:04 -05:00
Juergen Spitzmueller
095e533be9 Fix language environment with environments at inset begin/end (#12352) 2021-12-29 16:07:40 +01:00
Stephan Witt
f22c5c3c3f Remove unused local variable 2021-12-29 15:33:44 +01:00
Juergen Spitzmueller
0f2d711f34 Fix TOC filtering with slashes (#12359)
Seems the * wildcard does not match these.
2021-12-29 14:43:52 +01:00
Jean-Marc Lasgouttes
dbd33f6622 When row if empty, set endpos correctly. 2021-12-28 18:48:55 +01:00
Juergen Spitzmueller
d1761d7652 Style 2021-12-28 09:42:31 +01:00
Scott Kostyshak
9ffca92930 Allow toggling of Zoom elements without buffer
The elements are shown without a buffer so it's nice to be able to
toggle without one as well.
2021-12-27 13:43:19 -05:00
Daniel Ramoeller
eae56b1194 Hide the zoom in the status bar from the status bar context menu
Fix for #12420.
2021-12-27 13:43:19 -05:00
Jean-Marc Lasgouttes
7ab3c59f00 Typo 2021-12-27 19:38:10 +01:00
Juergen Spitzmueller
a7905c5b96 Do not protect \\ as of LaTeX 2021/06/01 2021-12-27 16:32:12 +01:00
Juergen Spitzmueller
6ac60832e5 Add FIXME 2021-12-27 12:09:02 +01:00
Juergen Spitzmueller
a5b7eeacaa Remove remaining math cprotection test.
We'll see if someone comes up with a reproducible case, and if so,
whether ordinary protection works here as well.

See #6243
2021-12-27 11:52:25 +01:00
Juergen Spitzmueller
582fe0990f \protect xymatrix in fragile context
(\cprotect'ion not needed then).
2021-12-27 11:42:30 +01:00
Juergen Spitzmueller
596b2d16ee \protect substack in fragile context
(\cprotect'ion not needed then).
2021-12-27 11:37:59 +01:00
Juergen Spitzmueller
3e4c831f1e Remove obsolete \cprotect'ion (#6243) 2021-12-27 10:24:58 +01:00
Jean-Marc Lasgouttes
542445d07d When pasting text, keep line breaks when "parbreak is newline"
This is much easier for listings, ERT or Verbatim.

Fixes bug #8026.
2021-12-26 20:22:01 +01:00
Thibaut Cuvelier
51e92a5a97 DocBook: more explicit comment. 2021-12-26 02:26:50 +01:00
Thibaut Cuvelier
4c27a7307e Amend c734504d to fix a very bad nullptr dereferencing... 2021-12-26 02:24:06 +01:00
Thibaut Cuvelier
81274c8da7 Remove code that has been commented out for a long time. 2021-12-26 02:14:49 +01:00
Thibaut Cuvelier
c734504d3b DocBook: in InsetFloat, detect the presence of a caption by generating it.
This catches the case where the caption only contains a comment, as in export/export/latex/lyxbugs-resolved/cprotect/9313-comment-in-figure-float-caption. No duplicate work is performed to ensure the same level of performance as before.
2021-12-24 01:08:24 +01:00
Kornel Benko
942121f4b6 FindAdv: Added handling of some missing Hebrew characters 2021-12-21 14:16:49 +01:00
Juergen Spitzmueller
c2f2ba57f1 Do not repeatedly call main_font_encoding()
This method impacts on performance and we store the value anyway in
the output params.
2021-12-20 12:09:12 +01:00
Juergen Spitzmueller
61b8afd893 Paragraph::needsCProtection(): use inset list
rather than checking each pos whether it's an inset or not.

This was a significant performance bottleneck (particularly getInset()
itself seems slow).
2021-12-19 15:39:49 +01:00
Jean-Marc Lasgouttes
a3fd3a09f1 Add UI for selecting backing store drawing strategy
The checkbox is hidden when backing store is enforced (wayland,
macOS). In practice, only X11 and Windows users will see it ; I only
have evidence of X11 people needing it, I can hide it for Windows
users too if necessary.

Fixes bug #12119.
2021-12-17 15:16:35 +01:00
Jean-Marc Lasgouttes
c213eb7f75 Add lyxrc option to force the use of backing store
LyX relies on a a backing store to draw when running under macOS or
Wayland, because Qt arbitrarily overwrites parts of the workarea
before we paint (and we paint only the parts that need to be painted).
However it seems that this is also necessary on X11 when the WM theme
is translucid. Since there is no way that I know of to detect this
situation, this patch adds a LyXRC setting to manually select this
drawing strategy.

Note that using a backing store is not always a good solution, since
this disables subpixel aliasing.

At this point there is no UI for the variable.

Fixes bug #12119
2021-12-17 10:38:28 +01:00
Scott Kostyshak
056ab33f48 Amend bea7ef04e (find's auto-wrap by default)
The default in the .ui is not considered in
GuiSearchWidget::restoreSession(), which sets a hard-coded default
if the stored setting is not found in the session file.

I'll start an ML discussion for whether the code in restoreSession()
should use the ui's default if the setting is not found in the
session.
2021-12-15 20:51:50 -05:00
Jean-Marc Lasgouttes
62ad205dbf Avoid duplication of words on screen
When giving up splitting a word sequence because it is not enough to
make the row short enough, make sure to clean up properly.
2021-12-15 11:19:18 +01:00
Stephan Witt
4665baac46 Fix an overloaded-virtual warning for type mismatch of event parameter (Qt6) 2021-12-09 21:59:23 +01:00
Jean-Marc Lasgouttes
dcef1a9cad Fix endless loop when breaking text
For some reason, Qt can break strings before the first character
(although we try to prevent that). The code was not prepared to that,
now it is.

Remove a forgotten debug statement.
2021-12-09 16:56:09 +01:00
Thibaut Cuvelier
7513d88350 MathML: remove redundant mrow in InsetMathScript.
https://www.lyx.org/trac/attachment/ticket/12221/0006-amends-to-a579128c-a68e9793-a68e9793.patch by lynx
2021-12-08 02:11:48 +01:00
Thibaut Cuvelier
d1daa092f6 MathML: share some code for XArrow. 2021-12-08 02:02:46 +01:00
Thibaut Cuvelier
e5eef14414 MathML: refactor the XArrow mappings as maps. 2021-12-08 02:02:46 +01:00
Thibaut Cuvelier
f0bf41f574 MathML: allow XArrow to stretch.
Based on https://www.lyx.org/trac/ticket/12221#comment:10
by lynx
2021-12-08 02:02:46 +01:00
Stephan Witt
0e0b76a76e Restore correct version check for AA_UseHighDpiPixmaps - amend change ae56fb6171 2021-12-07 23:01:47 +01:00
Jean-Marc Lasgouttes
2fd8b6fc2a Fix the way the top and bottom selection are drawn
When a selection extends on more than a row, the space between the two
rows should always be painted in full. Otherwise, with layouts like
Chapter, the "Chapter" label may seem selected in part.
2021-12-07 18:15:01 +01:00
Jean-Marc Lasgouttes
572b06d640 Increase metrics cache maximal size
Increase the maximal size of the breakString cache (to compute where
to break lines) from 512kB to 10MB. This has a big impact of cache
hits on large file like the example in #12297, which is now 99%. On
this example the time taken by breakString decreases from 33.5us to
2.4us.

The string width cache has been increased fro 512kB to 1MB, but this
does not make such a big difference.

Additionally, comments and variable names have been improved.

Related to bug #12297.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
5966d4fb8d Improve row flushing
Add new row flags Flush and FlushBefore to let insets indicate whether
they cause flushing of current row (eg. newline) or of previous row
(e.g. display insets).
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
a06f0e48ec Simplify setting of RTL in rows
Set RTL status at row creation, which allows to remove a parameter from
cleanupRow.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
d723b90344 Break multi-row strings in one pass
Replace FontMetrics::breakAt, which returned the next break point,
with FontMetrics::breakString, which returns a vector of break points.
To this end, an additional parameter gives the available width for
next rows.

Rename various variables and methods accordingly. Factor the code in
breakString_helper to be more manageable.

Adapt Row::Element::splitAt to return a bool on sucess and provide
remaining row elements in a vector. The width noted above has been
added as parameters.

Rename the helper function splitFrom to moveElements and rewrite the
code to be more efficient.

Remove type of row element INVALID, which is not needed anymore.

The code in TextMetrics::breakParagraph is now much simpler.

In Row::finalize, remove the code that computed inconditionnally the
current element size, and make sure that this width will be computed
in all code paths of Row::Element::splitAt.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
71c2e2fda6 Add operator<< for Row::Elements
This is useful for debugging.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
4b69f5efa7 Fix setting of row pos/endpos (overlapping rows)
In TextMetrics::breakParagraph, get rid of the fragile `pos' local
variable, which was not correctly updated. Rely on the endpos of the
last element in row instead.

Rewrite cleanupRow to rely on the endpos of last the row element to
set row endpos, instead of a `pos' parameter.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
4120635185 Get rid of need_new_row boolean in breakParagraph
Instead of having breakParagraph decide when breaking a row is
necessary, let Row::shortenIfNeeded set the row_flag of the last
element to request a row break. This was already done in splitAt.

This is in preparation of splitAt splitting in more than two elements.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
ef6dfe18c2 Centralize the code that removes trailing spaces from end row element.
Move to Row::Element::rtrim the code in Row::shortenIfNeeded that
removes trailing spaces from last element in row, so that it can be
called when actually breaking a row.

Fixes bug found by Kornel.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
6e6976fbc5 Handle the case where breakAt cuts after trailing space
In this case, the extra element returned should empty but valid. The
row flag BreakAfter is set to indicate that we have a break there
(this principle will be used more generally in a forthcoming commit).

To detect that we cut at the trailing space, it is necessary to rely
on the difference between QTextLine::horizontalAdvance() and
QTextLine::naturalTextWidth() when the flag
QTextOption::IncludeTrailingSpaces is used: the trailing space is
taken into account in the later, but not in the former.

Somme comments have been added to make code intent clearer.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
6bc50fea3a Workaround for Qt 4
At least with Qt 4.8.7 on Ubuntu 16.04, QTextLine::lineWidth() can
return a bogus value, at least with Courier font. One hypothesis is
that the invisible characters that we use in breakAt_helper are given
a non-null width.

Work around it, although the exact bug has not been pinpointed.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
d694701315 Last step of transition: use sortenIfNeeded again.
Change semantics of Row::shortenIfNeeded: instead of breaking the row
and returning a boolean, it returns the list of row elements that have
been removed (or broken) from the row. The logic of the method remains
the same.

Use shortenIfNeeded in breakParagraph. This was the last missing block.

Remove Row::breakAt and the old breakRow. Only bugs remain now :)
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
0ea1807a52 Implement handling of row_flags for row breaking
To this end, add the helper function needsRowBreak which computes the
effect of two consecutive row flags. This function implements the
priorities described in RowFlags.h.

This function is called with the relevant flags, or NoBreak* when at
boundaries and updates need_new_row.

Some common code is factored in a new cleanupRow() helper.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
890fcc0872 Change the way the element's width is updated.
Remove the code that computed the width every 30 characters (yay!).
Make sure that finalizeLast() is called after inserting a row element in
a row in breakParagraph.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
49115315ea Introduce helper template to simplify breakParagraph code
This is a semi-generic iterator for iterating over a container and
pretend that we add elements to it along the way.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
df688126ca A set of easy fixes and missing features
* show changebar when end of paragraph is changed.

* when row is finished, set endpos and right_boundary

* handle bidi.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
0a18a4e763 Use the new tokenizing and breaking code instead of breakRow. 2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
ef88e31a1f Break the paragraph's big row according to margins
Still many features missing:
- handle insets that break rows (display math, newline, ...)
- handle rows that are too long by replacing the single call to
  breakAt with a call to a reworked Row::shortenIfNeeded.
- some easy things at the end of breakRow (bidi text, etc.).
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
963a0aa466 Implement Row::Element::row_flags
Move the enum definition RowFlags in its own include file, to avoid
loading Inset.h. Document it more thoroughly.

Rename RowAfter to AlwaysBreakAfter.

Add CanBreakInside (rows that can be themselves broken). This allow to
differentiate elements before bodyPos() and allows to remove a
parameter to shortenIfNeeded().

Make the Inset::rowFlags() method return int instead of RowFlags, as
should be done for all the bitwise flags. Remove the hand-made bitwise
operators.

Set R::E::row_flags when creating elements.
* INSET elements use the inset's rowFLags();
* virtual element forbid breaking before them, and inherit the *After
  flags from the previous element of the row;
* STRING elements usr CanBreakInside, except before bodyPos.

More stuff may be added later.
2021-12-07 17:04:47 +01:00
Jean-Marc Lasgouttes
f4d3702d4d Create new method TM::tokenizeParagraph
This contains large parts of breakRow, but creates a unique row for the paragraph.

The parts taken or not in redoParagraph are annotated.

The new method is not used yet.
2021-12-07 17:04:46 +01:00
Jean-Marc Lasgouttes
a558f78aa5 Small Row cleanups
Move declaration of RowList to Row.h

Move initialization of POD members of Row and Row::Element to declaration.

Make method isVirtual() depend on type.

Add new row element type INVALID and method isValid()

Make methods R::E::left/right_pos inline.

Add method R::E::splitAt() that returns an element containing the
remaining stuff, or an invalid element if nothing was split. breakAt
is now a simple wrapper around this function.

Add method R::push_back().
2021-12-07 17:04:46 +01:00
Jean-Marc Lasgouttes
1831f6caac Change FontMetrics::breakAt to return a position
Since we intend to break the row element in two, it is not good to
truncate the string too early.

Moreover, the row element width is now set at this point, even if no
breaking occurs.
2021-12-07 17:04:46 +01:00
Stephan Witt
ae56fb6171 Qt6 pixmaps are always HiDPI - avoid deprecate warning for setAttribute 2021-12-07 10:02:05 +01:00
Thibaut Cuvelier
489bf46a03 DocBook: recognise Tufte's float types (margin*). 2021-12-05 22:54:51 +01:00
Thibaut Cuvelier
bea2abf6eb InsetMathHull: fix column alignment for MathML.
https://www.lyx.org/trac/attachment/ticket/12221/0005-mathmlize-mathhull-checks-for-alignment.patch by lynx
2021-12-05 20:11:47 +01:00
Thibaut Cuvelier
a81dd6518a MathStream: better order for the calls to tab() and cr().
Part of https://www.lyx.org/trac/attachment/ticket/12221/0006-amends-to-a579128c-a68e9793-a68e9793.patch by lynx.
2021-12-05 19:15:06 +01:00
Thibaut Cuvelier
115ff2fa3c Similar fixes as 946ba7781c 2021-12-05 18:54:05 +01:00
Thibaut Cuvelier
946ba7781c Amend a68e9793: duplicate tag delimiter end. 2021-12-05 18:48:27 +01:00
Juergen Spitzmueller
31146ae8d3 Prevent Outliner crash due to emptied toc value
This might need a more profound fix in the long term, see
https://marc.info/?l=lyx-devel&m=163588729224679&w=2
2021-12-04 17:53:03 +01:00
Jean-Marc Lasgouttes
5eecfa3e04 When inserting text character in mathed, group in same \text when possible.
When inserting € in a math cell, it is put in a text inset and the
cursor leaves the inset. However, inserting ¤ then leads to
\text{€}\text{¤}.

Therefore, try to see if there is a previous \text inset that can be
recycled and insert the new inset there in this case, leading to
\text{€¤}.

Fixes bug #11979.
2021-11-28 14:33:45 +01:00
Daniel Ramoeller
e522c5444e InsertTableWidget support for dark mode and improved resizing
Fix for bug #12438.
2021-11-26 09:51:21 +01:00
Juergen Spitzmueller
a9eb3c9990 Whitespace 2021-11-25 18:47:23 +01:00
Juergen Spitzmueller
5a6498c3d3 Let paragraph::requestSpellcheck() consider contained insets
if "check whole paragraph" has been requested.
2021-11-25 17:04:58 +01:00
Juergen Spitzmueller
e366dba9bf Factor out Buffer::requestSpellcheck() function 2021-11-25 17:04:17 +01:00
Jean-Marc Lasgouttes
4dec64dba4 gzstream is able to read uncompressed files too
This allows to simplify the code in Lexer and to remove the dependency
on Formats class.

As a consequence, a pair of dummy definitions of isZippedFile can be removed.
2021-11-24 11:44:53 +01:00
Jean-Marc Lasgouttes
2311f42f41 Make primary-selection unknown when not supported
This lfun will not appear in menus anymore in macOS and Windows.

Part of bug #12436.
2021-11-22 10:30:43 +01:00
Jean-Marc Lasgouttes
b0983e1c5a Fixup 3aab9ad2: improve UndoGroupHelper docs again. 2021-11-14 19:14:31 +01:00
Jean-Marc Lasgouttes
741d055eba Fixup 1cbbe5c3: fix scrollbar with page down
It turns out that the fix was not correct. The right thing to do is to
recompte metrics only when screen has moved.

Fixes bug #12144.
2021-11-13 19:24:05 +01:00
Jean-Marc Lasgouttes
3aab9ad25e Fix documentation of UndoGroupHelper 2021-11-12 16:49:01 +01:00
Juergen Spitzmueller
16ce82d4f9 Fix Bullets panel (#12429) 2021-11-12 16:40:46 +01:00
Kornel Benko
20fd104cf2 FindAdv: Added handling of 0x019b 2021-11-12 13:29:22 +01:00
Juergen Spitzmueller
a90c5f202e Fix crash when closing LyX with open Search pane 2021-11-05 14:50:39 +01:00
Juergen Spitzmueller
1e711f902a Address Qt6 deprecation warnings 2021-11-03 17:41:41 +01:00
Juergen Spitzmueller
b60853ff0d Fix most stupid thinko of mine 2021-11-03 12:35:38 +01:00
Juergen Spitzmueller
de637cdbcb Amend 59b8c209c4
QFontMetrics::width() is no longer valid in Qt6
2021-11-02 16:28:40 +01:00
Daniel Ramoeller
59b8c209c4 Use labels for zoom slider buttons
Fix for bug #12301.

Also: fixes the width and alignment of the zoom value label.
2021-11-02 08:43:59 +01:00
Juergen Spitzmueller
bca1b63d89 Update toolbar and properly reset focus when find widget is closed (#12396) 2021-11-01 14:21:34 +01:00
Juergen Spitzmueller
455ff6fee7 More indentation correction 2021-11-01 14:15:05 +01:00
Juergen Spitzmueller
b9a9234cf6 Amend ce8b4e3a21 2021-11-01 13:08:16 +01:00
Juergen Spitzmueller
76ac4d8f8d Fix indentation 2021-11-01 13:02:05 +01:00
Daniel Ramoeller
a71c7f2154 Make color description "changed" rather than "added"
Fix for #12227 (regression).

Amended by Jürgen Spitzmüller
2021-11-01 12:47:11 +01:00
Juergen Spitzmueller
4888414f27 Attempt to fix #12226 for good 2021-11-01 08:30:41 +01:00
Juergen Spitzmueller
f3d5a95bb2 Redraw all work areas while zooming (#12334) 2021-10-31 13:43:27 +01:00
Juergen Spitzmueller
4c0caf9dd4 Polishing 2021-10-31 13:16:20 +01:00
Daniel Ramoeller
c50f40b522 Set Local Layout tab stop distance to 4
Fix for bug #12395.
2021-10-31 13:15:14 +01:00
Daniel Ramoeller
ce8b4e3a21 Movable minimised Quick Search Widget
Fix for bug #12207.
2021-10-31 13:06:36 +01:00
Daniel Ramoeller
528eee0a25 Adjust spacing of Quick Find Dock
Fix for bug #12209.

(amended by Jürgen Spitzmüller)
2021-10-31 12:33:08 +01:00
Juergen Spitzmueller
f0126b9fdf \\noindent in a paragraph that starts with \\vspace is possible
But the \\vspace must precede \\noindent (the latter leaves vmode)
2021-10-31 11:56:53 +01:00
Daniel Ramoeller
96a4dd235e Fix for bug #11974
Support for setUnifiedTitleAndToolBarOnMac (unify toolbar and title bar).
2021-10-31 10:42:14 +01:00
Juergen Spitzmueller
fbc64ea7ee Amend comment 2021-10-31 10:38:52 +01:00
Juergen Spitzmueller
456a72b62a Do not output \\noindent for paragraphs starting with a vspace
These are not indented anyway, and the extra \\noindent causes whitespace
2021-10-31 10:22:11 +01:00
Juergen Spitzmueller
18a91852e1 Properly terminate \\noindent 2021-10-31 09:58:10 +01:00
Juergen Spitzmueller
633013453e Factor out Paragraph::isPartOfTextSequence
Amends 045c25cf76
2021-10-31 09:26:57 +01:00
Juergen Spitzmueller
045c25cf76 Prevent unneeded (and wrong) \noindent
* When a paragraph is logically empty (only contains stuff which is not
  part of the text sequence

* In centered paragraphs
2021-10-30 14:19:46 +02:00