Commit Graph

28927 Commits

Author SHA1 Message Date
Thibaut Cuvelier
1b09bc965d InsetMathBox: remove debugging code. 2023-01-09 01:11:52 +01:00
Thibaut Cuvelier
24cda9e94a Amend 2d56c01dcf 2023-01-08 22:51:01 +01:00
Thibaut Cuvelier
2d56c01dcf InsetIndex: make a condition more bullet-proof, a nullptr could be dereferenced.
Error noticed by Coverity:

*** CID 382777:  Memory - illegal accesses  (RETURN_LOCAL)
/home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1866 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE()
1860
1861            // Collect the index entries in a form we can use them.
1862            vector<IndexEntry> entries;
1863            const docstring & indexType = params().getParamOr("type", from_ascii("idx"));
1864            for (const TocItem& item : *toc) {
1865                    const auto* inset = static_cast<const InsetIndex*>(&(item.dit().inset()));
>>>     CID 382777:  Memory - illegal accesses  (RETURN_LOCAL)
>>>     Using "indexType", which points to an out-of-scope temporary variable of type "lyx::docstring const".
1866                    if (item.isOutput() && inset->params().index == indexType)
1867                            entries.emplace_back(IndexEntry{inset, &op});
1868            }
1869
1870            // If all the index entries are in notes or not displayed, get out sooner.
1871            if (entries.empty())
2023-01-08 22:19:39 +01:00
Thibaut Cuvelier
b42269f065 InsetIndex: remove unused code that created Coverity errors. 2023-01-08 22:17:02 +01:00
Thibaut Cuvelier
6e4cf808da InsetIndex: add a missing destructor for IndexNode and call it from xhtml() to avoid leaking resources.
Corresponding Coverity finding:

** CID 382778:  Resource leaks  (RESOURCE_LEAK)
/home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1909 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE()

________________________________________________________________________________________________________
*** CID 382778:  Resource leaks  (RESOURCE_LEAK)
/home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1909 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE()
1903            }
1904
1905            xs << xml::EndTag("ul");
1906            xs << xml::CR();
1907            xs << xml::EndTag("div");
1908
>>>     CID 382778:  Resource leaks  (RESOURCE_LEAK)
>>>     Variable "index_root" going out of scope leaks the storage it points to.
1909            return ods.str();
1910     }
1911
2023-01-08 22:03:36 +01:00
Thibaut Cuvelier
e70cdfd3a2 InsetMathBox: split the boxed text into <mtext> and other tags, while boxing the whole inset within an <mrow>.
Rationales:
- previously, <mstyle> was used, but it's being deprecated for MathML 4 Core in favour of CSS and <mrow> (not a big deal in itself)
- the whole box cannot be hosted within the same tag, because neither <mstyle> nor <mrow> can have text, they need an intermediate container, <mtext> (which cannot hold anything else that pure text)
- new behaviour: always output a container for the whole box that has the right attributes, i.e. an <mrow>; split the content of the cell to have text and other tags set apart (text in <mtext>, other tags left as they were)

Old behaviour, invalid MathML (2 to 4):
<mstyle XXX>text<mn>.</mn></mstyle>

New behaviour, valid MathML:
<mrow XXX><mtext>text</mtext><mn>.</mn></mrow>
2023-01-08 02:36:48 +01:00
Thibaut Cuvelier
d3c81eb2cb InsetMathBox: fix strange indentation (mix of spaces and tabs). 2023-01-08 00:51:43 +01:00
Thibaut Cuvelier
edcaad2419 MathML: convert InsetMathBox as <m:mtext>.
The inset represents text (as opposed to maths in formulae). <m:mstyle> is used to give style to its children, it is not supposed to have any contents on its own.
2023-01-08 00:50:29 +01:00
Thibaut Cuvelier
6a3bd64032 LyXHTML: use a lower-case meta for generator, this is the most common convention. 2023-01-07 16:24:57 +01:00
Thibaut Cuvelier
a5c6215ebd LyXHTML: add a missing space in the content-type annotation. 2023-01-07 16:23:56 +01:00
Thibaut Cuvelier
fb4a26577e LyXHTML: don't explicitly mention that the style is CSS, HTML5 doesn't like it. 2023-01-07 03:42:11 +01:00
Thibaut Cuvelier
fd2078f3aa LyXHTML: remove the double specification of charset.
The choice of content-type is arbitrary.
2023-01-07 03:36:57 +01:00
Thibaut Cuvelier
cabb12ba51 LyXHTML: fix the content-type attribute, it must be lower case (enforced for HTML5). 2023-01-07 03:33:48 +01:00
Thibaut Cuvelier
26e6b1c209 LyXHTML and DocBook: encode language codes as BCP47. 2023-01-07 03:31:40 +01:00
Thibaut Cuvelier
3cf8ced72e Make formatting of DocBook changes more similar to surrounding code.
Spaces between if and condition.
2023-01-07 02:56:40 +01:00
Jean-Marc Lasgouttes
9dd716da3a Row breaking: keep unused tail for later (instead of assertion)
Instead of asserting when there are unprocessed row elements (which,
as I understand it, should almost never happen), play safe and keep
them for later processing.

Related to bug #12617.
2023-01-06 16:02:29 +01:00
Jean-Marc Lasgouttes
cb3de88cc4 Fixup dcef1a9c: better handling of front-of-string splitting
When splitting a string leads to a break before the first character, the
best is to declare that splitting failed.

Fixes bug #12617.
2023-01-06 15:56:54 +01:00
Scott Kostyshak
bee08b19ee Typo in a comment 2023-01-05 23:33:16 -05:00
Stephan Witt
bbc2270972 #12523 check for existence of usable Python interpreter
- present appropriate alert message in case of missing Python
- add the option to quit LyX immediately
- recheck for Python interpreter on reconfigure if it was missing
2023-01-06 00:32:09 +01:00
Jean-Marc Lasgouttes
7c5bad56c4 Add information to Row::operator<< 2023-01-05 11:56:56 +01:00
Richard Kimberly Heck
30189332c8 Fix minor bug mentioned in #10827 2023-01-04 23:23:30 -05:00
Richard Kimberly Heck
04025d0259 Fix compilation problem 2023-01-04 23:04:02 -05:00
Scott Kostyshak
09e25ca5b7 Fix compiler warning -Wstring-plus-int
Similar to d44eaa97.
2022-12-29 16:25:42 -05:00
Juergen Spitzmueller
38c118b02d Fix output of tex2lyx messages in runtests.py 2022-12-29 15:10:05 +01:00
Juergen Spitzmueller
a5115d4e4a tex2lyx: Also factor out error and debug messages 2022-12-29 09:37:00 +01:00
Scott Kostyshak
d44eaa9713 Fix compiler warning -Wstring-plus-int
Warning was as follows:

  src/tex2lyx/Parser.cpp:898:39: error: adding 'uint32_t' (aka 'unsigned int') to a string does not append to the string [-Werror,-Wstring-plus-int]
                  warning_message("ignoring a char: " + static_cast<uint32_t>(c));
                                  ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
  src/tex2lyx/Parser.cpp:898:39: note: use array indexing to silence this warning
                  warning_message("ignoring a char: " + static_cast<uint32_t>(c));
                                                      ^
                                  &                   [                         ]
  1 error generated.
