This bug is a lot harder to trigger now after my recent fixes but it is still there just harder to trigger.
I have noticed though that either cut or copy or both (common code?) doesn't seem to be copying insets (either at all or at least not in a way that is past[e?]able _or_ paste can't paste insets anymore -- this is _not_ due to my changes it existed previously also). So, who wants to answer some of the questions below? Allan. On Thu, 15 Nov 2001, Allan Rae wrote: > > - Cut all text from a note with two paragraphs and paste it right in > front of the now empty note (same par!) -> Stack overflow > > This is true for any InsetText-based inset (eg. figure float) and you > don't have to cut you can copy and paste also. The part about pasting > into the same paragraph is significant though. > > Can someone (Juergen?) tell me the purpose of the inset parameter for > InsetText::getMaxWidth (bv, inset) at insettext.C:1901 > > Nothing uses it. So was it leftover from previous code or added but > incomplete? Is there any reason why recursive code was used? Or was > someone planning on replacing it with an iterative solution? (Is this > where the discussions about paragraph/inset iterators I've seen but > not really read come in?) > > There is also an interesting pattern in the backtrace below which was > generated by starting a new document, insert a figure float, write one > word in the float, select with left mouse button and paste with > middle mouse button just before the inset (you can close it first if > you want to, it doesn't make any difference) > > UpdateableInset::getMaxWidth is where we're hoping the recursion will > stop -- since owner() should be 0x0 at some stage (hopefully in the > outermost InsetText which is also where we start the sequence...) > > It would seem from inset.C:315/316 that someone is hoping to be > calling UpdateableInset::getMaxWidth but gdb is reporting that > InsetCollapsible::getMaxWidth is getting called instead. IIRC, > Juergen was complaining about this sometime ago but I only skimmed > through those discussions. > > Any hints? > > #209593 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec538, bv=0x82a77a8) at >inset.C:316 > #209594 0x08137942 in InsetCollapsable::getMaxWidth (this=0x82ec538, bv=0x82a77a8, >in=0x82ec590) at insetcollapsable.C:395 > #209595 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec590, bv=0x82a77a8) at >inset.C:316 > #209596 0x08133e4a in InsetText::getMaxWidth (this=0x82ec590, bv=0x82a77a8, >inset=0x82ec538) at insettext.C:1915 > #209597 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec538, bv=0x82a77a8) at >inset.C:316 > #209598 0x08137942 in InsetCollapsable::getMaxWidth (this=0x82ec538, bv=0x82a77a8, >in=0x82ec590) at insetcollapsable.C:395 > #209599 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec590, bv=0x82a77a8) at >inset.C:316 > #209600 0x08133e4a in InsetText::getMaxWidth (this=0x82ec590, bv=0x82a77a8, >inset=0x82ec538) at insettext.C:1915 > #209601 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec538, bv=0x82a77a8) at >inset.C:316 > #209602 0x08137942 in InsetCollapsable::getMaxWidth (this=0x82ec538, bv=0x82a77a8, >in=0x82ec590) at insetcollapsable.C:395 > #209603 0x081167a1 in UpdatableInset::getMaxWidth (this=0x82ec590, bv=0x82a77a8) at >inset.C:316 > #209604 0x08133e4a in InsetText::getMaxWidth (this=0x82ec590, bv=0x82a77a8, >inset=0x82ec590) at insettext.C:1915 > #209605 0x0812eef1 in InsetText::textWidth (this=0x82ec590, bv=0x82a77a8, >fordraw=false) at insettext.C:330 > #209606 0x080d1483 in LyXText::workWidth (this=0x82edba0, bview=0x82a77a8) at >text.C:60 > #209607 0x080d78c0 in LyXText::prepareToPrint (this=0x82edba0, bview=0x82a77a8, >row=0x82d1ed0, x=@0xbfffefc0, fill_separator=@0xbfffefc4, fill_hfill=@0xbfffefc8, >fill_label_hfill=@0xbfffefcc, bidi=true) at text.C:2044 > #209608 0x080e39de in LyXText::setCursor (this=0x82edba0, bview=0x82a77a8, >cur=@0x82edc2c, par=0x82ca1d0, pos=4, boundary=false) at text2.C:2123 > #209609 0x080e3f31 in LyXText::setCursorIntern (this=0x82edba0, bview=0x82a77a8, >par=0x82ca1d0, pos=4, setfont=true, boundary=false) at text2.C:2214 > #209610 0x080e3f0c in LyXText::setCursorIntern (this=0x82eaf98, bview=0x82a77a8, >par=0x82ca1d0, pos=4, setfont=true, boundary=false) at text2.C:2209 > #209611 0x080e3922 in LyXText::setCursor (this=0x82eaf98, bview=0x82a77a8, >par=0x82ca1d0, pos=4, setfont=true, boundary=false) at text2.C:2097 > #209612 0x080e2dfc in LyXText::pasteSelection (this=0x82eaf98, bview=0x82a77a8) at >text2.C:1849 > #209613 0x0805128d in BufferView::paste (this=0x82a77a8) at BufferView2.C:324 > #209614 0x08057246 in BufferView::Pimpl::Dispatch (this=0x82a7e58, >action=LFUN_PASTE, argument=@0xbffff530) at BufferView_pimpl.C:1509 > #209615 0x08050145 in BufferView::Dispatch (this=0x82a77a8, action=LFUN_PASTE, >argument=@0xbffff530) at BufferView.C:294 > #209616 0x080ac5ba in LyXFunc::dispatch (this=0x8273c90, ac=19, >do_not_use_this_arg=@0xbffff57c) at lyxfunc.C:1621 > #209617 0x0817ffce in {anonymous}::ToolbarCB (ob=0x82a6170, ac=19) at >Toolbar_pimpl.C:298 > #209618 0x0818005a in C_Toolbar_ToolbarCB (ob=0x82a6170, data=19) at >Toolbar_pimpl.C:310 > #209619 0x00155973 in fl_object_qread () from /usr/X11R6/lib/libforms.so.0.88 > #209620 0x00162f11 in fl_check_forms () from /usr/X11R6/lib/libforms.so.0.88 > #209621 0x08140d8d in GUIRunTime::runTime () at GUIRunTime.C:86 > #209622 0x080a0798 in LyXGUI::runTime (this=0x8263928) at lyx_gui.C:315 > #209623 0x080a17f8 in LyX::LyX (this=0xbffff6e0, argc=0xbffff700, argv=0xbffff764) >at ../src/lyx_main.C:176 > #209624 0x080b9c81 in main (argc=1, argv=0xbffff764) at ../src/main.C:38 > #209625 0x003561f0 in __libc_start_main () from /lib/libc.so.6 > (gdb) > > Allan. (ARRae) > > I got a bit sidetracked while looking into the other problem and > thought this one might be easier to figure out hahahahahaha > > Allan. (ARRae)