[SCIM] gtk IM & reset ...

michael meeks mmeeks at novell.com
Mon Dec 13 07:54:05 PST 2004


Hi guys,

	So - I'm having some acutely painful experience with SCIM & it's
(apparent) problems with it's implementation of gtk_im_context_reset:

extras/gtk2_immodule/gtkimcontextscim.cxx (gtk_im_context_scim_reset):

static void
gtk_im_context_scim_reset (GtkIMContext *context)
{
    SCIM_DEBUG_FRONTEND(1) << "gtk_im_context_scim_reset...\n";

    GtkIMContextSCIM *context_scim = GTK_IM_CONTEXT_SCIM (context);

    if (context_scim && context_scim->impl && context_scim ==
_focused_ic) {
        panel_prepare_transaction (context_scim);
        _backend->reset (context_scim->impl->id);
        panel_send_request (context_scim);
    }
}

	Contrast this to:

gtk+/modules/input/gtkimcontextxim.cxx (gtk_im_context_xim_reset):

	Which explicitely emits a 'Preedit End' type sequence: ie. a commit
followed by a 'preedit_changed' to a 0 length string.

	Worse - than just not emitting the signals to commit / empty the
pre-edit - it appears, that the _backend->reset doesn't reset the remote
IM's pre-edit buffer; hence the client/server are in a confused state
wrt. what is in a pre-edit buffer etc.

	This causes myriad problems; eg. on 'random mouse click' (cursor
movement) OO.o will attempt to first reset the IM / commit the current
pre-edit. While the pre-edit is committed - it appears to stay there -
and gets extended by subsequent, key-strokes (in a new place); and this
is just one example of highly sub-optimal behavior ;-)

	Am I mis-understanding something ? or is this broken ? also - it
appears the download page for scim is defunct:

	The links from here
		 http://www.freedesktop.org/wiki/Software_2fScimDownload

	ugly <br> tags aside, point to inaccessible URIs - which made reading
your code somewhat more painful than necessary :-)

	Thanks,

		Michael.

-- 
 michael.meeks at novell.com  <><, Pseudo Engineer, itinerant idiot



More information about the scim mailing list