* put the code that is called both from Buffer and InsetBrach in the
two helper methods Buffer::branchActivationStatus() and
Buffer::branchActivationDispatch().
* Cleanup the code so that _MASTER_ lfuns are disabled when there is
no master document.
* When changing branches in the master buffer, make the buffer visible
if it is not, and make sure that undo information is recorded.
* The code in Buffer::dispatch is used first, and it gives control to
the branch inset code if no branch name has been specified.
* do not try to dissolve a macro template inset (avoids a crash)
* disable inset-dissolve when an argument is given
* when triggered by the AtPoint mechanism, make sur to dissolve the
right inset.
Pavel Sanda [Sat, 22 Jul 2023 15:46:23 +0000 (17:46 +0200)]
Fix application of PARAGRAPH_PARAMS* in selection.
- Setting in the last paragraph of selection was not applied
at certain conditions (i.e. relative cursor position in first
paragraph > rel.c.pos. in last paragraph).
The font inside the inset is inherited from the parent for LaTeX
export if this parameter is true, as well as on screen. Otherwise
the document default font is used.
The default value is true.
Update tufte layouts to use this tag for sidenote and marginnote flex
insets.
Detect when one tries to bind a lfun to a prefix of longer commands
Change KeyMap::getBinding to return FuncRequest::prefix in this case.
Add handling of this case in PrefShortcuts::validateNewShortcut.
What does not seem to work is that if, for example, accent-acute is
bound to M-s (which is a prefix for size-related bindings), and then
the binding is removed, the functions are not visibly restored.
Pavel Sanda [Fri, 21 Jul 2023 21:17:55 +0000 (23:17 +0200)]
Create the other side of conversion chain when IM is banned (bug #12646).
We allow png, jpg to channel through already existing tiff2ps (library
libtiff-tools). Other formats can be added if there is a request.
For future reference:
- using pnmtops seem to have issues with landscape/portrait flip, so
tiff2ps seems better alternative.
- using GraphicsMagick won't help because some distros ban postscript
processing directly in its code (e.g. openSUSE)
This patch finishes IM policy ban handling, we can't probably do much
better.
Honor scroll_below_document when jumping to end of document
While fixing #12491 at 0fed10e4, some band-aids were removed at the
end of `BufferView::scrollToBuffer`. One of them ensured that
scrolling to last paragraph would not leave the last row alone on
screen.
This behavior is actually correct when the scroll_below_document pref is true.
This commit restores the test that avoids the issue.
Of course, this does not fix the real issue, since for example opening
Tutorial.lyx and jumping to "5.3 Errors!" produces the same unwanted
effect.
Remove some logic that would reset depth when editing non-environment
stuff (e.g. Standard layout) at non-zero depth. The current way of
decreasing depth is to use paragraph-break in an empty paragraph.
See discussion in ticket #2445 for why this code happened.
Stephan Witt [Sun, 16 Jul 2023 14:48:49 +0000 (16:48 +0200)]
#12818 correct evaluation of message box result info
The help page of int QMessageBox::exec() (https://doc.qt.io/qt-6/qmessagebox.html#exec) says:
When using a QMessageBox with standard buttons, this function returns a StandardButton value indicating the standard button that was clicked.
When using QMessageBox with custom buttons, this function returns an opaque value; use clickedButton() to determine which button was clicked.
If language needs to be reset at the end of footnotes or floats
then do reset it only after footnotes or floats. \selectlanguage at
the end of environments might produce spurious vertical space
(see https://marc.info/?l=lyx-devel&m=168872369617866)
This value is computed for the metrics of *every* Mathdata and hotspot
says that it counts for 9% of total on math-heavy "branch-test.lyx"
file. I am not sure that real world agrees with that, but profiling
shows that Qt itself does not cache the value.
Cleanup and (maybe) speedup InsetMathChar::mathClass
Profiling with hotspot show that it counts for more than it should and
indeed using support::contains is a overkill here. I like the new code
better anyway.
I would be surprised to see that it makes a big difference, though.
This is a kind of hack. This allows InsetMathHull to state that it
needs some elbow room beyond its width, in order to fit the numbering
and/or the left margin (with left alignment), which are outside of the
inset itself.
To this end, InsetMathHull::metrics() sets a value in
MetricsInfo::extrawidth and this value is recorded later in the
corresponding row element's `extra' field.
The code could be reorganized to be simpler, in particular by
computing metrics in tokenizeRow, or after tokenizeRow. However the
choice here is to produce a simple patch, fit for 2.4.0.
Scott Kostyshak [Thu, 6 Jul 2023 12:40:12 +0000 (08:40 -0400)]
Fix cursor font after collapsing inset (#12830)
If the cursor is in an inset, and it is closed (e.g., with ctrl + i,
or inset-toggle), the cursor is moved outside of the inset, so the
font must be reset.
The InsetMathChar::write() method directly accesses the otexrowstream
underlying the TeXMathStream class for writing a character, thus
shortcircuiting the mechanism that allows to separate a macro from the
following material. It has to do so because directly writing a char_type
would cause printing its numerical value instead of the corresponding
unicode character in systems where char_type is typedef'd to uint32_t.
This problem has been uncovered by [7441172d/lyxgit] because each atom
of a mathed cell was being separately written to the output instead of
using the lyx::write() method in MathExtern.cpp that simply converts
everything to a docstring. As InsetMathChar::write() is the only method
bypassing the TeXMathStream machanism, it is simpler teaching it to
honor the pending space instead of modifying the code in InsetMathColor.
The function outline is modified to operate only in the inset that
contains the cursor. This means that the function can be enabled in
insets (this had been forbidden to fix #5004).
Of course, there may be cases where the user expects something to
happen outside of the inset. I am sorry to announce that this is not
going to happen ;)
This patch reuses the code of TextMetrics::displayFont() that handles
the label part of LABEL_MANUAL paragraphs to create a new
labelDisplayFont() method usable for things like Itemize labels.
To this end, and new magic value is used as position to force the
label case in displayFont(). The code is also factored a bit and
cleaned up.
Scott Kostyshak [Mon, 19 Jun 2023 18:46:05 +0000 (14:46 -0400)]
Add "override" to fix warning
Otherwise we get the following warning:
src/frontends/qt/InsertTableWidget.h:44:7: error: 'hideEvent' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
void hideEvent(QHideEvent * event);
^
Scott Kostyshak [Thu, 15 Jun 2023 09:11:32 +0000 (05:11 -0400)]
Remove the mathed "BUGS" file (#3493)
Jürgen cleaned up the previous contents of this "BUGS" file. What
was left (before the rm in this commit) had been written in 2001 at 2dd1a460, and it is not clear if it is still relevant.