Mercurial > hg > xemacs-beta
comparison src/input-method-xlib.c @ 424:11054d720c21 r21-2-20
Import from CVS: tag r21-2-20
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:26:11 +0200 |
parents | 41dbb7a9d5f2 |
children |
comparison
equal
deleted
inserted
replaced
423:28d9c139be4c | 424:11054d720c21 |
---|---|
138 * called from when XIM is destroying | 138 * called from when XIM is destroying |
139 */ | 139 */ |
140 static void | 140 static void |
141 IMDestroyCallback (XIM im, XPointer client_data, XPointer call_data) | 141 IMDestroyCallback (XIM im, XPointer client_data, XPointer call_data) |
142 { | 142 { |
143 struct frame *f = (struct frame *)client_data; | 143 struct frame *f = (struct frame *) client_data; |
144 struct device *d = XDEVICE (FRAME_DEVICE ((struct frame *)client_data)); | 144 struct device *d = XDEVICE (FRAME_DEVICE (f)); |
145 Lisp_Object frame_list = DEVICE_FRAME_LIST (XDEVICE (FRAME_DEVICE (f))); | |
146 Lisp_Object tail; | 145 Lisp_Object tail; |
147 struct frame *target_frame = NULL; | 146 |
148 | 147 DEVICE_FRAME_LOOP (tail, d) |
149 LIST_LOOP (tail, frame_list) | 148 { |
150 { | 149 struct frame *target_frame = XFRAME (XCAR (tail)); |
151 if (target_frame = XFRAME (XCAR (tail))) | 150 if (FRAME_X_XIC (target_frame)) |
152 { | 151 { |
153 if ( FRAME_X_XIC(target_frame) ) | 152 XDestroyIC (FRAME_X_XIC (target_frame)); |
154 { | 153 FRAME_X_XIC (target_frame) = NULL; |
155 XDestroyIC (FRAME_X_XIC(target_frame)); | |
156 FRAME_X_XIC (target_frame) = NULL; | |
157 } | |
158 } | 154 } |
159 } | 155 } |
160 | 156 |
161 #if 0 | 157 #if 0 |
162 if ( DEVICE_X_XIM (d) ) | 158 if ( DEVICE_X_XIM (d) ) |
174 * called from when FRAME is initializing | 170 * called from when FRAME is initializing |
175 */ | 171 */ |
176 static void | 172 static void |
177 IMInstantiateCallback (Display *dpy, XPointer client_data, XPointer call_data) | 173 IMInstantiateCallback (Display *dpy, XPointer client_data, XPointer call_data) |
178 { | 174 { |
179 struct frame *f = (struct frame *)client_data; | 175 struct frame *f = (struct frame *) client_data; |
180 struct device *d = XDEVICE (FRAME_DEVICE ((struct frame *)client_data)); | 176 struct device *d = XDEVICE (FRAME_DEVICE (f)); |
181 XIM xim; | 177 XIM xim; |
182 Widget w = FRAME_X_TEXT_WIDGET ((struct frame *)client_data); | 178 Widget w = FRAME_X_TEXT_WIDGET (f); |
183 Window win = XtWindow (w); | 179 Window win = XtWindow (w); |
184 XRectangle p_area = {0,0,1,1}, s_area = {0,0,1,1}; | 180 XRectangle p_area = {0,0,1,1}, s_area = {0,0,1,1}; |
185 XPoint spot = {0,0}; | 181 XPoint spot = {0,0}; |
186 XIMStyle style; | 182 XIMStyle style; |
187 XVaNestedList p_list, s_list; | 183 XVaNestedList p_list, s_list; |
223 XtGetApplicationNameAndClass (dpy, &name, &class); | 219 XtGetApplicationNameAndClass (dpy, &name, &class); |
224 DEVICE_X_XIM (d) = xim = XOpenIM (dpy, XtDatabase (dpy), name, class); | 220 DEVICE_X_XIM (d) = xim = XOpenIM (dpy, XtDatabase (dpy), name, class); |
225 | 221 |
226 /* destroy callback for im */ | 222 /* destroy callback for im */ |
227 ximcallback.callback = IMDestroyCallback; | 223 ximcallback.callback = IMDestroyCallback; |
228 ximcallback.client_data = (XPointer)f; | 224 ximcallback.client_data = (XPointer) f; |
229 XSetIMValues (xim, XNDestroyCallback, &ximcallback, NULL); | 225 XSetIMValues (xim, XNDestroyCallback, &ximcallback, NULL); |
230 } | 226 } |
231 else | 227 else |
232 { | 228 { |
233 xim = DEVICE_X_XIM (d); | 229 xim = DEVICE_X_XIM (d); |
309 | 305 |
310 /* Callback for when the frame was deleted (closed) */ | 306 /* Callback for when the frame was deleted (closed) */ |
311 static void | 307 static void |
312 XIM_delete_frame (Widget w, XtPointer client_data, XtPointer call_data) | 308 XIM_delete_frame (Widget w, XtPointer client_data, XtPointer call_data) |
313 { | 309 { |
314 struct frame *f = (struct frame *)client_data; | 310 struct frame *f = (struct frame *) client_data; |
315 struct device *d = XDEVICE (FRAME_DEVICE ((struct frame *)client_data)); | 311 struct device *d = XDEVICE (FRAME_DEVICE (f)); |
316 Display *dpy = DEVICE_X_DISPLAY (d); | 312 Display *dpy = DEVICE_X_DISPLAY (d); |
317 | 313 |
318 XUnregisterIMInstantiateCallback (dpy, NULL, NULL, NULL, | 314 XUnregisterIMInstantiateCallback (dpy, NULL, NULL, NULL, |
319 IMInstantiateCallback, (XtPointer)f); | 315 IMInstantiateCallback, (XPointer) f); |
320 | 316 |
321 if ( FRAME_X_XIC (f) ) | 317 if (FRAME_X_XIC (f)) |
322 { | 318 { |
323 XDestroyIC (FRAME_X_XIC(f)); | 319 XDestroyIC (FRAME_X_XIC (f)); |
324 FRAME_X_XIC (f) = NULL; | 320 FRAME_X_XIC (f) = NULL; |
325 } | 321 } |
326 return; | 322 return; |
327 } | 323 } |
328 | 324 |
333 XIM_init_frame (struct frame *f) | 329 XIM_init_frame (struct frame *f) |
334 { | 330 { |
335 struct device *d = XDEVICE (FRAME_DEVICE (f)); | 331 struct device *d = XDEVICE (FRAME_DEVICE (f)); |
336 | 332 |
337 XRegisterIMInstantiateCallback (DEVICE_X_DISPLAY (d), NULL, NULL, NULL, | 333 XRegisterIMInstantiateCallback (DEVICE_X_DISPLAY (d), NULL, NULL, NULL, |
338 IMInstantiateCallback, (XtPointer)f); | 334 IMInstantiateCallback, (XPointer) f); |
339 | 335 |
340 #if 0 | 336 #if 0 |
341 if ( FRAME_X_XIC (f) ) | 337 if ( FRAME_X_XIC (f) ) |
342 return; | 338 return; |
343 #endif | 339 #endif |