[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