Commit Graph

76 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
51e80361b2 Better handling of multiple buffers in UndoGroupHelper
It may happen that the buffers are visited in order buffer1,
buffer2, buffer1. In this case, we want to have only one undo group
in buffer1. The solution is to replace buffer_ with a set<Buffer*>.

A use case among others is InsetLabel::updateReferences.

(cherry picked from commit cc7364dfc5)
2018-02-15 10:33:17 +01:00
Jean-Marc Lasgouttes
87d291ee23 Handle properly undo groups in embedded work areas
When a buffer is in an embedded work area (adv. find&replace), it is
not found by BufferList:::exists(), and therefore the undo group
created in GuiApplication::dispatch and in the handling of
LFUN_COMMAND_SEQUENCE will not be closed.. Crashes can ensue, as
described in Ubuntu bug:
https://bugs.launchpad.net/bugs/1737429

The solution is to introduce BufferList::isInternal and act on it.

Fixes bug #10847.

(cherry picked from commit 8b107f0490)
2017-12-23 19:21:12 +01:00
Jean-Marc Lasgouttes
4eb9b50dc6 Use the proper buffer when recording undo
The code in InsetLabel::updateReferences code changes reference insets
in potentially several buffers. When recording undo, it is important
to use the right undo stack, otherwise crashes can ensue.

Once it is done, it is neccessary to create undo groups as needed.
This is done using UndoGroupHelper. This demonstrates a shortcoming of
UndoGroup helper: if a buffer is encountered in two seperate
occasions, two undo groups will be created for this buffer. This is
not correct.

Fixes bug #10643.
2017-07-04 16:34:34 +02:00
Jean-Marc Lasgouttes
82b6dc8aa9 Update all paragraphs layouts when undoing bufferparams
When undo restores a previous BufferParams instance, it should also
update all the layout pointers in the document's paragraphs.

Fixes #9916.
2016-01-20 15:20:51 +01:00
Jean-Marc Lasgouttes
8ec4080537 Remember the cursor before an undo group
With this patch, the cursor position before undo can be saved when
creating an undo group. Any such value will supercede parameters
passed to recordUndo. Only the first such cursor set by nested
beginUndoGoup takes effect.

Fixes bug #9663.
2015-07-21 11:57:50 +02:00
Jean-Marc Lasgouttes
a7896cb190 End all Undo::Private members names with an underscore 2015-07-16 14:48:23 +02:00
Jean-Marc Lasgouttes
7f0ac0932b Avoid crash with undo in a closed collapsable inset
The recipe for reproducing this crash is to do a search and replace
that changes a string present in a collapsed inset, and then undo.

This is a followup to 17e435c4, which used editable() instead of
isActive(); this commit was amended at c2f785bd, since editable() is
not set properly in mathed.

Truth is, editable() is not the right property to test against, since
it is false for a collapsed inset, which does not prevent a cursor
from pointing inside. Therefore sanitize should not change the cursor
in this case.

Hopefuly, this is the last word on the subject. Alternative would be
to drop this if()-clause completely.
2015-05-26 11:19:05 +02:00
Jean-Marc Lasgouttes
7760c5ccf2 Create proper undo groups for advanced find and replace
Create new helper class UndoGroupHelper, which simplifies a lot the
handling of undo groups in cases like this one. The class tracks open
undo buffers and allows to switch buffers transparently.

Using the class for advanced search and replace is trivial. THe class
may be useful in some other classes.

Fixes ticket #8658
2015-05-22 16:42:10 +02:00
Jean-Marc Lasgouttes
32148586a8 Place the cursor correctly after undoing an inset dissolution
The cleanup in 11ca1406 was not correct. It is actually not possible to implement recordUndoInset from the undo API, since the cursor may not be at a different level than the text to be saved.

Fixes ticket #9553
2015-05-20 12:14:34 +02:00
Jean-Marc Lasgouttes
11ca140667 Clean-up the undo API
* Remove the UndoKind parameter in the general interface
* move recordUndoInset to Cursor
* remove one variant of Undo::recordUndo.
* get rid of Text::recUndo.
2015-04-01 14:18:23 +02:00
Jean-Marc Lasgouttes
ed3d9544a3 Improve undo of consecutive insertions/deletions
The old scheme was:
 * multiple insertions are undone by groups of 20
 * multiple deletions are undone in one big block

The new scheme is to stop merging undo elements after 2 seconds of elapsed time.

Moreover, the merging of undo elements stops when the cursor has moved. Potentially, this could allow to remove many of the finishUndo() calls.

