int sel_y0 = SELECTEDP () ? sel_start.y0 : 0;
struct LineInfo *line;
- if (clear)
+ if (clear || control.anti_alias)
CLEAR_AREA (0, y0, win_width, y1 - y0);
/* Find a line closest to y0. It is a cursor line if the cursor is
/* Starting position changed. */
if (pos <= from)
{
- /* Enlarged. We can simply overdraw if not using
- antialiased text. */
+ /* Enlarged. We can simply overdraw. */
select_region (pos, to);
- redraw (sel_start.y0, start_y1, control.anti_alias, 0);
+ redraw (sel_start.y0, start_y1, 0, 0);
}
else if (pos < to)
{
}
else
{
- /* Enlarged. We can simply overdraw if not using
- antialiased text. */
+ /* Enlarged. We can simply overdraw. */
select_region (from, pos);
- redraw (end_y0, sel_end.y1, control.anti_alias, 0);
+ redraw (end_y0, sel_end.y1, 0, 0);
}
}
}
XtSetValues (InputMethodMenus[idx + 2], arg, 1);
}
+MPlist *default_face_list;
+
void
FaceProc (Widget w, XtPointer client_data, XtPointer call_data)
{
int old_y1;
if (! SELECTEDP ())
- return;
+ {
+ MPlist *plist;
+
+ if (idx >= 0)
+ {
+ MFace *face = mframe_get_prop (frame, Mface);
+
+ for (plist = default_face_list; mplist_key (plist) != Mnil;
+ plist = mplist_next (plist))
+ mface_merge (face, mplist_value (plist));
+ mplist_add (plist, Mt, *face_table[idx].face);
+ mface_merge (face, *face_table[idx].face);
+ }
+ else if (mplist_key (mplist_next (default_face_list)) != Mnil)
+ {
+ MFace *face = mframe_get_prop (frame, Mface);
+
+ for (plist = default_face_list;
+ mplist_key (mplist_next (plist)) != Mnil;
+ plist = mplist_next (plist))
+ mface_merge (face, mplist_value (plist));
+ mplist_pop (plist);
+ }
+ update_top (0);
+ update_cursor (0, 1);
+ redraw (0, win_height, 1, 1);
+ show_cursor (NULL);
+ return;
+ }
XtAppAddWorkProc (context, show_cursor, NULL);
from = mtext_property_start (selection);
}
frame = mframe (plist);
m17n_object_unref (plist);
- face_default = (MFace *) mframe_get_prop (frame, Mface);
+ face_default = mface_copy ((MFace *) mframe_get_prop (frame, Mface));
+ default_face_list = mplist ();
+ mplist_add (default_face_list, Mt, face_default);
face_default_fontset = mface ();
mface_put_prop (face_default_fontset, Mfontset,
mface_get_prop (face_default, Mfontset));
m17n_object_unref (face_default_fontset);
m17n_object_unref (face_no_ctl_fontset);
m17n_object_unref (face_input_status);
+ m17n_object_unref (face_default);
+ m17n_object_unref (default_face_list);
m17n_object_unref (selection);
M17N_FINI ();