2022-12-28 21:58:30 -05:00
Juergen Spitzmueller
9ecc30174a Factor out tex2lyx warnings and add -q option (#11328) 2022-12-28 16:29:38 +01:00
Juergen Spitzmueller
9047d60c5a tex2lyx: exit earlier if input file could not be found
In particular, do not write an empty .lyx file (#12339)
2022-12-28 14:05:23 +01:00
Juergen Spitzmueller
992e3aec88 Support suffix-less tex file input in tex2lyx (#12340) 2022-12-28 13:35:12 +01:00
Thibaut Cuvelier
7a67302c01 Amend febd1855eb: fix compilability 2022-12-28 12:57:45 +01:00
Juergen Spitzmueller
abe7adc8af Update tex2lyx tests again 2022-12-28 12:32:39 +01:00
Juergen Spitzmueller
b3a1caa9b9 Update tex2lyx tests after 7868929aac 2022-12-28 12:32:39 +01:00
Juergen Spitzmueller
32b5d253d1 tex2lyx: consider utf8 default encoding in newer LaTeX 2022-12-28 12:32:39 +01:00
Juergen Spitzmueller
2dafc6af0d Fix indentation 2022-12-28 10:58:36 +01:00
Juergen Spitzmueller
7868929aac tex2lyx: put adjacent comment lines in one ERT inset (#4797) 2022-12-28 09:40:22 +01:00
Thibaut Cuvelier
8b5bfa971b Amend febd1855eb: fix compilability of tex2lyx 2022-12-28 02:33:11 +01:00
Thibaut Cuvelier
4aeba17895 Fix a typo in a comment 2022-12-28 02:32:05 +01:00
Thibaut Cuvelier
febd1855eb XML: overhaul the tag-comparison operators.
First and foremost, this patch implements the latest best practices in C++ (i.e. comparison operators are not member functions).

The main objective of this rewrite is to have these operators callable in slightly more general contexts (*this->asFontTag() == *rhs.asFontTag() yielded an error because no member function could be called). This feature is no more required.

The rewrite took place in the context of https://www.lyx.org/trac/ticket/12585. The first iteration was using more complex code to circumvent XMLStream in DocBook (see details in the bug above and in the mailing list), while this one uses XMLStream fully. The bug was due to font tags being considered equal when they were not, due to the comparison done only on the XML tag and not on the actual font change (XML attributes can complement the tag for various font changes).
2022-12-27 16:52:51 +01:00
Thibaut Cuvelier
16a1aa9901 DocBook: add support for DocBookGenerateTitle.
The new parameter allows more flexibility when encoding some elements that have a poor mapping in DocBook, like theorems. The major use is to wrap the environment in a generic container, figure, which requires a title (but none is available).
2022-12-27 15:52:26 +01:00
Juergen Spitzmueller
69d54ff9d8 Master/Child: do not clean includeonly list while editing (part of #12470) 2022-12-27 15:36:36 +01:00
Juergen Spitzmueller
4c8a698a28 MasterChild.ui: Group radio buttons (part of #12470) 2022-12-27 15:10:37 +01:00
Thibaut Cuvelier
ed7072985e DocBook: for computing font changes, simplify code by removing state evolution from iteration to iteration. This surely makes the code slightly slower (although the compiler should be smart enough), but (much) easier to reason about. 2022-12-27 01:58:48 +01:00
Thibaut Cuvelier
2b03f0a2c1 DocBook: add some TODOs for the future. 2022-12-27 00:03:07 +01:00
Thibaut Cuvelier
e3eddd4cf9 Add comments about variable usage. 2022-12-26 20:57:44 +01:00
Thibaut Cuvelier
8b6ec979ff Fix a typo in a comment. 2022-12-26 20:57:24 +01:00
Thibaut Cuvelier
b2fdc04f96 InsetIPAMacro: implement the XHTML conversion, refactor plaintext and DocBook to share more code. 2022-12-26 20:54:36 +01:00
Thibaut Cuvelier
3839897c0f InsetMathExFunc: use XML entities instead of HTML in MathML.
This part should have been committed with bc73a857 in the first place.
2022-12-26 20:38:06 +01:00
Thibaut Cuvelier
9b80a5ba9e InsetMathSpace: use XML entities instead of HTML in MathML.
This part should have been committed with bc73a857 in the first place.
2022-12-26 20:35:26 +01:00
Thibaut Cuvelier
df025d15df InsetIPAMacro: refactor code between DocBook and XHTML. 2022-12-26 20:23:05 +01:00
Thibaut Cuvelier
21d1d917ba DocBook/HTML: use XML entities for spaces.
This part should have been committed with bc73a857 in the first place.
2022-12-26 19:11:41 +01:00
Juergen Spitzmueller
0c56f60535 Associate "run:" link types with "Other" 2022-12-26 13:19:52 +01:00
Juergen Spitzmueller
be25181d87 Disambiguate string 2022-12-26 11:24:29 +01:00
Juergen Spitzmueller
14d74c9578 Try to be more precise in the hyperlink type tooltips 2022-12-26 10:46:54 +01:00
Juergen Spitzmueller
d3b5905007 tex2lyx: support "Other" type 2022-12-26 10:40:39 +01:00
Juergen Spitzmueller
5f8e41dc9b GuiHyperlink: some minor fixes
* disambiguate "Other" label
* Add accelerator
* Add tooltip to "Other" widget
* Amend tooltip of "Web" widget (since "other" now seems to have taken
part of its function)
2022-12-26 10:13:51 +01:00
Thibaut Cuvelier
2592a36dae Amend bc73a85778
Missing return in `specialCharKindToXMLEntity`. Previously, the
functions that were merged into `specialCharKindToXMLEntity` did not
return any kind of error in case an unknown special character is met
(enumerated value). This behaviour is preserved.
2022-12-26 00:18:47 +01:00
Thibaut Cuvelier
ff2a2b2a8a DocBook: add a comment about the need for DocBook 5.2. 2022-12-25 20:48:26 +01:00
Thibaut Cuvelier
c77872f314 Cleanup following the removal of HTML entities
The remaining part that was not handled in the previous commit. It focuses on lib/symbols.
2022-12-25 20:48:14 +01:00
Thibaut Cuvelier
bc73a85778 LyXHTML: switch the doctype to (X)HTML5 and only output XML entities.
This is a new take on c8e2c17a that was reverted at da67bde61a due to entities no more recognised by the browsers. Corresponding thread on the mailing list: https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg213179.html

This patch is a huge cleanup overall, by removing the distinction between HTML and XML entities (the latter arrived due to the DocBook support).

In InsetListingParams, I also changed the mechanism that relied on &quot; to use an XML entity to be consistent with the rest of the code, mostly in case someone looks for HTML entities and wonders why they are still there.
2022-12-25 20:48:14 +01:00
Thibaut Cuvelier
d85969b8b8 LyXHTML: give the language in the root tag. 2022-12-25 20:48:14 +01:00
Richard Kimberly Heck
3d2bedb160 typo 2022-12-25 12:50:54 -05:00
Richard Kimberly Heck
1413b509ac Update tex2lyx tests. 2022-12-25 12:49:42 -05:00
Richard Kimberly Heck
144cf4bb9a Allow an 'other' type for hyperlinks. Format change.
Also, perform the URL fixing magic for DocBook and XHTML.

As it was, it was impossible to enter e.g. "tel:" type links. Now
choosing the "Other" type just outputs the URL as given.

Also, the addition of "http" or "file" was not being done for
DocBook and XHTML. Now it is.
2022-12-25 12:45:48 -05:00
Juergen Spitzmueller
1e28965589 Do not wrap forceTLR in \L with babel and unicode engines
It does not seem to be needed, the \L macro is undefined, and there
does not seem to be an alternative.
2022-12-24 09:20:02 +01:00
Juergen Spitzmueller
064955b151 Used pressed() signal in status bar widgets (fixes #12613) 2022-12-24 07:20:39 +01:00
Juergen Spitzmueller
f06ddb2342 Fix signals 2022-12-23 16:07:47 +01:00
Juergen Spitzmueller
0bb25ee3cd \R and \L are not defined in babel with Xe/LuaTeX 2022-12-23 10:07:41 +01:00
Juergen Spitzmueller
d90484de0a Fix UI of document color selection
The coloring of push buttons does not work with all themes, so use a
dedicated widget.

Also, accelerators have been used multiple times.
2022-12-23 09:17:01 +01:00
Juergen Spitzmueller
7015d7db07 Mark "edit externally" button of preamble and local layout
while external editing is underway
2022-12-23 08:19:26 +01:00
Juergen Spitzmueller
d888d0d130 Inform user if panel or tab has invalid content (#10827)
This adds a warning icon to either the tab header or the panel stack
entry item if a widget on the panel/stack has invalid content.

Particularly helpful to get aware of such content on other tabs/panes
than the one currently selected.
2022-12-22 15:01:58 +01:00
Thibaut Cuvelier
4f314567b6 XML: improve formatting of error message for unrecognised tag type.
Before, there was always a space after the tag, even when there were no attributes. Now, the space is output conditionally, so that the output makes more sense.

Before, one space too many for the tag name (title), casting doubt on whether the code had this space hard coded or not:

<!-- Output Error: Unrecognised tag type 'para' for 'title ' -->

After, no such space:

<!-- Output Error: Unrecognised tag type 'para' for 'title' -->
2022-12-22 04:10:25 +01:00
Thibaut Cuvelier
43d096f647 DocBook: fix a typo in comments and improve docs. 2022-12-22 03:40:50 +01:00
Jean-Marc Lasgouttes
22c6fe8e0c Remove boolean arguments of scrollToCursor wih an enum
This makes the function inent more obvious. No change intended.

Related to bug #12491.
2022-12-21 18:47:33 +01:00
Jean-Marc Lasgouttes
0fed10e4c3 Simplify and hopely fix scrollToCursor
Remove some special cases that I do not really understand and
streamline the cases.

Also make sure that there is only one code path for centering.

Fixes bug #12491.
2022-12-21 18:47:33 +01:00
Pavel Sanda
b9da7617d8 * lfun doc 2022-12-21 18:29:05 +01:00
Juergen Spitzmueller
226ce75054 Add test 2022-12-20 06:04:29 +01:00
Juergen Spitzmueller
889be483cf Simplify test
Math is useful for something, after all...
2022-12-20 05:50:23 +01:00
Juergen Spitzmueller
9966b4be4a Adapt inset info to new version check 2022-12-19 17:42:49 +01:00
Juergen Spitzmueller
2e6ea5f613 Extend flexible version check to packages 2022-12-19 17:42:27 +01:00
Juergen Spitzmueller
029adfa28c Improve LaTeX version checking
Instead of having to add and individually test the versions to check
for, we store the current version and test on that with a specific
function isAvailableAtLeastFrom(package, year, month, day)

Currently only used for the LaTeX version, but could also be extended
for package versions.
2022-12-19 15:15:41 +01:00
Juergen Spitzmueller
41146030b6 Simplify output code 2022-12-19 11:09:50 +01:00
Juergen Spitzmueller
0c6d0a86b9 Remove unnecessary conversion 2022-12-19 10:55:28 +01:00
Juergen Spitzmueller
c2a324e242 Amend 9716e79624
If the main language does not require the inputenc package, but a
secondary language does, inputenc needs to be loaded as well
(without options)

Also simplify the code a bit.
2022-12-19 08:00:06 +01:00
Juergen Spitzmueller
4a3871f5db Add toolbar option to reset font + language settings (#12199) 2022-12-18 16:36:30 +01:00
Juergen Spitzmueller
97c9404b71 language reset should reset to the buffer language
not reset_language, which links to default_language, which is always
English.
2022-12-18 16:35:07 +01:00
Juergen Spitzmueller
005dc32e54 Disable non-functional insets in math (#4039)
... finishing 15 year old work of mine :-(
2022-12-18 15:12:21 +01:00
Juergen Spitzmueller
17634087ea Correct date 2022-12-18 14:17:46 +01:00
Juergen Spitzmueller
3d63b78d07 Correct counting 2022-12-18 14:17:29 +01:00
Juergen Spitzmueller
9fc190d61c Improve functions for bibliography managers (#8193)
- new function to list bibtex databases
- citation-insert returns the list of undefined keys
  if the request comes from the LyX server

Original patch from Benjamin Piwowarski (2012!).
Modified and updated by Riki Heck and myself.
2022-12-18 13:25:24 +01:00
Juergen Spitzmueller
9716e79624 inputenc only expects one option
File switches with documents are done via \inputencoding.
Other than with fontenc, these do not need to be laoded via options
beforehand.

Also, out current code loaded the additional languages' encoding last,
which might result in wrong encoding settings.
2022-12-17 15:14:47 +01:00
Juergen Spitzmueller
23a2920dae Remove preceding spaces 2022-12-15 08:39:52 +01:00
Richard Kimberly Heck
fdabd46e8e Fix shortcut 2022-12-12 17:36:07 -05:00
Richard Kimberly Heck
88f0a98b52 Fix bug #12609 2022-12-12 17:33:56 -05:00
Richard Kimberly Heck
bbe2ee10a4 Pronoun 2022-12-12 17:18:35 -05:00
Jean-Marc Lasgouttes
02783aec66 Revert "Remove left/right spacing around top/left buttons"
Let's try to find a better solution (see ticket #12335)

This reverts commit d2f23c303c.
2022-12-11 20:48:44 +01:00
Enrico Forestieri
e18709b176 Further amend fb7b7e52
This restores the previous behavior of runCommand().
When the child process could not be properly terminated the
error "RunCommand: could not terminate child process" was being
issued. However, in fb7b7e52 there was a misinterpretation
between this condition and the exit status of the child and
these two different errors were mixed up. They are now
disentangled again.
2022-12-11 15:06:22 +01:00
Juergen Spitzmueller
163844a6d0 Allow defaultfamily change with non_TeX fonts (#12608) 2022-12-11 14:47:13 +01:00
Enrico Forestieri
d7910e1870 Amend fb7b7e52
pclose() returns -1 only in specific cases, otherwise it returns the
exit status of the child, to be retrieved by the macro WEXITSTATUS.
2022-12-11 12:15:37 +01:00
Juergen Spitzmueller
c7c3b39413 Minor checkedLineEdit fixes
* Do not disallow application if an invalid widget is disabled
* Fix coloring of text
2022-12-11 10:01:09 +01:00
Daniel Ramoeller
bfff93d879 Restrict toolbar menu to toolbar
Partial fix for bug #11949.
2022-12-10 20:30:58 +01:00
Jean-Marc Lasgouttes
46992201b7 Add != operator to FuncRequest and special value FuncRequest::prefix
Use this value (and `unknown' where relevant)
2022-12-10 20:30:58 +01:00
Scott Kostyshak
9f7bbeadda Change Doc Settings "Edit" PB to "Edit Externally"
"Edit" by itself is not clear if the user doesn't already know what
it does.

This affects both the local layout tab and the LaTeX preamble tab.

Brief ML discussion here:

  https://www.mail-archive.com/search?l=mid&q=20221202193312.myfnuhuz6xcil6qt%40gary
2022-12-10 10:02:48 -05:00
Juergen Spitzmueller
7f1cb306f9 Warn if buffer is switched with unapplied document changes (#9369) 2022-12-10 14:28:46 +01:00
Thibaut Cuvelier
0e2513a0e8 Amend d4095dc0
Apostrophes were being converted inside code-like areas, like LilyPond insets. This patch fixes tests that started to fail:

  Processing `./60/lily-95ee389a.ly'
  Parsing...
  ././60/lily-95ee389a.ly:7:12: error: undefined character or shorthand: &
  \relative c
             &#8217;&#8217; {  g a b c}
2022-12-09 20:17:58 +01:00
Thibaut Cuvelier
5b7fbb4190 XHTML: support NONE as item tag when no item tag should be output.
This patch mimics a similar feature for DocBook (albeit not as pervasive).
2022-12-09 02:48:52 +01:00
Thibaut Cuvelier
6c22e32cee MathML: update code for InsetMathCases to newest classes.
Based on a commit from lynx <lorenzobertini97@gmail.com>

Part of bug #12590.
2022-12-09 01:49:19 +01:00
Thibaut Cuvelier
5893ea866e MathML: output substacks as grids.
Based on a commit from lynx <lorenzobertini97@gmail.com>

Part of bug #12590.
2022-12-09 01:48:14 +01:00
Thibaut Cuvelier
d4095dc0e6 Export ' (straight) as ’ (curly) in DocBook
This is similar to what LaTeX does in its output.

See the (long) discussion in ticket #11244. Port of ad3e6c69b2 for DocBook.

This patch requires delaying entire strings instead of just characters, so that the DocBook code path can be as similar to the XHTML one as possible.
2022-12-09 01:25:34 +01:00
Stephan Witt
deae5ea23a Follow-up for change a66ee4109e - guard Qt 5.4 code with version check 2022-12-08 18:05:37 +01:00
Stephan Witt
a66ee4109e Add OS version info to About box. 2022-12-07 00:08:11 +01:00
Jean-Marc Lasgouttes
f3f478c2fb C++11 compilation fix 2022-12-06 17:12:45 +01:00
Richard Kimberly Heck
c50f0b125d Add HTMLClass for InsetLayout as well. Layout format change. 2022-12-05 23:42:50 -05:00
Juergen Spitzmueller
a759fb7ae9 Update tex2lyx tests again 2022-12-05 18:01:31 +01:00
Juergen Spitzmueller
4d337e78ab Fix crash when inserting label before label in change tracking mode 2022-12-05 11:15:58 +01:00
Juergen Spitzmueller
6c904004b6 More refs sorting fixes
This now uses a Vector of pairs, which is more robust with non-unique
labels (e.g. in change tracking).
2022-12-05 09:45:40 +01:00
Juergen Spitzmueller
c715db4ae8 Amend 14b108fc22 2022-12-05 08:20:25 +01:00
Juergen Spitzmueller
dedcee9117 tex2lyx support for starred refs 2022-12-05 07:52:41 +01:00
Richard Kimberly Heck
e0e84eba01 Update tex2lyx tests 2022-12-05 01:09:05 -05:00
Juergen Spitzmueller
7a0c8f366d Typo spotted by Pavel 2022-12-05 06:47:52 +01:00
Richard Kimberly Heck
d4f2460ac4 Fix bug #11410.
Main part of patch from Daniel, adapted by me.
I also added the lyx2lyx code.
2022-12-04 18:33:58 -05:00
Jean-Marc Lasgouttes
ff1ddf6251 Fixup 71623b88: change semantics of "delete" LFUNs again
Instead of specifying "force" to disable the deletion protection
mechanism, invert the default so that "confirm" is needed to activate
it. The idea is to keep the lfun reasonable for scripting and add a
special argument for interactive use.

Document in release notes.

Update LFUN.lyx documentation

Update bind files.

Add conversion step to prefs2prefs_lfun.py.
2022-12-04 21:13:51 +01:00
Richard Kimberly Heck
7b5a5e524b Fix CSS output for lists.
Somehow that got committed before it was done. I guess I'm out of
practice...
2022-12-04 14:56:01 -05:00
Richard Kimberly Heck
5ac560cfa1 Add i, ii, iii, iv suffixes to CSS class as well in the case of itemizations 2022-12-04 14:34:29 -05:00
Richard Kimberly Heck
69a6c41b94 Introduce HTMLClass tag, to make it easier to give these. 2022-12-04 13:36:34 -05:00
Richard Kimberly Heck
6f4f7442ef Fix bug #11769 2022-12-04 12:51:47 -05:00
Richard Kimberly Heck
dfa87371f7 Use ranges 2022-12-04 12:06:48 -05:00
Richard Kimberly Heck
b37ac5807f Do not output label tags if there is no label 2022-12-04 12:01:42 -05:00
Richard Kimberly Heck
b9c52f20c7 Whitespace 2022-12-04 11:59:54 -05:00
Juergen Spitzmueller
3ec87be050 Fixup refs sorting
This has been broken at df59649a18
2022-12-04 16:21:14 +01:00
Juergen Spitzmueller
abd69b06f4 Fixup refs grouping
This has been broken at df59649a18
2022-12-04 15:32:47 +01:00
Daniel Ramoeller
7bdf372ecc Properly reset on ESC key on LayoutBox/CategorizedCombo
Fix for bug #12497.
2022-12-04 13:45:49 +01:00
Juergen Spitzmueller
891ba7263e Workaround for #11676
Avoid the crash we get with this combination. Having identified the real
cause would of course have been better. But it seems no one has a clue.
2022-12-04 11:09:00 +01:00
Richard Kimberly Heck
3eb3608138 Fix bug #11418.
Add new HTMLInToc layout tag: When false, the thing will not be output
to the TOC. It's now set to false for starred sections.
2022-12-04 00:33:14 -05:00
Richard Kimberly Heck
eb949f1d05 Use ranges 2022-12-04 00:02:51 -05:00
Richard Kimberly Heck
9f258704ae Use a couple ranges 2022-12-03 23:33:44 -05:00
Richard Kimberly Heck
fc6643e4aa Fix bug #11853 2022-12-03 23:03:33 -05:00
Richard Kimberly Heck
233ce1ec12 Partially fix bug #10827. Patch from Daniel, slightly modified by me. 2022-12-03 22:44:05 -05:00
Juergen Spitzmueller
c4b1f7b31c Some string fixes in compare UI 2022-12-03 15:21:15 +01:00
Juergen Spitzmueller
592f21aafd Update tex2lyx tests
This was forgotten at the latest file format change
2022-12-03 08:42:33 +01:00
Scott Kostyshak
c7269ffa86 Comment 2022-12-02 19:34:36 -05:00
Scott Kostyshak
a41b866e60 Line width 2022-12-02 19:29:04 -05:00
Scott Kostyshak
6f9cfdea7e Comment
Jürgen confirms that the behavior in #8493 is present with Qt6.
2022-12-02 19:28:10 -05:00
Juergen Spitzmueller
14b108fc22 Check encodability of math user macro names (#11855) 2022-12-02 11:23:32 +01:00
Juergen Spitzmueller
ac58a5060e Revert e500dc19c1
More general fix is upcoming.
2022-12-02 11:21:15 +01:00
Juergen Spitzmueller
e500dc19c1 Do not crash with uncodable character in math preview snippert (part of #11855) 2022-12-01 16:01:38 +01:00
Jean-Marc Lasgouttes
9376f0203d Merge branch 'killqt4'
Remove all trace of Qt4 support. The different elements have been
considered carefully before removal.

The only changes that need to be done concern Windows and macOS
compilation instruction and will need to be taken care of by the
respective maintainers before prerelease.

The file TODO.killqt4 lists what remains to be done.
2022-11-28 15:19:41 +01:00
Pavel Sanda
d82247985a * RELEASE-NOTES 2022-11-28 11:09:37 +01:00
Yuriy Skalko
7b23c76b71 Add "semantic linefeeds" after punctuation marks.
We already had such breaks for dot.

File format change.
2022-11-28 11:58:53 +02:00
Jean-Marc Lasgouttes
ec767f02a0 Support macros from hepnames and hepparticles packages
This macros are important for particle physicists. Note that the
package hepparticles as distributed in recent texlive does not work
(see #11804) and need to be patched. This is however not something we
can do, and any physicist wanting to use this will have patched his
own version I guess.

I contacted Andy Buckley, the author of the package, who answered that
he is aware of the issue but does not have time right now to fix it.
The workaround is straightforward: on line 176 of hepparticles.sty,
replace "\updefault" by "n".

Two parts:
- add *lots* of definitions to lib/symbols
- add hepparticles and hepnames as simple features in LaTeXFeatures.

The definitions are courtesy of @renyhp, and extracted from the
aforemented packages:
https://www.ctan.org/pkg/hepparticles
https://www.ctan.org/pkg/hepnames

Fixes bug #11804.
2022-11-27 19:47:02 +01:00
Richard Kimberly Heck
2c7f229b06 Fix bug #11917. Patch from Daniel. 2022-11-27 13:24:13 -05:00
Richard Kimberly Heck
5db9e91f16 Fix bug #11781. Patch from Daniel. 2022-11-27 13:20:17 -05:00
Daniel Ramoeller
2d01fcd079 Activate another tab group (aka split view)
Bind the new functions tab-group-next/previous to F6/S-F6 in CUA bindings.

Fix for #12115.
2022-11-27 18:52:05 +01:00
Juergen Spitzmueller
315d347d3e Include he/cua.bind (#12052)
To allow for its use, we add support to include a bind file from the
top dir (i.e., non-localized) via \bind_file ../<file>
2022-11-27 16:30:21 +01:00
Scott Kostyshak
6d4ab79917 Effectively disable the "Stop command?" dialog
We now allow the user to cancel the background process at any point
(via the red "x" in the status bar or Document > Cancel Export), so
we do not need to poll the user with the dialog.

The patch works by setting timeout to "-1" which is treated as a
special value to disable the poll.

Fix (by obviation) #12531 and #9953, which were about the dialog.
2022-11-25 10:25:40 -05:00
Scott Kostyshak
68c7953422 Change os::timeout from minutes to milliseconds
We can now specify the special value of "-1" milliseconds which is
interpreted as disabling the timeout.

No change of functionality intended.
2022-11-25 09:51:30 -05:00
Jean-Marc Lasgouttes
cd5fe091d2 Stephan has checked that caching is still needed on macOS
Basically removing the cache makes getTextLayout 17x more expensive on
a simple test of scrolling through the Tutorial.
2022-11-25 12:44:56 +01:00
Jean-Marc Lasgouttes
c24233e3f1 Improve replacement for qDegreesToRadians
This is for Qt 5.0.X compatibility.
2022-11-25 00:07:37 +01:00
Pavel Sanda
833def44eb makefile - forgotten file 2022-11-24 02:17:26 +01:00
Scott Kostyshak
3b30dbfca4 Centralize cancelation of export
An export can be canceled by clicking on the status bar icon or by
executing export-cancel (e.g., via Document > Cancel Background
Process).

The centralized code kills the script and updates the status bar
icons.

No change in functionality intended.

Related commits: 70a71a82 and 01abab9a.
2022-11-22 14:55:26 -05:00
Scott Kostyshak
01abab9ad9 After export-cancel, hide busy and cancel buttons
This is consistent with 70a71a82 (which is about the code path
through clicking on the 'x' status bar icon).

In the next commit I'll make a function to centralize this sequence
of killing a script and emitting the scriptKilled() signal.
2022-11-22 14:30:52 -05:00
Scott Kostyshak
70a71a824b After confirm cancel, hide busy and cancel buttons 2022-11-22 14:24:11 -05:00
Juergen Spitzmueller
f155e103d3 Cleanup mathes/BUGS (#3493)
This one is now also part of #12603.
2022-11-22 10:18:43 +01:00
Juergen Spitzmueller
1383276156 Cleanup mathes/BUGS (#3493)
This one is now #12603.
2022-11-22 10:16:29 +01:00
Juergen Spitzmueller
73156d88f2 Cleanup mathes/BUGS (#3493)
Removing. If this is still an issue, it should be described in much
more detail.
2022-11-22 10:12:06 +01:00
Juergen Spitzmueller
26f6aa465e Cleanup mathes/BUGS (#3493)
Removing. M-c e has a different meaning nowadays
(tabular-feature delete-vline-left)

Please file a new report with an updated description if this is still
an issue.
2022-11-22 10:09:16 +01:00
Juergen Spitzmueller
1d6ea2c711 Cleanup mathes/BUGS (#3493)
This one is now #12602.

Someone please check whether this is valid, and feel free to close.
2022-11-22 10:03:25 +01:00
Juergen Spitzmueller
b77b9d1565 Start to cleanup mathes/BUGS (#3493)
This one is implemented.
2022-11-22 09:59:01 +01:00
Juergen Spitzmueller
869247b617 Add button to stop processing
(rather than having it stop by clicking on the spinner)
2022-11-21 18:56:28 +01:00
Enrico Forestieri
1ac2dc2082 Do not allow nesting macro names in macro names
LyX removes a single backslash when it is inserted in a
macro name by the keyboard. However if it is followed by
another character before moving the cursor, it is retained
causing an assertion (bug #12601).
2022-11-21 18:24:29 +01:00
Jean-Marc Lasgouttes
593bfe248a Substack should not be allowed to change columns
Disable the arguments append-column and delete-column of tabular-features.

The code is taken from InsetMathCases, with some changes
* no need to record undo here
* in dispatch, return is prefered to break, since we do not want to invoke
  InsetMathGrid::doDispatch.
Propagate these changes to InsetMathCases.

Cleanup of the InsetMathCases error messages to fit with other parts
of the code.

The handling of tabular-features in mathed needs to be unified somehow.

Based on a commit from lynx <lorenzobertini97@gmail.com>

Part of bug #12590.
2022-11-21 12:08:17 +01:00
Kornel Benko
43d506b104 Amend(2) 580dea63: get rid of Qt4 code also in cmake build 2022-11-21 09:31:48 +01:00
Jean-Marc Lasgouttes
7d196fea77 Fix handling of codepoints 9, 10, 12, 13
Qt >= 5 refuses to display them. We work around this in lib/symbols
already, but make sure we do not try to display math glyphs at these
code points anyway.

Fixes bug #8493.
2022-11-20 20:53:55 +01:00
Enrico Forestieri
a11780b59f Do not allow pasting backslashes in macro names
Backslashes are not allowed in macro names and LyX
enforces this by not allowing entering them by keyboard.
However, it was possible to paste them and this may cause
crashes (see bug #12596).
2022-11-20 19:01:38 +01:00
Juergen Spitzmueller
e26a60edef Regenerate previews after zoom (#11919) 2022-11-20 18:18:59 +01:00
Thibaut Cuvelier
f3862130cf Amend 48d9d01a: remove debug output 2022-11-20 16:19:31 +01:00
Thibaut Cuvelier
48d9d01a82 InsetIndex: when building the IndexNode tree, ignore IndexEntry when empty
The previous code always considered it had at least one term (an assumption that is wrong at least for doc/de/Math.lyx).
2022-11-20 14:49:14 +01:00
Thibaut Cuvelier
77f0fbdc9a InsetIndex: enable escaping for terms in the index
The previous code explicitly disabled it and this behaviour caused problems (like "A&A" being output as-is, which is wrong in HTML: it should be "A&amp;A").
2022-11-20 00:19:53 +01:00
Thibaut Cuvelier
e9f21f2e83 InsetIndex: improve formatting of resulting XHTML
There was no line feed before the closing </li> for entries, which was inconsistent with the other block tags.
2022-11-20 00:14:43 +01:00
Jean-Marc Lasgouttes
546efc3ff1 Remove a workaround that seems to be useless since Qt 4.8 2022-11-19 20:09:59 +01:00
Jean-Marc Lasgouttes
e11c7cb71d Remove all uses of Q_WS_* macros
They are only defined with Qt4.
2022-11-19 19:53:28 +01:00
Jean-Marc Lasgouttes
a3327f576c Get rid of setSectionResizeMode helper functions. 2022-11-19 15:04:38 +01:00
Jean-Marc Lasgouttes
11369131ee Remove workaround that was needed only by Qt4 2022-11-19 14:58:50 +01:00
Jean-Marc Lasgouttes
0f8b4e36d8 Remove old workaround that was needed for Qt 4.2
Jürgen believes that this is not needed anymore.
2022-11-19 14:55:33 +01:00
Jean-Marc Lasgouttes
ac248e392d Get rid of Qt4 code in src/
Qt4 code has been identidifed by
  git grep -l 'QT_VERSION.*\(0x050000\|0x04\)' src

Uses of QT_VERSION_CHECK have been checked too.

been used to remember what places need further work.

Then remaining Qt4 references have been searched using
  git grep -i qt4
  git grep -i 'qt 4'
and relevant issues have been either fixed or noted in the new
TODO.killqt4 file.
2022-11-18 17:19:50 +01:00
Pavel Sanda
d984730235 Drop C++17 if init-statements to support older compilers. 2022-11-16 21:23:01 +01:00
Jean-Marc Lasgouttes
94e7421a0a Fix compilation with gcc 4.9
It appears that gcc 4.9 does not implement the following part of C++11:
https://cplusplus.github.io/CWG/issues/1148.html

Therefore, we have to use a special case in C++11 mode that does an
explicit std:move.

With recent compilers (gcc >= 9), this leads in C++11 mode to a warning:

MetricsInfo.cpp: In member function ‘lyx::Changer lyx::MetricsBase::changeFontSet(const string&)’:
../../master/src/MetricsInfo.cpp:83:13: warning: redundant move in return statement [-Wredundant-move]
   83 |  return move(rc);
      |         ~~~~^~~~
MetricsInfo.cpp:83:13: note: remove ‘std::move’ call

Partly reverts commit fff28c57.
2022-11-16 17:49:52 +01:00
Jean-Marc Lasgouttes
12bff77722 Merge branch 'breakspace'
This branch improves handling of spaces on display (see #10117):
* caret is correctly shown in the middle of double spaces in justified rows;

* sequence spaces are correctly shown at the end of rows before
  automatic row breaks.

Moreover, this branch:
* streamlines the code that handles spaces in row breaking

* improves display in Qt4 : although the improvements outlined above
  are not present in Qt4 for monospaced fonts, some dsplay glitches
  are resolved.

* improves performance for very long paragraphs (#12598).
2022-11-16 10:22:11 +01:00
Juergen Spitzmueller
5bf7f938a4 Fix tex2lyx corner case (#12537) 2022-11-11 08:12:14 +01:00
Jean-Marc Lasgouttes
50e1bdf320 (almost) Fix Qt4 support
When is it detected that our zero-width characters are not really
zero-width, avoid to use them altogether. Currently, this is known to
happen in Qt4 with monospace fonts.

This allow to remove the special Qt4 code in breaskString_helper.

Related to bug #10117.
2022-11-10 17:27:45 +01:00
Jean-Marc Lasgouttes
23cd38bc1c Use TextLayoutHelper in x2pos and pos2x
This leads to substantial code simplification.

No intended behavior change.

Related to ticket #10117.
2022-11-10 16:13:29 +01:00
Jean-Marc Lasgouttes
7fdc604606 Refactor GuiFontMetrics::getLayout
This allows to create a new version that takes an already built
TextLayoutHelper struct as parameter.

No intended change.

See discussion in bug #10117.
2022-11-10 16:13:28 +01:00
Jean-Marc Lasgouttes
201c95a76e Handle multiple spaces at row break
In order to work around the Qt row breaking algorithm, which considers
multiple spaces as one at QTextLine break, we insert word_joiner unicode
characters beteween each pair of spaces.

The TextLayoutHelper class makes it easy to handle that.

Update Row::Element::rtrim() to only remove one space at row end.

Update support::countExpanders() to count all spaces, without special
handling for consecutive ones.

Fixes bug #10117.
2022-11-10 15:21:02 +01:00
Jean-Marc Lasgouttes
a48efa03b1 Introduce a struct to handle docstring <-> QString index translation
This new code allows to get rid of some hardcoded stuff and will be a
foundation for handling of consecutive spaces.

This code can be used in the future for getTextLayout, x2pos, and
pos2x in order to streamline code. Actually some features as the naked
parameter are here to prepare for this second set of changes.

No change intended. The modified code is much clearer, though.

Related to bug #10117.
2022-11-10 12:06:15 +01:00
Jean-Marc Lasgouttes
a99f76477d Revert "Fixup 572b06d6: reduce cache size for breakString"
10MB cache is not so large after all, and it can be helpful with
Scott's perverse examples.

This reverts commit 2abe771407.

Fixes part of bug #12598.
2022-11-08 00:12:40 +01:00
Jean-Marc Lasgouttes
ec151de2cc Fix expensive thinko: operator++ returns a reference, not a copy
This accounts for 45% of the row breaking time on the (huge) paragraph
of the MWE in bug #12598.

Fixes part of bug #12598.
2022-11-08 00:12:40 +01:00
Jean-Marc Lasgouttes
90ea508111 Fix pasting as LaTeX in documents with no modules
When there is no module, the old code would invoke tex2lyx with option
 -m
instead of
 -m ""
and an error would ensue.

This is because the QProcess command line parser used in Systemcall is
broken and does not recognize empty parameters as such. The solution
is to rewrite our parsecmd() parser to generate a list of parameters.
This is post-2.4.0 work.

The workaround used here is:

- set the list of modules to "," when it should be empty. In effect,
  this is a list of two empty modules.

- change tex2lyx to accept empty module names and ignore them; this is
  good in terms of robustness anyway.

Additionally, when there is no receiving buffer, set the defaults as
the BufferParams defaults instead of empty (this is cleaner, but
should not make a difference in practice).

In the long term, we should switch to use the QStringList-based API of
QProcess in Systemcall (see QTBUG-80640).
2022-11-06 13:20:02 +01:00
Scott Kostyshak
378c19bfc2 Guard some debug code
Amend f352a375 and 3bf1b97a.
2022-11-05 14:35:27 -04:00
Juergen Spitzmueller
3bbce7f24a Introduce index-tag-all lfun
This is a convenience function for indexing. It adds a copy of the
index inset under cursor after any word in the buffer that is equal
(case-insensitively) to the word preceding the index inset.

The function can be easily used to generate bad indexes (and I warn
about that in the UserGuide), but if used with care, it can also be
extremely convenient.
2022-11-05 18:39:33 +01:00
Daniel Ramoeller
89394bcd0f Show suggestions containing the input in the command buffer
Previously, only the suggestions starting with the current input were
shown.

Contains the following minor improvements:
- Add space to indicate when only one suggestion is found

- Select first item in suggestion-list in order to make selecting with
  arrow keys more intuitive

- Fix selection with Shift+Up/Down in text-field

Fix for bug #12572.
2022-11-04 22:27:31 +01:00
Jean-Marc Lasgouttes
fad170be1a New lfun to copy index insets from ToC
The new function inset-insert-copy can only be invoked from the ToC.
It is currently only implemented for Index inset.

It is a special lfun because Inset::dispatch is called directly from
the ToC widget with cursor pointing to the inset, whereas the patch
happens in the workarea at caret position. This function cannot be
called directly.

Add an entry for this function in the toc context menu.

Fixes bug #4582.
2022-11-04 21:52:46 +01:00
Jean-Marc Lasgouttes
d2f05b9e6f When Inset::dispatch is called from TOC, process screen flags
This is needed because we are not using the complete dispatch
machinery here.

Part of bug #4582.
2022-11-04 21:46:32 +01:00
Jean-Marc Lasgouttes
0b27eb7deb Introduce new function copyInsetToTemp
This is a version of copyInset that does touch the cut stack and the X
selection.

Part of bug #4582.
2022-11-04 21:44:24 +01:00
Jean-Marc Lasgouttes
2c53f0315e Fix another use of unqualified std::move 2022-11-04 21:36:43 +01:00
Kornel Benko
2333af615d Amend 9be6a425, Workaround for advanced search in 'uncover'-inset.
Use getInset(i)->toString() instead of getInset(i)->plaintext()
if searching, so that we get the option of 'uncover' visible to the search engine.
2022-11-04 15:34:49 +01:00
Juergen Spitzmueller
68e268e117 Add some options to index context menu 2022-11-04 11:29:56 +01:00
Juergen Spitzmueller
55870df5c7 Do not \protect stuff in index when we postpone the index
\protect us not needed here and affects sorting
2022-11-04 08:32:34 +01:00
Juergen Spitzmueller
d41e0c9231 Fix page range without page format 2022-11-04 07:57:56 +01:00
Juergen Spitzmueller
975f304185 Indicate see[also] refs in label and outliner 2022-11-02 15:56:59 +01:00
Juergen Spitzmueller
293b8dbe67 Do not unnecessarily reset the outliner to TOC on internal model changes
The activated() signal is only issued on user changes, what we want here,
not internal model changes (as with currentIndexChanged())
2022-11-02 12:33:20 +01:00
Juergen Spitzmueller
b51f1f7800 Remove wrong count comment 2022-11-02 10:46:52 +01:00
Kornel Benko
9be6a425df Workaround for advanced search in 'uncover'-inset.
Allows for matches inside style Uncover if used
	Settings->Adhere to search string formatting
This does not cover all of #12594 though.
2022-11-02 10:33:29 +01:00
Juergen Spitzmueller
5a53a5f608 Fix output of subentry with sortkey 2022-11-01 11:55:57 +01:00
Juergen Spitzmueller
fd5adacef2 Handle empty index subentries (#7820) 2022-11-01 10:20:50 +01:00
Thibaut Cuvelier
3bf1b97ae5 InsetIndex: hide printTree behind a LYX_INSET_INDEX_DEBUG flag
The change ensures that the function is not seen by the compiler when
the debug mode is not enabled. The flag is not set by default, because
it might have a significant performance impact for large indices.

The reason for the flag is that the default configuration under Linux
forbids the definition of unused functions.
2022-11-01 00:00:37 +01:00
Juergen Spitzmueller
3c488c22e1 Update tex2lyx tests 2022-10-31 21:11:07 +01:00
Juergen Spitzmueller
ca89c6c18e Typo 2022-10-31 07:52:11 +01:00
Juergen Spitzmueller
077ccf905d Rename subindex to subentry
Makes more sense, and distinguishes it better from printsubindex
2022-10-31 06:51:38 +01:00
Juergen Spitzmueller
fba3dace9e Display subinsets in inset button and outliner 2022-10-31 06:04:13 +01:00
Juergen Spitzmueller
9dc9fa68ce Enter subindex on Enter in index 2022-10-31 05:25:04 +01:00
Juergen Spitzmueller
874f559bc7 Add last missing bit to insetindexmacros: file format change and lyx2lyx
The feature is now ready for primetime!
2022-10-29 15:11:11 +02:00
Juergen Spitzmueller
e39c755b85 Enable pagination property with inset sortkey 2022-10-29 12:48:45 +02:00
Juergen Spitzmueller
3a949b32f0 Merge branch 'master' into features/indexmacros 2022-10-29 11:42:14 +02:00
Juergen Spitzmueller
6415afc1fe Minor improvements to the screen width UI
* fix order of input and unit widgets
* remove redundant "Screen used" label
* Add tooltip
2022-10-29 11:17:22 +02:00
Scott Kostyshak
172e544e2c Whitespace 2022-10-28 18:28:31 -04:00
Jean-Marc Lasgouttes
a852423781 Revert "WIP: refactor Systemcall"
This reverts commit c8015878e1.

Committed by mistake obviously!
2022-10-28 18:04:45 +02:00
Jean-Marc Lasgouttes
6c2d4f9392 constify 2022-10-28 18:03:50 +02:00
Jean-Marc Lasgouttes
c8015878e1 WIP: refactor Systemcall
**WARNING; only compilation has been ested; even that does not work**

The goal of this commit is to use the list-based API to
QProcess::start, to avoid annoying syntax issues (see issues with
pasting from LaTeX).

* Create a new latexEnvironment() in filetools.h that returns a
  map<string, string> containing the variables and their values.

* Rewrite parsecmd() so that it returns a QStringList of tokenized parameters.

* Use this in startProcess. This is the part is is not finished yet.

Obviously, this will not be possible to get right for 2.4.0.
2022-10-28 17:21:33 +02:00
chillenb
22e5903bf3 adjust text display width in windowed mode 2022-10-27 17:49:43 +02:00
Jean-Marc Lasgouttes
4ce45a5bcd Remove unused method 2022-10-27 17:17:19 +02:00
Jean-Marc Lasgouttes
a559616cbd Revert "Always remove selection after cursor up/down"
This reverts commit 008a0825e8.

This commit was part of bug #12310. The goal was to remove the
selection when using "up" at the start of selection (so that the
cursor cannot move). Unfortunately, it creates navigation issues for
insets inside tabulars.

Since the fix was minor, the safest decision is to revert.

The part of ticket #12310 that resets selection with
char-forwars/backward when moving is not possible still works.

Fixes bug #12593.
2022-10-27 15:07:57 +02:00
Juergen Spitzmueller
b3b22b0c70 Sync with master 2022-10-26 10:52:21 +02:00
Jean-Marc Lasgouttes
fff28c5756 Always qualify calls to std::move()
This quashes a new warning in clang++ 15, when std::move() (the
one-parameter version) is used as simply move(). There is a strong
recommendation from WG21 to avoid that.

Details here: https://reviews.llvm.org/D119670

It might be that we should not use that many move()s. I am not
competent to decide on that.

I also used this occasion to get rid of a spacial casing for C++11
that does not seem necessary after all.
2022-10-21 14:11:36 +02:00
Juergen Spitzmueller
647c7b1ac3 GuiLog: don't miss package warnings for packages with dashes
(e.g. scrlayer-scrpage)
2022-10-16 12:08:21 +02:00
Juergen Spitzmueller
d4d4654d63 Only load subscript package with LaTeX < 2005/12/01 (#12387) 2022-10-13 16:05:03 +02:00
Juergen Spitzmueller
ac3562dbc9 Need cellvarwidth also in left-aligned cells if they use newlines (#12587) 2022-10-11 16:01:29 +02:00
Juergen Spitzmueller
2c72884f26 GuiLyXFiles: differentiate user and system folders 2022-10-09 16:13:48 +02:00
Juergen Spitzmueller
0e4ca9aa88 GuiLyXFiles: Hide empty categories on filtering (#12584) 2022-10-09 16:01:49 +02:00
Juergen Spitzmueller
5ee0ba6403 GuiLyXFiles: Visually distinguish folders from files (#12584) 2022-10-08 16:45:52 +02:00
Jean-Marc Lasgouttes
49fee942cf Fix inline completion prefix for macro insets
As it was, the prefix was empty when completion popups were disabled.

Related to bug #12581.
2022-10-08 14:22:18 +02:00
Jean-Marc Lasgouttes
786a6edb54 Disable completion when document is read-only.
Being able to insert completion in a read-only document is definitely
a bad idea.

This patch acts both on indication of completion and on insertion
itself.

Fixes bug #12582.
2022-10-08 12:52:05 +02:00
Yuriy Skalko
8f43f83ddf Show branches from master document in branch inset dialog 2022-10-07 19:00:37 +03:00
Jean-Marc Lasgouttes
8508c3fe04 Completion: handle undo in insets' insertCompletion methods
I mathed, undo should record the underlying inset on completion,
whereas in test recording the paragraph is enough.

Therefore the recordUndo() in GuiCompleter::tab is removed, and the
relevant recordUndo/recordUndoInset are used at the right places.

As a further cleanup, the parameter `finished' of
Text::insertCompletion is removed as it is useless.

Fixes bug #12581.
2022-10-05 09:48:01 +02:00
Scott Kostyshak
300160df1c Whitespace 2022-10-03 20:43:54 -04:00
Enrico Forestieri
65b4c3fcd2 Fix bug #12580
This amends [4a7a1935/lyxgit]. Before 4a7a1935 it was assumed
that a labeled row was also numbered. Hence, when unnumbering
a row a label was also deleted. We now have to do this explicitly.
2022-10-02 14:59:03 +02:00
Scott Kostyshak
725168baba Fix gcc-12 warning
From Kornel:

>  /usr2/src/lyx/lyx-git/src/Paragraph.cpp:1931:1: warning: control reaches end of non-void
>  function [-Wreturn-type]
>
> This is with gcc-12, compiled in debug mode.
2022-09-24 21:05:38 -04:00
Jean-Marc Lasgouttes
bbaebd15ce Fix line breaking at trailing space
With a string like "abc def [inset]", it should be possible to break
between the "def" and the inset. A case of interest is when "abc def "
is too long, but "abc def" is not.

To this end, tweak the test that look whether breaking was successful:
the right width to look at is nscp_width, the width without the final
space.
2022-09-23 18:31:10 +02:00
Jean-Marc Lasgouttes
3bba2ad150 vocabulary 2022-09-21 19:29:52 +02:00
Jean-Marc Lasgouttes
2abe771407 Fixup 572b06d6: reduce cache size for breakString
This was necessary only due to bug #12534.

Reduce the size from 10Mb to 1Mb. Profiling shows that the cache hit rate
is the same.
2022-09-21 19:10:57 +02:00
Enrico Forestieri
90551a03ac Amend f426470a
The synctex option can also be specified by a single dash and
any value different from zero will do.
2022-09-14 20:10:01 +02:00
Jean-Marc Lasgouttes
8319bdbbbe Unify wording for statistics
Use 'no blanks' uniformly.

Also remove separator in zoom menu.
2022-09-13 12:42:28 +02:00
Daniel Ramoeller
974534f28a Disentangle status bar and zoom menu
- Moves the zoom menu to the zoom value
2022-09-13 11:49:41 +02:00
Pavel Sanda
e0b1cc902c * doxy 2022-09-06 22:12:25 +02:00
Thibaut Cuvelier
0bda6950e4 MathML: amend 26300c565f as discussed in bug 12513
Contributed by lynx
2022-09-02 02:00:12 +02:00
Thibaut Cuvelier
5b405426f1 MathML: should display "Text" MathFont using proper <mtext> tag
Fixes bug 12397

Contributed by lynx
2022-09-02 01:57:06 +02:00
Thibaut Cuvelier
962785cb0f InsetTabular: fix a typo 2022-09-02 01:30:25 +02:00
Thibaut Cuvelier
8074b696bc InsetTabular: move more helper methods to private 2022-09-02 01:29:19 +02:00
Thibaut Cuvelier
89c203faa4 InsetTabular: replace a Boolean parameter to choose between XHTML and DocBook by an enum class
The only goal is to improve code readability: this enum class is strictly equivalent to a Boolean, with the same meaning as the previous is_xhtml arguments (arbitrary choice).
2022-09-02 01:26:30 +02:00
Thibaut Cuvelier
ff9f3c774e InsetTabular: move XML helper methods to private
They are not needed outside InsetTabular.
2022-09-02 01:26:30 +02:00
Thibaut Cuvelier
3637d6d408 DocBook: amend 50374e38e1
All table rows were generated in the same XML dialect, irrespectively of the caller context (XHTML or DocBook).
2022-09-01 23:33:56 +02:00
Thibaut Cuvelier
5e87cfbf4c Fix a warning related to comparing different signedness 2022-09-01 10:57:04 +02:00
Thibaut Cuvelier
92ba758441 LyXHTML: implement index ranges 2022-09-01 02:22:50 +02:00
Thibaut Cuvelier
2b177172f1 LyXHTML: implement multiple indices 2022-09-01 02:04:16 +02:00
Thibaut Cuvelier
f4b0cf9b59 DocBook: amend 34ea4080
@ for sorting is implemented at 34ea4080, but the user was still shown a warning (now removed).
2022-09-01 01:17:58 +02:00
Thibaut Cuvelier
35a752e6db DocBook: add test case for multiple indices 2022-09-01 01:17:58 +02:00
Jean-Marc Lasgouttes
337cc97174 Use auto const & when possible to avoid copies
In several range-based for loops, implicit copies are made. Remove
that when possible, and try to shut converity up otherwise.

Fixes issues found by coverity.
2022-08-30 17:31:37 +02:00
Juergen Spitzmueller
0515bfa989 Update stats display if a stat is (un)selected 2022-08-18 19:09:15 +02:00
Juergen Spitzmueller
fee10d2d0d Another inset font switch fix 2022-08-17 18:04:51 +02:00
Juergen Spitzmueller
96d9e748cf Polish status bar statistics 2022-08-17 14:59:50 +02:00
Juergen Spitzmueller
e6b93f7489 Load ucs before utf8x inputenc with recent ucs versions
Otherwise inputenc falls back to utf8 option, which breaks documents
2022-08-16 17:56:07 +02:00
Juergen Spitzmueller
f6fff878a7 fix compiler warning 2022-08-16 17:41:40 +02:00
Stephan Witt
f426470a54 Improved synctex support
- Add check for converter with active synctex support to check for synchronized output for activate forward search.
2022-08-13 14:20:03 +02:00
Stephan Witt
9686fe0c79 Improved synctex support
- Check the state of the synchronize TeX output option of the document to enable or disable the LFUN for forward-search.
- write synctex macro to TeX source not only for PdfLaTeX
2022-08-11 22:45:51 +02:00
Stephan Witt
7391ca961d Additional cursor position validation required to avoid an assertion in Text::selectWord 2022-08-11 22:35:58 +02:00
Pavel Sanda
5b50a97fd7 Add document statistics to statusbar.
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg217810.html
2022-08-09 23:48:55 +02:00
Juergen Spitzmueller
c69da75dfc Use localized length strings also in space label/tooltip 2022-08-09 17:28:41 +02:00
Juergen Spitzmueller
9214f92599 Mode [un]locLengthString() methods to support/qstring_helpers 2022-08-09 17:27:53 +02:00
Juergen Spitzmueller
079bc8ca40 Localize display of glue lengths in dialogs 2022-08-09 09:44:12 +02:00
Juergen Spitzmueller
60b539e544 Rename function 2022-08-09 09:31:46 +02:00
Juergen Spitzmueller
1487b19803 Allow entering localized lengths with unit (#11852) 2022-08-08 18:35:48 +02:00
Stephan Witt
a89f2fd08c Make "open -a" implicit on macOS
Fix for bug #12570 - add simple check for app bundle name and prefix it with macOS open command if name matches
2022-08-08 10:36:46 +02:00
Juergen Spitzmueller
a8947aaad8 Amend 9e645a5cfc
Only show "System Default" if auto-open is available for the current
format.
2022-08-08 09:49:51 +02:00
Daniel Ramoeller
9e645a5cfc "System Default" viewer/editor option
Fix for bug #12571. More user friendly way to set the system default application aka "auto" option.
2022-08-08 09:18:39 +02:00
Juergen Spitzmueller
14d63f5be8 GuiGraphic: delimit "Scale in LyX" (1--1000%)
Larger values will eventually crash LyX (see #12353), 0 or negative
values make the image disappear in the workarea and impossible to edit.
2022-08-07 16:40:12 +02:00
Juergen Spitzmueller
6a2b220b8d Handle LFUN_FONT_DEFAULT is InsetTabular::Dispatch (fixes #12566) 2022-08-07 14:34:42 +02:00
Juergen Spitzmueller
75aaa8e22b Amend 4ba989000c
If the lfun argument already has a Flex: prefix (which is equivalent),
do not append one
2022-08-07 10:41:02 +02:00
Juergen Spitzmueller
4ba989000c Fixup cd83386363 (#12569) 2022-08-06 19:00:36 +02:00
Juergen Spitzmueller
8ac177f656 Fix font tracking at fontswitch_insets
(hopefully)
2022-08-06 17:29:40 +02:00
Pavel Sanda
6031666b01 another typo 2022-07-31 00:26:04 +02:00
Pavel Sanda
00bba01de9 whitespace 2022-07-31 00:24:33 +02:00
Pavel Sanda
130282a418 Doxy for zoom args in ui-toggle lfun. 2022-07-31 00:23:09 +02:00
Jean-Marc Lasgouttes
1dedd39864 Allow to unbind without specifying the lfun
When unbinding a shortcut, it may happen that the exact definition of
the request is not known. A typical example it Tab, which is bound to
a complex command sequence.

In this case it is convenient to use the syntax
\unbind "Tab" "*"

To make this word, the special "*" value is translated to the
FuncRequest::unknown lfun and this value is considered specially in
several places.
2022-07-27 18:57:03 +02:00
Scott Kostyshak
11d5e31c65 Remove unneeded code
This code was triggering the following warnings:

  src/mathed/InsetMathHull.cpp:234:15: error: variable 'counters_to_save' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
          const char * counters_to_save[] = {"section", "chapter"};
                       ^
  src/mathed/InsetMathHull.cpp:235:21: error: unused variable 'numcnts' [-Werror,-Wunused-const-variable]
          unsigned int const numcnts = sizeof(counters_to_save)/sizeof(char *);

The original code was put in at 645f9fdf (and the comment at 8a226ec4).

This commit amends a65e12d6.
2022-07-27 07:29:11 -04:00
Jean-Marc Lasgouttes
e0e548217e Do not redefine \jobname for previews
This reverts the fix for #9627, with the agreement of original reporter.

Fixes preview of citation insets.
2022-07-27 12:42:10 +02:00
Jean-Marc Lasgouttes
20d5851fb7 Regenerate equations previews when their numbering changes.
Time will tell whether this is too expensive (because most equations
after this on will change too, unless equations are numbered by
section).

Related to bug #11535.
2022-07-26 23:16:41 +02:00
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