Commit Graph

24736 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
9c8e3df86b Fixup ac4bcb12
Cursor at end of paragraph should be treated as if boundary was on.

(cherry picked from commit d01dd54bf1)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
fa4fc6fc4d Avoid some caret ghosts
When the caret is at end of row, if may happen that it is drawn after
the end of the row. In this case caret blinking will not work
properly. This patch extends the row background on the left and right
by Inset::TEXT_TO_INSET_OFFSET. This is only a hack that will not work
if the caret has a ridiculous width like 6.

Additionally, introduce some (disabled) debug code that numbers the
rows on screen by painting order.

Finally, make the code that detects whether the caret was in a given
row more precise (take boundary into account).

Fixes (mostly, see above) bug #10797.

(cherry picked from commit e64ea3576c)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
a71610b9d7 Remove row crc computation
This computation did not make sense anymore since we began to put the
contents in the Row object. The fact that it worked was a coincidence.

Instead, we set rows as changed() on creation and reset that once they
have been drawn. This will allow in the future for a finer definition
of what to redraw or not.

Also update the PAINTING_ANALYSIS document

(cherry picked from commit 9e2da4a3ea)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
d2e15bd189 Store change bar information in row element
It is wrong to compute this at paint time. In general, painting a row
should not require any access to a paragraph object, but we are far
from there now.

(cherry picked from commit 4858bb3bb6)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
4ecbff0019 Allow multiple calls to processUpdateFlags before redraw
The goal of this commit is to ensure that a processUpdateFlags call
that requires no redraw will not override a previous one that did
require a redraw.

To this end, the semantics of the flag argument is now different: its
value is now OR'ed with a private update_flags_ variable. This
variable is only reset after the buffer view has actually been
redrawn.

A new Update::ForceRedraw flag has been added. It requires a full
redraw but no metrics computation. It is not used in the main code
(yet), but avoids to compute metrics repeatedly in consecutive
processUpdateFlags calls.

The process is now as follows:
- if flags is just None, return immediately, there is nothing to do.
- the Force flag is honored (full metrics computation) and replaced
  with ForceDraw.
- the FitCursor flag is honored and removed from the flags.
- the SinglePar update is added if ForceDraw is not in flags and only
  the current par has been modified.

The remaining flags are only then added to the BufferView update
flags, and the update strategy is computed for the next paint event.

Finally the dubious call to updateMacros in updateMetrics has been
removed for performance reasons.

(cherry picked from commit 8d8988de47)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
2b1b33189d Create new method GuiWorkArea::Private:::updateCaretGeometry
This replaces a showCaret/hideCaret pair and avoids an update.

Also remove an update() call in resizeBufferView: is is not necessary
since we are already in a pintEvent handler.

(cherry picked from commit add342d088)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
6bd158dcba Improve the logic of caret repainting
For some reason the existing code only considered the bottom row that
contained the cursor. There is no need for that, and actually it
caused painting problems in nested insets.

Tweak the logic of repaint_caret_row_ a bit: there is no need for
repainting when there is currently no caret on screen.

(cherry picked from commit 764a153c69)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
f6cbc08a7d Fix bad refresh when changing zoom level
Replace the tricky code in LFUN_SCREEN_FONT_UPDATE and replace it with
proper use of DispatchResult flags.

LFUN_BUFFER_ZOOM* does not need to call LFUN_SCREEN_FONT_UPDATE, since
it already does everything that is required.

(cherry picked from commit 9df59aac63)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
7b99bf6a37 Do not presume what the defaults for a new QPainter are
(cherry picked from commit 275d306c73)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
c43b6a9ecf Remember correctly pixel ratio used for painting
This avoids endless resize issues on HiDPI systems (e.g. Retina Mac).

Rename pixel_ratio_ to last_pixel_ratio_ to emphasize that this is a
cached value.

Inline needResize method to make the logic clearer in paintEvent.

(cherry picked from commit 6532e5104d)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
a1579c583a Compute metrics when graphics is updated
Remove the old schedule_redraw_ mechanism that was only useful because
of our synchronous drawing code. Now that actual painting is
scheduled instead of forced, it becomes pointless.

Rename WorkArea::redraw(bool) to scheduleRedraw(bool), to show that
the drawing is not done right away.

In GuiView::updateInset, call scheduleRedraw(true), so that metrics
are correctly computed (this was the whole point of the exercise).

(cherry picked from commit a31d3dc67d)
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
9bb41f0943 Update insets position in cache in more cases
This patch makes sure that, every time a ParagraphMetrics has its
position set, the inset positions for the insets held by this
paragraph are remembered too.

This is complementary to BufferView::updatePosCache, but I do not have
hard evidence that this is required other than to increase robustness.
It may help in some cases when scrolling the document (scrollbar,
cursor up/down, page up/down).
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
94b1d04f2c Rename more instances of "cursor" to "caret"
Thanks to Pavel for the hint.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
410605385f Remove workaround that is not necessary anymore.
This code was necessary to handle cases where the insets positions
were not yet in cache. This cannot happen anymore thanks to the
nodraw stage.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
9ef52806f8 Make input methods support great again
This unbreaks input methods by splitting the part of the code that
does the actual drawing to a separate paintPreeditText() method which
is called from paintEvent().

The proper solution would have been to introduce the preedit string in
the Row object, like is done for completion, but this is too complex
to do at this point.

The only change in behavior is that now the commit string is inserted
in one fell swoop, intead of emulating a number of key events.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
418bf09879 Cleanup and simplify WorkArea code
Rename cursor to caret to in order to avoid ambiguity. The caret is
now the blinking thing only.

Remove unused header contents, and some not so useful methods.

No intended change of behavior.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
ef1d502070 Fix caret painting
The trick is to remember in BufferView what has been done at the
previous draw, so that the row that contained the caret can be
repainted if needed.

To this end, add an argument paint_caret to BufferView, although
painting the caret is not the job of the BufferView (at this point).

BufferView::needRepaint will act as an interface with
TextMetrics::drawParagraph to know whether the painting of a given
row should be forced.

Currently everything is done at the top row level, so that, if the
caret is in a large table, the whole table will have to be repainted.
It is not clear yet that this is necessary.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
7b8b3e38a1 Do the actual drawing in the paint event
Historically, because of two-stage drawing, LyX has been painting on a
Pixmap, and this pixmap is copied to screen at paint event time.

Now that we have three-stage drawing, it is possible to delay the
painting to actual paint event and avoid the intermediate Pixmap.

Known bug: the cursor is never erased.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
d222e0f48e three-stage drawing: add a nodraw stage
Normally the two stages of drawing are
1/ compute metrics of insets/rows/paragraphs/mathrow...
2/ draw the elements and cache their positions

Now the three stages are
1/ metrics
2/ nodraw: do not draw the elements, but cache their position
3/ draw the elements (and store again their position; it does not
   seems to hurt performance).

Revive the NullPainter: this replaces the setDrawingEnabled mechanism
with a painter that does nothing. The advantage is that updatePosCache
(renamed from setPosCache) does not need anymore to be invoked from
the frontend.

updatePosCache (the nodraw stage) is called at the end of
BufferView::updateMetrics.
2018-02-15 12:29:25 +01:00
Jean-Marc Lasgouttes
9a1728c70a Implement buffer-anonymize more efficiently
The work is done now in Paragraph::anonymize().

Move the handling of the lfun to Buffer class.

Document the new feature in release notes.

