Commit Graph

9693 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
Daniel Ramoeller
d9f51be6ed Show size of named spaces in dialog
Fix for bug #12467.
2022-06-03 12:37:39 +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
Daniel Ramoeller
4dd1fbbce0 Use "Auto" value on cursor width spinbox
Fix for bug #12515.
2022-05-11 18:05:47 +02:00
Juergen Spitzmueller
8bf45dd3ea Shuffle and add some shortcuts 2022-05-10 13:29:51 +02:00
Juergen Spitzmueller
c0a3d654ff Add GUI for search-ignore 2022-04-30 14:23:54 +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
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
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
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
Juergen Spitzmueller
a88f67ac60 Fix signal (#12506) 2022-03-13 10:26:26 +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
Stephan Witt
6b0cd451fb #9287 query Standard User Defaults on mac and adjust cursor flash time accordingly 2022-02-20 13:06:54 +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
2ab548b6f6 Fix tooltip and layout 2022-02-12 17:42:13 +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
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
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
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
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
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
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