Commit Graph

65 Commits

Author SHA1 Message Date
Guillaume Munch
afed7d06fa Improvements to cursor highlighting in the source panel
* TexRow now computes rows from a DocIterator. In practice, the cursor
  highlighting is now correct inside insets, it is no longer restricted to the
  topmost level. It certainly also makes forward-search more precise.

* Added the option to disable a texrow when not needed, for perf.

* Fixed a bug where the last paragraph was not properly highlighted.

Limitations:

* TexRow still does not handle: math (e.g. multi-cell), sub-captions, inset
  arguments.
2015-10-01 21:51:08 +01:00
Guillaume Munch
fd7b13f5ae Improvements to the display of the source.
Fix bugs #6501 and #7359.

* Selection highlighting has been broken since a conflict with
  reverse-search was repaired (at 00a62b7c), is now fixed.

* The selection highlighting was not accurate, for LaTeX formats (in
  full source view), and meaningless, for non LaTeX formats.

* fix regression at cc00b9aa: force_getcontent_ was always true
  therefore the code to detect changes in the generated source was
  dead. The consequence is that the source view would jump to the
  beginning at each updateView() even if no change occurred. Cc00b9aa
  was meant to fix #5600, which I cannot reproduce with the new
  implementation.

* Various improvements:
  *  When the position-to-line conversion is unavailable (LyXHTML, LyX
     source, etc.) we focus on the first difference instead.
  *  Get some space around the cursor
  *  Respect the scrollbars
  *  Highlight with QTextEdit::ExtraSelections instead of cursor
     selection (the latter used to break syntax highlighting of the
     TeX code... which was not so much of an issue before because the
     wrong part was selected)