(cherry picked from commit 1dba36c7ce)
2018-02-15 12:07:33 +01:00
Pavel Sanda
9966f098ea forgotten glitch 2018-02-15 11:55:51 +01:00
Pavel Sanda
624a6ed91d LFUN_DOC_ANONYMIZE -> LFUN_BUFFER_ANONYMIZE per JMarc's suggestion. 2018-02-15 11:49:21 +01:00
Pavel Sanda
08f6354bc9 Add LFUN_DOC_ANONYMIZE, quick fix for #7259.
Backport from master.
2018-02-15 11:47:10 +01:00
Jean-Marc Lasgouttes
2e1863b704 Implement display of roots more faithfully
This is a follow-up to 758de957.

- unify the metrics and drawing of \sqrt and \root using helper
  functions mathed_root_metrics and mathed_draw_root.

- compute the vertical spacing above the nucleus of the root following
  rule 11 of the TeXbook. In particular, it is different in inline and
  display style.

- draw the root glyph without hard-coded pixel values. Make the line
  width depend on the zoom.

more work is needed to implement properly rule 11:

- Ideally, we should use sqrt glyphs from the math fonts. Note that
  then we would get rule thickness from there.

- The positioning of the root MathData is arbitrary. It should
  follow the definition of \root...\of... in The Texbook in
  Apprendix B page 360.

Fixes bug #10814.

(cherry picked from commit 16af6e7c50)
(cherry picked from commit 6cb6f78ae9)
2018-02-15 11:34:00 +01:00
Jean-Marc Lasgouttes
1dc134fb60 Improve UndoGroupHelper and use it more
Now the helper class contains logic that checks whether buffer are
known before closing them. This avoids potential crashes.

Use it in different places to siplify code. It is not clear at this
point whether it should be used everywhere.

Followup to bug #10847.

(cherry picked from commit cd9e42dc35)
2018-02-15 10:36:17 +01:00
Jean-Marc Lasgouttes
51e80361b2 Better handling of multiple buffers in UndoGroupHelper
It may happen that the buffers are visited in order buffer1,
buffer2, buffer1. In this case, we want to have only one undo group
in buffer1. The solution is to replace buffer_ with a set<Buffer*>.

A use case among others is InsetLabel::updateReferences.

(cherry picked from commit cc7364dfc5)
2018-02-15 10:33:17 +01:00
Juergen Spitzmueller
bf94074114 Disable unsupported ref types in mathed.
Also repair prettyref in InsetMathRef.

Part of #9798

(cherry picked from commit 47e85b37eb)
2018-02-15 06:48:38 +01:00
Jean-Marc Lasgouttes
5f6c681b76 Handle properly top/bottom of inset with mac-like cursor movement
The correct behavior is to go to position 0 going up from first row,
and to end of row when going down on last row.

The targetx value of the cursor is not updated, which makes cursor
movement more natural.

Fixes bug #10701.

(cherry picked from commit 34285cc683)
2018-02-14 17:06:03 +01:00
Jean-Marc Lasgouttes
e11c8ba81b Disable and hide the pixmap cache feature 2018-02-14 10:12:11 +01:00
Richard Heck
0dfca93139 Fix crash when citeengine is unknown.
(cherry picked from commit 5ee3396459)
2018-02-12 23:31:42 -05:00
Juergen Spitzmueller
fe414fcdd8 Fix race condition in processFuncRequestQueue
The issue here was that the element was only removed from the queue
after the func request was processed, but within that process, other
function could access the queue, so the queue could even be empty
when this function finally wanted to remove the item.

Fixes: #10406.
(cherry picked from commit dadec50a18)
2018-02-10 18:32:03 +01:00
Enrico Forestieri
e43bf58223 Avoid an infinite loop
When pasting "\big" without any following delimiter, avoid
processing the same token again and again. For unknown reasons,
the delim docstring turns out to always be not empty: even when
it simply contains a '0' (no delimiter follows), its length is 1.

Fixes bug #11027.

