Commit Graph

22279 Commits

Author SHA1 Message Date
Georg Baum
16eb4f1ed7 Adjust tex2lyx InsetArgument to format 446
tex2lyx does now allow mixed order of required and optional arguments.
2014-12-27 15:17:09 +01:00
Enrico Forestieri
1b0cbb6932 Fix building with cmake on cygwin.
Add required libraries for the link stage.
2014-12-26 17:00:23 +01:00
Enrico Forestieri
9126a99e97 Fix bug #9217: [Qt5] QWindowsMime class not available
The support for QWindowsMime has been reintroduced in Qt 5.4.0.
The class name has been changed to QWinMime but the interface
is exactly the same.
2014-12-26 16:53:31 +01:00
Georg Baum
903917f3b8 Add tex2lyx test for KOMA-Script classes
In the future this test case should contain all KOMA-Script features.
Currently, it tests just \captionabove anmd \captionbelow.
2014-12-23 22:33:32 +01:00
Georg Baum
6f34a8a640 Get rid of tr1 support
As discussed on the list. We don't need it anymore, either we have a modern
compiler that supports C++11, or we fall back to boost. I kept and adjusted
the regex #define, since we cannot use std regex completely yet.
2014-12-23 22:18:08 +01:00
Stephan Witt
54b0fa330e Drop runtime support for OS X 10.5 NSSpellChecker 2014-12-23 18:19:27 +01:00
Georg Baum
bb87e0422a Revert parts of 7e69ac220d
This fixes the tex2lyx test test-refstyle-theorems.tex. It seems that the
intent of the fix was to remove a \protect in front of a \caption,
\captionabove or \captionbelow, but the implementation did not really do that.
Furthermore, it is not clear in which cases a \protect in front of a caption
needs to removed, and in which cases it needs to be kept: After looking at the
LyX sources I could not see that caprions are always output with \protect.
2014-12-22 21:32:45 +01:00
Jean-Marc Lasgouttes
e32a3e7f57 Reduce use of double variables in Row
All the code that is run before row metrics have been computed should use int arithmetic. After metrics have been computed, we still need doubles because fully justified rows use double for Row::Element::extra.

Rename Row::x to Row::left_margin and change its type to int.

Rename Row::Element::width() to full_width(). In some places of the code, use dim.wid (the int version without the extra separator) because metrics have not been computed.

Let Row::Element::x2pos take a int& argument instead of double&

Let Row::Element::breakAt take a int argument instead of double
2014-12-22 14:07:24 +01:00
Jean-Marc Lasgouttes
8bab23384a Fix the last clang warnings about overloaded virtual methods
This patch fixes a series of warnings like:
{{{
In file included from ../../master/src/mathed/InsetMathBoldSymbol.cpp:13:
In file included from ../../master/src/mathed/InsetMathBoldSymbol.h:15:
../../master/src/mathed/InsetMathNest.h:37:7: warning: 'lyx::InsetMathNest::metrics' hides overloaded virtual function [-Woverloaded-virtual]
        void metrics(MetricsInfo const & mi) const;
             ^
../../master/src/insets/Inset.h:186:15: note: hidden overloaded virtual function 'lyx::Inset::metrics' declared here: different number of parameters
      (2 vs 1)
        virtual void metrics(MetricsInfo & mi, Dimension & dim) const = 0;
                     ^
}}}
For a description of the problem, see for example:
http://stackoverflow.com/questions/18515183/c-overloaded-virtual-function-warning-by-clang

3 different strategies have been used:
 * in frontend, some functions have been renamed.
 * in InsetMath.h, Inset::write has been explicitly imported too
 * in InsetMathNest.h, since a comment said that hiding Inset::metrics is intended, a special trick has bee used to silence the warning.
2014-12-22 11:02:45 +01:00
Scott Kostyshak
625cea1528 Whitespace 2014-12-21 19:01:52 -05:00
Georg Baum
ed3b3afbe9 Make Converter class thread-safe
Again, this is used in a global list shared by all threads
2014-12-21 22:05:15 +01:00
Georg Baum
0af021878b Make Format class almost thread-safe
This is needed since all formats are stored in a global list which is shared
between threads, but never modfified except from the main thread.
The only missing bit is extension_list_, which is not so easy to do.
2014-12-21 21:40:25 +01:00
Georg Baum
90b1f084bf Improve C++11 support
If we compile in C++11 mode, do not use the boost replacements for bind,
functional and shared_ptr. regex is excluded, since it misses match_partial, and
gcc does not provide a usable one in versions less than 4.9.0.
I also removed the #define for match_partial, since this is dangerous. Now you
get a compile error instead of subtle runtime differences.
2014-12-21 20:22:16 +01:00
Juergen Spitzmueller
c9609fe56a Do not warn about changed modules when changing modules.
Part of #9356
Also fixes #9365
2014-12-21 19:10:13 +01:00
Georg Baum
c4613963fa Add missing using declarations
This fixes using std::tr1::regex for non-MSVC compilers.
2014-12-21 19:05:00 +01:00
Georg Baum
158b9a0e55 ::readlink() needs unistd.h
this is included in some gcc headers, but not in c++11 mode, that is the
reason why we did not get a compile error so far.
2014-12-21 18:13:33 +01:00
Georg Baum
7796ad3a36 Improve llvm libc++ detection
The old detection did only work if CFLAGS contained -std=c++11, since ciso646
was only included for __cplusplus > 199711.
Thanks to Koernel for the cmake part.
2014-12-21 17:26:21 +01:00
Juergen Spitzmueller
9b3e47fd87 Output package options before loading any package.
Fixes: #9355
2014-12-21 12:10:06 +01:00
Juergen Spitzmueller
740d9162c0 When switching classes, warn user about all unapplied document changes
Currently, this is limited to modules.

Part of #9356.
2014-12-21 11:49:08 +01:00
Juergen Spitzmueller
276fa4825d Do not silently dismiss unapplied document changes when adding module
Part of #9356
2014-12-21 11:47:59 +01:00
Juergen Spitzmueller
41c35476e5 Fix initialization order 2014-12-21 10:13:56 +01:00
Scott Kostyshak
15ae3eb85c Initialize recently added forceownlines_ bool
This adds on to the fix for #8875 (a25569eb).
2014-12-20 15:05:20 -05:00
Scott Kostyshak
6da7ee1be1 Whitespace 2014-12-20 15:03:40 -05:00
Georg Baum
d553938c92 Improve and unify error messages
Now the errors given for an unknown layout in copystyle and obsoletedby provide
the same information.
2014-12-09 21:20:56 +01:00
Georg Baum
c6b98a504f Make Encoding class thread-safe
Now all const methods may be called without additional locking.
This is assumed by the threaded LaTeX export, which always useses a globally
unique instance for each encoding.
2014-12-08 22:25:40 +01:00
Georg Baum
364e0f72c4 Fix invalid iterator access 2014-12-08 21:29:25 +01:00
Jean-Marc Lasgouttes
0bdfca2c6e \\subfloat captions are moving arguments
Therefore insets should be protected in these captions.