Fixes bug #9204.
2015-03-16 18:31:22 +01:00
Jean-Marc Lasgouttes
58b3971eeb Avoid crash with after a params undo.
When doing a non-atomic undo, one should not try to merge with a previous params undo.

This fixes bug #7740.
2015-03-11 16:55:51 +01:00
Jean-Marc Lasgouttes
7021f4c342 Implement new recordUndoBufferParams method.
Rename recordUndoFullDocument to recordUndoFullBuffer.

Separate the notion of recording changes to paragraphs and recording changes in buffer parameters.

Audit every user of recordUndoFullDocument and replace it with either recordUndoBufferParams or recordUndoFullBuffer. Add comments to identify remaining work.
2015-01-22 15:15:21 +01:00
Jean-Marc Lasgouttes
4356f2254a Respect group integrity when removing stuff from the Undo stack.
Fixes: #9079
2014-04-20 19:01:07 +02:00
Jean-Marc Lasgouttes
d25e273abf Whitespace 2014-02-14 12:00:56 +01:00
Richard Heck
d79225ae98 Remove all messages to user related to assertions. We'll just use
a basic message which is defined in lassert.cpp now.
2013-04-27 17:52:55 -04: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
Jean-Marc Lasgouttes
538570a1e5 Fix bug #8342: Endless undo group messages
Fix thinko in Undo::endUndoGroup.
Do not reset undo groups in Undo::clean

The underlying problem remains: the various VC functions should not
always reload the buffer or at least should use the parameter
clearUndo=false.
2012-09-17 11:24:39 +02:00
Jean-Marc Lasgouttes
f6b1c24b99 Fix bug #5204: Undo removes text selection
This commit does a bit more than fix selection, since it saves the full cursor state
in the undo stack. This means that undo now restores:
* the selection
* the current font
* transient mark (shall we keep this one?), logical position...

In order to do that, it introduces an intermediate class between Cursor and DotIterator: CursorData.
The new inheritance diagram is thus
  DocIteraator -> CursorData -> Cursor

CursorData contains all the members of Cursor that define the current position, but not the stuff
related to current view of dispatch mechanism. It may make sense in the future to move members
between CursorData and Cursor and to move some member functions to CursorData.

Now UndoElement uses CursorData for cur_before and cur_after, but not for the cell. The undo API uses
also CursorData instead of DocIterator.
2012-07-15 18:16:09 +02:00
Jean-Marc Lasgouttes
c22334eb3b Revert "Tentative fix to #8159: Undo doesn't restore environment depth correctly"
This reverts commit e3854bb59b.
2012-06-29 15:22:24 +02:00
Jean-Marc Lasgouttes
bcd6990eca Revert "Revert "Tentative fix to #8159: Undo doesn't restore environment depth correctly""
This is becoming crazy :)

This reverts commit 5b531b56ef.
2012-06-05 12:55:37 +02:00
Jean-Marc Lasgouttes
5b531b56ef Revert "Tentative fix to #8159: Undo doesn't restore environment depth correctly"
This reverts commit e3854bb59b.
2012-06-05 11:32:56 +02:00
Jean-Marc Lasgouttes
e3854bb59b 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.
2012-05-22 22:18:34 +02:00
Jean-Marc Lasgouttes
ec3aed75ad Fix bug #6367: Screen jumps around when using undo/redo
http://www.lyx.org/trac/ticket/6367

* Undo.cpp: 
 - rename cur member of UndoElement to cur_before
 - add new member cur_after, which is set by Undo::endUndoGroup
 - create a new Undo::endUndoGroup variant that takes a Cursor as parameter. We cannot get rid of the old one because it is used for LFUN_COMMAND_SEQUENCE.
* Cursor.cpp: 
 - use endUndoGroup(Dociterator const &) for dispatch
 - update Cursor::endUndoGroup to pass cursor.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40713 a592a061-630c-0410-9148-cb99ea01b6c8
