if (from_g->type == GLYPH_CHAR)
            {
-             MFontDriver *driver;
-
              if (rface->rfont && from_g->code >= 0)
-               driver = rface->rfont->driver;
+               (rface->rfont->driver->render) (win, x, y, gstring, from_g, g,
+                                               reverse, region);
              else
-               driver = mfont__driver_list[MFONT_TYPE_WIN];
-             (driver->render) (win, x, y, gstring, from_g, g,
-                               reverse, region);
+               mwin__draw_empty_boxes (win, x, y, gstring, from_g, g,
+                                       reverse, region);
            }
          else if (from_g->type == GLYPH_BOX)
            {
       gstring_num++;
     }
 
+  gstring->frame = frame;
+  gstring->tick = frame->tick;
   gstring->top = gstring;
   gstring->mt = mt;
   gstring->control = *control;
       if (prop)
        {
          gstring = prop->val;
-         if (memcmp (control, &gstring->control,
-                     (char *) (&control->with_cursor)
-                     - (char *) (control)))
+         if (gstring->frame != frame
+             || gstring->tick != frame->tick
+             || memcmp (control, &gstring->control,
+                        (char *) (&control->with_cursor)
+                        - (char *) (control)))
            {
              mtext_detach_property (prop);
              gstring = NULL;