Fixes bug: #9346.
2014-12-08 09:43:49 +01:00
Juergen Spitzmueller
cfeddb9293 Add ObsoletedBy tag to InsetLayout
Fixes: #9000.
2014-12-08 09:08:45 +01:00
Georg Baum
5b336954d7 Try to fix compilation on cygwin 2014-12-07 20:43:47 +01:00
Georg Baum
0b30253f2b Fix compilation without trivstring 2014-12-07 20:39:31 +01:00
Georg Baum
c86f299a50 Encapsulate Converter class
Now members are not directly accessible anymore.
2014-12-07 18:35:28 +01:00
Georg Baum
25344de51d Make Language and Encoding threadsafe
Read-only access to these classes is now threadsafe, with one exception:
The encoding neds to be already initialized (i.e. init() must not be called).
This makes bug 9336 unreproducable on my machine, although it is not completely
fixed yet.
2014-12-07 18:26:44 +01:00
Georg Baum
d5aaee1f6b Whitespace 2014-12-07 17:29:12 +01:00
Georg Baum
83bee109db Make trivstring class ready for use
The interface is now 100% unit tested, and the typedefs depend on the new
STD_STRING_USES_COW configuration variable. The only missing bit is to detect
clang and disable STD_STRING_USES_COW for clang.
2014-12-07 13:14:17 +01:00
Georg Baum
46f7b578b2 First version of trivstring class (bug #9336)
As discused on the list. This is not used yet, but it is intended to provide
thread-safe read-access without the need for synchronization if the used STL
implementation does not provide it for std::basic_string. This is the case for
all implementations using copy-on-write.
2014-12-07 13:14:17 +01:00
Juergen Spitzmueller
2614d5a386 Use appropriate (cheaper) conversion. 2014-12-07 13:06:29 +01:00
Uwe Stöhr
0d63bdfc16 tex2lyx/text.cpp: bring back a comment as discussed 2014-12-04 00:57:14 +01:00
Georg Baum
49af9db623 Remove unneeded typedef
docstring is already defined in strfwd.h (which is included from docstring.h).
There are only two possible cases:
Either the typedef in docstring.h defines an identical type (then it is not
needed), or it defines a different type (then it generates a compilation error)
=> it is not needed.
2014-12-03 21:08:13 +01:00
Juergen Spitzmueller
a25569ebb3 Add a layout tag ForceOwnlines that assures an inset is started and terminated by a line break in the LaTeX output.
Fixes: #8875.
2014-12-01 14:56:47 +01:00
Juergen Spitzmueller
e5e8bff75b corrected_env: use breakln instead of hardcoded linebreak 2014-12-01 14:45:11 +01:00
Uwe Stöhr
7e69ac220d tex2lyx: support for KOMA-script's \caption* commands
- To my knowledge tex2lyx supports now all caption constructs provided by LyX.
- InsetArgument is correct here, I therefore deleted the FIXME.
2014-12-01 02:57:12 +01:00
Georg Baum
208e67c7a7 Avoid implicit copy 2014-11-30 12:59:00 +01:00
Georg Baum
38d387d1ab Remove heavy includes 2014-11-30 12:52:01 +01:00
Georg Baum
06cfd26d5e Fix return value of CVS::toString() + cosmetics
CVS::toString() returns a docstring, so rather be explicit than relying on a
cast that not everybody understands how it works at first sight.
2014-11-30 12:41:49 +01:00
Georg Baum
e066dd6bd9 A stringstream is overkill here 2014-11-30 12:37:43 +01:00
Enrico Forestieri
11b7b7234e Fix bug #9342: LaTeX build get stuck for unconventional path name
The reason being that the TEXINPUTS path list was not quoted on Windows.
This was no problem with spaces but some special characters are
interpreted by the shell and can cause problems. In this particular
case, the '&' character was being interpreted as a command separator.
2014-11-27 21:59:09 +01:00
Jean-Marc Lasgouttes
38f8858671 Fix warnings reported by clang
All these problems have the same root: the address of a reference can never be 0, and it does not make sense to test it.
2014-11-27 19:10:43 +01:00
Georg Baum
2c5c2a6683 Better fix for bug #8679
Thanks to Enrico, who noticed that the previous fix did not take into account
the case of nonempty length argument + the next line beginning with [.
Now the parsing is exactly the inverse of InsetMathGrid::eolString().
2014-11-26 22:06:15 +01:00
Jean-Marc Lasgouttes
8d6d21c6d9 Add new variables lyx_build_date/time
These are now in version.cpp. The build machinery should therefore make sure
that version.cpp is recompiled at every compilation.

These variables are now referred to by the other places that made use of __DATE__ and __TIME__.
2014-11-25 18:58:35 +01:00
Uwe Stöhr
bfc4af2d01 tex2lyx/text.cpp: add missing part of a comment 2014-11-25 00:53:35 +01:00
Uwe Stöhr
1427b6fe31 tex2lyx: support for glue lengths in InsetSpace 2014-11-25 00:50:39 +01:00
Jean-Marc Lasgouttes
af1ca8405f Fix bug in 81badf: char_type and double do not have the same size 2014-11-24 22:51:12 +01:00
Jean-Marc Lasgouttes
0b09424017 Autotools: read git commit hash at compile time
Also do as cmake to avoid full recompilation when the hash changes.
2014-11-24 22:00:21 +01:00
Uwe Stöhr
489cdae255 tex2lyx: support relative lengths in \vspace and \hspace 2014-11-23 04:56:47 +01:00
Uwe Stöhr
c2e0f22385 tex2lyx/Preamble.cpp: add support for all \defskip lengths
- support for percentage length was missing and the fix is really that simple
2014-11-23 03:28:07 +01:00
Uwe Stöhr
02b2cd50ed tex2lyx/TODO.txt: \=*{char} is already supported by tex2lyx 2014-11-23 01:30:13 +01:00
Uwe Stöhr
d179ef455c tex2lyx/TODO.txt: the UGM fonts are already fully supported 2014-11-23 00:40:47 +01:00
Jean-Marc Lasgouttes
9b530e59c2 Let the Foot inset have a different Layout when inside a title
This allows to address two main issues
 * \thanks does only accept one paragraph, while \footnote allows several (ticket #2666)
 * footnotes in titling environments were not numbered on screen.

Moreover, the code reduces hardcoding of features, which is always a good thing.

There are several pieces in this commit:

 * new numbering type \fnsymbol for counters

 * the Foot inset changes its layoutName() to Foot:InTitle when inside a paragraph with InTitle property. This is set when running updateBuffer.

 * Foot:intitle uses the \thanks command, does not allow multiple paragraphs and marks its contents as moving argument.

 * The InsetLayouts for Foot now have properLaTeXName/Type, so that InsetFoot::latex can be removed; further code simplification is probably possible.

Fixes: #2666
2014-11-21 10:23:56 +01:00
Georg Baum
0385ef0e19 Fix unwanted curly braces in formula (bug #8679)
There was an unsymmetry between reading and writing: InsetMathGrid::eolString()
adds curly braces if the first cell of the next line starts with [ to prevent
misparsing as optional argument of \\. These braces were not removed on reading.
2014-11-20 22:05:05 +01:00
Uwe Stöhr
2a1ab8b6f0 tex2lyx/Preamble.cpp: whitespace fix
- revert unnecessary change from previous commit
2014-11-20 02:03:06 +01:00
Uwe Stöhr
5c9667d8b8 tex2lyx: support for the libertine fonts
- all libertine font variants are now supported
2014-11-20 02:01:05 +01:00
Georg Baum
a180414975 Fix viewer file paths on windows (bug #8892)
Some applications do not accept forward slashes, so call external viewers
and editors with backward slashes which is the usual convention under windows.
2014-11-19 22:47:36 +01:00
Georg Baum
5ea48e077b Show export message also for non-threaded export 2014-11-19 22:45:25 +01:00
Stephan Witt
f7418758ab use enchant exception message accessor 2014-11-18 22:06:27 +01:00
Georg Baum
f3370c3e6a Remove unneeded mutable keywords 2014-11-18 21:08:43 +01:00
Georg Baum
f7be88ce4c Make document_language non-mutable
The many occurances of the mutable keyword in LyX sources make it quite
difficult to understand what is really const and what not, and to debug
multithreading memory problems. In this particular case it is not needed
at all to have a mutable member, so make it non-mutable.
2014-11-18 20:51:21 +01:00
Stephan Witt
2992bb04da Add lookup for standard location of hunspell dictionaries of Debian packages 2014-11-18 08:56:23 +01:00
Stephan Witt
5c90303c0a Add diagnostic messages for enchant spell checker dictionary requests 2014-11-18 08:48:41 +01:00
Scott Kostyshak
937a52b64d Do nothing if converting to the same type of Note
The advantage is that the buffer will no longer be
marked as dirty when converting to the same type.

A quick break here is done instead of disabling the
LFUN because disabling the LFUN would lead to a greyed out
entry, which might confuse users. In the future, we might
want to have a radio button for switching between notes.
2014-11-17 19:47:37 -05:00
Georg Baum
e5845fea49 Fix memory error detected by valgrind
The assignment name = sub.str(1) reads from the first argument given to
regex_match(), but previously this was a temporary object which was already
out of scope. This did probably not matter much in practice, but invoked
undefined behaviour, and as we all know this is allowed ton format your hard
disk or kill to your cat, so better fix this.
2014-11-17 22:08:21 +01:00
Georg Baum
f146bded7a Document Buffer::preview() 2014-11-17 22:07:38 +01:00
Jean-Marc Lasgouttes
689e54f34a Make sure that UpdateLocker is used correctly in the future 2014-11-17 11:52:14 +01:00
Uwe Stöhr
e4fb40b284 symbols: support the AMS commands \l(r)v(V)ert
- fixes bug #3538
2014-11-16 23:09:28 +01:00
Georg Baum
4d3f9f3ede Make doExport() helper private
One declaration of doExport() was not used, and the other one was only used by
Buffer, so make it private since returning the exported file name is a bit
strange if it can also appear as input argument.
2014-11-16 20:51:42 +01:00
Georg Baum
9d8839f688 Clarify member variable documentation 2014-11-16 19:15:13 +01:00
Stephan Witt
941868e8d7 #9317 add method cleanDuplicateEnvVars() to correct the broken environment with duplicate PATH values passed by Yosemite's launchd(8) 2014-11-16 17:21:46 +01:00
Georg Baum
f110ef2f41 Convert updatelayouts.sh to python
This makes the script usable on windows and speeds it up by an order of
magnitude, since no new process needs to be forked for each layout file.
It also does not conevrt .old files again.
2014-11-16 12:43:52 +01:00
Georg Baum
e7a8f63e1b Fix typo 2014-11-16 12:40:23 +01:00
Richard Heck
df7b0eb61d Get rid of boost::noncopyable. 2014-11-14 23:40:27 +00:00
Georg Baum
0f2069b8a5 Fix recursive math macro crash (bug #9140)
This is different from bug #8999, since in this case a new macro instance is
created. You still get a TeX capacity exceeded error if you try to typeset the
exported document, but this is the same as for bug #8999 and better than a
crash.
2014-11-14 21:30:42 +01:00
Georg Baum
0bf8b8a1d2 Load footmisc.sty instead of using outdated code
This is a patch I originally sent to lyx-devel in 2012 with subject
'Load footmisc.sty instead of using copied code from obsolete stblftnt.sty'.
It now takes all comments into account: It works also if the user loads the
package herself, it can be disabled by providing the footmisc feature in a
layout, and it does not use the ugly \AtBeginDocument{}.
2014-11-14 20:20:35 +01:00
Uwe Stöhr
ff85a4902e mathed: bformat infoize messages
- should fix bug #1908
2014-11-14 18:18:30 +01:00
Jean-Marc Lasgouttes
81badf8550 Fix overflow of inset over text (see #9224)
The symptoms are the same as the original #9224, but the reason is different. In the new code, the width of justified rows includes the Row::separator value. Therefore the CRC computed in ParagrahMetrics::computeRowSignature is not updated in some cases.

The fix is to add Row::separator as one of the elements of the row crc.
2014-11-14 11:20:21 +01:00
Jean-Marc Lasgouttes
3cbdfa1762 Fix some glitches in inset-select-all
Fix a crash reported in #7727. This happened because cur.pos() was reset before cur.pit(). In this case, cur.lastpos() will usually be wrong.

Fix bad behaviour when selecting at top level with several paragraphs.

Update documentation.
2014-11-14 10:18:34 +01:00
Richard Heck
be4646c8ac Whitespace. 2014-11-12 00:01:45 +00:00
Georg Baum
5deaaa3b13 Fix memory errors found by Alfredo with valgrind
BufferParams::setDocumentClass() deletes the old document class of the buffer
and creates a copy of the new one. Therefore, the stored layout pointers in
the paragraphs (actually only one paragraph exists) are dangling afterwards.
Resetting them before setting the document class helps here.
In the long term we need to get rid of BufferParams::setDocumentClass()
completely, this is very ugly.
2014-11-11 20:57:25 +01:00
Georg Baum
8f93600d3f Prevent accidental usage of wrong copy constructor 2014-11-11 20:57:25 +01:00
Uwe Stöhr
ec84cbfb44 tex2lyx: support for \item with opt arg in itemize environment 2014-11-11 01:20:03 +01:00
Uwe Stöhr
20cfef458f tex2lyx/TODO.txt: update file and add information 2014-11-11 01:06:51 +01:00
Jean-Marc
093a1fe14c Fix inset-select-all for insets with multiple paragraphs 2014-11-10 11:56:21 +01:00
Uwe Stöhr
9eae2b141d test-insets.lyx.lyx: forgot to commit this in r471889e0 2014-11-10 03:34:01 +01:00
Enrico Forestieri
29cebc7fb0 Fix CAS computation of a selected subformula.
Invoking a computer algebra system program for computing a selected
subformula has never worked (checked with all LyX versions back to 1.3)
and, moreover, in the presence of a selection things go awry.
This commit allows this computation by replacing the selected
subformula with the result of the computation.
2014-11-09 21:57:29 +01:00
Kornel Benko
07683c1f0d Cmake build: 'callstack printing' detection.
Instead of depending on compiler we try to check for working
API as is done now for automake build too.
2014-11-09 12:59:14 +01:00
Enrico Forestieri
9f613a5f7e Fix issue with CAS.
See http://thread.gmane.org/gmane.editors.lyx.devel/153516
This regression was due to a thinko in [43f6b167/lyxgit].
2014-11-09 02:19:00 +01:00
Scott Kostyshak
73a7bf9dad Recommit clearing of empty selections in GuiView
A similar fix was reverted (453ce611) because of crashes.
The crashes occurred simply because of a failed check that
we have a buffer view before using it. That is now done in
this commit.

The below commit description is copied from the original
commit (fb05011a):

Empty selections can cause confusing behavior for a few reasons:

(1) some functions behave differently depending on whether there is a
selection. If I press delete, nothing happens (where I expect the
character or inset before the cusor to be deleted). If I toggle bold or
emphasize nothing happens (where if there is no selection the entire
word is toggled). There are other LyX functions that depend on whether
there is a selection or not. Further, I wonder if any part of LyX's code
assumes that if there is a selection it is non-empty.

(2) menu options are incorrectly set. For example, the scissors icon.

For remaining empty selection issues, see #9222.

For more information, see:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg184758.html
2014-11-07 20:47:55 -05:00
Uwe Stöhr
73f2b01678 tex2lyx: support for bibtopic
can also go to branch
2014-11-07 03:29:53 +01:00
Uwe Stöhr
471889e0db tex2lyx/text.cpp: support for \nameref
\nameref is not recognized

should be backported to branch
2014-11-07 01:58:06 +01:00
Uwe Stöhr
b119f849d7 tex2lyx/Preamble.cpp: support 2 math fonts
- support for kurier and iwona as math font
can also go to branch
2014-11-07 01:28:42 +01:00
Uwe Stöhr
af8ba5e069 InsetFootlike.cpp: disable listings inside footnotes
fixes bug #9321
2014-11-04 23:44:10 +01:00
Enrico Forestieri
d1858b89d0 Fix bug #9319: Problems with space inside math and textrm. 2014-11-04 21:36:10 +01:00
Enrico Forestieri
77b0452a30 Fix bug #7970: space disappears from equation when reopening LyX file. 2014-11-04 21:30:49 +01:00
Georg Baum
2d338ee3e2 Fix for bug #9234, from Georg.
Our TempFile class uses QTemporaryFile internally, and, on Windows,
this keeps the file locked so that we cannot rename it. So we have
to release the lock.
2014-11-03 10:09:40 -05:00
Jean-Marc Lasgouttes
e52a385493 Reimplement inset-select-all in a generic way
There are 3 possible actions (in order)
* select current cell
* select all calls of inset
* select the inset from outside (in the containing inset)

This fixes completely #7727.
2014-11-01 16:54:23 +01:00
Jean-Marc Lasgouttes
c559f85ccb Fix wrong test: boolean variable is never negative
This has been spotted by clang++.
2014-11-01 16:06:08 +01:00
Richard Heck
1f45e6527a Do not truncate references in outline pane (bug 9312). 2014-10-30 18:39:58 -04:00
Richard Heck
07079e7da3 Improve debugging output. 2014-10-27 18:28:33 -04:00
Richard Heck
8ec3e3283a If we successfully save a file but fail to move it to its proper location,
then, if we made a backup and the original file was not a symlink, we moved
that file, so it will look to the user as if it was deleted. This is bug
2014-10-27 11:26:58 -04:00
Richard Heck
8b57600a1c Fix warnings. 2014-10-27 10:42:03 -04:00
Richard Heck
f454bf931b Whoops. Forgot to add before amending commit. 2014-10-26 13:02:49 -04:00
Richard Heck
452a7a500c Make static variables used in DocBook output thread-safe. 2014-10-26 13:01:48 -04:00
Richard Heck
de3daf040b Sort debug options in the message pane by string. This makes it
much easier to find what you need, especially when we're trying
to help users. Previously, they were sorted by their enum values.
2014-10-26 12:49:04 -04:00
Enrico Forestieri
498ab8ff23 Tweak the shape of the parbreak separator.
The shape of the parbreak separator is slightly changed in order to
better distinguish it from the forced newline. This allows using the
same color of the plain version without risk of confusion.
2014-10-25 23:38:52 +02:00
Stephan Witt
f8c964d080 Check the correct macro for conditional include of lyx_commit_hash.h 2014-10-24 18:12:58 +02:00
Kornel Benko
71088f5b1c Forgot this file in the last commit 2014-10-24 17:29:12 +02:00
brokenclock
11e679f73e Add LFUN_SERVER_GET_STATISTICS command
This function can be used with the LyX server to obtain the word, character or character+space count in the current document or selection.
2014-10-23 16:06:42 +02:00
Stephan Witt
16e979298e #9130 Text in main work area isn't rendered with high resolution
Constify splash image coordinates
2014-10-21 13:48:14 +02:00
Stephan Witt
84e6b98562 #9130 Text in main work area isn't rendered with high resolution
Draw version string to splash image with correct position and size
2014-10-20 17:37:12 +02:00
Stephan Witt
345ec48ed3 #9130 Text in main work area isn't rendered with high resolution
Search high resolution images only when application has detected high resolution screen
2014-10-20 17:15:23 +02:00
Stephan Witt
aabc20fde8 Repeat the Mac menu bar init for Qt5 only on Mac 2014-10-20 14:22:45 +02:00
Jean-Marc Lasgouttes
2737f82139 Fix bug #9288: Cannot position cursor near the end of a line.
The problem was that some parts of the code assume that the right margin is part of the width of the row. This is not the case, only the left margin (Row::x) is counted.

The code has been fixed and documented to reflect this.
2014-10-19 15:38:38 +02:00
Stephan Witt
a09eaf448c Add Qt-version info to LyX version string when a git repository is present. 2014-10-18 16:06:33 +02:00
Stephan Witt
2dfb45f91b #9130 Text in main work area isn't rendered with high resolution
Assign the pixelRatio of the application to the buffer of the work area.
2014-10-18 15:52:43 +02:00
Stephan Witt
4d51ad339f #9130 Text in main work area isn't rendered with high resolution
Load images with search mode check_hidpi to read images with double size when present.
2014-10-18 15:50:22 +02:00
Stephan Witt
54a742382c #9130 Text in main work area isn't rendered with high resolution
Make QT_VERSION check for Qt5 matching Qt5.0.0 too.
2014-10-18 15:48:18 +02:00
Stephan Witt
8829eeed04 #9130 Text in main work area isn't rendered with high resolution
Assign the pixel_ratio of graphics params to the Qt pixmap of the image.
2014-10-18 15:46:17 +02:00
Stephan Witt
f9bff2d9b1 #9130 Text in main work area isn't rendered with high resolution
Add display_pixel_ratio to buffer params to use it for displays with high resolution.
It holds the highest ratio between physical pixels and device-independent pixels of the LyX application.
Preview snippets will be generated using this value to get high resolution preview.
2014-10-18 15:39:58 +02:00
Stephan Witt
82904d4603 #9130 Text in main work area isn't rendered with high resolution
Add pixel_ratio to graphics params to use it for displays with high resolution.
It holds the ratio between physical pixels and device-independent pixels of the graphics.
2014-10-18 15:26:49 +02:00
Stephan Witt
e7163a0999 #9130 Text in main work area isn't rendered with high resolution
Add search mode check_hidpi to ease the lookup for images with double size to use for displays with high resolution.
2014-10-18 15:19:47 +02:00
Stephan Witt
9135dcee07 #9130 Text in main work area isn't rendered with high resolution
Introduce the concept of pixel ratio: the ratio of physical and device independent pixels.
This is useful for rendering of content on Retina-displays of Mac hardware with high resolution.
Qt has real support for this starting with Qt5 - therefore it has to be compiled conditionally.
This change uses some work of Marcelo Galvão Póvoa, thank you.
2014-10-18 11:53:16 +02:00
Richard Heck
2ca21d2c15 Update comment. 2014-10-16 16:50:03 -04:00
Richard Heck
080a4d84e2 Fix bug #9296. The key may be multiple keys. 2014-10-16 16:31:03 -04:00
Jean-Marc Lasgouttes
f58d9f27a2 Erase correctly math multi-cell selection
What a selection spans several cells in mathed, and a deletion occurs though LFUN_CHAR_DELETE_FORWARD for example, only the case of a proper grid was handled. When no such grid exists, all cells between the first and the last index are cleared now.
2014-10-16 16:16:15 +02:00
Jean-Marc Lasgouttes
ac018bd8db Fix ticket #9224: text overflows through adjacent insets
The logic of Row::shortenIfNeeded is completely changed to look at the row from the start and not the end. This leads to clearer code.
2014-10-16 14:53:54 +02:00
Scott Kostyshak
5636906aee No space after inline math for text export (#9282)
This extra space was the result of the fix for #6094
(at 7e624928).
2014-10-15 19:21:18 -04:00
Scott Kostyshak
3b96c6e901 Remove line in text export of inline math (#9282)
If there is only one row, a new line should not be appended. If
there is more than one row, the new line should not be appended for
the last row.

For example, if in LyX there was "as you can see in $x$ there..." a
copy/paste would lead to a newline after "x".
2014-10-15 19:18:46 -04:00
Alfredo Braunstein
8f821dba70 Rewrite of change-related helpers
lyxfind.cpp(findNextChange, findPreviousChange, findChange, selectChange): factor the change-selection part out of the change-finding part
Text.cpp (acceptOrRejectChanges): call only selectChange
2014-10-14 17:40:44 +02:00
Alfredo Braunstein
b2246c4ea2 insets/InsetTabular.cpp (doDispatch): fix to #9291. The problem was simply that the default status for the cursor in the call to *::doDispatch is "dispatched".
insets/InsetTabular.cpp (edit): do not reset the selection
2014-10-14 12:04:19 +02:00
Jean-Marc
82ab83080f Whitespace only 2014-10-13 22:44:30 +02:00
Alfredo Braunstein
866fc2afcc mathed/InsetMathHull.cpp (InsetMathHull::doDispatch): do not declare LFUN_FINISHED_* lfuns as undispatched after handling them
Fixes #9289, and an unreported cousin of #3900
2014-10-12 11:07:28 +02:00
Alfredo Braunstein
25cf12d650 Text2.cpp (checkAndActivateInset, checkAndActivateInsetVisual): activate insets on selection if the anchor is inside the inset.
insets/InsetText.cpp (InsetText::edit): do not reset the selection
Fixes #2346.
2014-10-12 10:07:18 +02:00
Alfredo Braunstein
ec269c2000 Whitespace 2014-10-11 23:28:15 +02:00
Stephan Witt
68d217df49 Mac menu bar init has to be repeated for Qt5 after clearing the menu 2014-10-11 12:39:08 +02:00
Jean-Marc Lasgouttes
8ecb96c09a Add the git commit (if applicable) to LyX version
This only works for autotools right now, but adding that to cmake is trivial
2014-10-10 12:12:17 +02:00
Jean-Marc Lasgouttes
d605048b5c Fix ticket #9276: Labeling cursor off by several characters
The length of STRING row elements is not updated until finalizeLast() is called.
2014-10-09 22:09:33 +02:00
Juergen Spitzmueller
db2044dc14 Fix key code 2014-10-08 10:57:58 +02:00
Stephan Witt
ce57594afd Remove Qt4 artifacts in comments 2014-10-01 10:06:17 +02:00
Uwe Stöhr
96ca121fc9 LaTeXFeatures.cpp: fix bug #9266
mhchem loads amsmath and needs therefore be loaded after it but before packages that redefine commands of amsmath. We already take care of esint but not of wasysym
2014-09-10 22:01:29 +02:00
Kornel Benko
5a6020ea15 Update file formats of test files 2014-09-04 12:14:47 +02:00
Kornel Benko
90717df577 Cmake tex2lyx tests: Take care of initialized userdir
If we are testing tex2lyx the first time, then the userdir
is empty. We call now configure.py to initalize in case it is needed.
The algorithm to detect if reconfigure is needed mimics the lyx behaviour.
2014-09-03 21:21:05 +02:00
Stephan Witt
bf581924c9 Fix possibly uninitialized use of variables 2014-09-03 00:07:26 +02:00
Juergen Spitzmueller
d9b87d651a Fix bug with wrong baseline calculation in last paragraph (2nd attempt)
This time, we consider the cases where a \par is not wanted (single-par insets, tabular cells).

Fixes: #9231
2014-09-01 09:14:26 +02:00
Kornel Benko
08fa62396b Add some missing files to autoconf's dist 2014-08-31 15:23:28 +02:00
Kornel Benko
6c7b5b12c7 Add cmake files to autoconf's dist 2014-08-31 15:21:20 +02:00
Juergen Spitzmueller
87eb430395 Add support for todonotes package
Fixes: #7546
2014-08-31 14:49:30 +02:00
Juergen Spitzmueller
ccdd782b4f Add support for the fixme package.
Fixes: #8868
2014-08-31 14:38:28 +02:00
Juergen Spitzmueller
9a702f195d Add support for beamer lemma environment.
File fomat change.
2014-08-31 12:30:14 +02:00
Enrico Forestieri
90b6920083 Fix export of xfig external insets (bug #9244).
The check for a latex format is very fragile. Both libmagic and our
guessing from contents cannot distinguish the pstex and pdftex formats
used by the xfig external inset. Moreover, it may also happen that
lyx files are mistaken as latex ones. Thus, when the guessed format
is latex, the only solution is to give precedence to the format
determined by the file extension.
2014-08-29 10:42:16 +02:00
Juergen Spitzmueller
9c05f221f9 Revert "Fix bug with wrong baseline calculation in last paragraph"
This reverts commit b555f31a34.
2014-08-28 08:38:27 +02:00
Peter Kümmel
ada262a78b print callstack on assert 2014-08-27 19:48:42 +02:00
Stephan Witt
0d6f17afe2 More careful NSAutoreleasePool management 2014-08-26 08:22:12 +02:00
Stephan Witt
3aa428fdea #9245 replace Q_WS_MACX with Q_OS_MAC - the Q_OS_MAC macro is usable with Qt4 and Qt5. 2014-08-25 20:08:59 +02:00
Enrico Forestieri
4521fc757b Replace Q_WS_WIN with appropriate guards to account for Qt5.
This commit replaces almost all occurrences of Q_WS_WIN to comply
with Qt5. The remaining occurrences should *not* be replaced,
because the guarded code won't compile on Qt5.
2014-08-25 19:27:45 +02:00
Enrico Forestieri
565260126e Fix the -geometry command line argument for Windows.
The command line argument -geometry WIDTHxHEIGHT±XOFF±YOFF
specifies a preferred size and location for the main window.
Currently, this is semi-broken on Windows. Indeed, only
specifying WIDTH and HEIGHT places the main window such that
the left and top borders are invisible such that the window cannot
be moved. Moreover, the XOFF and YOFF parts (when present) are
used to specify the distance of the window from the left and top
or right and bottom edges of the screen, when using '+' or '-',
respectively. However, -geometry 800x600-20-20, instead of placing
the window such that its bottom and right edges are at a distance
of 20 pixels from the corresponding screen edges, places the
window such that its left and top borders are out of the screen.
This is corrected by this commit, which also addresses the fact
that Qt5 does not define Q_WS_WIN anymore.
2014-08-25 18:35:15 +02:00
Richard Heck
a5c4ccfd26 Add a debugging message. 2014-08-25 11:14:27 -04:00
Uwe Stöhr
94a9c127e3 support for the LaTeX commands \x***arrow
- this patch supports the \x***arrow commands provided by the mathtool package
- fileformat change
2014-08-25 00:44:09 +02:00
Stephan Witt
5af8238700 Reintroduce some class definitions. 2014-08-24 21:40:40 +02:00
Stephan Witt
3218d32ace Remove superfluous class definitions. 2014-08-24 20:32:01 +02:00
Stephan Witt
f73091228c Remove special GlobalMenuBar class. As Patrick De Visschere pointed out it is not needed. The shortcut handling of Qt does it internally now what GlobalMenuBar was made for. 2014-08-24 20:29:52 +02:00
Stephan Witt
fad67d64ac FSPathMakeRef is deprecated: use LSOpenFromURLSpec instead of LSOpenFromRefSpec 2014-08-24 12:49:34 +02:00
Stephan Witt
6cbaad9398 Correct the method signature of MenuTranslator::translate for Qt5 2014-08-23 16:01:03 +02:00
Richard Heck
6490cdafbe Make BiblioInfo::collectCitedEntries private (since it can be),
and fix a comment referring to it.
2014-08-22 11:18:10 -04:00
Stephan Witt
d1bfad86e5 Use QProxyStyle instead of QMacStyle. QMacStyle is not available anymore with At5 and QProxyStyle is present since Qt4.6 as an alternative 2014-08-22 11:17:34 +02:00
Peter Kümmel
6407d45a69 fix coding style
(should have read ml first)
2014-08-16 07:27:00 +02:00
Peter Kümmel
39911dfe2b build test_Layout test 2014-08-16 06:55:32 +02:00
Richard Heck
54c2ab2732 Possible fix for the mystery crash, which is bug #9049.
Investigation of bug #9236 showed that crash to be due to a Paragraph's
holding a dangling pointer to an old and deleted Layout after the
DocumentClass was reset. Since the backtraces look almost identical, it
seems likely that we have the same problem here.

Since this crash seems almost always to involve tables, I looked at the
code in switchBetweenClasses() and found that the Paragraphs that belong
to "hidden" table cells are not seen by the initial recursion using a
ParIterator: It skips right over them. This was confirmed by test code
suggested by Enrico, with results reported in Trac.

The present patch attempts to deal with this problem in the second
recursion, over Insets. When we see an InsetTabular, we call a new
routine that recurses through the cells, looking for hidden ones. If it
finds a hidden one, it then resets the Layout for the cell's Paragraphs
(there should be only one, but we do not make any assumptions) to the
PlainLayout that belongs to the new DocumentClass. This is good enough,
since such cells never have content.

There is extensive discussion of the patch here:
  https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg185095.html
Additional testing by Enrico and me confirmed the existence of the
dangling pointer.
2014-08-15 10:44:37 -04:00
Richard Heck
88ce7bd5d4 Update comments. 2014-08-12 15:44:15 -04:00
Richard Heck
96d75db418 Little bit of cleanup. 2014-08-12 13:13:47 -04:00
Richard Heck
dd0f71e5fe Make the constructor of the singleton class LayoutFileList private. 2014-08-12 12:49:17 -04:00
Richard Heck
b9fe1dd10b Use a const ref here. Guess it was a thinko when I did it. 2014-08-12 12:32:58 -04:00
Kornel Benko
49efd1933a Cmake build: Move use of QT5 libraries to the end of linker command line.
To prevent the linker error if they were before some object file referencing
some symbol there.
2014-08-11 21:30:21 +02:00
Richard Heck
3a78422782 Add some comments about the behavior of cellInset and cellIndex. 2014-08-09 13:13:10 -04:00
Richard Heck
c2fdbbe01a Fix bug #9236: After we recreate the DocumentClass, we have to apply
it to the document.
2014-08-07 15:13:31 -04:00
Enrico Forestieri
39492b0cd7 Do not allow copying a separator without a following par end.
This makes virtually impossible copying a separator inset whithout
also copying the end of paragraph. These insets are not supposed to
be directly inserted by users. For example, the parbreak version
represents a LaTeX paragraph break, not a LyX one. So, if it is
possible to copy and paste it by alone, an unsespecting user may be
surprised to see a paragraph break in the output but not on the LyX
screen (because of the lack of indentation, for example).
In this way, it also becomes a LyX par break from a user point of
view, not any more useful than simply introducing a par break by
hitting <return> (except in those cases where it makes a difference,
in which case they are automatically inserted by LyX).
2014-08-06 02:21:18 +02:00
Scott Kostyshak
453ce61191 Revert "Clear empty selections in GuiView after dispatch"
This reverts commit fb05011ad0,
which lead to various menu-related crashes, such as when
going to Help > About.
2014-08-03 19:20:56 -04:00
Juergen Spitzmueller
b555f31a34 Fix bug with wrong baseline calculation in last paragraph
Fixes: #9231
2014-08-03 11:26:16 +02:00
Jean-Marc Lasgouttes
37fd7b24ba Use enum instead of int in TextMetrics::getAlign
This is just a code cleanup, no (intented) effect.
2014-07-29 11:05:14 +02:00
Jean-Marc
f29e78039d More tweaking of boundary setting at end of row 2014-07-28 23:31:32 +02:00
Jean-Marc
46ee67995d Fix display of cursor at end of row
The particular case here is:
* the last element of the row is an inset
* the row is broken by a display inset.
2014-07-28 22:03:57 +02:00
Jean-Marc
fca332bace Rename FontSpan::inside(pos) to contains(pos) 2014-07-28 20:42:01 +02:00
Scott Kostyshak
4843618655 Disable branches insert menu if read only 2014-07-28 12:59:35 -04:00
Scott Kostyshak
0bf61a48c0 Disable custom insets insert menu if read only
Before, if a document was read only and had no custom insets
defined, the submenu would be enabled.
2014-07-28 12:59:34 -04:00
Scott Kostyshak
d449e7e64e Submenus now expand even if all items are disabled
As stated in the Apple HIG[1] (via JMarc):

  Ensure that a submenu’s title is undimmed even when all its commands
  are unavailable. As with menu titles, it’s important for users to be
  able to view a submenu’s contents, even if none of them are
  available in the current context.

[1]
https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/Menus/Menus.html#//apple_ref/doc/uid/TP30000356-TP6
2014-07-28 12:59:34 -04:00
Scott Kostyshak
fb05011ad0 Clear empty selections in GuiView after dispatch
Empty selections can cause confusing behavior for a few reasons:

(1) some functions behave differently depending on whether there is a
selection. If I press delete, nothing happens (where I expect the
character or inset before the cusor to be deleted). If I toggle bold or
emphasize nothing happens (where if there is no selection the entire
word is toggled). There are other LyX functions that depend on whether
there is a selection or not. Further, I wonder if any part of LyX's code
assumes that if there is a selection it is non-empty.

(2) menu options are incorrectly set. For example, the scissors icon.

For remaining empty selection issues, see #9222.

For more information, see:
https://www.mail-archive.com/lyx-devel@lists.lyx.org/msg184758.html
2014-07-28 10:37:08 -04:00
Jean-Marc Lasgouttes
f9caebd29f Fix compilation warnings on windows. 2014-07-28 09:46:13 +02:00
Jean-Marc Lasgouttes
7f7dc5d314 Whitespace 2014-07-26 16:29:23 +02:00
Jean-Marc Lasgouttes
8fb1aa51f8 Whitespace only 2014-07-25 22:40:48 +02:00
Jean-Marc Lasgouttes
5e126d2920 Whitespace only 2014-07-25 22:36:20 +02:00
Kornel Benko
5acc6b3791 Make it compilable under cmake again after the merge from str-metrics 2014-07-25 22:03:59 +02:00
Jean-Marc Lasgouttes
b54deb3683 Rename rowpainter.* to RowPainter.*
This is the convention for files that define classes.
2014-07-25 21:55:08 +02:00
Jean-Marc
41740ea915 Merge remote-tracking branch 'features/str-metrics'
This branch implements string-wise metrics computation. The goal is to
have both good metrics computation (and font with proper kerning and
ligatures) and better performance than what we have with
force_paint_single_char. Moreover there has been some code
factorization in TextMetrics, where the same row-breaking algorithm
was basically implemented 3 times.

Globally, the new code is a bit shorter than the existing one, and it
is much cleaner.  There is still a lot of potential for code removal,
especially in the RowPainter, which should be rewritten to use the new
Row information.

The bugs fixed and caused by this branch are tracked at ticket #9003:
http://www.lyx.org/trac/ticket/9003

What is done:

* Make TextMetrics methods operate on Row objects: breakRow and
  setRowHeight instead of rowBreakPoint and rowHeight.

* Change breakRow operation to operate at strings level to compute
  metrics The list of elements is stored in the row object in visual
  ordering, not logical. This will eventually allow to get rid of the
  Bidi class.

* rename getColumnNearX to getPosNearX (and change code accordingly).
  It does not make sense to return a position relative to the start of
  row, since nobody needs this.

* Re-implement cursorX and getPosNearX using row elements.

* Get rid of lyxrc.force_paint_single_char. This was a workaround that
  is not necessary anymore.

* Implement proper string metrics computation (with cache). Remove
  useless workarounds which disable kerning and ligatures.

* Draw also RtL text string-wise. This speeds-up drawing.

* Do not cut strings at selection boundary in RowPainter. This avoids
  ligature/kerning breaking in latin text, and bad rendering problems
  in Arabic.

* Remove homebrew Arabic and Hebrew support from Encoding.cpp. We now
  rely on Qt to do handle complex scripts.

* Get rid of LyXRC::rtl_support, which does not have a real use case.

* Fix display of [] and {} delimiters in Arabic scripts.
2014-07-25 20:10:55 +02:00
Jean-Marc
1fefbf5bdc Fix bad use of undo kind in Tabular inset. 2014-07-25 20:03:42 +02:00
Jean-Marc
6ee39ff90a Fix logic error for spacing of RTL rows
The code referred to vpos (the visible position) instead of pos, the logical one.
This can lead to using the wrong font when computing spaces width.
2014-07-25 19:59:37 +02:00
Jean-Marc
3599285019 Fix display of parenthesis in arabic
Actually the workaround that is used to show parenthesis in the right direction
is not needed any more, since this is part of the unicode bidi writing algorithm.

This fixes at the same time the use of [] or  as delimiters in arabic, which was wrong on screen.

Note that there is a problem with hebrew, but this will require a fileformat change.
2014-07-25 19:59:37 +02:00
Jean-Marc
f4fc035cf6 Better algorithm for forcing bidi drawing
The use of RLO/LRO overrides to force text orientation was really hackish and the way it was done caused dropped letters in Mac OS X (for some unknown reasons).

This new approach is much cleaner, except that it relies on features not advertised in documentation
but present at least from Qt 4.5 to Qt 5.3:
* TextFlag enum values TextForceLeftToRight and TextForceRightToLeft, which are strong versions
  of QPainter::setLayoutDirection; they are passed as a parameter of QPainter::drawText.

* QTextLayout::setFlags method, which is required to pass the above flags to QTextLayout.

The unicode override method is still used to draw strings Mac OS X because, for some reason, the direction was not really enforced in this case.
2014-07-25 19:56:51 +02:00
Kornel Benko
63976066ad avoid qt4 variable names in cmake build 2014-07-21 08:49:05 +02:00
Jean-Marc Lasgouttes
bbe6e9f593 Revert optimization where several words are drawn at the same time
This can only be done where splitting of string is identical in row breaking and display. It will be possible to reintroduce this when row painting uses the tokenized row information.
2014-07-20 18:54:31 +02:00
Enrico Forestieri
4bdeae2733 Update autotools for building with Qt5.
The option --enable-qt5 allows configuring for Qt5. The default is Qt4.
Nothing special is done with respect to Qt4, apart from pulling in the
correct libraries. Indeed, other than the core and gui libraries, now
also the concurrent and widgets libraries are needed.
2014-07-19 03:34:28 +02:00
Enrico Forestieri
4342411297 Fix build on FreeBSD.
Notified by Raphael Kubo da Costa.
2014-07-16 22:28:46 +02:00
Enrico Forestieri
294d08b1bf Add forward search command for qpdfview.
Also update docs explaining how to activate reverse search in qpdfview.
2014-07-13 20:08:43 +02:00
Enrico Forestieri
2af17f8f89 Revert 6a5aa1ca
That commit is obsoleted by 5bd14af8.
2014-07-12 19:52:12 +02:00
Enrico Forestieri
5bd14af887 Fix bug #9193: Spacing modification not exact
The conversion from floating point to string performed by
boost:lexical_cast does not allow specifying a precision and,
for example, values such as 0.9 are resturned as 0.899999976.
The standard C++ way for performing the conversion is using
std::ostringstream which is exempt from this problem, even if
less efficient. For the sake of accuracy, boost::lexical_cast
is ditched in favor of the ostrinsgstream implementation.
In C++11 another option would be using std::to_string, but I
think it is not as efficient as the boost way and not worth
implementing through #ifdef's.
Incidentally, this patch would have also fixed #9190 and all
similar cases involving the use of convert<string>(float|double).
2014-07-12 19:12:08 +02:00
Enrico Forestieri
b3735501c7 Fix compatibility issue with 64-bit cygwin. 2014-07-11 16:49:10 +02:00
Enrico Forestieri
6a5aa1cab1 Fix scale parameter for fonts.
When a font is scaled by a certain percentage in the document settings,
LyX was outputting a ridiculous parameter value. For example, if the
font is scaled 90%, the corresponding parameter was "scaled=0.899999976".
The patch avoids this and, in the previous case, one gets "scaled=0.9".
This is not only cosmetic, because in roundtrip conversions the parameter
would be continuosly changing.

This commit and b60b505f should be backported to the 2.1.x branch, where
reimporting with tex2lyx an exported document produces wrong results
(also in version 2.1.0).
2014-07-11 16:12:08 +02:00
Enrico Forestieri
b60b505fd8 Fix import of latex documents with scaled fonts. 2014-07-11 11:21:45 +02:00
Enrico Forestieri
60a1b3b83c Fix make check. 2014-07-11 11:14:02 +02:00
Georg Baum
98fc5e518f Support new languages in tex2lyx
I forgot that this was part of the file format update as well.
Also fix a mixup of "english" and "uppersorbian".
2014-07-10 22:15:34 +02:00
Georg Baum
1a073ea416 Missing file format bis from 0c3b88e3 2014-07-10 21:59:17 +02:00
Jean-Marc Lasgouttes
45eb314a86 Get rid of rtl_support preference
This variable was introduced to guard against any bad consequence of the then-new right-to-left
languages support. Let's be bold and get rid of it altogether!

Now right to left support is always enabled.
2014-07-09 21:11:08 +02:00
Jean-Marc Lasgouttes
9d5c947110 Remove LyXRC option force_paint_single_char
It was not honored anymore.
2014-07-08 23:12:09 +02:00
Jean-Marc Lasgouttes
4bd5a7e883 Move some text from the readme file to relevant source files 2014-07-08 21:30:06 +02:00
Jean-Marc Lasgouttes
f3924a52b3 Reintroduce the code related to InsetEnvSeparator
This commits (tries to) reintroduce properly the code that was reverted at the beginning of this branch. This had to be done because these patches interefered with the big refactoring of TextMetrics.cpp.

This commit reintroduces the changes to TextMetrics.cpp contained in c668ebf6, c85dbfea9 and 061509bf.
2014-07-08 21:30:06 +02:00
Jean-Marc Lasgouttes
d6337a2488 Remove obsolete code to handle Hebrew and Arabic characters
This is handled by Qt now.

Note that a small optimization (do not draw text that is to the left
of WorkArea) is removed because it cannot be guaranteed to be exact
anymore. It was probably not very useful anyway, and would become
useless once the RowPainter is rewritten to use Row information.

Update 00README_STR_METRICS_BRANCH.
2014-07-08 21:30:06 +02:00
Jean-Marc Lasgouttes
ec42b2e4c9 Do not split words at selection boundary
The display of partially-selected word is now done in a new Painter::text method
which displays the string twice with different clip settings. This allows to
catter for the case where Color_selectiontext is not black.

Morover, the code that uses unicode override characters to force the
direction of a string is moved to lstrings.h.

Fixes: #9116
2014-07-08 21:30:06 +02:00
Jean-Marc Lasgouttes
e1c4cb7146 Fix breaking of loooong word in RTL languages
Moreover, breaks row at insets when there is no suitable separator.

Also make the code of Row::shorten_if_needed somewhat simpler by using
iterators and factoring the code.

Fixes: #9120
2014-07-08 21:30:05 +02:00
Jean-Marc Lasgouttes
2ff639a0e6 Fix positionning of cursor
The old implementation of Row::Element::pos2x and x2pos did not work
correctly with Arabic text, because characters can have shapes that
depend on context.

This new implementation leverages QTextLayout in a simplified way,
since only one word is added to the layout.

This allows to make Row::Element::x2pos more readable.

Fixes: #9115.
2014-07-08 21:30:05 +02:00
Jean-Marc Lasgouttes
4176795e72 Remove support for LyXRC::force_paint_single_char
This workaround is not necessary anymore, and it complicates the code.

The variable itself will be removed after the landing of the branch on
master.
2014-07-08 21:30:05 +02:00
Jean-Marc Lasgouttes
b0543270a9 Remove debug code from TextMetrics
After this, it is possible to remove one parameter to getPosNearX.
2014-07-08 21:29:52 +02:00
Jean-Marc Lasgouttes
7734270163 Speed-up drawing when text is not justified.
Do not cut strings at separators in RowPainter when text is not
justified. This speeds-up painting by reducing the number of strings
to draw.

Do also a modest cleanup of paintChar (remove dubious optimization).
2014-07-08 21:24:01 +02:00
Jean-Marc Lasgouttes
3013ce3716 Implement a better solution for painting of RTL text
Instead of relying on character range (Hebrew or Arabic) or character
direction, use RLO unicode character (Right-to-Left override) to force
painting in the direction indicated by the current font. This should
be as close as we can to the old LyX behavior (and requires less
code).

If this code works as intended, it will be possible to remove a lot of
code from Encodings.cpp.
2014-07-08 21:24:00 +02:00
Jean-Marc Lasgouttes
ea1a5cb80e Draw right-to-left text string-wise using Qt
We rely on Qt built-in unicode support for handling Arabic and Hebrew
compose characters. This allows to avoid to use our homegrown
machinery.

This  should provide a nice speedup at a low cost and
will eventually allow us to get rid of:
 * most of our Arabic/Hebrew machinery in Encodings.cpp,
 * Paragraph::transformChar,
 * and probably more.
2014-07-08 21:24:00 +02:00
Jean-Marc Lasgouttes
b8170e0e01 Fix various selection-related problems
All these problems are related to what happens at the extreme points of rows

 * since VIRTUAL elements have a width but no contents, they have to
   be treated specially at some places. It would have been better to
   avoid testing for them explicitly, but I did not find a way.

 * Improve and cleanup the code in breakRow and fix in passing a crash
   when clicking on the right of an incomplete MARGIN_MANUAL
   paragraph.

 * improve the computation of row width in TextMetrics::computeRowMetrics.

 * handle properly the case where a position if not found on the row
   in both cursorX and getPosNearX (actually, this happens when
   selecting).

 * Some code cleanup and comments.
2014-07-08 21:23:59 +02:00
Jean-Marc Lasgouttes
7167d90b50 Fix bug #9040: In RtL documents end-of-paragraph marker shifts the row display
The fact that the bug was still present in the features/str-metrics
branch comes from a goof in the initial implementation of 'virtual'
row elements (completion and end-of-par markers). Now that this is
corrected, everything works as it should.

The fact that the bug is present in master is due to some other reason
that is not useful to investigate now.
2014-07-08 21:23:59 +02:00
Jean-Marc Lasgouttes
1a4b3201e7 Update README and do a small code cleanup 2014-07-08 21:23:58 +02:00
Jean-Marc Lasgouttes
f686375eec Change getColumnNearX to getPosNearX
The semantics was bad: the old implementation would return pos - row.pos(), and then all user of the function had to re-add row.pos().
2014-07-08 21:10:47 +02:00
Georg Baum
2c39859575 Remove unneeded swap() (thanks Jean-Marc)
std::swap() does exactly the same thing, and avoiding code duplication is
always good.
2014-07-07 21:16:10 +02:00
Jean-Marc
93a43742a5 Fix a bunch of small performance issues spotted by cppcheck
Most of these are about passing const strings parameters as references.
2014-07-05 19:13:10 +02:00
Jean-Marc
1cdbb94ff5 Fix possible bug spotted by cppcheck
I am not sure what this locking is really about, but the new code seems to be the right thing to do.
2014-07-05 19:12:09 +02:00
Jean-Marc
8715bab65c Fix typo spotted by cppcheck 2014-07-05 18:01:19 +02:00
Georg Baum
b88f6ea3aa Mark some singletons with FIXME THREAD 2014-07-05 15:20:54 +02:00
Georg Baum
5a01424bf0 Make GraphicsConverter threadsafe
build_script() was already threadsafe, since it used a TempFile, and the
counter was basically not needed, but the new solution makes this obvious
and has the additional advantage that TempFile constructs the real output
file, not a dummy without extension which is not needed.
2014-07-05 15:11:24 +02:00
Georg Baum
2a677592a5 Fix uncodable author warning
The old code was not threadsafe, and the restriction to one message box per
author name did not work if more than two authors were uncodable.
2014-07-05 14:49:51 +02:00
Georg Baum
5093893b59 Fix LaTeXFeatures::useLayout() recursion test
It was broken in two ways: It was not threadsafe, and it did never detect
any recursion, since the counter was decremented for each non-recursive call
and never incremented again.
2014-07-05 14:37:55 +02:00
Georg Baum
5a8b8ba8e1 Make LaTeX export threadsafe.
This is one of the more important threadsafety issues because of export in
thread and simultanous view source. The solution is ugly, but a better one
(see FIXME) would require major rework. These static variables should not
have been used in the first place IMHO.
2014-07-05 14:23:43 +02:00
Juergen Spitzmueller
0c3b88e3cb Support for Swiss German (old spelling) 2014-07-05 13:38:55 +02:00
Georg Baum
5c431b9335 Make newUnnamedFile() threadsafe 2014-07-05 12:58:22 +02:00
Georg Baum
922d48da27 Make BufferList::fileNames() threadsafe
Using a static variable here was premature optimization: fileNames() is only
called from GuiRef (directly or indirectly), and since this is a dialog the
copying of a FileNameList is not noticeable at all.
2014-07-05 12:51:40 +02:00
Georg Baum
e7c41b5f56 Make BufferParams::auto_packages() threadsafe 2014-07-05 12:39:59 +02:00
Georg Baum
4bfca60359 Make createBufferTmpDir() threadsafe
This must not use thread local storage, since the generated directories are
all in the same parent directory which is unique per running LyX instance.
2014-07-05 12:31:12 +02:00
Georg Baum
0de4bc224a Make DocFileName::mangledFileName() threadsafe 2014-07-05 12:22:08 +02:00
Georg Baum
50929b5b8a Make include and bibitem insets threadsafe
Using a mutex to ensure that the generated filenames and ids are still unique.
2014-07-05 12:09:49 +02:00