Uwe Stöhr [Thu, 21 Jun 2012 23:08:51 +0000 (01:08 +0200)]
LaTeXFeatures.cpp: polyglossia is only required if a language is not supported by babel _and_ also no other special package; patch by Jürgen, to fix the regression mentioned in bug #8026
Pavel Sanda [Thu, 14 Jun 2012 10:44:16 +0000 (12:44 +0200)]
Allow dead caron to be recognized in our key bindings.
This allows to workaround the problem in #8198 - on some systems
we get dead caron as a single character instead of whole combined
character. I suppose this has rather something to do with X settings
than LyX per se.
Uwe Stöhr [Thu, 7 Jun 2012 21:08:02 +0000 (23:08 +0200)]
- LaTeXConfig.lyx: accept Georg's changes and add bidi
- chkconfig.ltx: bidi and iftex are necessary for all right-to-left languages if XeTeX or LuaTeX is used
Second tentative fix to #8159: Undo doesn't restore environment depth correctly
In this version, the idea is to record undo at the place where the document is modified, which is definitely cleaner.
1/ in Buffer::updateBuffer, add a recordUndo, with the caveat that a
const_cast has to be used
2/ in GuiApplication::dispatch, add an extra undo group that
encompasses the updateBuffer call. Some other undo groups may be
redundant now, but it is not a problem since they do not cost
anything.
Richard Heck [Mon, 4 Jun 2012 17:39:24 +0000 (13:39 -0400)]
Fix crash reported by Tommaso:
http://marc.info/?l=lyx-devel&m=133876924408431&w=2
The problem here is that the copy_params() routine in FindAndReplace.cpp
created a new DocumentClass, but it never updated its Buffer to reflect
that new DocumentClass. So its Paragraphs still contained points to the
Layouts in the old DocumentClass which, since ead697d4b6c7, gets garbage
collected once it is no longer needed. So the Layout doesn't exist, and
we crash.
Fix bug #7956: Assertion When Trying to Paste Into Table
For some unknown reason, the paste code likes to call Cursor::setSelection(), which is not appropriate here since we are not trying to set a selection at this point.
Add missing undo recording.
This adds a change of the printindex type (with multiple indices) to the undo stack and marks the buffer dirty on that action (bug #8182)
Uwe Stöhr [Sat, 2 Jun 2012 00:09:36 +0000 (02:09 +0200)]
- UserGuide.lyx: adapt style of description of split indexes (the feature is btw. currently broken)
- German UserGuide.lyx: some further translations
- Japanese UserGuide.lyx: add missing section about split indexes
Uwe Stöhr [Thu, 31 May 2012 22:54:24 +0000 (00:54 +0200)]
UserGuide.lyx:
- decline today's change because the text states "is explained in the chapter Tables of the Embedded Objects manual" So no need to describe LaTEX special again
- revert fileformat change; please keep the fileformat is possible unless you describe a new feature of LyX 2.1
Richard Heck [Tue, 13 Mar 2012 16:13:31 +0000 (12:13 -0400)]
Deal with memory issue reported some time ago in connection with DocumentClass
objects. The problem that led to the leak is that these objects can be held in
memory long after the Buffer that created them is gone, mostly due to their
use in the CutStack. So they were previously held in a storage facility, the
DocumentClassBundle. Unfortunately, they were now being created too often,
especially by cloning. It's not really a leak, because they're accessible, but
we weren't ever destroying them.
This new approach uses a shared_ptr instead.
Thanks to Vincent for pointing out const_pointer_cast.
While cppcheck did not turn out any suspicious error messages, using
the "performance" flag highlighted several nitpicks in three categories
* do not use it++ for iterators, ++it is better
* do not use size() to test for emptyness, empty() is here
* do not use "const T" as a function parameter, "const & T" is better
I doubt that any of these is a real performance problem, but the code is cleaner anyway.
When there is a single document open, the tabbar gets hidden. The only and selected tab is still visible though as a break in the line delining the tabwidget. To fix this we paint the tabwidget ourselves and remove the presence of the hidden tab.
Fix bug #8170: Crash when client disconnects unexpectedly
When the socket does not exist anymore, we should not try to access it. In
trying to do so, std::map will create a new shared_ptr but this pointer
doesn't point at anything. To prevent this, we explicitly check whether
the socket is available.
Fix bug #8166: Crash on clicking away from empty paragraph
We rely on the 'or' operator to prevent us from calling
'notifyCursorLeaves' if one of the two cursors is broken. This doesn't
work when using the '|' operator. The compiler 'optimizes' the code in
such a way that we always call notifyCursorLeaves anyway. Using the '||'
operator fixes this.
Tentative fix to #8159: Undo doesn't restore environment depth correctly
The undo range is extended to encompass all the paragraph after the end that
are a non-zero depth. The reason is that these paragraphs may see their depth
reduced if the last paragraph sees its depth reduced.
Note that there is a memory cost, since we store paragraphs than may not be
modified in practice. This may matter for some pathological files (people
putting all their document at depth 1 for a weird reason?)
I tried to be careful, but this can introduce new bugs. Please test.