Mercurial > hg > xemacs-beta
annotate src/balloon-x.c @ 5636:07256dcc0c8b
Add missing foreback specifier values to the GUI Element face.
They were missing for an unexplicable reason in my initial patch, leading to
nil color instances in the whole hierarchy of widget faces.
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2012-01-03 Didier Verna <didier@xemacs.org>
* faces.c (complex_vars_of_faces): Add missing foreback specifier
values to the GUI Element face.
author | Didier Verna <didier@lrde.epita.fr> |
---|---|
date | Tue, 03 Jan 2012 11:25:06 +0100 |
parents | 308d34e9f07d |
children |
rev | line source |
---|---|
428 | 1 /* |
2 Copyright (c) 1997 Douglas Keller | |
3 | |
4 This file is part of XEmacs. | |
5 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
872
diff
changeset
|
6 XEmacs is free software: you can redistribute it and/or modify it |
428 | 7 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
872
diff
changeset
|
8 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
872
diff
changeset
|
9 option) any later version. |
428 | 10 |
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
872
diff
changeset
|
17 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
428 | 18 |
19 /* Synched up with: Not in FSF. */ | |
20 | |
21 | |
22 #include <config.h> | |
23 #include "lisp.h" | |
24 | |
872 | 25 #include "device-impl.h" |
26 #include "console-x-impl.h" | |
428 | 27 |
28 #include "balloon_help.h" | |
29 | |
440 | 30 /* #### start of hack */ |
428 | 31 |
32 static unsigned long | |
442 | 33 alloc_color (Display* dpy, const char* colorname, int light) |
428 | 34 { |
872 | 35 Colormap cmap = DEVICE_X_COLORMAP (XDEVICE (get_default_device (Qx))); |
428 | 36 unsigned long pixel = 0; |
37 XColor color; | |
38 | |
39 if (XParseColor(dpy, cmap, colorname, &color) && XAllocColor(dpy, cmap, &color)) | |
40 { | |
41 pixel = color.pixel; | |
42 } | |
43 else | |
44 { | |
45 if (light) | |
46 { | |
47 printf ("Warning: could not allocate color \"%s\", using \"white\"\n", | |
48 colorname); | |
49 pixel = alloc_color (dpy, "white", True); | |
50 } | |
51 else | |
52 { | |
53 printf ("Warning: could not allocate color \"%s\", using \"black\"\n", | |
54 colorname); | |
55 pixel = alloc_color (dpy, "black", True); | |
56 } | |
57 } | |
58 return pixel; | |
59 } | |
60 | |
61 static XFontStruct * | |
442 | 62 open_font (Display* dpy, const char* font_name) |
428 | 63 { |
64 XFontStruct* fontStruct = NULL; | |
65 | |
66 fontStruct = XLoadQueryFont (dpy, font_name ? font_name : "fixed"); | |
67 if (fontStruct == NULL) | |
68 { | |
69 printf ("Warning: could not load font \"%s\", using \"fixed\".\n", font_name); | |
70 fontStruct = XLoadQueryFont (dpy, "fixed"); | |
71 assert (fontStruct != NULL); | |
72 } | |
73 return fontStruct; | |
74 } | |
75 | |
76 static void | |
77 init (void) | |
78 { | |
79 static int init_p = 0; | |
80 | |
81 if (!init_p) | |
82 { | |
83 Pixel fg, bg, shine, shadow; | |
84 XFontStruct* font; | |
872 | 85 Display *dpy = DEVICE_X_DISPLAY (XDEVICE (get_default_device (Qx))); |
428 | 86 |
87 fg = alloc_color (dpy, "grey60", 1); | |
88 bg = alloc_color (dpy, "black", 0); | |
89 | |
90 shine = alloc_color (dpy, "grey80", 1); | |
91 shadow = alloc_color (dpy, "grey40", 0); | |
92 | |
93 font = open_font (dpy, "-adobe-helvetica-medium-r-normal--12-*"); | |
94 | |
95 balloon_help_create (dpy, bg, fg, shine, shadow, font); | |
96 init_p = 1; | |
97 } | |
98 } | |
99 | |
440 | 100 /* #### end of hack */ |
428 | 101 |
102 DEFUN ("show-balloon-help", Fshow_balloon_help, 1, 1, 0, /* | |
103 Show balloon help. | |
104 */ | |
105 (string)) | |
106 { | |
107 char *p; | |
108 CHECK_STRING (string); | |
109 | |
110 p = (char *) XSTRING_DATA (string); | |
111 | |
112 init (); | |
113 | |
114 balloon_help_show (p); | |
115 | |
116 return Qnil; | |
117 } | |
118 | |
119 DEFUN ("hide-balloon-help", Fhide_balloon_help, 0, 0, 0, /* | |
120 Hide balloon help. | |
121 */ | |
122 ()) | |
123 { | |
124 init (); | |
125 | |
126 balloon_help_hide (); | |
127 | |
128 return Qnil; | |
129 } | |
130 | |
131 DEFUN ("balloon-help-move-to-pointer", Fballoon_help_move_to_pointer, 0, 0, 0, /* | |
132 Move the balloon help to the place where the pointer currently resides. | |
133 */ | |
134 ()) | |
135 { | |
136 init (); | |
137 | |
138 balloon_help_move_to_pointer (); | |
139 | |
140 return Qnil; | |
141 } | |
142 | |
143 | |
144 | |
145 /************************************************************************/ | |
146 /* initialization */ | |
147 /************************************************************************/ | |
148 | |
149 void | |
150 syms_of_balloon_x (void) | |
151 { | |
152 DEFSUBR (Fshow_balloon_help); | |
153 DEFSUBR (Fhide_balloon_help); | |
154 DEFSUBR (Fballoon_help_move_to_pointer); | |
155 } | |
156 | |
157 void | |
158 vars_of_balloon_x (void) | |
159 { | |
160 Fprovide (intern ("c-balloon-help")); | |
161 } |