Mercurial > hg > xemacs-beta
annotate src/balloon-x.c @ 5518:3cc7470ea71c
gnuclient: if TMPDIR was set and connect failed, try again with /tmp
2011-06-03 Aidan Kehoe <kehoea@parhasard.net>
* gnuslib.c (connect_to_unix_server):
Retry with /tmp as a directory in which to search for Unix sockets
if an attempt to connect with some other directory failed (which
may be because gnuclient and gnuserv don't share an environment
value for TMPDIR, or because gnuserv was compiled with USE_TMPDIR
turned off).
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Fri, 03 Jun 2011 18:40:57 +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 } |