Bo Peng wrote:
> There is also a redraw problem when you delete in ERT or listings
> inset, do you also have an oneliner? :-)

Try this (OK, a bit more than one line).

Jürgen
Index: src/rowpainter.cpp
===================================================================
--- src/rowpainter.cpp	(Revision 19101)
+++ src/rowpainter.cpp	(Arbeitskopie)
@@ -918,13 +918,21 @@
 {
 	// check whether the current inset is nested in a non-wide inset
 	Cursor & cur = pi.base.bv->cursor();
-	for (int i = cur.depth() - 1; --i >= 0; ) {
+	Inset const * cur_in = &cur.inset();
+	// check all higher nested insets
+	for (size_type i = 1; i < cur.depth(); ++i) {
 		Inset * const in = &cur[i].inset();
-		if (in) {
+		if (in == cur_in)
+			// we reached the level of the current inset, so stop
+			return false;
+		else if (in) {
+			if (in->hasFixedWidth())
+				return true;
 			InsetText * t =
 				const_cast<InsetText *>(in->asTextInset());
-			if (t)
-				return !t->wide();
+			if (t && !t->wide())
+				// OK, we are in a non-wide() inset
+				return true;
 		}
 	}
 	return false;
@@ -1000,7 +1008,7 @@
 			// Clear background of this row
 			// (if paragraph background was not cleared)
 			if (!repaintAll &&
-			    (!(in_inset_alone_on_row && leftEdgeFixed)
+			    (!(in_inset_alone_on_row && leftEdgeFixed && !inNarrowIns)
 				|| row_has_changed)) {
 				pi.pain.fillRectangle(x, y - rit->ascent(),
 				    rp.maxWidth(), rit->height(),

Reply via email to