Known issues:
  * The highlighting is off by one line in very last paragraph of a
    document. This appears to be a bug in TexRow.cpp.
  * The highlighting is off for any kind of inset. This could be
    solved by adapting TexRow so that it accepts CursorSlices as
    and argument for the conversion to line number. (this is bug
    #4725)
2015-09-13 00:45:52 +01:00
Guillaume Munch
120c99ae60 Better session management for the source panel.
We now remember the previous GUI values across sessions.
2015-09-13 00:45:47 +01:00
Guillaume Munch
ba3e6cb2d2 Improve the performance of the source panel by using a QTimer.
Fix bug #9493. The source panel was very slow with auto-update on. Now
we use a timer that ensures that the source is generated only at
rest. The delay is short or long depending on whether we show the
source of a paragraph or the whole source.
2015-09-13 00:45:41 +01: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
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
Richard Heck
fdbe775b9f This is the result of an audit of all static variables, looking
for possible thread conflicts, of the sort Georg resolved at
6a30211f. I have made static variables const where possible,
and marked cases that looked potentially problematic with the
comment:
	// FIXME THREAD
Many of these definitely are vulnerable to concurrent access, such
as the static variables declared at the start of output_latex.cpp.
Suppose, e.g., we were outputting latex and also displaying the
source of a different document.

I'd appreciate it if others could grep for "FIXME THREAD" and see
if some of these are harmless, or what.
2014-04-21 11:51:57 -04:00
Jean-Marc Lasgouttes
151960440e Another try at making the source view dock arrange itself.
The idea is to minimize the size of the form that contains the buttons.

Since I do not really know what I am doing, I will revert if problems occur.
2013-05-07 11:30:46 +02:00
Pavel Sanda
49c2450f3f Add layout intelligence to View Source pane (bug #8653).
View Source pane layout now automatically switches between horizontal
and vertical design when docked in vertical or horizontal way.

Original idea and patch from Edwin.

http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg178801.html

Note: the long standing-fight with too bulky minimal QTextEdit size
is now solved via ViewSourceUi.sizePolicy=Ignored.
2013-05-04 23:05:51 -07:00
Richard Heck
1b1f8dd235 Audit all the LASSERT calls, and try to do something sensible at
each failure.

There are several places I was not sure what to do. These are marked
by comments beginning "LASSERT:" so they can be found easily. At the
moment, they are at:

Author.cpp:105: // LASSERT: What should we do here?
Author.cpp:121: // LASSERT: What should we do here?
Buffer.cpp:4525:        // LASSERT: Is it safe to continue here, or should we just return?
Cursor.cpp:345:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:403:         // LASSERT: Is it safe to continue here, or should we return?
Cursor.cpp:1143:                // LASSERT: There have been several bugs around this code, that seem
CursorSlice.cpp:83:     // LASSERT: This should only ever be called from an InsetMath.
CursorSlice.cpp:92:     // LASSERT: This should only ever be called from an InsetMath.
LayoutFile.cpp:303:                     // LASSERT: Why would this fail?
Text.cpp:995:           // LASSERT: Is it safe to continue here?
2013-04-25 17:27:10 -04:00
Lars Gullik Bjønnes
d52c9fda34 Use new T not new T() 2012-10-27 01:25:38 +02:00
Juergen Spitzmueller
b6ecb3213b Add master's perspective in children's source preview 2012-10-05 14:30:20 +02:00
Richard Heck
b7ac2d69e7 Allow LyX format to be written to View>Source window. 2012-06-05 10:24:15 -04:00
Richard Heck
f2fc334cd5 Whitespace. 2012-05-10 15:44:25 -04:00
Pavel Sanda
ba88f39624 GuiViewSource - prevent null-pointer crash if backend format is not found.
Patch from John Tapsell.
2012-05-09 09:14:55 +02:00
Richard Heck
354d9700f6 Accidentally removed this code at last commit.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40908 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-10 16:49:20 +00:00
Richard Heck
fa0c2d9631 Show backends rather than formats in the View>Source combo box.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40900 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-09 22:24:20 +00:00
Richard Heck
264cc1139c The View->Source pane resets the format every time you click into
a new paragraph, which is very annoying. This commit fixes this bug.

If anyone has a better idea, please let me know. I posted to devel
about it but got no response.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40456 a592a061-630c-0410-9148-cb99ea01b6c8
2011-12-09 19:48:50 +00:00
Richard Heck
9eaa64b2cb Initial work for view source improvements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40073 a592a061-630c-0410-9148-cb99ea01b6c8
2011-10-29 21:00:23 +00:00
Richard Heck
5db4b7eb16 Move a bunch of code from Buffer to BufferParams. The point of this
is contained in the next commit.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38742 a592a061-630c-0410-9148-cb99ea01b6c8
2011-05-13 19:39:56 +00:00
Vincent van Ravesteijn
cc00b9aaca Fix bug #5600: View source panel isn't updating after restart.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37096 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-04 00:00:20 +00:00
Jürgen Spitzmüller
1e98a4f240 Add the option to select the output format in Source View.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36806 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-10 10:34:24 +00:00
Jürgen Spitzmüller
f255f93b9e * Follow Vincent's advice to keep constness. Thanks Vincent.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36759 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-07 09:00:50 +00:00
Jürgen Spitzmüller
2653011613 * Use default output flavor for View Source.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36758 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-07 08:36:42 +00:00
Vincent van Ravesteijn
cdaefbf484 GuiViewsource:
* Revert cs 28992 and do something better to fix the bug that the view source window remains disabled forever when autoUpdate is not checked and the view source window gets disabled or LyX is closed.
* Update the source window, when autoUpdate checkbox is toggled.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28999 a592a061-630c-0410-9148-cb99ea01b6c8
2009-04-01 20:32:26 +00:00
Vincent van Ravesteijn
14d0e66eae Fix bug that the view source window remains disabled forever when autoUpdate is not checked and the view source window gets disabled or LyX is closed.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28992 a592a061-630c-0410-9148-cb99ea01b6c8
2009-03-31 15:29:51 +00:00
Jürgen Spitzmüller
241ea2fc88 * GuiViewSource.cpp:
- enable widget in read-only mode.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28270 a592a061-630c-0410-9148-cb99ea01b6c8
2009-01-24 12:38:05 +00:00
Pavel Sanda
174a4fb8f6 #4430 still not fixed. try better one.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27606 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-17 12:30:28 +00:00
André Pönitz
97707102da fix #4430 . initial size of the "view source" window can shrunk now.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27493 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-15 21:55:17 +00:00
André Pönitz
1fc477efac thrid attempt at changing the naming pattern of the intermediated 'mocced' files
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27420 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 14:28:50 +00:00
Abdelrazak Younes
8a916f28a9 Fix part of http://bugzilla.lyx.org/show_bug.cgi?id=5347
Use crc checking in order to decide if the widget needs to be updated or not. This speed up a lot the cursor moving use case.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26946 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-18 14:14:58 +00:00
Jürgen Spitzmüller
575a8dd0cc compile fix 2
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26944 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-18 13:51:48 +00:00
Abdelrazak Younes
757f975337 First part of http://bugzilla.lyx.org/show_bug.cgi?id=5347
Disable full source viewing when the dialog is restored.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26941 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-18 13:27:59 +00:00
Abdelrazak Younes
bcbf7c6452 Code shuffling in order to fix http://bugzilla.lyx.org/show_bug.cgi?id=5347
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26940 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-18 13:20:17 +00:00
Abdelrazak Younes
4873fb9d6c We don't want to restore geometry session for dock widgets.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26696 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-03 13:34:10 +00:00
Abdelrazak Younes
53acfb8351 Dialogs: discourage non const access to buffer() and bufferview().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26620 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-29 10:52:17 +00:00
Bo Peng
87103ddb21 Fix manual update of the viewsource dialog, set default states of the view source checkboxes
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25059 a592a061-630c-0410-9148-cb99ea01b6c8
2008-06-01 20:03:36 +00:00
Abdelrazak Younes
c5c65daee4 Add session to view-source dialog.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24767 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-14 14:24:55 +00:00
Abdelrazak Younes
42d79d543b Fix bug http://bugzilla.lyx.org/show_bug.cgi?id=4860
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24754 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-13 21:28:04 +00:00
Jean-Marc Lasgouttes
9b4a26a252 rename assert.h to lassert.h
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24559 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-30 08:26:40 +00:00
André Pönitz
7f461f4392 infrastructure for 'graceful asserts'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24216 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-10 21:49:34 +00:00
Abdelrazak Younes
6bb94129d8 Factorize out the way window titles are handled.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22784 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-05 12:43:19 +00:00
Abdelrazak Younes
9abb7db468 getting rid of superfluous std:: statements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22104 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 19:28:07 +00:00
Abdelrazak Younes
9383f4c3c6 'using namespace std' instead of 'using std::xxx'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22097 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 10:16:00 +00:00
André Pönitz
81f21577b7 no need for pointers, not even leaking ones...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21869 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 22:38:53 +00:00
André Pönitz
b06df568f3 use structure with named members instead of pair<int, int>...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21868 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 22:12:19 +00:00
André Pönitz
9d0ea8aeff Move debug.{cpp,h}, Messages.{cpp,h} and gettext.{cpp,h} to support/.
Now support/* should have no dependencies on src/* anymore.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 07:04:28 +00:00
Abdelrazak Younes
42015a8ebd Transfer some more dialog related code from core to frontend:
- LFUN_INSET_APPLY handling goes to GuiView.
- Dialog needs a GuiView instead of a LyXView.




git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21734 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-23 09:44:02 +00:00
Abdelrazak Younes
1b147f12b0 Spoiling some fun from Andre': put Application on a diet and remove unnecessary string conversions and method indirections.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21665 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-18 20:36:52 +00:00