src/background.C
authorroot <root>
Tue, 4 Nov 2008 14:38:29 +0000 (14:38 +0000)
committerroot <root>
Tue, 4 Nov 2008 14:38:29 +0000 (14:38 +0000)
src/background.C
src/screen.C

index f2e389d..753360e 100644 (file)
@@ -1139,11 +1139,11 @@ bgPixmap_t::render ()
 
   XImage *result = NULL;
 # ifdef HAVE_AFTERIMAGE
-  target->init_asv ();
-
   if (original_asim
       || (background_flags & transpTransformations) != (flags & transpTransformations))
     {
+      target->init_asv ();
+
       ASImage *background = NULL;
       ARGB32 as_tint = TINT_LEAVE_SAME;
       if (background_flags)
index f51a5a3..0e05a05 100644 (file)
@@ -1466,11 +1466,18 @@ rxvt_term::scr_insdel_chars (int count, int insdel) NOTHROW
   line->touch ();
   line->is_longer (0);
 
+  // nuke wide char at beginning
+  if (line->t[screen.cur.col] == NOCHAR)
+    scr_kill_char (*line, screen.cur.col);
+
   switch (insdel)
     {
       case INSERT:
         line->l = min (line->l + count, ncol);
 
+        if (line->t[screen.cur.col] == NOCHAR)
+          scr_kill_char (*line, screen.cur.col);
+
         for (int col = ncol - 1; (col - count) >= screen.cur.col; col--)
           {
             line->t[col] = line->t[col - count];
@@ -1500,6 +1507,10 @@ rxvt_term::scr_insdel_chars (int count, int insdel) NOTHROW
         selection_check (1);
         screen.cur.col -= count;
 
+        // nuke wide char after the end
+        if (screen.cur.col + count < ncol && line->t[screen.cur.col + count] == NOCHAR)
+          scr_kill_char (*line, screen.cur.col + count);
+
         scr_blank_line (*line, screen.cur.col, count, rstyle);
         break;