aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2008-05-16 11:10:16 +0000
committerEli Zaretskii2008-05-16 11:10:16 +0000
commit1ccdfd3359b205f30819a5e22bf47dad3ead46b1 (patch)
tree41fa139c4244d8129eb1cc3c45531f8d2653e08b
parent09eabf0fa5a289a2edc68b3455d8579ae79bb40b (diff)
downloademacs-1ccdfd3359b205f30819a5e22bf47dad3ead46b1.tar.gz
emacs-1ccdfd3359b205f30819a5e22bf47dad3ead46b1.zip
frame.c (Fdelete_frame): Don't call font_update_drviers if
HAVE_WINDOW_SYSTEM is not defined. xfaces.c (merge_face_ref, merge_face_vectors) (Finternal_set_lisp_face_attribute): Use FONT_*_INDEX only when HAVE_WINDOW_SYSTEM is defined. (Fface_font): Fix non-HAVE_WINDOW_SYSTEM case.
-rw-r--r--src/frame.c2
-rw-r--r--src/xfaces.c41
2 files changed, 42 insertions, 1 deletions
diff --git a/src/frame.c b/src/frame.c
index 44bf4da5a87..c83caf460de 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1459,8 +1459,10 @@ But FORCE inhibits this too. */)
1459 memory. */ 1459 memory. */
1460 free_glyphs (f); 1460 free_glyphs (f);
1461 1461
1462#ifdef HAVE_WINDOW_SYSTEM
1462 /* Give chance to each font driver to free a frame specific data. */ 1463 /* Give chance to each font driver to free a frame specific data. */
1463 font_update_drivers (f, Qnil); 1464 font_update_drivers (f, Qnil);
1465#endif
1464 1466
1465 /* Mark all the windows that used to be on FRAME as deleted, and then 1467 /* Mark all the windows that used to be on FRAME as deleted, and then
1466 remove the reference to them. */ 1468 remove the reference to them. */
diff --git a/src/xfaces.c b/src/xfaces.c
index a7d24f0d61d..6b6f47e0990 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -2514,6 +2514,7 @@ merge_face_vectors (f, from, to, named_merge_points)
2514 && !NILP (from[LFACE_INHERIT_INDEX])) 2514 && !NILP (from[LFACE_INHERIT_INDEX]))
2515 merge_face_ref (f, from[LFACE_INHERIT_INDEX], to, 0, named_merge_points); 2515 merge_face_ref (f, from[LFACE_INHERIT_INDEX], to, 0, named_merge_points);
2516 2516
2517#ifdef HAVE_WINDOW_SYSTEM
2517 i = LFACE_FONT_INDEX; 2518 i = LFACE_FONT_INDEX;
2518 if (!UNSPECIFIEDP (from[i])) 2519 if (!UNSPECIFIEDP (from[i]))
2519 { 2520 {
@@ -2523,6 +2524,7 @@ merge_face_vectors (f, from, to, named_merge_points)
2523 to[i] = Fcopy_font_spec (from[i]); 2524 to[i] = Fcopy_font_spec (from[i]);
2524 ASET (to[i], FONT_SIZE_INDEX, Qnil); 2525 ASET (to[i], FONT_SIZE_INDEX, Qnil);
2525 } 2526 }
2527#endif
2526 2528
2527 for (i = 1; i < LFACE_VECTOR_SIZE; ++i) 2529 for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
2528 if (!UNSPECIFIEDP (from[i])) 2530 if (!UNSPECIFIEDP (from[i]))
@@ -2530,8 +2532,11 @@ merge_face_vectors (f, from, to, named_merge_points)
2530 if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i])) 2532 if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
2531 { 2533 {
2532 to[i] = merge_face_heights (from[i], to[i], to[i]); 2534 to[i] = merge_face_heights (from[i], to[i], to[i]);
2535#ifdef HAVE_WINDOW_SYSTEM
2533 font_clear_prop (to, FONT_SIZE_INDEX); 2536 font_clear_prop (to, FONT_SIZE_INDEX);
2537#endif
2534 } 2538 }
2539#ifdef HAVE_WINDOW_SYSTEM
2535 else if (i != LFACE_FONT_INDEX) 2540 else if (i != LFACE_FONT_INDEX)
2536 { 2541 {
2537 to[i] = from[i]; 2542 to[i] = from[i];
@@ -2543,6 +2548,7 @@ merge_face_vectors (f, from, to, named_merge_points)
2543 : i == LFACE_WEIGHT_INDEX ? FONT_WEIGHT_INDEX 2548 : i == LFACE_WEIGHT_INDEX ? FONT_WEIGHT_INDEX
2544 : FONT_SLANT_INDEX)); 2549 : FONT_SLANT_INDEX));
2545 } 2550 }
2551#endif
2546 } 2552 }
2547 2553
2548 /* If `font' attribute is specified, reflect the font properties in 2554 /* If `font' attribute is specified, reflect the font properties in
@@ -2667,7 +2673,9 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
2667 if (STRINGP (value)) 2673 if (STRINGP (value))
2668 { 2674 {
2669 to[LFACE_FAMILY_INDEX] = value; 2675 to[LFACE_FAMILY_INDEX] = value;
2676#ifdef HAVE_WINDOW_SYSTEM
2670 font_clear_prop (to, FONT_FAMILY_INDEX); 2677 font_clear_prop (to, FONT_FAMILY_INDEX);
2678#endif
2671 } 2679 }
2672 else 2680 else
2673 err = 1; 2681 err = 1;
@@ -2680,7 +2688,9 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
2680 if (! NILP (new_height)) 2688 if (! NILP (new_height))
2681 { 2689 {
2682 to[LFACE_HEIGHT_INDEX] = new_height; 2690 to[LFACE_HEIGHT_INDEX] = new_height;
2691#ifdef HAVE_WINDOW_SYSTEM
2683 font_clear_prop (to, FONT_SIZE_INDEX); 2692 font_clear_prop (to, FONT_SIZE_INDEX);
2693#endif
2684 } 2694 }
2685 else 2695 else
2686 err = 1; 2696 err = 1;
@@ -2690,7 +2700,9 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
2690 if (SYMBOLP (value) && FONT_WEIGHT_NAME_NUMERIC (value) >= 0) 2700 if (SYMBOLP (value) && FONT_WEIGHT_NAME_NUMERIC (value) >= 0)
2691 { 2701 {
2692 to[LFACE_WEIGHT_INDEX] = value; 2702 to[LFACE_WEIGHT_INDEX] = value;
2703#ifdef HAVE_WINDOW_SYSTEM
2693 font_clear_prop (to, FONT_WEIGHT_INDEX); 2704 font_clear_prop (to, FONT_WEIGHT_INDEX);
2705#endif
2694 } 2706 }
2695 else 2707 else
2696 err = 1; 2708 err = 1;
@@ -2700,7 +2712,9 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
2700 if (SYMBOLP (value) && FONT_SLANT_NAME_NUMERIC (value) >= 0) 2712 if (SYMBOLP (value) && FONT_SLANT_NAME_NUMERIC (value) >= 0)
2701 { 2713 {
2702 to[LFACE_SLANT_INDEX] = value; 2714 to[LFACE_SLANT_INDEX] = value;
2715#ifdef HAVE_WINDOW_SYSTEM
2703 font_clear_prop (to, FONT_SLANT_INDEX); 2716 font_clear_prop (to, FONT_SLANT_INDEX);
2717#endif
2704 } 2718 }
2705 else 2719 else
2706 err = 1; 2720 err = 1;
@@ -2781,7 +2795,9 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
2781 if (SYMBOLP (value) && FONT_WIDTH_NAME_NUMERIC (value) >= 0) 2795 if (SYMBOLP (value) && FONT_WIDTH_NAME_NUMERIC (value) >= 0)
2782 { 2796 {
2783 to[LFACE_SWIDTH_INDEX] = value; 2797 to[LFACE_SWIDTH_INDEX] = value;
2798#ifdef HAVE_WINDOW_SYSTEM
2784 font_clear_prop (to, FONT_WIDTH_INDEX); 2799 font_clear_prop (to, FONT_WIDTH_INDEX);
2800#endif
2785 } 2801 }
2786 else 2802 else
2787 err = 1; 2803 err = 1;
@@ -3013,9 +3029,11 @@ FRAME 0 means change the face on all frames, and change the default
3013{ 3029{
3014 Lisp_Object lface; 3030 Lisp_Object lface;
3015 Lisp_Object old_value = Qnil; 3031 Lisp_Object old_value = Qnil;
3032#ifdef HAVE_WINDOW_SYSTEM
3016 /* Set one of enum font_property_index (> 0) if ATTR is one of 3033 /* Set one of enum font_property_index (> 0) if ATTR is one of
3017 font-related attributes other than QCfont and QCfontset. */ 3034 font-related attributes other than QCfont and QCfontset. */
3018 enum font_property_index prop_index = 0; 3035 enum font_property_index prop_index = 0;
3036#endif
3019 3037
3020 CHECK_SYMBOL (face); 3038 CHECK_SYMBOL (face);
3021 CHECK_SYMBOL (attr); 3039 CHECK_SYMBOL (attr);
@@ -3070,7 +3088,9 @@ FRAME 0 means change the face on all frames, and change the default
3070 } 3088 }
3071 old_value = LFACE_FAMILY (lface); 3089 old_value = LFACE_FAMILY (lface);
3072 LFACE_FAMILY (lface) = value; 3090 LFACE_FAMILY (lface) = value;
3091#ifdef HAVE_WINDOW_SYSTEM
3073 prop_index = FONT_FAMILY_INDEX; 3092 prop_index = FONT_FAMILY_INDEX;
3093#endif
3074 } 3094 }
3075 else if (EQ (attr, QCheight)) 3095 else if (EQ (attr, QCheight))
3076 { 3096 {
@@ -3091,7 +3111,9 @@ FRAME 0 means change the face on all frames, and change the default
3091 3111
3092 old_value = LFACE_HEIGHT (lface); 3112 old_value = LFACE_HEIGHT (lface);
3093 LFACE_HEIGHT (lface) = value; 3113 LFACE_HEIGHT (lface) = value;
3114#ifdef HAVE_WINDOW_SYSTEM
3094 prop_index = FONT_SIZE_INDEX; 3115 prop_index = FONT_SIZE_INDEX;
3116#endif
3095 } 3117 }
3096 else if (EQ (attr, QCweight)) 3118 else if (EQ (attr, QCweight))
3097 { 3119 {
@@ -3103,7 +3125,9 @@ FRAME 0 means change the face on all frames, and change the default
3103 } 3125 }
3104 old_value = LFACE_WEIGHT (lface); 3126 old_value = LFACE_WEIGHT (lface);
3105 LFACE_WEIGHT (lface) = value; 3127 LFACE_WEIGHT (lface) = value;
3128#ifdef HAVE_WINDOW_SYSTEM
3106 prop_index = FONT_WEIGHT_INDEX; 3129 prop_index = FONT_WEIGHT_INDEX;
3130#endif
3107 } 3131 }
3108 else if (EQ (attr, QCslant)) 3132 else if (EQ (attr, QCslant))
3109 { 3133 {
@@ -3115,7 +3139,9 @@ FRAME 0 means change the face on all frames, and change the default
3115 } 3139 }
3116 old_value = LFACE_SLANT (lface); 3140 old_value = LFACE_SLANT (lface);
3117 LFACE_SLANT (lface) = value; 3141 LFACE_SLANT (lface) = value;
3142#ifdef HAVE_WINDOW_SYSTEM
3118 prop_index = FONT_SLANT_INDEX; 3143 prop_index = FONT_SLANT_INDEX;
3144#endif
3119 } 3145 }
3120 else if (EQ (attr, QCunderline)) 3146 else if (EQ (attr, QCunderline))
3121 { 3147 {
@@ -3283,7 +3309,9 @@ FRAME 0 means change the face on all frames, and change the default
3283 } 3309 }
3284 old_value = LFACE_SWIDTH (lface); 3310 old_value = LFACE_SWIDTH (lface);
3285 LFACE_SWIDTH (lface) = value; 3311 LFACE_SWIDTH (lface) = value;
3312#ifdef HAVE_WINDOW_SYSTEM
3286 prop_index = FONT_WIDTH_INDEX; 3313 prop_index = FONT_WIDTH_INDEX;
3314#endif
3287 } 3315 }
3288 else if (EQ (attr, QCfont)) 3316 else if (EQ (attr, QCfont))
3289 { 3317 {
@@ -3362,18 +3390,23 @@ FRAME 0 means change the face on all frames, and change the default
3362 { 3390 {
3363 old_value = LFACE_WEIGHT (lface); 3391 old_value = LFACE_WEIGHT (lface);
3364 LFACE_WEIGHT (lface) = NILP (value) ? Qnormal : Qbold; 3392 LFACE_WEIGHT (lface) = NILP (value) ? Qnormal : Qbold;
3393#ifdef HAVE_WINDOW_SYSTEM
3365 prop_index = FONT_WEIGHT_INDEX; 3394 prop_index = FONT_WEIGHT_INDEX;
3395#endif
3366 } 3396 }
3367 else if (EQ (attr, QCitalic)) 3397 else if (EQ (attr, QCitalic))
3368 { 3398 {
3369 attr = QCslant; 3399 attr = QCslant;
3370 old_value = LFACE_SLANT (lface); 3400 old_value = LFACE_SLANT (lface);
3371 LFACE_SLANT (lface) = NILP (value) ? Qnormal : Qitalic; 3401 LFACE_SLANT (lface) = NILP (value) ? Qnormal : Qitalic;
3402#ifdef HAVE_WINDOW_SYSTEM
3372 prop_index = FONT_SLANT_INDEX; 3403 prop_index = FONT_SLANT_INDEX;
3404#endif
3373 } 3405 }
3374 else 3406 else
3375 signal_error ("Invalid face attribute name", attr); 3407 signal_error ("Invalid face attribute name", attr);
3376 3408
3409#ifdef HAVE_WINDOW_SYSTEM
3377 if (prop_index) 3410 if (prop_index)
3378 /* If a font-related attribute other than QCfont and QCfontset is 3411 /* If a font-related attribute other than QCfont and QCfontset is
3379 specified, and if the original QCfont attribute has a font 3412 specified, and if the original QCfont attribute has a font
@@ -3381,6 +3414,7 @@ FRAME 0 means change the face on all frames, and change the default
3381 the font to nil so that the font selector doesn't think that 3414 the font to nil so that the font selector doesn't think that
3382 the attribute is mandatory. */ 3415 the attribute is mandatory. */
3383 font_clear_prop (XVECTOR (lface)->contents, prop_index); 3416 font_clear_prop (XVECTOR (lface)->contents, prop_index);
3417#endif
3384 3418
3385 /* Changing a named face means that all realized faces depending on 3419 /* Changing a named face means that all realized faces depending on
3386 that face are invalid. Since we cannot tell which realized faces 3420 that face are invalid. Since we cannot tell which realized faces
@@ -4016,10 +4050,15 @@ return the font name used for CHARACTER. */)
4016 face_id = FACE_FOR_CHAR (f, face, XINT (character), -1, Qnil); 4050 face_id = FACE_FOR_CHAR (f, face, XINT (character), -1, Qnil);
4017 face = FACE_FROM_ID (f, face_id); 4051 face = FACE_FROM_ID (f, face_id);
4018 } 4052 }
4019#endif
4020 return (face->font 4053 return (face->font
4021 ? face->font->props[FONT_NAME_INDEX] 4054 ? face->font->props[FONT_NAME_INDEX]
4022 : Qnil); 4055 : Qnil);
4056#else /* !HAVE_WINDOW_SYSTEM */
4057 return build_string (FRAME_MSDOS_P (f)
4058 ? "ms-dos"
4059 : FRAME_W32_P (f) ? "w32term"
4060 :"tty");
4061#endif
4023 } 4062 }
4024} 4063}
4025 4064