2012-02-07 14:56:16 +00:00
Stephan Witt
af77fb5186 #7208 reset undo group level in Undo::clear() too
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37161 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-10 09:44:55 +00:00
Abdelrazak Younes
a07d9f2192 Clear undo/redo stack when reloading buffer. This fixes #7208.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37155 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-09 17:55:16 +00:00
Jean-Marc Lasgouttes
3370b1d2fa Fix the last part of #3733:
- In GuiApplication::dispatch, do not call markDirty() for lfuns that are not ReadOnly
- In Undo::Private::recordUndo, call markDirty(). The indicator of dirtyness is now the existence of an undo element.
- In lyxfind, remove several markDirty calls that are not needed anymore.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36772 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-08 10:30:45 +00:00
Jean-Marc Lasgouttes
2661b9b22e Some Undo cleanup. Functionality should be unchanged
- whitespace and typos in comments
- make sure that the Undo::recordUndoXXX functions all go through
  Undo::Private::recordUndo


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36771 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-08 10:04:07 +00:00
Jean-Marc Lasgouttes
574931dcdb Fix bug #6930: no undo for inset type changing
THis is a consequence of the new AtPoint mechanism. In the old
world, recordUndoInset was called before INSET_MODIFY. I reintroduced
manual recordUndoInset calls in all places that matter. I suspect
that this issue should be revisited later.

Note that recordUndoInset can now take an optional parameter that tells
what inset is concerned. This is useful because the cursor can be
either just inside the inset or in front of it.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36580 a592a061-630c-0410-9148-cb99ea01b6c8
2010-11-29 09:47:46 +00:00
Jean-Marc Lasgouttes
3e99283f2b Make sure that the current undo element is finished before marking stacks dirty
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35075 a592a061-630c-0410-9148-cb99ea01b6c8
2010-08-07 10:40:25 +00:00
Jean-Marc Lasgouttes
f8eda52820 Fix bug #3733: 'undo' does not revert 'changed' status for file
* src/LyXAction.cpp: add ReadOnly flag to LFUN_UNDO and LFUN_REDO, since
  we do not want the dispatch mechanism to mark buffer dirty after them.
* src/BufferView.cpp: handle "by hand" the activation of undo/redo
* src/Undo.cpp: add lyx_clean member to UndoElement and make sure to 
  maintain it with undo operations; add a new markDirty() member for UndoStack
* src/Buffer.cpp: when saving a document, mark the undo and redo stacks 
  elements as dirty.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35068 a592a061-630c-0410-9148-cb99ea01b6c8
2010-08-06 23:54:04 +00:00
Richard Heck
5577e877bb Try to move all updateBuffer() calls to a central location. We now use
DispatchResult to store a flag that tells us whether we need a buffer
update or not. 

So: If you find a missing one, go to an appropriate place in the
dispatch and call cur.forceBufferUpdate() or, if you don't have a cursor
but do have a DispatchResult, call dr.forceBufferUpdate().

There is one remaining call I could not move, in
TextMetrics::redoParagraph. But this looks like an emergency call when
the macro context has not been set. There are also a couple calls that
are connected with buffer creation that I commented out, since the same
call is done again almost immediately. But I'm not positive about those.