(cherry picked from commit 8e8b3f6104)
2018-02-10 10:36:48 +01:00
Juergen Spitzmueller
2d923e4243 Fix child document regex in scanLogFile
Several problems:
* The regex failed at names such as 1_text_2_text.tex
  (returned "2_text.tex)
* The regex failed at names such as 12_text.tex
  (returned "2_text.tex)
* Masters with digits in the name (2018_text.tex) were
  tracked as their own children

(cherry picked from commit 398e026250)
2018-02-10 07:59:30 +01:00
Juergen Spitzmueller
04e995e807 tex2lyx: normalize bib and bst paths
Fixes: #7637
(cherry picked from commit 3cc98a9bf6)
2018-02-09 18:57:53 +01:00
Juergen Spitzmueller
af91405786 Consider class-provided citation engines
Do not attempt to load, nor allow to set, a different engine in this
case.

Fixes: #11022
(cherry picked from commit 2f6ada6644)
2018-02-09 09:50:43 +01:00
Juergen Spitzmueller
5549d3033f Reset cur.pit() when pasting into tables.
The number of paragraphs can change here, so pit() can become invalid.

Fixes: #9983
(cherry picked from commit 6e4e086900)
2018-02-09 09:37:51 +01:00
Juergen Spitzmueller
78911c7379 Revert "Mark follow-up paragraphs in a paragraph group as nested."
This reverts commit 70d580fea7.
2018-02-08 17:09:15 +01:00
Juergen Spitzmueller
4285438558 Add missing connection.
This activates the OK/Apply when a biblatex style file is changed
manually

(cherry picked from commit 6236bcb653)
2018-02-06 17:58:13 +01:00
Juergen Spitzmueller
14e0a27098 Enable CompressorProxy for all Workareas (incl. EmbeddedWorkarea)
This fixes the Advanced F&R.

(cherry picked from commit 5ce36019e5)
2018-02-03 09:43:36 +01:00
Jean-Marc Lasgouttes
19c90f3a89 Make sure to add at least one element in row if possible
breakRow should only produce an empty row when there is nothing left
in the paragraph.

Fixes bug #10996.

(cherry picked from commit 253b935f65)
2018-01-30 11:07:44 +01:00
Jean-Marc Lasgouttes
34c1b3c42c Remove 'premature optimization' that proved buggy
At some time it seemed like a good idea in breakRow() to return early
when the row was bound to be empty. It turns out that this creates two
symptoms:

* empty paragraphs will not have an end of paragraph marker

* since row width is not correctly computed in this case, caret ghosts
  can appear in master.

This commit removes the oprimization and replace the do {} while()
construct to a straightforward while() {}.

Related to bug #10952.

(cherry picked from commit 76f0a3dd4e)
2018-01-30 11:06:30 +01:00
Juergen Spitzmueller
275d5d30de Differentiate Buffer strings and GUI strings in citeengines
The former need to be translated to the buffer language, the latter to
the GUI language.

Fixes: #10946
(cherry picked from commit 5db4d712ef)
2018-01-30 08:21:21 +01:00
Richard Heck
bb30118ff4 Revert "Fix bug #11055."
This reverts commit 0be5ae123c.

Unintentionally committed. Sorry!!
2018-01-28 23:51:40 -05:00
Richard Heck
0be5ae123c Fix bug #11055.
See also https://marc.info/?l=lyx-devel&m=151709211602688&w=2.

(cherry picked from commit d3ee87eea2)
2018-01-28 23:46:39 -05:00
Juergen Spitzmueller
cf6ff2cac7 Properly communicate forced encodings
This is currently only relevant fo InsetListings, which falls back to
a fixed-width encoding under specific conditions. It is now possible
to query the inset about that and report the correct encoding in
DocIterator::getEncoding.

Addresses the second part of #10995

(cherry picked from commit f924ef2966)
2018-01-27 18:35:16 +01:00
Juergen Spitzmueller
463c994de2 Account for custom encoding in DocIteratior::getEncoding
Addresses #10995

(cherry picked from commit 7b169de401)
2018-01-27 18:34:51 +01:00
Juergen Spitzmueller
fdc98c3fa8 Make another GUI string translatable
Part of #10999.

(cherry picked from commit 6ed7bbbf7e)
2018-01-27 18:30:14 +01:00
Juergen Spitzmueller
47adfa661e Make GUI string translatable
Part of #10999

(cherry picked from commit 26755a015e)
2018-01-27 18:29:46 +01:00
Juergen Spitzmueller
d65eee3688 Use proper localization chain for Box special width/height
Fixes: #11000
(cherry picked from commit e2160ec960)
2018-01-27 18:25:52 +01:00
Jean-Marc Lasgouttes
f27d2cfa30 Revert "Remove 'premature optimization' that proved buggy"
This reverts commit 894ae19224.

Fixes bug 10996.
2018-01-27 12:18:25 +01:00
Juergen Spitzmueller
8cc7fe1c4b Fix outliner movement of frames
Make sure frames are properly separated from their neighbors above
and below in the target location.

Fixes: #10977.
2018-01-27 09:59:19 +01:00
Enrico Forestieri
8b0280d216 Correctly output a single char_type
On platforms where char_type is typedef'd to an integral type
rather than to wchar_t, when using the insertion operator <<
a single char_type is output as the number corresponding to the
code point of the character rather than as the character itself.
In this case, one has to use put().

(cherry picked from commit 144f06a00c)
2018-01-25 20:49:45 +01:00
Juergen Spitzmueller
17e241c694 Fix output of quote ligatures with TeX font LuaTeX
Fixes: #10988
(cherry picked from commit 5fce313ffc)
2018-01-22 09:24:59 +01:00
Juergen Spitzmueller
34097ce8f0 Prevent to paste uncodable characters into verbatim
Since we now have proper encoding here, we can set this restriction.

(cherry picked from commit 54846d2d93)
2018-01-20 09:23:00 +01:00
Juergen Spitzmueller
74a1666531 Introduce "inherit" encoding for latex_language
This gets rid of the hardcoded latin1 encoding for verbatim. Instead,
verbatim now inherits the encoding from the context, which is what is
actually wanted here.

Fixes: #9012, #9258
2018-01-20 09:22:38 +01:00
Jean-Marc Lasgouttes
93893396e4 Initialize properly class member
Spotted by coverity.

(cherry picked from commit 2ba00ecb7b)
2018-01-19 09:33:53 +01:00
Juergen Spitzmueller
b0868e6eb1 Use qt4-compatible connect() syntax.
Signed-off-by: Juergen Spitzmueller <spitz@lyx.org>
(cherry picked from commit aab58fed6b)
2018-01-19 09:33:06 +01:00
Guillaume MM
789617b818 Install a new compressor
A brand new event compressor based on Kuba Ober's cleverly simple
solution: <https://stackoverflow.com/a/21006207>.

Fix #9362, #9461, #9933: Lyx suddenly gets keyboard keys wrong, and
deadlocks

Fix #9790: LyX should perform key event compression (for improving the
remote X connections one would also need to implement
Qt::WA_KeyCompression)

Fix #10516: slowness on repeated arrow keys with IBus and Qt5

Patch pulled from
https://github.com/gadmm/lyx-unstable/commit/bf5a1efb0db5bfc2b

Signed-off-by: Juergen Spitzmueller <spitz@lyx.org>
(cherry picked from commit 43e4b80734)
2018-01-19 09:32:32 +01:00
Jean-Marc Lasgouttes
9bec4b8a0a Fix repaint of unselected branch
This works around a TextMetrics issue where Row::beg/end_margin_sel
are sometimes not reset correctly when there is no selection on the
row.

In master a fix for this problem has been done at 654cded1. Here we
prefer a much simpler work around that fixes the symptom.

Fixes bug #10972.
2018-01-16 09:37:30 +01:00
Jean-Marc Lasgouttes
894ae19224 Remove 'premature optimization' that proved buggy
At some time it seemed like a good idea in breakRow() to return early
when the row was bound to be empty. It turns out that this creates two
symptoms:

* empty paragraphs will not have an end of paragraph marker

* since row width is not correctly computed in this case, caret ghosts
  can appear in master.

This commit removes the oprimization and replace the do {} while()
construct to a straightforward while() {}.

Related to bug #10952.

(cherry picked from commit 76f0a3dd4e)
2018-01-15 09:49:10 +01:00
Juergen Spitzmueller
9b603d90c8 Fix loop while separating
getMaxDepthAfter() gives wrong result here.

Fixes: #10979

Signed-off-by: Juergen Spitzmueller <spitz@lyx.org>
(cherry picked from commit bceaa7f929)
2018-01-13 10:01:44 +01:00
Juergen Spitzmueller
9e8d702d63 Fix Null-checking issue detected by Coverity.
(cherry picked from commit 974553d858)
2018-01-12 10:31:40 +01:00
Pavel Sanda
f91e77d18e RCS: commit undo allowed only in unlocked state. 2018-01-11 23:47:41 +01:00
Juergen Spitzmueller
70d580fea7 Mark follow-up paragraphs in a paragraph group as nested.
This gives a more consistent indication of what belongs to an environment
(and semantically, such paragraphs are synonymous to nested standard
paragraphs)

Addresses part of #9261.
2018-01-07 10:38:30 +01:00
Jean-Marc Lasgouttes
572b29b139 Update buffer when an inset or an INFO inset has bee inserted
This is important for info inset, since if updateBuffer needs to be
run in redoParagraph (for the macro code), crashes can happen.

Fixes bug #10944.

(cherry picked from commit 806f40dbd4)
2018-01-06 15:08:42 +01:00
Guillaume MM
225d47f298 Fix preview with a nested preview not being shown (#10795)
Regression at db581113.

(cherry picked from commit 94c65074e0)
2018-01-06 02:58:36 -05:00
Richard Heck
b92ddb0362 Fix bug #10951.
The Buffer member for the remembered definition_ was not being set.

(cherry picked from commit f130f7713f)
2018-01-04 15:26:57 -05:00
Juergen Spitzmueller
cf97ec4a21 Do note attempt to nest more than possible.
(cherry picked from commit 32efb91438)
2018-01-04 18:40:26 +01:00
Juergen Spitzmueller
7668633b94 Properly handle color none.
Fixes: #5870
(cherry picked from commit 9a1eeb8cbb)
2018-01-04 08:23:04 +01:00
Juergen Spitzmueller
d3ca12a5c2 Disable useless environment-split function at the core.
(cherry picked from commit f965d23633)
2018-01-03 13:19:24 +01:00
Juergen Spitzmueller
1b2dd66f78 Use the command-alternatives sequence as defined in menus.bind
Otherwise, the shortcut is not displayed in the menu.

(cherry picked from commit 7d2764fb9e)
2018-01-03 11:00:47 +01:00
Juergen Spitzmueller
d60fa7f501 Prepend "Insert " in the context menu for environment separators.
(cherry picked from commit 8f86feb260)
2018-01-01 13:42:38 +01:00
Juergen Spitzmueller
92613ac63c Implement environment-split before and previous
Possibility to add an environment before the current one and to append
and environment from outside the nesting scope.

This commit includes all fixes that went in during testing these
functions in master. It also moves the menu items from Edit to Insert.
2018-01-01 12:34:39 +01:00
Juergen Spitzmueller
8ad7b0caea Add ignoresep option to layout lfun
This does not force the cursor in a separator paragraph to endpos.

This is needed for environment-split.
2018-01-01 12:31:31 +01:00
Juergen Spitzmueller
12bd7352fd Implement auto-nesting.
Now layouts can specify other layouts that should be nested in and
after the current one (if the layout is switched from the current one
and if it follows a paragraph in the current one).

This is particularly useful for things such as the beamer frames, where
particular layouts are practically always nested.

This is a backport from master, including all fixes.
2018-01-01 12:30:34 +01:00
Juergen Spitzmueller
438b067b5a Properly implement IsTocCaption for Arguments in standard TOC
Fixes: #10631

Candidate for 2.3.x.

(cherry picked from commit 3a4b233dbd)
2017-12-30 11:02:49 +01:00
Juergen Spitzmueller
196032f79f Fix footnotes in table with RevTeX4
These classes come with their own working implementation of table
footnotes, so we are not supposed to use the tablefootnote or
footnote package.

Also add missing outliner name.

(cherry picked from commit dfaa4e9466)
2017-12-28 10:07:56 +01:00
Jean-Marc Lasgouttes
546a6a2a31 Do not draw inactive math corners when they have mathbg color
By default, inactive math corners are invisible. In practice they are
annoying because they are visible when selecting text, and they can
also overwrite some parts of the equation.

The code in Inset::drawMarkers2, which is only used for maths, is
moved to InsetMathHull. Moreover, the inactive corners are not drawn
when they have the same color as the math background. A better way to
achieve this would be to set the color to transparent, but we do not
support this yet.

(cherry picked from commit 68614e9783)
2017-12-23 19:53:58 +01:00
Jean-Marc Lasgouttes
92f320ff4a Reintroduce the spacing around delimiters
This spacing was wrongly removed at 361bd53b as part of the
introduction of proper spacing between elements, but it only introduces
some breathing space around the delimiters. This will not be necessary
anymore when/if we use proper delimiters from the cmex10 font.

(cherry picked from commit 4cb5cc0c7d)
2017-12-23 19:48:06 +01:00
Jean-Marc Lasgouttes
87d291ee23 Handle properly undo groups in embedded work areas
When a buffer is in an embedded work area (adv. find&replace), it is
not found by BufferList:::exists(), and therefore the undo group
created in GuiApplication::dispatch and in the handling of
LFUN_COMMAND_SEQUENCE will not be closed.. Crashes can ensue, as
described in Ubuntu bug:
https://bugs.launchpad.net/bugs/1737429

The solution is to introduce BufferList::isInternal and act on it.

Fixes bug #10847.

(cherry picked from commit 8b107f0490)
2017-12-23 19:21:12 +01:00
Juergen Spitzmueller
2b927cbc2e Fix typo.
This had the effect that for file dialogs supposed to use two buttons,
only the second one was displayed, while file dialogs supposed to use
one button did not have a button at all.

Candidate for 2.3.x and 2.2.x.

(cherry picked from commit 74607702a5)
2017-12-20 19:04:26 +01:00
Juergen Spitzmueller
63af581324 Do not rely on babel quotation macros for encodings other than [O]T1
Babel falls back to OT1 in these cases, which gives wrong output got the
guillemots

Fixes: #10947
(cherry picked from commit 64b94f81be)
2017-12-18 12:40:44 +01:00
Juergen Spitzmueller
f337a55327 Amend d56a5447f3
LaTeX only breaks after dashes (even though unicode suggests optional
line breaks also before em dashes).

(cherry picked from commit 1371dbb240)
2017-12-17 19:25:54 +01:00
Juergen Spitzmueller
c527035b70 Consistent output of breakable/non-breakable dashes on all TeX engines.
Fixes: #10839
(cherry picked from commit d56a5447f3)
2017-12-17 19:24:46 +01:00
Uwe Stöhr
50c83973a6 Buffer.cpp: reference oasis in https link 2017-12-17 02:41:51 +01:00
Uwe Stöhr
e73164e25d tex2lyx: support to detect https:// links
- Preamble.cpp: use the occasion to backport JMarcs recent compiler warning fixe
2017-12-17 02:28:54 +01:00
Uwe Stöhr
998d39fa28 GuiPrintNomencl.h: fix bug #10819 also for 2.3.x 2017-12-17 02:01:49 +01:00
Juergen Spitzmueller
132726e84a Missing "icon" in description of "info-insert"-function
(cherry picked from commit 7821cb7133)
2017-12-09 09:53:43 +01:00
Juergen Spitzmueller
1bd4223554 nomenclWidest(): take (proper) formatting into account. 2017-12-04 10:24:02 +01:00
Juergen Spitzmueller
798b7126ef Fix thinko from b68701c4da
(cherry picked from commit 938c44590c)
2017-12-03 11:37:33 +01:00
Enrico Forestieri
4e753bdc3f Avoid asserting when reading the session file
Fixes #10824.

(cherry picked from commit f84acc0e34)
2017-12-02 21:37:02 +01:00
Scott Kostyshak
e3494c2f3a Set array length from int const
(cherry picked from commit b3f7eb6af3)
2017-12-02 13:17:36 -05:00
Juergen Spitzmueller
a4aee2a090 Escape (makeindex) special chars in nomencl if !literate
Fixes: #10825
(cherry picked from commit b68701c4da)
2017-12-02 09:59:41 +01:00
Juergen Spitzmueller
225253dfc6 Implement l7n for nomenclature.
(cherry picked from commit 718a353b49)
2017-12-01 10:19:30 +01:00
Juergen Spitzmueller
7c8d167f8e Longtable: only output the caption contents in a caption row.
Fixes: #10791
(cherry picked from commit 538b38f78c)
2017-11-20 19:51:32 +01:00
Juergen Spitzmueller
3561caa3a1 Fix footnote output in description item
Fixes: #9387
(cherry picked from commit aaa6150089)
2017-11-20 09:50:23 +01:00
Juergen Spitzmueller
55bc365872 Allow footnotes in floating tables via tablefootnote package
See #808.

(cherry picked from commit 5017a0a1c6)
2017-11-20 09:49:36 +01:00
Juergen Spitzmueller
c2d121f663 Fix footnote output in tables outside floats and longtable header/footer
Fixes: #808 (sic!), #5869
(cherry picked from commit 3affde3957)
2017-11-20 09:49:10 +01:00
Juergen Spitzmueller
7920a12065 Disable non-functional table rotation for longtables
In the long run, proper longtable rotation via [pdf]lscape should
be implemented.

See #9194

(cherry picked from commit 84f7dafe89)
2017-11-20 09:37:01 +01:00
Juergen Spitzmueller
1a8873d7be InsetExternal: update renderer after preview status change
This fixes a crash when changing instant preview prefs while
document with previewed external inset is opened.

Fixes: #10785
(cherry picked from commit 0842e22f45)
2017-11-12 18:31:00 +01:00
Juergen Spitzmueller
fadb93ae68 Collapsable -> Collapsible (part 5)
Preferences update and prefs2prefs routine.

This was forgotten in the process.
2017-11-02 16:51:23 +01:00
Enrico Forestieri
43a6fe8375 Fix #10778 (issue with CJK and language nesting)
When using CJK, don't try to close a language that was never
opened before, such as when it is the main language.

(cherry picked from commit 7e51b5f301)
2017-11-02 11:07:11 +01:00
Juergen Spitzmueller
8f98423e92 Enable OK/Apply buttons when resetting to class defaults.
(cherry picked from commit b851a349b6)
2017-11-01 23:09:59 +01:00
Enrico Forestieri
8be0ec0db5 Fix issue with change-tracked deleted display math
- If a display math not starting a new paragraph is deleted, the
  current \lyxdeleted macro (if any) must be closed and a new one
  started, otherwise the display math will be shifted up.

- Use \linewidth instead of \columnwidth because the former will adapt
  to the reduced horizontal width in list environments, avoiding shifting
  to the right the diplay math.

(cherry picked from commit 7f23ca912c)
2017-10-25 19:51:14 +02:00
Juergen Spitzmueller
a81a0c5534 Implement ParamInfo::HANDLING_LTRIM and use it to ltrim InsetBibitem
output

See #9847.

(cherry picked from commit 76f49fad78)
2017-10-23 09:07:22 +02:00
Juergen Spitzmueller
d088f7f03f Do not add deleted text to inset button label.
Fixes: #10775
(cherry picked from commit 70b0df85c8)
2017-10-23 08:26:01 +02:00
Guillaume MM
25678dae12 Fix math mode for InsetMathMacro on output
After 6642152e, user macros were no longer wrapped in \ensuremath. In 2.2 and
before, InsetMathMacro behaved as follow:

* Textmode global symbols are wrapped in \text when in math.

* Other global symbols, and user macros, are wrapped in \ensuremath when in
  text.

* Undefined macros (ERT) are wrapped neither in \text nor in \ensuremath.

This is also consistent with the documentation of MathEnsurer in
mathed/MathStream.h.

This patch defines InsetMathMacro::currentMode() accordingly (respectively
TEXT_MODE, MATH_MODE and UNDECIDED_MODE) and uses it to determine the output.

After this patch, there is a mismatch between screen and pdf output for user
macros in \text. This is not a regression wrt 2.2 and is because linearization
does not satisfy currentMode() currently.

(cherry picked from commit 767f0df18fcd61611de1d1e10e0fd1867479fb59)
2017-10-23 00:07:08 +02:00
Enrico Forestieri
8f7b40955c Account for shadowed system macros
Part of #10694.

(cherry picked from commit d58d3f6774)
2017-10-22 23:15:56 +02:00
Enrico Forestieri
5a3201a8c4 Speed up exit time
Instantiating a single QSettings and using it for each ui element
can significantly shorten the time required to save the various
states at exit. The speed up can be better appreciated on *nix,
where the settings are saved on disk, rather than on Windows where
they are held in memory (in the registry).

(cherry picked from commit 3b43fbfbb1)
2017-10-18 13:38:16 +02:00
Juergen Spitzmueller
4947476da8 Do not scan BibTeX files multiple times in a collectBibKeys() procedure.
Scanning is rather slow, so this improves performance in specific
situations (multiple inclusion of larger files in master/child or
chapterbib context)

(cherry picked from commit 88a0666d6c)
2017-10-18 12:21:29 +02:00
Richard Heck
ffd175b99f Use of div for labels causes validation errors. See #8843.
(cherry picked from commit b8206a0832)
2017-10-16 21:41:30 -04:00
Richard Heck
1bef592999 Revert "ABOVE and CENTERED labels need special treatment."
This reverts commit 08bf9781ee.
2017-10-16 21:37:59 -04:00
Juergen Spitzmueller
a59301eaff Collapsable -> Collapsible (part 2)
The current spelling is not strictly wrong, but flagged as unusual or
historical by some authorities. It is also found fault with many
spell checkers. Thus we decided to move to the more standard "-ible"
form once and for all.

See #10678 for discussion

This part covers the most tricky part: the internal naming.
Translations and layouts will follow.

This will all also all be backported to 2.3.x, for the sake of backwards
compatibility (cherry-picking).

(cherry picked from commit c466baaa5b)
2017-10-16 11:24:41 +02:00
Juergen Spitzmueller
e040ccb0e8 Collapsable -> Collapsible (part 1)
The current spelling is not strictly wrong, but flagged as unusual or
historical by some authorities. It is also found fault with many
spell checkers. Thus we decided to move to the more standard "-ible"
form once and for all.

See #10678 for discussion

This part only covers the usage in comments and the like. More to follow.

This will all also all be backported to 2.3.x, for the sake of backwards
compatibility (cherry-picking).

(cherry picked from commit 648ddd25ec)
2017-10-16 11:22:13 +02:00
Richard Heck
402d41b82d Revert "Fix bug #8782."
This caused slowness on undo and redo that was reported at
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg202292.html

This reverts commit 02847641a8.
2017-10-15 20:56:25 -04:00
Enrico Forestieri
2e253eab0f Fix issue with regular expressions
At least with gcc 6.4, if the first parameter passed to
regex_match() is afterward changed, the second one gets
corrupted. This is avoided by using a temporary string.

(cherry picked from commit c16ccdb5fd)
2017-10-15 15:42:39 +02:00
Juergen Spitzmueller
88c285219b Fix PDF output of clipped graphics with recent graphics package
The previous redirection of the senseless option "bb" to "viewport" in
PDFLaTeX output has been removed in a recent graphics package update.

This breaks documents, since clipped graphics silently stop displaying.

This change restores the previous output by using "viewport" instaed of
"bb" for non-PS/DVI output, while leaving PS/DVI untouched (where "bb"
and "viewport" behave differently.

Fixes: #7910
2017-10-13 08:28:26 +02:00
Jean-Marc Lasgouttes
80983a3553 Do not forget to set cursor current font when selecting
Fix several unreleated cases where the `selecting' code path did not
reset cursor font correctly. This leads to a caret that does not have
the correct size, and can cause caret droppings with the new display
scheme.

(cherry picked from commit 88d0390724)
2017-10-12 21:13:55 +02:00
Enrico Forestieri
b79d07f4a5 Fix issue with language switch in Arguments insets
In some insets such as Arguments, a local language switch has to be
used. However, if the language inside the inset was set to be equal
to the outer language, the code decided not to switch language. But
then got confused and tried to close a switch that was never opened.
This patch forces the switch even if the outer language is the same.

(cherry picked from commit ce4f39d414)
2017-10-12 00:02:54 +02:00
Richard Heck
da7f539358 Reset cursor before beginning reload sequence.
(cherry picked from commit af381a2fb2)
2017-10-08 23:07:13 -04:00
Kornel Benko
a506c6b73b Cmake build: Only use the new lyxconvert on MAC 2017-10-03 22:14:37 +02:00
Kornel Benko
9da29ac788 Add suffixed lyxconvert to cmake build.
This should amend f93ec4a, but is not tested on apple
2017-10-03 22:09:57 +02:00
Stephan Witt
c75d9bf7c4 Add Qt-based fallback-converter for Mac to compensate missing ImageMagick convert utility
(cherry picked from commit f93ec4a1f4)
2017-10-03 20:10:29 +02:00
Jean-Marc Lasgouttes
cda56c0dc3 Avoid empty space above the top of the document
If the height of the first row of the document has become smaller (for
example when it contains an image which size has shrunk), that the
anchor offset has to be adapted so that there is not a large blank
space at the top of the document.

(cherry picked from commit d6aecbda0f)
2017-09-28 13:57:36 +02:00
Juergen Spitzmueller
4f50cbcfe4 Fix crash when closing master with children and grandchildren
In some cases, it is possible that the BufferPositionMap has
dangling pointers. We thus check whether the Buffer is loaded
before accessing it.

Fixes: #10766
2017-09-28 09:06:33 +02:00
Juergen Spitzmueller
745b43784c Whitespace cosmetics 2017-09-27 18:05:58 +02:00
Jean-Marc Lasgouttes
f2f7ea9edc Do not apply mathindent to inline math insets
(cherry picked from commit 040e9d32a6)
2017-09-24 22:55:06 +02:00
Juergen Spitzmueller
64007533a7 Fix some spelling errors reported by Sven
Fixes: #10678
(cherry picked from commit b498646b2e)
2017-09-22 09:34:51 +02:00
Juergen Spitzmueller
d8c018b8c6 Reset InsetArgument language after passthru status change
Fixes: #10664
2017-09-15 16:21:05 +02:00
Juergen Spitzmueller
7309ae50b4 Allow to provide xunicode. 2017-09-15 09:36:16 +02:00
Stephan Witt
97dc585138 #10662 use drawers for bibliography dialogs
This change solves dialog stacking problems on newer Mac OS X in combination with the OS provided file open dialog.
2017-09-12 11:05:42 +02:00
Jean-Marc Lasgouttes
e781628575 Update row width when inset is indented
Fixes bug #10758

(cherry picked from commit 3f1944a7c9)
2017-09-11 12:42:08 +02:00
Juergen Spitzmueller
e50a7d5b12 GuiBibtex: Use appropriate title when using Biblatex 2017-09-10 10:57:48 +02:00
Juergen Spitzmueller
abc145f250 Use default btprint value in the UI if none is given. 2017-09-10 10:51:42 +02:00
Juergen Spitzmueller
1adfb8a6c7 Disallow newlines in biblatex options
Fixes: #10757
2017-09-10 10:05:10 +02:00
Juergen Spitzmueller
242f543e01 Add default output format for pLaTeX
Fixes: #10747
2017-09-09 08:53:08 +02:00
Juergen Spitzmueller
e96c5c8f96 Make the session zoom relative to the default zoom
Also rename lyxrc.zoom to lyxrc.defaultZoom

Fixes: #10455
2017-09-06 18:11:31 +02:00
Juergen Spitzmueller
a034af5d5f Consider insets that are chars in InsetCollapsable::getNewLabel()
This fixes the display of closed ERTs, Indexes etc. when they contain
special chars, logos or quotation marks.

(Since quotation marks in ERTs are now insets, not chars anymore,
this also fixes a bug/regression of the display of babel shortcuts
such as "= in closed ERTs; hence I consider this fix necessary for 2.3.x)
2017-09-06 10:11:01 +02:00
Jean-Marc Lasgouttes
b92ceba9a1 Honor trailing spaces in LabelString and friends
Remove the trimming operation on LabelString, LabelStringAppendix,
EndLabelString and LabelCounter. This trimming meant that quotes
strings were not preserved, which is wrong.

To preserve layouts, the Layout format has been updated to 64, so that
layout2layout can remove extra spaces on existing strings, which
ensures that behavior is unchanged for old layouts (courtesy of rgheck).

It is now possible to re-add spaces in label strings where it makes
sense.

Fixes bug #10723.

(cherry picked from commit 5c54557350)
2017-09-02 16:08:56 +02:00
Juergen Spitzmueller
30eb6dfaeb Add special chain for Modules with OutputFormat for pLaTeX (Japanese)
Fixes: #8823
2017-09-01 10:32:22 +02:00
Jean-Marc Lasgouttes
bd88740b06 When a row is shortened, reset its flushed() attribute.
Fixes bug #10699.

(cherry picked from commit 59e2c40564)
2017-08-31 14:58:20 +02:00
Jean-Marc Lasgouttes
cc28353922 Fix Lexer::getLongString prefix pruning logic
This fixes 3 bugs:
1/ only spaces are considered as part of the prefix
2/ leading tabs are removed unconditionally
3/ off-by-one error in the removal

The new intended behavior is:

1/ find the prefix (sequence of spaces and tabs) before the first
   line; remove this prefix from the line
2/ on the next lines, check whether they start with the same prefix,
  and if they do, strip this prefix

(cherry picked from commit 48f099d93a)
2017-08-29 16:05:09 +02:00
Jean-Marc Lasgouttes
4d845baf08 Fix computation of string width when using a QTextLayout
It was not a good idea to rely on QTextLine::naturalTextWidth() to
compute a string width. The correct method is horizontalAdvance().

Also round the value to the nearest pixel, since this is what
QFontMetrics::width() does.

Fixes bug #10700 (and maybe others).

(cherry picked from commit c874641e95)
2017-08-28 14:36:50 +02:00
Juergen Spitzmueller
9bbcfebb95 Amend 7e121117bb 2017-08-13 12:01:49 +02:00
Juergen Spitzmueller
7e121117bb Vietnamese no longer requires any special handling.
It is a normal babel support package.
2017-08-13 11:53:41 +02:00
Scott Kostyshak
acc1cc394f Remove a sometimes blocked call to dispatch
Dispatching LFUN_BUFFER_ZOOM inside of GuiView::restoreLayout() was
blocked in some cases because the function can be called without a
buffer (and the LFUN is marked as needing a buffer). Instead of
conditioning on a buffer, the call is removed because in testing it
does not appear why it is needed.

This commit removes the status message that is displayed if starting
LyX without opening a buffer:

    "Command not allowed without any document open"

See discussion at:

    https://www.mail-archive.com/search?l=mid&q=20170718084344.3kjmu7hzoyajt7vd%40steph

This commit amends 4183a9f4.
2017-08-12 11:46:11 -04:00
Juergen Spitzmueller
7a7c2117bf Fix compilation order
(This is the pedant in me)
2017-08-12 10:22:45 +02:00
Juergen Spitzmueller
0e711b414e Add missing break
As correctly pointed out by gcc7.
2017-08-12 09:55:06 +02:00
Juergen Spitzmueller
e9c9ad8055 Forgot this one. 2017-08-12 09:24:01 +02:00
Juergen Spitzmueller
1249e5e13e Mark some intentional fall-throughs (in a way understandable to gcc)
This silences -Wimplicit-fallthrough warnings with gcc7.

(Re-Apply without the unintended commits)
2017-08-12 09:06:29 +02:00
Juergen Spitzmueller
0120c3fc10 Revert "Mark some intentional fall-throughs (in a way understandable to gcc)"
This reverts commit 6dc1884d05.
2017-08-12 09:04:23 +02:00
Juergen Spitzmueller
b73879691f Another (IMHO false) fall-through warning silenced
With a FIXME. The case should be checked.
2017-08-12 08:59:26 +02:00
Juergen Spitzmueller
6dc1884d05 Mark some intentional fall-throughs (in a way understandable to gcc)
This silences -Wimplicit-fallthrough warnings with gcc7.
2017-08-12 08:57:02 +02:00
Juergen Spitzmueller
b2841e9570 Require textquotedbl def with second language that has internal fontenc
Since these switch locally to encodings that do not define \textquotedbl
themselves.
2017-08-10 11:47:52 +02:00
Enrico Forestieri
40e9dea551 Use the OK/Apply paradigm for all document settings
Due to its peculiarity of not being saved in the document, the
shell escape setting was applied immediately without the need
for hitting the Apply or OK buttons. However, for uniformity
sake, it is better to adhere to the established paragdim of
confirming any changes before applying them.
2017-08-10 01:32:23 +02:00
Juergen Spitzmueller
094341fa5a Fix straight quote character in non-T1 encoding
Fixes: #10584
2017-08-09 17:25:02 +02:00
Juergen Spitzmueller
9a36ffd1e3 Sort external templates locale-aware
Fixes: #10738
2017-08-09 16:09:50 +02:00
Kornel Benko
29a735463a Adapt the check for configure need to the one used in LyX::queryUserLyXDir()
We should refactor the check
2017-08-08 12:23:15 +02:00
Kornel Benko
187824da3c Amend d6285d5, copy & paste error, urrrrg 2017-08-04 16:16:08 +02:00
Kornel Benko
d6285d52e7 For cmake case try to use the newly built .gmo files first. 2017-08-04 16:06:32 +02:00
Enrico Forestieri
f11bfe1697 The shell escape patch
Allow a LaTeX backend to run external commands after user confirmation.
This is a per document and per machine setting. The authorization has
to be given through the document settings pane, but is not recorded in
the document itself. Moving the document to either another computer or
another directory on the same computer revokes the authorization.
This can also be done by right clicking the red icon that appears in
the status bar when a document is marked as one requiring shell escape.
The patch also checks whether the user has added the -shell-escape
option to a LaTeX converter and nags the user to remove the option
(which would be used for all documents) in favor of the (per document)
support offered by LyX.
2017-08-03 13:07:41 +02:00
Kornel Benko
b5a4e79736 Since boost dir may not exist anymore, use the lyx-src dir for out-of-source build detection 2017-08-02 18:44:32 +02:00
Kornel Benko
b7082f2d29 Correctly interpret return value of LyXRC::read(FileName const & filename, bool check_format) 2017-08-01 13:08:07 +02:00
Enrico Forestieri
44babaf656 Properly warn on missing pygmentize command
- Do not warn when the document properties pane is opened but only
  when minted is selected and the pygmentize command was not found.
- Warn before launching latex if minted is selected and the document
  actually uses listings insets.
2017-07-31 11:32:28 +02:00
Christian Ridderström
95e7abadc0 Add missing 'break' for four default cases in VCBackend.cpp
Replace four cases of 'default: ;' in VCBackend.cpp with
    default:
        break;

Justification: Make consistent with the rest of the LyX source code.
I found no other occurences of 'default: ;' in the source.
2017-07-30 14:23:38 +02:00
Christian Ridderström
7b652117d6 Fix editorial whitespace error
Fix a non-controversial editorial whitespace error in order to verify
that the commit has the correct e-mail address and that it appears on
the list.
2017-07-30 09:30:58 +02:00
Christian Ridderström
26acdd27c4 Fix editorial whitespace issues, e.g. extra space before semicolon
Fix some editorial whitespace errors in AspellChecker.cpp.
Changes are non-controversial and I've reviewed them manually.

The whitespace errors were distracting from the big picture while
using the file to work on candidate(s) for a clang-format
configuration.
2017-07-30 00:54:12 +02:00
Tommaso Cucinotta
770ab9a824 prefs/needauth: avoid show of warning dialog in corner cases (amending [8a4fcd3d/lyxgit]) 2017-07-27 20:00:41 +02:00
Tommaso Cucinotta
8a4fcd3d95 prefs/needauth: added warning if user tries to disable authorization for needauth converters. 2017-07-27 00:05:45 +02:00
Jean-Marc Lasgouttes
15a87dd3a8 Check whether a class is known before loading it
Fixes bug #10719.
2017-07-25 11:57:29 +02:00
Guillaume MM
764c61a08f Fix scrollbar not appearing in new documents unless reloaded (#10729)
QSignalBlocker in updateScrollbar is too strong and prevents the scroll bar from
communicating with its scroll area. The only solution to block signals between
specifically between two objects is to disconnect. This makes sense in this
case, by making updateScrollbar responsible for managing the connection in the
first place.
2017-07-25 00:33:48 +02:00
Jean-Marc Lasgouttes
9fe8190364 Make "devel mode" configurable at run time
Traditionally LyX behaves differently when the directive DEVEL_VERSION
is defined at compile time. This covers
* more detailed description of current position in status bar
* the help files are open in read/write mode
* more detailed debug output in the View Source panel

This patch introduces the new function devel-mode-toggle that allows
to use devel mode in stable releases, and vice versa.

The information is saved in the session file. The default is to
disable devel mode.

Remove all traces of DEVEL_VERSION in autoconf and cmake
2017-07-24 22:00:44 +02:00
Juergen Spitzmueller
9b128671a5 {Over,under}full [hv]box warning is a warning.
Since this is something one should be aware of, make it more prominent
in the Log dialog.
2017-07-24 09:09:48 +02:00
Juergen Spitzmueller
a40868510d Do not error on missing ZWNJ (ligature break) characters.
Since TeXLive 2016, "fontspec" maps the ligature break command
\textcompwordmark to the ZWNJ character (U+200C).
This character is missing in many fonts (including the default: Latin
Modern) which leads to "Missing character" warnings in the XeTeX/LuaTeX
log file if a document using non-TeX fonts contains a ligature break.

LyX reports missing characters as error since fixing #9610.
In case of "invisible" characters, there is no data loss, in case of the
ZWNJ the functionality is kept: ligatures are prevented also if the ZWNJ
is missing in a font.

Therefore, a missing ZWNJ is now treated similar to missing characters
in "nullfont" (see [63f41711/lyxgit], bug #10394) and does not trigger
an error.

Fixes: #10727
2017-07-23 18:41:06 +02:00
Juergen Spitzmueller
3c7b75c5bc Properly import \newtheorem*
Fixes: #10622
2017-07-23 13:20:56 +02:00
Christian Ridderström
e30f3d76d2 Bulk cleanup/fix incorrect annotation at the end of namespaces.
This commit does a bulk fix of incorrect annotations (comments) at the
end of namespaces.

The commit was generated by initially running clang-format, and then
from the diff of the result extracting the hunks corresponding to
fixes of namespace comments. The changes being applied and all the
results have been manually reviewed. The source code successfully
builds on macOS.

Further details on the steps below, in case they're of interest to
someone else in the future.

1. Checkout a fresh and up to date version of src/

    git pull && git checkout -- src && git status src

2. Ensure there's a suitable .clang-format in place, i.e. with options
   to fix the comment at the end of namespaces, including:

    FixNamespaceComments:                           true
    SpacesBeforeTrailingComments:                   1

and that clang-format is >= 5.0.0, by doing e.g.:

    clang-format -dump-config | grep Comments:
    clang-format --version

3. Apply clang-format to the source:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")

4. Create and filter out hunks related to fixing the namespace

    git diff -U0 src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace.patch

5. Filter out hunks corresponding to simple fixes into to a separate patch:

    pcregrep -M -e '^diff[^\n]+\nindex[^\n]+\n--- [^\n]+\n\+\+\+ [^\n]+\n'  \
        -e '^@@ -[0-9]+ \+[0-9]+ @@[^\n]*\n-\}[^\n]*\n\+\}[^\n]*\n'         \
        fix_namespace.patch > fix_namespace_simple.patch

6. Manually review the simple patch and then apply it, after first
   restoring the source.

    git checkout -- src
    patch -p1 < fix_namespace_simple.path

7. Manually review the (simple) changes and then stage the changes

    git diff src
    git add src

8. Again apply clang-format and filter out hunks related to any
   remaining fixes to the namespace, this time filter with more
   context. There will be fewer hunks as all the simple cases have
   already been handled:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")
    git diff src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace2.patch

9. Manually review/edit the resulting patch file to remove hunks for files
   which need to be dealt with manually, noting the file names and
   line numbers. Then restore files to as before applying clang-format
   and apply the patch:

    git checkout src
    patch -p1 < fix_namespace2.patch

10. Manually fix the files noted in the previous step. Stage files,
    review changes and commit.
2017-07-23 13:11:54 +02:00
Juergen Spitzmueller
d50e2aa7bf typo in comment 2017-07-23 12:11:03 +02:00
Juergen Spitzmueller
94d45d9c56 Some comments wrt log file encoding (#10728) 2017-07-23 12:06:58 +02:00
Juergen Spitzmueller
7609221ada Use appropriate conv. method
These are plain ASCII strings, no need for local8bit conversion.
2017-07-23 09:37:11 +02:00
Jean-Marc Lasgouttes
c7647eb394 Make InsetInfo active agin (aka the vengeance of the neverending saga)
This is a fixup to fc7fb6a564. The fix in there seems perfectly
correct (up to now), but for some reason, I could not refrain from
making InsetInfo not active. "What could possibly go wrong?", I heard
myself think.

Now I know: this causes an assertion error in InsetText::updateBuffer
because DocIterator::forwardPos does not enter the inset anymore.
2017-07-20 23:56:45 +02:00
Jean-Marc Lasgouttes
fc7fb6a564 Try to end the neverending fixIfBroken saga
This is a fixup to the  series of commits 522516d9, d0acc3e5, 13c3c148.

Actually the right thing to consider in all situations is isActive(),
which really means `can a cursor be in there?'.

Improve the description of isActive() and editable() in Inset.h.

Set isActive() to false for InsetInfo, since no cursor should ever go there.

Again part of #10667.
2017-07-20 11:18:20 +02:00
Christian Ridderström
5078448111 Fix minor whitespace error.
Fix the whitespace in e.g. 'QString&' to 'QString &' as this
incorrect, but primarily to simplify a comparison related to
later possibly introducing the use of .clang-format.
2017-07-17 22:23:17 +02:00
Jean-Marc Lasgouttes
a39a98f422 Fix comment 2017-07-15 18:41:56 +02:00
Jean-Marc Lasgouttes
ebb9d7b058 Avoid multiple execution of AddToPreamble and friends
When trying to read a textclass, read(Lexer, Readtype) parses and
executes the first token and only then verifies that its effect was to
set format properly. Otherwise it exits.

This is wrong, because if the first tag is "AddToPreamble", then it will
have modified the preamble by the time we notice it was not "Format" and
therefore exit.

The new code starts by requiring a correct "Format" tag.

Fixes bug #10725.
2017-07-15 16:34:48 +02:00
Jean-Marc Lasgouttes
04eef3480f Fix generation of lyx_commit_hash.h
The code in the Makefile was incorrect.
2017-07-13 18:14:03 +02:00
Jean-Marc Lasgouttes
f6e37a8ca0 TextMetrics::leftMargin does not need a max_width parameter
Additionally move it to private: section.
2017-07-12 10:29:27 +02:00
Jean-Marc Lasgouttes
0d565f7b35 When cleaning up before quitting, take care of exceptions
We do not want the cleanup work to be interrupted by a buffer exception.

Spotted by coverity. See bug #9979 for discussion.
2017-07-11 15:30:32 +02:00
Jean-Marc Lasgouttes
fc75cbd88f Remove copy-and-paste error 2017-07-11 13:43:32 +02:00
Jean-Marc Lasgouttes
cfd27dd219 Do not record undo when typing two spaces has been blocked
Move the code that forbids character insertion in its own helper function.

Call this function before doing a recordUndo. This avoids to mark the
document dirty in cases where nothing happens.

Part of bug #10721.
2017-07-11 12:15:29 +02:00
Jean-Marc Lasgouttes
0ba385800e Rewrite stripName without regex
Using a regular expression to find /src/ or \src\ in a string is overkill,
and since regexes can throw exceptions, it makes coverity nervous.

The new code is simpler anyway.
2017-07-06 15:26:32 +02:00
Jean-Marc Lasgouttes
02c9d2e67c Fix uninitialized members outfd and infd
Also move initialization of some variables to initializers list.

Only the non-win32 part has been tested, but it should be OK.

Spotted by coverity.
2017-07-06 14:52:19 +02:00
Jean-Marc Lasgouttes
449b594a72 Fix unitialized member
Spotted by coverity.
2017-07-06 14:45:21 +02:00
Jean-Marc Lasgouttes
c2d182f59a Remove test that is not needed.
We know that buf is not null at this point.

Spotted by coverity.
2017-07-06 14:14:43 +02:00
Jean-Marc Lasgouttes
64667735f4 h_use_minted is a bool, not a string
We have a mix in this file of boolean stored as such or as strings.
This translates to values written as true/false or 1/0 in .lyx files.

In this case, the value of use_minted could only be true, since the
char * pointer is non null.

Also add some else clauses.

Spotted by coverity.
2017-07-06 14:11:30 +02:00
Jean-Marc Lasgouttes
29378af4cd Rename some macro-related insets
These classes should have names that start with "Inset". Renaming done:
MathMacro => InsetMathMacro
MathMacroTemplate => InsetMathMacroTemplate
MathMacroArgument => InsetMathMacroArgument
ArgumentProxy => InsetArgumentProxy
DisplayLabelBox => InsetDisplayLabelBox
CommandInset => InsetMathCommand
2017-07-05 14:46:34 +02:00
Jean-Marc Lasgouttes
ab81c23656 Do not use toobar menu as fallback context menu
This is a consequence of e91572a0, although it is not clear why. The
contextMenuEvent code of the workarea should not delegate context
menu when it cannot honor it.

Also fix a small memory leak.

Fixes bug #10616.
2017-07-05 12:28:26 +02:00
Jean-Marc Lasgouttes
4eb9b50dc6 Use the proper buffer when recording undo
The code in InsetLabel::updateReferences code changes reference insets
in potentially several buffers. When recording undo, it is important
to use the right undo stack, otherwise crashes can ensue.

Once it is done, it is neccessary to create undo groups as needed.
This is done using UndoGroupHelper. This demonstrates a shortcoming of
UndoGroup helper: if a buffer is encountered in two seperate
occasions, two undo groups will be created for this buffer. This is
not correct.

Fixes bug #10643.
2017-07-04 16:34:34 +02:00
Richard Heck
fd5a950d7f Fix whitespace in some more files. 2017-07-03 14:46:27 -04:00
Richard Heck
00e4902ea3 Fix trailing whitespace in txt files. 2017-07-03 13:53:41 -04:00
Richard Heck
75bfed5507 Fix trailing whitespace in cpp files. 2017-07-03 13:53:14 -04:00