Commit Graph

303 Commits

Author SHA1 Message Date
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
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
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
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 Lasgouttes
01c9bcb432 Get rid of ugly font metrics workarounds.
Now we have proper ligatures and kerning on screen...
2014-06-25 17:55:16 +02:00
Jean-Marc Lasgouttes
5c32dc85d5 Fix various warnings issued by clang++.
* remove unused class TexStream.

* remove unused virtual method Inset::cellXOffset

* remove second argument of FileDialog constructor, which was actually
  not used

* remove some dead local code

* remove some unused private members of classes

* in InsetMathNest::updateBuffer, fix the logic of a test
2014-04-22 00:04:04 +02:00
Richard Heck
717d19d3c3 Fix for bug #8939: Don't just close if the user enters a shortcut
that is already assigned.

From new contributor Roy Xia.
2014-03-15 23:05:48 -04:00
Prannoy Pilligundla
214f7ed262 Allow statusbar to be set on or off in full screen mode as a
preference.
2014-02-25 20:48:56 -05:00
Scott Kostyshak
27131e655a Shortcut box now stays open if bad input (#8703)
This allows the user to correct the bad input without
having to enter the other fields again in a new dialog.

Patch from Martin Hoffmann.
2014-01-14 08:04:05 -05:00
Juergen Spitzmueller
8f287f5ffa Implement option to set a global default output format for dics with non-tex fonts (#8706) 2013-06-01 16:58:34 +02:00
Juergen Spitzmueller
1e42af6c44 Windows compilation fix 2013-05-31 14:27:39 +02:00
Stephan Witt
75c631df7f On Mac, moving down a paragraph should place the cursor at the end of the current paragraph
(unless it's already there, in which case it should move to the end of the next paragraph).
Change the preference setting name (mac_like_word_movement to mac_like_cursor_movement)
to better reflect its function.

Patch and description from Bennett Helm
2013-05-25 18:02:21 +02:00
Vincent van Ravesteijn
db32d1b155 Only show the configuration of theme icons on X11
Also hide the ui items in the constructor to prevent flickering.
2013-05-14 18:04:17 +02:00
Vincent van Ravesteijn
147dcb4cb9 Make the use of system's theme icons configurable
A lyxrc variable is added and a checkbox is added to the LyX->preferences
dialog.
2013-05-14 17:26:06 +02:00
Vincent van Ravesteijn
a033b88a37 Fix assert: Do not use translated names as keys
The panels in GuiDocument and GuiPrefs are stored in a map. The keys are
the translated descriptions of these panels. Whenever someone changes the
gui language and reopens the Document Settings pane, LyX asserted because
it could not find the "Child Documents" pane.
2013-05-13 10:00:57 +02:00
Juergen Spitzmueller
a4a610221a Split the overcrowded and chaotic UI pref pane into two (#7524) 2013-03-02 12:24:32 +01:00
Pavel Sanda
eb9151c599 Close tab button started with 4.5. 2012-11-04 01:37:54 +01:00
Lars Gullik Bjønnes
43f6b1672b Use empty() to check empty and non-empty'ness not size()
Also add FormatList::empty().
2012-10-27 01:25:38 +02:00
Tommaso Cucinotta
4985015e89 Now LyX closes the current document WA only by default (other WAs remain open).
If the WA is the last one showing a buffer, then the buffer may either be
closed or kept hidden, or the user is asked. The behaviour is controlled
by a new preference option.
For discussion, see http://comments.gmane.org/gmane.editors.lyx.devel/142638
2012-09-28 23:12:38 +01:00
Juergen Spitzmueller
6bf00d9fed rc.preview and rc.display_graphics are completely unrelated (bug 7562) 2012-09-17 11:36:29 +02:00
Jean-Marc Lasgouttes
7a7b9abf1b Tracking correctly available translations (take 2)
The previous scheme of loading all possible translations and checking
whether the work is a bit too much "brute force" and causes problems
on Mac OS X (documents loaded with the wrong language).

Now there is an helper static method in Messages class that checks
whether a readable .mo file exist for the language. There should be an
API in gettext for doing that, but alas it is not possible.

As a consequence the method Language::translated() has been removed,
along with its cache.
2012-09-08 16:59:19 +02:00
Juergen Spitzmueller
458c143e49 Fix forward search with okular
Implement a placeholder 2008f which points to the tex file with full path, since this is what okular expects nowadays.
2012-08-26 11:42:43 +02:00
Juergen Spitzmueller
ab3491adef Fix crash when removing last converter (bug 8178) 2012-05-29 14:21:29 +02:00
Enrico Forestieri
ae2adc9559 Since version 1.9 SumatraPDF supports forward search without DDE commands.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40828 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-02 02:35:30 +00:00
Georg Baum
26e5f1a8ec Use libmagic for file format detection if available.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40789 a592a061-630c-0410-9148-cb99ea01b6c8
2012-02-21 20:29:44 +00:00
Stephan Witt
97d48fbd6a #6760 add UI to configure the minimal length of a word to be added to the list of words for text completion - using richards patch and rework it to match current trunk
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40557 a592a061-630c-0410-9148-cb99ea01b6c8
2012-01-02 22:47:04 +00:00
Vincent van Ravesteijn
b787d0090b Remove unused functions.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40034 a592a061-630c-0410-9148-cb99ea01b6c8
2011-10-27 12:54:14 +00:00
Vincent van Ravesteijn
5014b38cb7 Add a preference option to specify the default length unit (cm or in).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40030 a592a061-630c-0410-9148-cb99ea01b6c8
2011-10-27 11:52:11 +00:00
Vincent van Ravesteijn
269695aa5f Remove the prefence default_papersize
- This preference was used for specifying the papersize to xdvi, dvipdfm,
  dvips. However, I can't seem to see any effect on the result.

- The papersize should instead be defined in the document settings.

- The global papersize default was misused to also change the tex
  output by specifying the papersize as if it was specified in the
  document settings. This caused the same lyx document to be outputted
  differently on different pcs.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40028 a592a061-630c-0410-9148-cb99ea01b6c8
2011-10-27 11:48:16 +00:00
Julien Rioux
566d1f1b00 Move the NoNewLineValidator to Validator.cpp where it fits better.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39743 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-24 16:39:17 +00:00
Julien Rioux
a55ef8346a Allow to assign several extension to a given file format (#4798).
Additionnal extensions are separated by commas (,) in lyxrc
preference files, while spaces are ignored, e.g. "jpg, jpeg".

Preference lyxrc file format incremented to 2.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39670 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-13 20:42:23 +00:00
Julien Rioux
82edf5907a Don't allow newline characters in preference (#5840).
Set a validator on QLineEdit widgets. The validator removes any
    \n and \r characters, thus preventing users from copy-pasting
    newline characters into these fields, and subsequently saving
    them, inadvertantly, to the preference file.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39664 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-12 14:22:05 +00:00
Julien Rioux
bab818a784 Mark settings as changed when the Nomenclature line is edited.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39663 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-12 14:22:01 +00:00
Uwe Stöhr
cc5cc067a0 new export flavor "DVILUATEX", fixes bug #7713, patch from Jürgen
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39457 a592a061-630c-0410-9148-cb99ea01b6c8
2011-08-10 02:23:44 +00:00
Stephan Witt
925ae3dd10 only aspell is using spellchecker_accept_compound rc variable
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39361 a592a061-630c-0410-9148-cb99ea01b6c8
2011-07-21 15:33:56 +00:00
Abdelrazak Younes
6056db3212 Header cleanup.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39300 a592a061-630c-0410-9148-cb99ea01b6c8
2011-07-14 17:00:35 +00:00
Richard Heck
82d6524298 Fix bug #7540. Patch based upon one added to bug report by Max Funk.
Basically, patch adds routine that calcuates relative paths to parent
rather than child directories.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38915 a592a061-630c-0410-9148-cb99ea01b6c8
2011-06-01 13:18:08 +00:00
Julien Rioux
b18e8e7a02 Fix bug #7543: Default Output Format in Preferences
does not contain all the possible options.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38828 a592a061-630c-0410-9148-cb99ea01b6c8
2011-05-24 01:26:41 +00:00
Enrico Forestieri
1717ef203c Introduce the possibility of setting a prefix for the TEXINPUTS environment
variable. This is done in the preferences, much like as the PATH prefix.
A single '.' in the paths will get replaced with the current document dir
and also non-absolute paths will be prefixed with that dir.

The default semantics of TEXINPUTS apply, such that, for example, if a
path is terminated with a double slash, all subdirectories will be also
searched by both the TeX engine and ancillary programs such as dvi
previewers or dvips. As an example, if the prefix is set to ".:figs", the
TEXINPUTS variable will be set as ".:<docdir>:<docdir>/figs:$ORIGTEXINPUTS",
where <docdir> is the document directory.

The initial '.' is necessary to address the actual current dir (this will
be the temp dir at preview time), while if TEXINPUTS was initially unset,
such that $ORIGTEXINPUTS is empty, a colon (or semicolon on Windows) will
end the path list. This is very important, because we don't want to replace
the system directories but to complement them and, in order to do that, an
empty element has to be present in the list. Indeed, according to the
TEXINPUTS semantics, an empty element means the standard search path.
This works whether TEXINPUTS is originally set or not, because if the
original TEXINPUTS starts with a colon (meaning that the standard search
path is wanted there) we will have an empty element at that point,
otherwise the final colon will simply serve as a path separator.

Of course, on Windows a ';' has to be used as a path separator. LyX will
take care of transforming the platform path list into one understandable
by the TeX engine. For example, this will be the case for a Cygwin version
of LyX using a native Windows TeX engine or viceversa. I tested all of
this and it works for me.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38681 a592a061-630c-0410-9148-cb99ea01b6c8
2011-05-09 23:25:51 +00:00
Pavel Sanda
9dd47e00d1 Fix #7439.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38303 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-08 12:00:51 +00:00
Enrico Forestieri
b413c58e78 Make the libreoffice icons the default set, add some missing icons,
and improve the appearance of some other ones.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38182 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-01 17:51:12 +00:00
Jürgen Spitzmüller
76ec475e87 * GuiPrefs.cpp: default means empty string.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38051 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-25 15:21:35 +00:00
Jürgen Spitzmüller
6e03eb57fa GuiPrefs.{cpp,h}: use text/data interface for icon set ui.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38049 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-25 15:14:52 +00:00
Enrico Forestieri
7a9250df6a Fix compiler warning
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38048 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-25 14:53:20 +00:00
Enrico Forestieri
36bf758ed9 Move to PrefUi the icon set choice and solve problem with translation
of icon set names.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38046 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-25 14:21:28 +00:00
Enrico Forestieri
c6564028f0 Preferences for choosing the icon set to use. It works on the fly, but
the size of icons may be wrong when switching between sets with different
normal icon size. One needs to save the preferences, restart LyX and choose
"Normal-sized icons" from the toolbar menu to have the real normal size.
A minor glitch is that the name of the icon sets is translatable, but
currently only the translation for "Default" works. The problem is that I
don't know how to ask gettext for an inverse translation when saving the
preferences. Another possibility would be hardcoding the order of the names
in the combo box (such that to not rely on their names), but that is ugly
and prone to errors if/when other sets are added.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38041 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-25 05:01:06 +00:00
Jürgen Spitzmüller
d999c98bad * GuiPrefs.cpp: no need to exclude greyedouttext and shaded colors from prefs.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37952 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-18 15:12:03 +00:00
Stephan Witt
ad1dc2fd6b now the user has control over the width of the text cursor
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37901 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-11 06:11:55 +00:00
Jürgen Spitzmüller
5f96251222 * GuiPrefs.cpp: fix forward search command for Okular
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37817 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-01 12:42:14 +00:00
Jürgen Spitzmüller
0489d3c496 Introduce new file format flag "menu=export" to define which document formats the File > Export menu should list. All other formats are available via the "More Formats & Options ..." (former "Custom ...") dialog.
The actual selection of formats needs to be audited.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37616 a592a061-630c-0410-9148-cb99ea01b6c8
2011-02-13 09:34:10 +00:00