Commit Graph

23275 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
020a890f42 Initialize ScopeBuffer::buffer member in constructor
Found by Coverity.
2016-06-09 16:34:25 +02:00
Jean-Marc Lasgouttes
4f795bd309 Initialize LyXModule::available_ in constructor
Found by Coverity.
2016-06-09 16:26:07 +02:00
Guillaume Munch
b95b77c631 Replace boost::tuple with std::tuple 2016-06-09 15:21:39 +01:00
Guillaume Munch
b032e2dfaf Replace support/shared_ptr.h and boost::shared_ptr with std::shared_ptr
shared_ptrs now only require the <memory> header.
2016-06-09 15:21:39 +01:00
Guillaume Munch
ca8709aaf5 Replace boost::scoped_ptr with unique_ptr 2016-06-09 15:21:39 +01:00
Guillaume Munch
557975a8de Replace auto_ptr with unique_ptr
This is a mechanical replacement. For now it seems that unique_ptrs are
essentially used for exception-safety. More could certainly be done to clarify
pointer ownership in general.
2016-06-09 15:21:39 +01:00
Guillaume Munch
af5f69cea7 unique_ptr and make_unique 2016-06-09 15:21:39 +01:00
Jean-Marc Lasgouttes
af6a164e3c Initialize all MathMacroTemplate members in constructors
Found by coverity.
2016-06-09 16:19:31 +02:00
Jean-Marc Lasgouttes
8cd8080322 Please Coverity (code should be equivalent)
The parameter passed to allowDisplayMath will need to be copied, so it
made sense to pass it by value. Since Coverity complains about that,
the code is rewritten to make the copy explicit.
2016-06-09 16:02:39 +02:00
Jean-Marc Lasgouttes
731dbddd11 Annotate source code to please coverity
This code is signalled as a copy and paste error, but it is a false
positive.

According to the documentation, adding a comment starting with
  // coverity[name_of_error]
should be enough to flag the false positive.
2016-06-09 15:51:07 +02:00
Jean-Marc Lasgouttes
5e5440f2f3 Fix right_boundary properly after a row is shortened
Instead of resetting it to false, do a proper test to see whether
there is a separator at the end of the row.

