Description of problem: Tested with non-shared Input mode, scim backend and PinYinKeyboard(romaised), noticed that it is not possible to remove any characters in the preedit buffer. Version-Release number of selected component (if applicable): scim-chewing-0.3.1-2 How reproducible: Always Steps to Reproduce: 1.set up SCIM as mentioned in the desc 2.activate IME, in gedit 3.enter hongmao (redhat) 4.enter Space 5.enter BackSpace Actual results: preedit buffer move forward 1 SPACE and preedit buffer becomes uneditable Expected results: remove one char in the buffer Additional info:
Created attachment 135189 [details] proposed patch this patch avoid strcpy() copying an over-length string (8 chars)to the destination (6 chars). the preedit buffer will be cleared if length of the input key set is longer than 6 characters.
And this is consistent with the behaviour of 0.2? Jserv mentioned some patch was committed to svn related to this I think but I didn't find it yet.
It hangs, that's why preedit is no longer editable. Changing the summary.
In communication with upstream.
Submitted bug to upstream: http://rt.openfoundry.org/Foundry/Project/Tracker/Display.html?Queue=271&id=23428
Created attachment 135528 [details] proposed patch Uses strncpy instead of strcpy. It just copies first 6 characters and ignores the remaining. Crashing avoided for stablity, but still need a better fix. BTW, the display of preedit buffer was not getting longer than 8 character length. On the background, preedit buffer was actually storing user inputs (able to test by input 10 characters at a row and press backspaces 3 times).
Built and pending for QC. Until upstream adopted this fix in their next release or provided a better solution, this package should has a higher stability from crashing.
Verified in latest FC6: # rpm -q scim-chewing scim-chewing-0.3.1-6.fc6 after step 3.enter hongmao (redhat), enter Space, preedit buffer get cleared, nothing displays
At this stage, chewing is not able to break input into two or more words. i.e. it will not recognise 'hongmao' as 'hong' and 'mao', it will just recognise that as 'hongmao' which is probably no match. All user could do at this stage is type 'hong' "space" 'mao' "space" which will show phrase (combination of more than 1 characters) if the table consist that. FYI, user need to press "enter" to commit after phrase found. ----- scim-chewing doesn't not hang for commit > 6 character after the fix.
It is the usual behavior since chewing still hasn't able to deal with cutting 'hongmao' into 'hong' and 'mao' and do matching. Verified and closed.