Now the nice thing would be to do the same for updateMacros().


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34826 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-09 14:37:00 +00:00
Enrico Forestieri
cf1f59dd4d Fix bug #6678: Crash when undoing backspace inside math-macro
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34370 a592a061-630c-0410-9148-cb99ea01b6c8
2010-05-04 16:16:20 +00:00
Richard Heck
d65020b293 s/updateLabels/updateBuffer/g, per a suggestion of Abdel's.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33613 a592a061-630c-0410-9148-cb99ea01b6c8
2010-03-03 22:13:45 +00:00
Richard Heck
22ba8256b2 So we do, sometimes, need the setBuffer calls that were removed in r28720.
This patch encapsulates the needed call in Buffer::setBuffersForInsets(),
and calls it from Undo::Private::textUndoOrRedo(). As noted in the FIXME,
this is still a bit of a "hammer" and ought to be replaced with the sort of
more refined approach taken in r28709. But I don't at the moment see how to
do that. The place to do it, though, is in doTextUndoOrRed().
 


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28757 a592a061-630c-0410-9148-cb99ea01b6c8
2009-03-12 20:10:46 +00:00
Richard Heck
3aecc2c4ff Use an enum to make things a little clearer here.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28756 a592a061-630c-0410-9148-cb99ea01b6c8
2009-03-12 20:02:12 +00:00
André Pönitz
6192345f60 add Buffer * member to DocIterator
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27603 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-17 11:46:07 +00:00
André Pönitz
f8f5a7b28d move updateLables to buffer
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27562 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-16 16:43:49 +00:00
André Pönitz
f1cba8ff64 more latin1..utf8 schanges. all of src/* should be utf8 now
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27425 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 15:58:50 +00:00
Jean-Marc Lasgouttes
00cca05443 improve debug info
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26438 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-18 10:46:31 +00:00
Jean-Marc Lasgouttes
17dd645862 Bug 5173: Undo Grouping
http://bugzilla.lyx.org/show_bug.cgi?id=5173

	* Undo.cpp (beginUndoGroup, endUndoGroup): new methods.
	(UndoElement): add group_id member
	(UndoElementStack): when removing old undo entries, make sure to
	remove whole groups.
	(Undo::Private): add group_id and group_level (for nesting) members.
	(doTextUndoOrRedo): new method. Apply _one_ UndoElement.
	(textUndoOrRedo): call doTextUndoOrRedo on each element of the current
	group.
	(recordUndoFullDocument): put inside an undo group

	* Cursor.cpp (beginUndoGroup, endUndoGroup): new methods.

	* LyXFunc.cpp (dispatch): add calls to (begin|end)UndoGroup.

	* lyxfind.cpp (replaceAll): use several recordUndo instead
	of one recordUndoFullDocument.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26178 a592a061-630c-0410-9148-cb99ea01b6c8
2008-08-15 19:24:56 +00:00
Jean-Marc Lasgouttes
4d63bd347b constification without any code change. This is part of and effort to see whether BufferView::cursor() could be made const
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26141 a592a061-630c-0410-9148-cb99ea01b6c8
2008-08-13 13:46:19 +00:00
Abdelrazak Younes
0f9e4d7c2d Fix http://bugzilla.lyx.org/show_bug.cgi?id=5127
A call to updateLabels() was necessary (and safer) in all cases.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26081 a592a061-630c-0410-9148-cb99ea01b6c8
2008-08-06 16:08:50 +00:00
Abdelrazak Younes
0f7bae394c Redo 25580 the right way, again :-)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25618 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-14 17:11:19 +00:00
Richard Heck
a282ef926a I've had to revert r25548 because of:
gdb /home/rgheck/cvs/lyx-devel/trunk/src/lyx --interpreter=mi2 -quiet
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) bt
bt
#0  0x000000369a230ec5 in raise () from /lib64/libc.so.6
#1  0x000000369a232970 in abort () from /lib64/libc.so.6
#2  0x000000369a26b0db in __libc_message () from /lib64/libc.so.6
#3  0x000000369a272832 in _int_free () from /lib64/libc.so.6
#4  0x000000369a275f2c in free () from /lib64/libc.so.6
#5  0x00000000004ebbdc in std::_Rb_tree<int, std::pair<int const, lyx::Author>, std::_Select1st<std::pair<int const, lyx::Author> >, std::less<int>, std::allocator<std::pair<int const, lyx::Author> > >::_M_erase (this=0x32c7f68, __x=0x30ece10) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:94
#6  0x00000000004ebe99 in ~map (this=0x32c7f68) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_tree.h:578
#7  0x00000000004df21f in lyx::BufferParams::MemoryTraits::destroy (ptr=0x32c7f60) at Author.h:50
#8  0x00000000004855e4 in ~copied_ptr (this=<value optimized out>) at ../../../src/support/copied_ptr.h:69
#9  0x0000000000488f93 in ~BufferParams (this=0x32c7b30) at ../../../src/BufferParams.h:52
#10 0x0000000000748585 in ~UndoElement (this=0x7fffc1aeebd0) at Undo.cpp:82
#11 0x0000000000745be8 in lyx::Undo::Private::doRecordUndo (this=0x2ef9630, kind=lyx::ATOMIC_UNDO, cell=<value optimized out>, first_pit=<value optimized out>, last_pit=<value optimized out>, cur=<value optimized out>, isFullBuffer=true, isUndoOperation=true) at Undo.cpp:278
#12 0x0000000000745ce7 in lyx::Undo::recordUndoFullDocument (this=0x2ea5620, cur=@0x2f04238) at Undo.cpp:443
#13 0x00000000007a73cc in lyx::Cursor::recordUndoFullDocument (this=0x2f04238) at Cursor.cpp:2139
#14 0x00000000006374e8 in lyx::LyXFunc::dispatch (this=0x2a431a0, cmd=@0x7fffc1af0e20) at LyXFunc.cpp:1426
#15 0x000000000060630c in lyx::dispatch (action=@0x7fffc1af0e20) at LyX.cpp:1131
#16 0x0000000000b1740a in lyx::frontend::Dialog::dispatch (this=<value optimized out>, fr=@0x7fffc1af0e20) at Dialog.cpp:62
#17 0x0000000000b6787b in dispatch_bufferparams (dialog=@0x30e1288, bp=@0x30e1470, lfun=lyx::LFUN_BUFFER_PARAMS_APPLY) at GuiDocument.cpp:2244
#18 0x0000000000b7825b in lyx::frontend::GuiDocument::dispatchParams (this=0x30e1260) at GuiDocument.cpp:2255
#19 0x0000000000b1766e in lyx::frontend::Dialog::apply (this=0x30e1288) at Dialog.cpp:159
#20 0x0000000000b647d8 in lyx::frontend::GuiDialog::slotOK (this=0x30e1260) at GuiDialog.cpp:56
#21 0x0000000000b64871 in lyx::frontend::GuiDialog::qt_metacall (this=0x30e1260, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffc1af2290) at GuiDialog_moc.cpp:73
#22 0x0000000000b83fed in lyx::frontend::GuiDocument::qt_metacall (this=0x4f17, _c=20247, _id=6, _a=0xffffffffffffffff) at GuiDocument_moc.cpp:90
#23 0x00000034e9cf3d71 in QMetaObject::activate () from /usr/lib64/libQtCore.so.4
#24 0x00000034ea5f3007 in QAbstractButton::clicked () from /usr/lib64/libQtGui.so.4
#25 0x00000034ea416c3b in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#26 0x00000034ea4182c5 in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#27 0x00000034ea4184cd in QAbstractButton::mouseReleaseEvent () from /usr/lib64/libQtGui.so.4
#28 0x00000034ea1cf35a in QWidget::event () from /usr/lib64/libQtGui.so.4
#29 0x00000034ea4177df in QAbstractButton::event () from /usr/lib64/libQtGui.so.4
#30 0x00000034ea491778 in QPushButton::event () from /usr/lib64/libQtGui.so.4
#31 0x00000034ea19274c in QApplicationPrivate::notify_helper () from /usr/lib64/libQtGui.so.4
#32 0x00000034ea198c1b in QApplication::notify () from /usr/lib64/libQtGui.so.4
#33 0x0000000000a8084a in lyx::frontend::GuiApplication::notify (this=0x4f17, receiver=0x4f17, event=0x6) at GuiApplication.cpp:1163
#34 0x00000034e9ce3700 in QCoreApplication::notifyInternal () from /usr/lib64/libQtCore.so.4
#35 0x00000034ea1df95d in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#36 0x00000034ea1de900 in QApplication::x11ProcessEvent () from /usr/lib64/libQtGui.so.4
#37 0x00000034ea200778 in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#38 0x000000369f62ef53 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#39 0x000000369f63224d in QAbstractItemModel::sort () from /lib64/libglib-2.0.so.0
#40 0x000000369f63277e in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#41 0x00000034e9d01930 in QEventDispatcherGlib::processEvents () from /usr/lib64/libQtCore.so.4
#42 0x00000034ea20057f in QAbstractItemModel::sort () from /usr/lib64/libQtGui.so.4
#43 0x00000034e9ce2da8 in QEventLoop::processEvents () from /usr/lib64/libQtCore.so.4
#44 0x00000034e9ce2ebd in QEventLoop::exec () from /usr/lib64/libQtCore.so.4
#45 0x00000034e9ce4e71 in QCoreApplication::exec () from /usr/lib64/libQtCore.so.4
#46 0x0000000000a7fb83 in lyx::frontend::GuiApplication::exec (this=<value optimized out>) at GuiApplication.cpp:1032
#47 0x00000000006101e4 in lyx::LyX::exec (this=0x7fffc1af4cf0, argc=@0x7fffc1af4cec, argv=<value optimized out>) at LyX.cpp:342
#48 0x0000000000433aa8 in main (argc=1, argv=0x7fffc1af4df8) at main.cpp:46
^done
I don't know at all what's up here with copied_ptr. Hadn't even heard of it until five minutes ago. ;-) You can cause this crash by opening a new document, opening Document>Settings and changing (say) the Bibliography settings, and then hitting "OK".



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25617 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-14 16:12:12 +00:00
Richard Heck
a24439b154 Redo 25580 the right way. (Failure to initialize bparams had caused constant crashes.)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25584 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-13 19:34:56 +00:00
Richard Heck
a692a56f4c Revert 25580.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25583 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-13 19:33:05 +00:00
Richard Heck
ec86523845 Another small optimization: Don't bother copying the BufferParams unless we need it.
This may speed up repeated undos a bit.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25580 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-13 19:04:44 +00:00
Richard Heck
9c6546fbd2 A small optimization: Don't do a copy here.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25578 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-13 19:00:55 +00:00
Richard Heck
f57a0a5dac Revert r25538.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25540 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-10 16:38:01 +00:00