Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
b73b6aaf
Commit
b73b6aaf
authored
May 16, 1993
by
Richard M. Stallman
Browse files
(dumpglyphs): Create a temporary merged gc
when cursor falls on char with non-default face.
parent
61d54cd5
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
8 deletions
+37
-8
src/xterm.c
src/xterm.c
+37
-8
No files found.
src/xterm.c
View file @
b73b6aaf
...
...
@@ -456,15 +456,11 @@ dumpglyphs (f, left, top, gp, n, hl)
struct
face
*
face
=
FRAME_DEFAULT_FACE
(
f
);
FONT_TYPE
*
font
=
FACE_FONT
(
face
);
GC
gc
=
FACE_GC
(
face
);
int
defaulted
=
1
;
int
gc_temporary
=
0
;
/* Cursor display take full precidence. */
if
(
hl
==
2
)
{
gc
=
(
f
->
display
.
x
->
cursor_gc
);
}
/* Then comes faces of the text itself. */
else
if
(
cf
!=
0
)
/* First look at the face of the text itself. */
if
(
cf
!=
0
)
{
/* The face codes on the glyphs must be valid indices into the
frame's face table. */
...
...
@@ -477,6 +473,7 @@ dumpglyphs (f, left, top, gp, n, hl)
face
=
intern_face
(
f
,
FRAME_FACES
(
f
)
[
cf
]);
font
=
FACE_FONT
(
face
);
gc
=
FACE_GC
(
face
);
defaulted
=
0
;
}
/* Then comes the distinction between modeline and normal text. */
...
...
@@ -487,11 +484,43 @@ dumpglyphs (f, left, top, gp, n, hl)
face
=
FRAME_MODE_LINE_FACE
(
f
);
font
=
FACE_FONT
(
face
);
gc
=
FACE_GC
(
face
);
defaulted
=
0
;
}
#define FACE_DEFAULT (~0)
/* Now override that if the cursor's on this character. */
if
(
hl
==
2
&&
(
defaulted
||
!
(
face
->
font
&&
(
int
)
face
->
font
!=
FACE_DEFAULT
)))
{
gc
=
f
->
display
.
x
->
cursor_gc
;
}
/* Cursor on non-default face: must merge. */
else
if
(
hl
==
2
)
{
XGCValues
xgcv
;
unsigned
long
mask
;
xgcv
.
background
=
f
->
display
.
x
->
cursor_pixel
;
xgcv
.
foreground
=
f
->
display
.
x
->
cursor_foreground_pixel
;
xgcv
.
font
=
face
->
font
->
fid
;
xgcv
.
graphics_exposures
=
0
;
mask
=
GCForeground
|
GCBackground
|
GCFont
|
GCGraphicsExposures
;
gc
=
XCreateGC
(
x_current_display
,
FRAME_X_WINDOW
(
f
),
mask
,
&
xgcv
);
#if 0
if (face->stipple && face->stipple != FACE_DEFAULT)
XSetStipple (x_current_display, gc, face->stipple);
#endif
gc_temporary
=
1
;
}
XDrawImageString
(
x_current_display
,
window
,
gc
,
left
,
top
+
FONT_BASE
(
font
),
buf
,
len
);
if
(
gc_temporary
)
XFreeGC
(
x_current_display
,
gc
);
/* We should probably check for XA_UNDERLINE_POSITION and
XA_UNDERLINE_THICKNESS properties on the font, but let's
just get the thing working, and come back to that. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment