diff options
author | Karoly Lorentey <lorentey@elte.hu> | 2005-03-19 17:55:13 +0000 |
---|---|---|
committer | Karoly Lorentey <lorentey@elte.hu> | 2005-03-19 17:55:13 +0000 |
commit | 392711ede18168618ac6eedd4fdf5910d11a2714 (patch) | |
tree | 29940aa43a5fb4527b4111db7fb7aa2b57b444fd /src/xfns.c | |
parent | 04e9296582b1bbe7b2c5911691d9fbe4a9581382 (diff) | |
parent | 951f97e67d904729032b476caf5f7c2e7e303d73 (diff) | |
download | emacs-392711ede18168618ac6eedd4fdf5910d11a2714.tar.gz |
Merged from miles@gnu.org--gnu-2005 (patch 39-44, 184-191)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-184
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-185
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-186
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-187
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-188
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-189
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-190
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-191
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-39
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-40
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-41
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-42
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-43
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-44
Merge from emacs--cvs-trunk--0
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-311
Diffstat (limited to 'src/xfns.c')
-rw-r--r-- | src/xfns.c | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/src/xfns.c b/src/xfns.c index 4c9b38d2556..72547e2010f 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -1971,14 +1971,24 @@ static XIMStyle supported_xim_styles[] = char xic_defaut_fontset[] = "-*-*-*-r-normal--14-*-*-*-*-*-*-*"; +/* Create an Xt fontset spec from the name of a base font. + If `motif' is True use the Motif syntax. */ char * -xic_create_fontsetname (base_fontname) +xic_create_fontsetname (base_fontname, motif) char *base_fontname; + Bool motif; { + const char *sep = motif ? ";" : ","; + char *fontsetname; + /* Make a fontset name from the base font name. */ if (xic_defaut_fontset == base_fontname) - /* There is no base font name, use the default. */ - return base_fontname; + { /* There is no base font name, use the default. */ + int len = strlen (base_fontname) + 2; + fontsetname = xmalloc (len); + bzero (fontsetname, len); + strcpy (fontsetname, base_fontname); + } else { /* Make a fontset name from the base font name. @@ -1987,30 +1997,31 @@ xic_create_fontsetname (base_fontname) - the base font where the charset spec is replaced by -*-*. - the same but with the family also replaced with -*-*-. */ char *p = base_fontname; - char *fontsetname; int i; - + for (i = 0; *p; p++) if (*p == '-') i++; if (i != 14) { /* As the font name doesn't conform to XLFD, we can't modify it to generalize it to allcs and allfamilies. Use the specified font plus the default. */ - int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 2; + int len = strlen (base_fontname) + strlen (xic_defaut_fontset) + 3; fontsetname = xmalloc (len); bzero (fontsetname, len); strcpy (fontsetname, base_fontname); - strcat (fontsetname, ","); + strcat (fontsetname, sep); strcat (fontsetname, xic_defaut_fontset); } else { int len; - char *p1 = NULL; + char *p1 = NULL, *p2 = NULL; char *font_allcs = NULL; char *font_allfamilies = NULL; + char *font_all = NULL; char *allcs = "*-*-*-*-*-*-*"; char *allfamilies = "-*-*-"; + char *all = "*-*-*-*-"; for (i = 0, p = base_fontname; i < 8; p++) { @@ -2019,6 +2030,8 @@ xic_create_fontsetname (base_fontname) i++; if (i == 3) p1 = p + 1; + else if (i == 7) + p2 = p + 1; } } /* Build the font spec that matches all charsets. */ @@ -2033,22 +2046,35 @@ xic_create_fontsetname (base_fontname) font_allfamilies = (char *) alloca (len); bzero (font_allfamilies, len); strcpy (font_allfamilies, allfamilies); - bcopy (p1, font_allfamilies + (strlen (allfamilies)), p - p1); + bcopy (p1, font_allfamilies + strlen (allfamilies), p - p1); strcat (font_allfamilies, allcs); + /* Build the font spec that matches all. */ + len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 1; + font_all = (char *) alloca (len); + bzero (font_all, len); + strcpy (font_all, allfamilies); + strcat (font_all, all); + bcopy (p2, font_all + strlen (all) + strlen (allfamilies), p - p2); + strcat (font_all, allcs); + /* Build the actual font set name. */ len = strlen (base_fontname) + strlen (font_allcs) - + strlen (font_allfamilies) + 3; + + strlen (font_allfamilies) + strlen (font_all) + 5; fontsetname = xmalloc (len); bzero (fontsetname, len); strcpy (fontsetname, base_fontname); - strcat (fontsetname, ","); + strcat (fontsetname, sep); strcat (fontsetname, font_allcs); - strcat (fontsetname, ","); + strcat (fontsetname, sep); strcat (fontsetname, font_allfamilies); + strcat (fontsetname, sep); + strcat (fontsetname, font_all); } - return fontsetname; } + if (motif) + strcat (fontsetname, ":"); + return fontsetname; } static XFontSet @@ -2081,7 +2107,7 @@ xic_create_xfontset (f, base_fontname) if (!xfs) { - char *fontsetname = xic_create_fontsetname (base_fontname); + char *fontsetname = xic_create_fontsetname (base_fontname, False); /* New fontset. */ xfs = XCreateFontSet (FRAME_X_DISPLAY (f), @@ -2089,8 +2115,7 @@ xic_create_xfontset (f, base_fontname) &missing_count, &def_string); if (missing_list) XFreeStringList (missing_list); - if (fontsetname != base_fontname) - xfree (fontsetname); + xfree (fontsetname); } if (FRAME_XIC_BASE_FONTNAME (f)) @@ -4596,9 +4621,6 @@ x_create_tip_frame (dpyinfo, parms, text) check_x (); - /* Use this general default value to start with until we know if - this frame has a specified name. */ - Vx_resource_name = Vinvocation_name; #ifdef MULTI_KBOARD kb = dpyinfo->kboard; @@ -4613,8 +4635,6 @@ x_create_tip_frame (dpyinfo, parms, text) && !NILP (name)) error ("Invalid frame name--not a string or nil"); - Vx_resource_name = name; - frame = Qnil; GCPRO3 (parms, name, frame); f = make_frame (1); |