X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Finput-method-motif.c;h=f51e4e71f8baf914b334d78bc870416fce67e3b4;hp=a1cb446c4f78d66d50295b9777f044fd994f70e5;hb=414b512c0774e67ba8e160b605447d862d3be166;hpb=fc475e6669a613cd6d98eb5511c749a23b63c7ac diff --git a/src/input-method-motif.c b/src/input-method-motif.c index a1cb446..f51e4e7 100644 --- a/src/input-method-motif.c +++ b/src/input-method-motif.c @@ -41,7 +41,7 @@ Initialize_Locale (void) { char *locale; - /* dverna - Nov. 98: ### DON'T DO THIS !!! The default XtLanguageProc + /* dverna - Nov. 98: #### DON'T DO THIS !!! The default XtLanguageProc routine calls setlocale(LC_ALL, lang) which fucks up our lower-level locale management, and especially the value of LC_NUMERIC. Anyway, since at this point, we don't know yet whether we're gonna need an X11 frame, @@ -94,6 +94,13 @@ XIM_init_device (struct device *d) /* Nothing to do */ } +/* Callback for the deleting frame. */ +static void +XIM_delete_frame (Widget w, XtPointer client_data, XtPointer call_data) +{ + XmImUnregister ((Widget) client_data); +} + void XIM_init_frame (struct frame *f) { @@ -115,9 +122,10 @@ XIM_init_frame (struct frame *f) default face, rather than foreground and background resources, or that the user can use set-frame-parameters to set xic attributes */ -#define res(name, class, representation, field, default_value) \ - { name, class, representation, sizeof(xim_resources.field), \ - XtOffsetOf(xim_resources_t, field), XtRString, default_value } +#define res(name, class, representation, field, default_value) \ + { name, class, representation, sizeof(xim_resources.field), \ + XtOffsetOf(xim_resources_t, field), \ + XtRString, (XtPointer) (default_value) } static XtResource resources[] = { @@ -151,6 +159,8 @@ XIM_init_frame (struct frame *f) NULL); XmFontListEntryFree (&fontlistEntry); + + XtAddCallback (w, XmNdestroyCallback, XIM_delete_frame, (XtPointer) w); } void @@ -161,7 +171,7 @@ XIM_SetGeometry (struct frame *f) void XIM_SetSpotLocation (struct frame *f, int x, int y) { - /* ### FIX: Must make sure spot fits within Preedit Area */ + /* #### FIX: Must make sure spot fits within Preedit Area */ XPoint *spot = &(FRAME_X_XIC_SPOT (f)); if (spot->x == (short) x && spot->y == (short) y)