diff options
| author | Eli Zaretskii | 2008-05-16 11:10:16 +0000 |
|---|---|---|
| committer | Eli Zaretskii | 2008-05-16 11:10:16 +0000 |
| commit | 1ccdfd3359b205f30819a5e22bf47dad3ead46b1 (patch) | |
| tree | 41fa139c4244d8129eb1cc3c45531f8d2653e08b | |
| parent | 09eabf0fa5a289a2edc68b3455d8579ae79bb40b (diff) | |
| download | emacs-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.c | 2 | ||||
| -rw-r--r-- | src/xfaces.c | 41 |
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 | ||