+ // The content drawing cleared the left half to a
+ // space (wide char didn't fit at content edge),
+ // but the saved data has a wide char. Restore it
+ // spanning both the content cell and padding cell.
+ if (base_save_off >= 0
+ && saved_screenlinesuc[base_save_off] != 0
+ && utf_char2cells(
+ saved_screenlinesuc[base_save_off]) == 2
+ && ScreenLines[base_off] == ' '
+ && ScreenLinesUC[base_off] == 0)
+ {
+ int popup_attr_val =
+ get_win_attr(screen_opacity_popup);
+ int blend =
+ screen_opacity_popup->w_popup_blend;
+
+ ScreenLines[base_off] =
+ saved_screenlines[base_save_off];
+ ScreenLinesUC[base_off] =
+ saved_screenlinesuc[base_save_off];
+ ScreenAttrs[base_off] =
+ saved_screenattrs[base_save_off];
+ ScreenAttrs[base_off] = hl_blend_attr(
+ ScreenAttrs[base_off],
+ popup_attr_val, blend, TRUE);
+
+ ScreenLines[off] = 0;
+ ScreenLinesUC[off] = 0;
+ ScreenAttrs[off] = ScreenAttrs[base_off];
+
+ popup_set_base_screen_cell(row, base_col,
+ ScreenLines[base_off],
+ ScreenAttrs[base_off],
+ ScreenLinesUC[base_off]);
+ popup_set_base_screen_cell(row, col,
+ ScreenLines[off],
+ ScreenAttrs[off],
+ ScreenLinesUC[off]);
+ screen_char(base_off, row, base_col);
+ return;
+ }