>>>>> "Juergen" == Juergen Spitzmueller <[EMAIL PROTECTED]> writes:
Juergen> Jean-Marc Lasgouttes wrote:
>> They are supposed to just take the needed space, right? This is
>> particularly annoying with ERT, which is expected to be small.
Juergen> Yes. Note, however, that it only happens with empty
Juergen> collapsables in new paragraphs. Annoying still.
This is because the rowpainter code sets Wide() on these insets,
because they are alone on a row. The following patches test
additionally that the inset is not the last element of the paragraph.
It seems to work for me, but I am not sure it is the right condition
to test.
Martin?
JMarc
Index: src/rowpainter.C
===================================================================
--- src/rowpainter.C (revision 14240)
+++ src/rowpainter.C (working copy)
@@ -763,8 +763,9 @@ bool CursorOnRow(PainterInfo & pi, pit_t
bool innerCursorOnRow(PainterInfo & pi, pit_type pit,
RowList::const_iterator rit, LyXText const & text)
{
- // Is there a cursor inside an inset on this row, and is this inset
- // the only "character" on this row
+ // Is there a cursor inside an inset on this row, and is this
+ // inset the only "character" on this row, but not the last of
+ // the paragraph.
LCursor & cur = pi.base.bv->cursor();
if (rit->pos() + 1 != rit->endpos())
return false;
@@ -772,7 +773,8 @@ bool innerCursorOnRow(PainterInfo & pi,
CursorSlice const & sl = cur[d];
if (sl.text() == &text
&& sl.pit() == pit
- && sl.pos() == rit->pos())
+ && sl.pos() == rit->pos()
+ && sl.pos() < sl.lastpos() - 1)
return d < cur.depth() - 1;
}
return false;
Index: src/rowpainter.C
===================================================================
--- src/rowpainter.C (revision 14240)
+++ src/rowpainter.C (working copy)
@@ -766,8 +766,9 @@ bool CursorOnRow(PainterInfo & pi, pit_t
bool innerCursorOnRow(PainterInfo & pi, pit_type pit,
RowList::const_iterator rit, LyXText const & text)
{
- // Is there a cursor inside an inset on this row, and is this inset
- // the only "character" on this row
+ // Is there a cursor inside an inset on this row, and is this
+ // inset the only "character" on this row, but not the last of
+ // the paragraph.
LCursor & cur = pi.base.bv->cursor();
if (rit->pos() + 1 != rit->endpos())
return false;
@@ -775,7 +776,8 @@ bool innerCursorOnRow(PainterInfo & pi,
CursorSlice const & sl = cur[d];
if (sl.text() == &text
&& sl.pit() == pit
- && sl.pos() == rit->pos())
+ && sl.pos() == rit->pos()
+ && sl.pos() < sl.lastpos() - 1)
return d < cur.depth() - 1;
}
return false;