Fixes bug #10180.
2016-06-09 10:48:15 +02:00
Georg Baum
0f5554a8f2 Remove zombie noncopyable.hpp dependency
The header was still included, but not used.
2016-06-07 20:49:27 +02:00
Georg Baum
273c67d8aa Require a C++11 compiler
As discussed on the list. If no C++11 compiler is found configuration stops
with an error. There are now unneeded parts of boost, the will be removed in
a second commit.
2016-06-07 20:34:52 +02:00
Kornel Benko
9dd695b17a Cmake build: Correct some installation paths 2016-06-07 14:38:20 +02:00
Richard Heck
6f88e11da3 Fix bug #10194: Space missing in UI. 2016-06-06 20:41:07 -04:00
Georg Baum
41fda35c59 Fix cppcheck initialization warnings 2016-06-06 21:55:39 +02:00
Georg Baum
03395b7871 Rethrow excepction instead of a copy
This fixes the cppcheck warning "(style) Throwing a copy of the caught
exception instead of rethrowing the original exception."
2016-06-06 21:52:52 +02:00
Georg Baum
42362cfb87 Remove duplicated if clause
This was a thinko in 760b7cf2 (found by cppcheck), it was added in 977bbd9b as
well.
2016-06-06 20:33:31 +02:00
Georg Baum
bf60696ee6 update test references for ba2b86fa 2016-06-04 17:00:17 +02:00
Georg Baum
6bd5263405 Work around limited SVG support (bug #9778)
Qt only supports SVG 1.2 tiny, so we prefer to convert on our own if an
explicit converter is defined and the converter cache is used (otherwise
the conversion would be too expensive).
2016-06-04 09:09:33 +02:00
Pavel Sanda
48c4763b86 typo 2016-06-03 11:19:02 -07:00
Jean-Marc Lasgouttes
508518ad95 Take inset dimension into account in row signature
In some cases, the insets may change height or width without changing
the other apsects of the row.

Fixes bug #6991 and #10182.
2016-06-03 11:21:09 +02:00
Pavel Sanda
d5933fc5b5 Comment only 2016-06-02 22:48:58 -07:00
Pavel Sanda
ba2b86fa5d Introduce basic support for microtype.sty.
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg192743.html
2016-06-02 22:48:58 -07:00
Scott Kostyshak
6a2219bc6f Support a changed log message in newest LuaTeX
The version of LuaTeX that ships with TeX Live 2016 now gives the
following message after processing a document that yields no pages
of output:

"warning  (pdf backend): no pages of output."

The lowercase "n" in "no" is a change that caused our parser not to
pick up the message.
2016-06-02 22:59:05 -04:00
Scott Kostyshak
1e8b925c07 Output file from (xe|lua)latex is PDF, not DVI
A few parts of our code depend on correctly identifying the output
format of LaTeX commands. One specific bug is that because the
output file was not correctly set, it was not removed after an
error. For example, this commit fixes the following bug:

1. Create a new document that contains "hello\blah" where \blah is
in an ERT box.
2. Compile with PDF (LuaTeX). You'll get an error because of \blah.
3. Close the error dialog.
4. Remove the text "hello" and compile again with PDF (LuaTeX).

The error dialog is shown and the "Show Output Anyway" button is
enabled. If you click it, it shows the previously compiled PDF (with
the text "hello"). With this commit, the button is correctly
disabled (and the output file is deleted).
2016-06-02 22:41:26 -04:00
Scott Kostyshak
831c057593 Generalize a comment
An output file does not have to be a DVI.
2016-06-02 22:34:50 -04:00
Georg Baum
8d255ced2a Do not duplicate jpg format
Some qt versions report both "jpeg" and "jpg" as loadable file extensions.
In this case the jpg format was added twice previously. This does not happen
anymore with the new code, and it works as well if only "jpg" or only "jpeg"
is reported.
2016-06-02 22:31:27 +02:00
Georg Baum
d2424c6998 Improve debug output
Now we have only one line per format, not two. The output looks the same now
as in GuiApplication.cpp for the qt formats.
2016-06-02 22:17:19 +02:00
Pavel Sanda
b356df7fcf glitch in lfundoc 2016-06-01 00:20:50 -07:00
Uwe Stöhr
b540bc1c42 ErrorListUi.ui: correct an expression 2016-05-31 23:15:07 +02:00
Jean-Marc Lasgouttes
51ee267c6e Allow automatic text direction in Painter::text()
It is wrong to assume that direction is left-to-right when no indication exist.

Add a new enum with values LtR, RtL and Auto to be used as argument of
the private text() methods. When direction is Auto, let Qt decide how
the string shall be layed out.

Fixes bug #10169.
2016-05-31 11:52:30 +02:00
Guillaume Munch
1cc14a31ca TocWidget: fix an erroneous collapse and optimise updates based on profiling
TocModels::reset() in GuiView::structureChanged() collapses the TocWidget, and
therefore requires an update right after, which was missing.

In fact, profiling TocWidget::updateView() shows that delaying the update is
good only for fast keypresses (essentially movement). It costs 5% of a
char-forward operation in a document with approx. 100 table of contents
items. The update optimisation has been rewritten to take this data into
account.
2016-05-31 00:14:13 +01:00
Guillaume Munch
78a5c87781 TocWidget: fix part of #9825 2016-05-31 00:14:13 +01:00
Guillaume Munch
6a662cbb27 TocModel: clean-up 2016-05-31 00:14:13 +01:00
Guillaume Munch
6aceb3558a GuiDelimiters: display at least (and at most?) 4 columns 2016-05-31 00:14:13 +01:00
Guillaume Munch
ef8b8ebcfd GuiDelimiter: Synchronise the vertical scrollbars 2016-05-31 00:14:13 +01:00
Guillaume Munch
8aaa79cfb6 ShortcutPrefs: hide empty lfuns for which there is already a binding 2016-05-31 00:14:13 +01:00
Guillaume Munch
b53d07897b ShortcutPrefs: clean-up 2016-05-31 00:14:13 +01:00
Guillaume Munch
2b6d0ae3de Show names of debug modes in the debug panel
Sometimes it's hard to know which is which from a translation of the description
alone.
2016-05-31 00:14:13 +01:00
Jean-Marc Lasgouttes
0311718215 Split TextMetrics::setRowHeight in three parts
The new functions parBottomSpaging and parTopSapcing return below/above each paragraph.

This allows to remove the TopBottomSpace argument and makes the code a
bit clearer.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
e39e4cf96b Do not require an extra pit parameter when a row is available
Now that Row has a pit() member, it is possible to use it instead of passing an extra pit_type parameter to a function which already has access to a Row.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
4c19c5149d RowPainter const cleanup
Change the various paint* helpers to take a single row element as argument.

Do not update x_ in the various paint* helpers. Constify them. Update x_ in paintText and paintOnlyInsets instead.

Remove an empty call to paintForeignMark in paintInset (the call did nothing since orig_x == x_ at this point).
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
656b7f5ab7 Set vertical margins in redoParagraph, not setRowHeight
It is actually easier to set the 20 pixels margin in redoParagraph, since it is not necessary to take newlines in account when deciding what is the real last row of the paragraph.

Moreover this solves the following bug (present in 2.1.x too): when the document ends with a newling, the bottom margin disappears.

Update PAINTING_ANALYSIS with new tasks.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
598f7e4a45 Cleanup Painter text() API
* remove optional arguments to the helpers that use a FontInfo
* add a textwidth argument to the text() methods that are used by rowpainter.

Now textwidth is only computed if a null value was passed to the
text() method. This means that in the use case of rowpainter, no
textwidth needs to be computed.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
333f6fcf07 Make the different Painter::text void methods
The textwidth value that was returned is not used anymore. Now in some
cases we can avoid to compute it at all.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
51b1cfab72 Do not use the return value of Painter::text for logos
This will allow to get rid of this return value (and avoid computing it).
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
ac759b4368 Rewrite setRowHeight using row information
The initial values for maxasc and maxdes (renamed from maxdesc) is obtained as a maximum of max ascents/descents of all row elements.

This allows to get rid of Paragraph::highestFontInRange and FontList::highestInRange.

Some auxilliary variables declarations are also moved to where they are needed.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
1751626776 Simplify redoParagraph by merging duplicate code
Let breakRow return a boolean indicating whether an additional row is
required (after a newline) and use that to replace the code that added
an extra row when a paragraph ends with a newline.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
fc73ebc16c Make the non-drawing cases faster in TextMetrics::drawParagraph
There are two main cases:
* when drawing is disabled from the start, use a simplified code that only paints insets (in order to cache positions).
* when the row is not visible, do the same.

The goal of this optimization is to be able to always run a no-drawing draw after the metrics have been computed.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
96fee0ed7a Move some horizontal scrolling code from TextMetrics to BufferView
It is better to have all the code in the same place, and it will avoid code duplication later.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
77ef48d093 Only add inset postion to cache in paintInset
It was also added in paintText and paintOnlyInsets.
2016-05-30 14:55:41 +02:00
Jean-Marc Lasgouttes
65a6cc1fc3 Cleanup of spacing in mathed
This is a first cleanup step. More complex rules have to be
implemented on top of this.

Use proper spacing \thinmuskip, \medmuskip and \thickmuskip instead of
ad-hoc values.

Rename isRelOp to isMathRel and introduce isMathBin and isMathPunct
(for InsetMathChar and InsetMathSymbol). Update the categories of
characters in InsetMathChar according to LaTeX source (fontmath.ltx).

Set correctly the spacing around mathrel, mathbin and mathpunct
elements. Use \thinmuskip around MathDelim instead of a hardcoded 4.

This is related to bug #8883.
2016-05-29 17:55:55 -04:00
Jean-Marc Lasgouttes
68149e380d Remove extra spacing around InsetCommand buttons
There is already a spacing of 2 pixels on each side of a button (e.g. collapsed inset). There is no need to add one extra pixel for command insets.

Fixes part of bug #10149.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
516d5d29dc Fix drawing of buttonText (enforce same left/right spacing)
The computation of the width of the button was wrong. If <--> stands for TEXT_TO_INSET_OFFSET/2 spacing, and if `[]' marks the button's limits, then the intent is
  <-->[<-->button text<-->]<-->

Therefore the physical grey rectangle width is
   width - Inset::TEXT_TO_INSET_OFFSET

With this change, the spacing on the right of the button is not larger than the  left one.

Fixes bug #10147.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
ccc8ad4744 Cleanup handling of LFUN_LAYOUT_PARAGRAPH in getStatus
The way it works is:
* the inset defines allowParagraphCustomization() correctly
* Text::getStatus acts on it.

Note that, in Text::getStatus, testing for cur.inset().allowParagraphCustomization() does not make much sense, since one should pass the cursor idx as parameter. Actually, for some reason the safest bet is to use the owner of the Text object as inset.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
0d21dca360 Cleanup handling of LFUN_LAYOUT in getStatus
The way it works is:
* the inset defines forcePlainLayout() correctly
* Text::getStatus acts on it.

Note that, in Text::getStatus, testing for cur.inset().forcePlainLayout() does not make much sense, since one should pass the cursor idx as parameter.

There are many other lfuns that do not have to be handled directly by insets. InsetScript in particular has tests for way too many lfuns.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
f78967a802 Rename badly named variable 2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
019fceda3f Remove variables set but not used
This was found by cppcheck.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
a8cfeb1538 Move one Text::setCursor instance to CursorSlice
This method did access more CursorSlice than Text. It is only a setter for
CursorSlice with some bound checking. The new signature is
setPitPos(pit_type, pos_type).
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
0437d8dc1a Variables of type pit_type should be named pit, not par
It is easier to use always the same conventions for naming.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
83d8e12cc1 Rename Cursor::setSelection(bool) to selection(bool)
The old name would be confusing wrt setSelection(), which does additional checks.
This one is a pure acessor, and the more complete methods are
* setSelection(), which avoids empty selections
* clearSelection(), which resets anchor, and sets word selection and mark more to false.

Most of the code should use these two instead of selection(bool), but this is for later.
2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
9fbee19a7f Avoid incorrect "Autocorrect Off" message 2016-05-29 17:55:46 -04:00
Jean-Marc Lasgouttes
5739433feb FindAndReplace: reorder includes 2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
641691bc12 TextMetrics: Use shorter names for font metrics
This keeps code easier to read.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
700e480a18 Cleanup bruteFind. 2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
27bc2e4b63 Remove unused bruteFind* functions
And rename bruteFind2 to bruteFind.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
171fe0cb43 Remove unused CursorData::logicalpos_
This was introduced in 41ecabf5, probably by mistake.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
5792606ff9 Directly pass a Row::Element to RowPainter::paintInset 2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
e52a83549d Remove unused TextMetrics::maxWidth() 2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
4fb8e9b639 Use isMainText() instead of doing explicit tests 2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
d0a318c742 We do not use <boost/scoped_array.hpp> anymore
The code using it  was removed at 81959251.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
5ee778af75 Remove support/metahash.h
It turns out that it did not take off since introduced in 2011. It is better to remove it and the associated boost headers (extract.sh was run against boost 1.60 to do the update).

Since we will move away from several boost classes when transitioning to C++11, it is good to start by removing lesser used ones.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
68a1f9a44e Do not use of boost::tokenizer
It is easier to use instead getVectorFromString for the use we have of this tokenizer. The two places are environment.cpp (path stuff) and qt_helpers (file fileters). The new code is much shorter.

This allow to remove boost/tokenizer.hpp and friends from our boost tree.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
87d4ce0ff7 Remove boost/format support
Only ChkTex.cpp used it, whereas the rest of our code uses the simpler bformat.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
b639056981 Remove declaration of classes that do not exist
Some headers contain
  class Foo;
whereas there is no class Foo.

The list of class statements is given by
  classes=`git grep  '^\(class\|struct\) [a-zA-Z_:]*;' src | sed 's/^.* \(.*\);/\1/'|sort -u`

The ones that are useless are:
  for c in $classes ; do grep -r "\\<$c\\>" src| grep -vq '^[^:]*:\(class\|struct\) [a-zA-Z_:]*;' || echo "$c"; done
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
7628f0bf97 \\pagebreak is a fragile command in general
As such, it shall be protected in moving arguments, such as sections.

Fixes bug #10092.
2016-05-29 17:55:45 -04:00
Jean-Marc Lasgouttes
282fe102f3 Fix getStatus for math-mutate and math-display
Those two functions used two different hackish and buggy
implementation to know when the function is disabled. Replace that by
asking the containing inset whether it accepts inserting display math
inset.

Fixes bug #10033.
2016-05-29 17:55:45 -04:00
Stephan Witt
b8be856f79 Remove unused include file. 2016-05-29 17:55:45 -04:00
Stephan Witt
3a2fc1595b Correct path names were to look for RPM based dictionaries for hunspell on Linux. 2016-05-29 17:55:44 -04:00
Jean-Marc Lasgouttes
26308c1d6b Disable LFUN_INSET_DISSOLVE in tabulars
When in a tabular cell, "this" is just a lone InsetText, while cur.inset() is the whole tabular. This makes a big difference, especially when one wants to count cells.

Fixes bug "9954.
2016-05-29 17:55:44 -04:00
Guillaume Munch
4002c6af72 fix #9826: Outline disclosure of subsection content disappears one second after
doubleclicking content item.

This is only meant as a workaround. See #6675 for more general issues regarding
unwanted collapse of the tree view.
2016-05-29 17:55:44 -04:00
Georg Baum
cfa0eea4b9 Fix compiler warnings 2016-05-29 17:55:44 -04:00
Georg Baum
d2e3a201b9 Do not redefine WINVER
Compiling different parts of the sources with different WINVER may lead to
subtle and hard to detect problems. Better use the same value everywhere.
The existing error message suggests that this was wanted anyway, and it
fixes a compiler warning when cross-compiling for mingw on linux. Our code
does not require a specific value, only a minimum value of 0x5000, which
means the resulting executable will require at least Windows 2000.
2016-05-29 17:55:44 -04:00
Georg Baum
d5d2aa9de9 Fix compiler warnings
Only the ones I understand (DWORD is always unsigned). There are more:

../../src/Server.cpp: In member function ‘bool lyx::LyXComm::pipeServer()’:
../../src/Server.cpp:280:10: warning: enumeration value ‘CONNECTING_STATE’ not handled in switch [-Wswitch]
   switch (pipe_[i].state) {
             ^
     ../../src/Server.cpp:347:8: warning: ‘success’ may be used uninitialized in this function [-Wmaybe-uninitialized]
             && status == pipe_[i].iobuf.length()) {
             ^
2016-05-29 17:55:44 -04:00
Georg Baum
26526b13c5 Properly check for windres
Use the standard way to check for the resource compiler, as e.g.
libtool does it: AC_CHECK_TOOL does already provide some cross compiling
magic, and we do also get an error now at configure time if windres is not
found.
2016-05-29 17:55:43 -04:00
Stephan Witt
d5fb80ed87 Remove special code for Qt5 to manage HiDPI. It's not needed anymore and leads to strange icon scaling problems in mixed resolution environment.
For reference see the screen shots in bug tracker ticket #10114.
2016-05-29 17:55:43 -04:00
Guillaume Munch
ee18af67cd Show review toolbar when outputting changes
"Output changes" alters the preamble even in the absence of tracked
changes. Therefore, not being able to notice when it is activated can possibly
yield hard-to-debug compilation failures.
2016-05-29 17:55:43 -04:00
Georg Baum
fddaa6adeb Make windres configurable
The windres program is typically not called windres for cross compilation.
Now you can call configure with the argument
	WINDRES=x86_64-w64-mingw32-windres
in order to use the windres program on a standard debian installation.
2016-05-29 17:55:43 -04:00
Georg Baum
08afc52c4c Configure included iconv with autotools
The included iconv should not be used on Linux or OS X, but (depending on
local configuration) it might be needed for crosscompiling a mingw target
from Linux. Now the user can choose whether to use the included iconv or not.
cmake does already support that.

eilseq.m4 was taken from the original libiconv 1.14 package.
2016-05-29 17:55:43 -04:00
Georg Baum
637fbb7ac9 Use c-style cast as in original
static_cast does not work
2016-05-29 17:55:43 -04:00
Georg Baum
127e5b1955 Add forgotten zlib includes
I forgot this in 9b822b25ae5. Also remove a comment that is no longer true.
2016-05-29 17:55:43 -04:00
Georg Baum
d5f2bad461 Mingw-w64 build fixes for long long
On mingw-w64, long long (64bit wide) is larger than long (32bit wide).
Therefore we need some more specializations for string, docstring,
otextstream and << overloaded ostream functions. The configuration code
is by me, the source code changes by Shankar Giri Venkita Giri (bug 10053).
2016-05-29 17:55:43 -04:00
Shankar Giri Venkita Giri
88b68ee004 Fix return types for mingw-w64
This is needed for warning-free compilation with mingw-w64, and does not hurt
for other build configurations. Patch by Shankar Giri Venkita Giri (bug 10053).
2016-05-29 17:55:43 -04:00
Georg Baum
78e17b1579 Configure included zlib with autotools
The included zlib should not be used on Linux or OS X, but (depending on
local configuration) it might be needed for crosscompiling a mingw target
from Linux. Now the user can choose whether to use the included zlib or not.
cmake does already support that.

zconf.h.in was taken from the original zlib 1.2.8 package. The generation of
zconf.h was made equivalent to the one generated by cmake.
2016-05-29 17:55:43 -04:00
Guillaume Munch
3465bf4baf typo 2016-05-29 17:55:42 -04:00
Guillaume Munch
395d9e09e2 Disable certain change tracking commands when there are no changes
Fix TODO
2016-05-29 17:55:42 -04:00
Guillaume Munch
4154e088b0 GuiChanges: provide feedback when there are no more changes
Remove FIXMEs: date and time localisation
2016-05-29 17:55:42 -04:00
Guillaume Munch
6d4e6aad24 Automatically show the review toolbar if the document has tracked changes
(#8738)

For efficiency, we add a new flag to the buffer indicating when changes are
present. This flag is updated at each buffer update, and also when explicitly
requested via a dispatch result flag.
2016-05-29 17:55:42 -04:00
Guillaume Munch
9a09fe38bd getInnerText() 2016-05-29 17:55:42 -04:00