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