{
char *locale;
- XtSetLanguageProc (NULL, (XtLanguageProc) NULL, NULL);
+ /* 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,
+ we should really do it manually and not use Xlib's dumb default routine */
+ /*XtSetLanguageProc (NULL, (XtLanguageProc) NULL, NULL);*/
if ((locale = setlocale (LC_ALL, "")) == NULL)
{
stderr_out ("Can't set locale.\n");
/* 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)
{
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[] =
{
NULL);
XmFontListEntryFree (&fontlistEntry);
+
+ XtAddCallback (w, XmNdestroyCallback, XIM_delete_frame, (XtPointer) w);
}
void
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)