Commit Graph

699 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
89db357cd6 Code factoring: introduce BufferView::busy()
The WorkArea should not have to look at details of the undo stack.
No change intended.
2023-05-03 11:57:31 +02:00
Jean-Marc Lasgouttes
1081893e97 Fixup 0fed10e4: make sure redraw happens as needed
This commit had had an additional not documented change: redraws
happen only when they are needed. This did not help fix the bug, but
looked smart on first sight. Alas, I find that these smart changes
added because "why not?" tend to come back to haunt me eventually.

In particular this case, the problem was that the code tested whether
the offset of anchor paragraph had changed, but not whether the
paragraph itself had changed. This means that, when switching from one
section to another with the outliner, the view was not updated.
2023-02-01 00:09:49 +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
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
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
chillenb
22e5903bf3 adjust text display width in windowed mode 2022-10-27 17:49:43 +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
Stephan Witt
7391ca961d Additional cursor position validation required to avoid an assertion in Text::selectWord 2022-08-11 22:35:58 +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
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
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
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
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
Jean-Marc Lasgouttes
a90a1aed06 Fixup cc426346: rename curs to bvcur
The name "curs" was chosen to avoid to hide the existing "cur" local variable.
Using "bvcur" makes the name easier to grasp.
2022-02-20 19:35:37 +01:00
Jean-Marc Lasgouttes
48ee2fd07b Do not call recordUndo(), lyx::dispatch handles it.
This avoids extra memory use (and would mark document dirty even if
read-only).
2022-02-20 19:33:22 +01:00
Jean-Marc Lasgouttes
3b28ac4637 inset-forall: clear selection after each action
This avoid a crash when doing
  command-sequence inset-forall Caption char-delete-forward; statistics; undo
in the user guide when a malformed selection is created.

The selection happens here because char-delete-forward will select the
caption instead of deleting it if the "force" parameter is not given.
This is a poor API IMO, it is the plain <del> action that should use a
special parameter.
2022-02-20 19:07:58 +01:00
Jean-Marc Lasgouttes
6f7505300e When clearing a row, always clear the whole text area width
It is not a good idea to take into account the horizontal scrolling
that may have happened. For example, this leads to display glitches
when a Description label is larger than text width.

This explains why SingleParUpdate strategy did not work with home/end
on a long row.
2022-01-17 17:35:12 +01:00
Jean-Marc Lasgouttes
741d055eba Fixup 1cbbe5c3: fix scrollbar with page down
It turns out that the fix was not correct. The right thing to do is to
recompte metrics only when screen has moved.

Fixes bug #12144.
2021-11-13 19:24:05 +01:00
Jean-Marc Lasgouttes
110445e3e2 Rename BufferView::updateScrollbar to show what does
Only parameters are updated, not the scrollbar itself.
2021-10-29 17:45:51 +02:00
Jean-Marc Lasgouttes
40ee8d2a1a Reset inline completion after undo/redo
Fixes bug #12383.
2021-10-18 17:36:27 +02:00
Jean-Marc Lasgouttes
91c5061d26 Revert "Reset inline completion after undo/redo"
Try a solution closer to other code instead.

This reverts commit e59aee4580.
2021-10-14 16:26:21 +02:00
Jean-Marc Lasgouttes
e59aee4580 Reset inline completion after undo/redo
Fixes bug #12383.
2021-10-12 15:45:04 +02:00
Jean-Marc Lasgouttes
e09158efee Use unordered maps to store inset and math rows geometry.
Simply using unordered_map instead of map makes a big difference for
documents with lots of math insets in one text inset.

Related to bug #12297.
2021-10-08 18:17:19 +02:00
Jean-Marc Lasgouttes
42abb26054 Make paragraph-goto and friends set paragraph to the top
Add parameter 'force' to scrollToCursor(...) to avoid the case where the
cursor is not set to top because it is already visible on screen.
Change screen offset in this method so that the paragraph is really at
the top of the screen. This part may cause unforeseen issues and needs care.

gotoInset: use the new force flag and do not trigger a redraw.
Instead, return a boolean telling whether redraw is needed.
In the code that use it, set an update flag instead of the extra redraw.

In the handling of paragraph-goto, also set the update flag instead of
triggering a repaint.

Remove Bufferview::scrollToCursor(), which was equivalent to showCursor().

Fixes bug #10425.
2021-09-29 12:16:39 +02:00
Jean-Marc Lasgouttes
0f0ad1f715 Make bookmarks display configurable
Introduce a GUI-less LyXRC member bookmarks_visibility. This is
experimental and will not be documented for 2.4.0. Having the code
present will allow to (1) improve it gradually and (2) fix the many
bookmarks bugs that it exposes.

The corresponding tag is \experimental:bookmarks_visibility, which is
intentionally weird.

Three possible values:

* none: no bookmark display
* margin: display the bookmark in margin
* inline: display the bookmark at cursor position.

The default margin has been made wider so that there is room for the
bookmark. This was necessary anyway. The margin bookmark is now
displayed correctly in full screen with limited text width.

Margin display still needs some improvements when several bookmarks
are on the same row.

Mostly fixes bug #2496.
2021-04-07 16:19:20 +02:00
Enrico Forestieri
eeb36e808c Change cursor shape for clickable math insets
Currently, only InsetMathRef and InsetMathSpace are clickable.
2021-04-01 16:59:55 +02:00
Jean-Marc Lasgouttes
0429b580e6 Fixup 4671214f: add comment 2021-03-26 14:26:15 +01:00
Daniel Ramoeller
4671214f3d Keep caret visible when small
Fix for ticket #12190.
2021-03-26 12:43:11 +01:00
Juergen Spitzmueller
ae892bff98 Fix copy of multi-cells in table (#12196) 2021-03-12 17:44:33 +01:00
Jean-Marc Lasgouttes
447a1056b4 Fix bookmarks-goto inside insets.
A stupid oversight, as far as I can see.
2021-03-11 16:16:11 +01:00
Jean-Marc Lasgouttes
b87a81c394 Fixup fbf22bb3: really avoid screen-jumping with mouse click.
It turns out that the commit from gadmm's lyx-unstable has been
cherry-picked at the wrong place! However I believe that both changes
are necessary.

With this second patch, I do see that some screen jumping is avoided.

Fixes bug #7457.
2021-03-10 10:43:45 +01:00
Jean-Marc Lasgouttes
776807a536 Constification 2021-03-10 10:43:45 +01:00
Jean-Marc Lasgouttes
9a2b8c87cd Code reformatting. 2021-03-10 10:43:45 +01:00
Enrico Forestieri
7545698380 Fix bug #12181
The context menu for InsetMathRef is now usable.
InsetMathRef still misses support for RefStyle and thus the
corresponding entries are omitted from the menu. But this would
be a different bug.
2021-03-06 23:36:58 +01:00
Enrico Forestieri
5a43b86141 Allow context menus in mathed
It is now possible to get a context menu for math insets.
InsetMathSpace was already providing a specific context menu,
but it was never triggered because the math hull inset is not
descendable. It is still so, but now when a context menu is
requested all the insets inside the math hull are examined.
If the inset under the cursor provides a context menu, it
is shown instead of the general math one.

Fixes #12100.
2021-03-05 21:21:41 +01:00
Jean-Marc Lasgouttes
fbf22bb3f3 Fix random scrolling inside nested insets
Happened when the BufferView was resized (e.g. math toolbars were
displayed/hidden).

Backported from gadmm's lyx-unstable tree
https://gitlab.com/gadmm/lyx-unstable/-/commit/a868bc034cea4c

Possible fix to bug #7457.
2021-03-02 18:10:12 +01:00
Jean-Marc Lasgouttes
42b23f3fb2 Display bookmarks in the workarea (take 2).
The bookmarks are shown with circled numbers in the right margin (or
the left margin in RTL mode). A new color "bookmarks" has been added.
Currently bookmark 0 (the return position) is not displayed because it
is very disturbing in practice.

To make this work, a new method BookmarksSection::bookmarksInPar
retuns the list of bookmarks in a paragraph along with their position.

Force redraw when using bookmark-save and bookmark-clear.

Caveats:

- this solution does not show the precise position of the bookmark
  (this is supposedly not a problem).

- if several bookmarks are on the same row, they will currently be
  garbled. It would be easy to make sure that only one is shown ; what
  would be more difficult would be to move the second bookmark lower.

- it is possible to make sure that the markers are correctly centered
  in the margin, and that the margin size is large enough to hold the
  marker (I did not try all fonts).

Fixes bug #2496.
2021-02-26 19:09:25 +01:00
Jean-Marc Lasgouttes
e4ab91d802 Revert "Display bookmarks in the workarea."
This will be replaced by a different version.

This reverts commit 99e636ae7b.
2021-02-26 18:07:39 +01:00
Jean-Marc Lasgouttes
090e9a6c36 Keep the useful parts of reverted commits
Keep from 907f0207 the introduction of BufferView::top/bottomMargin()
and the setting of the top/bottom margin of the document. The
difference is that the extra height is still added to the relevant
rows, and not only to the paragraph metrics.

Keep from f41ca959 the reduction of top/bottom margin for Adv F&R
workareas.
2021-02-16 12:29:40 +01:00
Jean-Marc Lasgouttes
a40ca1430e Revert "Improve handling of top and bottom margin"
This reverts commit 907f020724.
2021-02-16 12:29:40 +01:00
Jean-Marc Lasgouttes
810b86560a Revert "Reduce top/bottom margin for Adv F&R workareas"
This reverts commit f41ca959fd.
2021-02-16 12:29:40 +01:00
Jean-Marc Lasgouttes
f6c87c63c1 Revert "Make sure that top/bottom margins are visible when needed"
This reverts commit a78eb4471f.
2021-02-16 12:29:40 +01:00
Juergen Spitzmueller
5980afaee0 Add support for search/replace within selection (#2548) 2021-02-16 08:11:09 +01:00
Juergen Spitzmueller
958213ee52 Improve instant search 2021-02-15 14:12:07 +01:00
Juergen Spitzmueller
f59b8cb657 GuiSearch: Add auto-wrap option 2021-02-15 11:30:03 +01:00
Stephan Witt
a476cc4839 #8055 add support for system-wide find buffer on Mac
Command-E is standard for paste to find buffer on Mac. That's why the key binding is changed appropriately.
2021-02-14 18:56:25 +01:00
Stephan Witt
46bb8f22c9 #8055 correct processing of LFUN_WORD_FIND option flags for repeated search operations 2021-02-13 04:47:44 +01:00
Jean-Marc Lasgouttes
1cbbe5c3aa Do not redraw cursor twice with Page Up/Down
Just recompute metrics instead of triggering a full redraw. The old
behavior was that, when the document was less that one page long, the
cursor would blink to the top of the document before going to its
correct position.
2021-02-12 18:35:07 +01:00
Jean-Marc Lasgouttes
a78eb4471f Make sure that top/bottom margins are visible when needed
When the cursor is at the top, it is important to make sure that, not
only its row is visible, but also the extra margin at the beginning of
the document, that was added at 907f0207.

Fixes part of bug #12123.
2021-02-12 18:35:07 +01:00