Opened 18 years ago

Closed 17 years ago

#145 closed bug (fixed)

The judgment of "be:confirmed" is too early. — at Version 15

Reported by: bxi07354@… Owned by: jackburton
Priority: normal Milestone: R1
Component: - General Version:
Keywords: Cc: diver
Blocked By: Blocking:
Platform: All

Description (last modified by jackburton)

src/kits/interface/BTextView/TextView.cpp

BTextView::HandleInputMethodChanged(BMessage *message)

After InsertText() is done, it is necessary to judge "be:confirmed".

Change History (16)

comment:1 by jackburton, 18 years ago

More details please.

comment:2 by jackburton, 18 years ago

Summary: The judgment of "be:confirmed" is too early. The judgment of "be:confirmed" is too early.

comment:3 by bxi07354@…, 18 years ago

B_INPUT_METHOD_EVENT HandleInputMethodChanged


CURRENT

  1. be:string="a" be:confirmed="false" InsertText("a");
  2. be:string="ab" be:confirmed="false" DeleteText("a"; InsertText("ab");
  3. be:string="abc" be:confirmed="true" return; OPINION
  4. be:string="a" be:confirmed="false" InsertText("a");
  5. be:string="ab" be:confirmed="false" DeleteText("a"; InsertText("ab");
  6. be:string="abc" be:confirmed="true" DeleteText("ab"; InsertText("abc")

comment:4 by jackburton, 18 years ago

Sorry, I meant: Why do you think we should change how it's done ? Does this cause any problem at all? IIRC me and Andrew (Bachmann) came to the current solution after careful testing with a couple input add-ons.

comment:5 by jackburton, 18 years ago

  1. be:string="a" be:confirmed="false" InsertText("a");
  2. be:string="ab" be:confirmed="false" DeleteText("a"; InsertText("ab");
  3. be:string="abc" be:confirmed="true" return;

Which IME is causing this ? With the ones we tested, the sequence is:

  1. be:string="a" be:confirmed="false" InsertText("a");
  2. be:string="ab" be:confirmed="false" DeleteText("a"; InsertText("ab");
  3. be:string="abc" be:confirmed="false" DeleteText("ab"; InsertText("abc");
  4. be:string="abc" be:confirmed="true" return;

comment:6 by bxi07354@…, 18 years ago

Sorry. I cannot explain in English. example1. be:string="a" be:confirmed="false" InsertText("a"); 2. be:string="bc" be:confirmed="false" DeleteText("a"); InsertText("bc"); 3. be:string="edf" be:confirmed="false" DeleteText("bc"); InsertText("def"); 4. be:string="" be:confirmed="true" DeleteText("def");be:confirmed="true" shows present be:string. It is not previous one be:string. bool confirmed = false; if (message->FindBool("be:confirmed", &confirmed) == B_OK && confirmed) { fInline->SetActive(false); Refresh(0, fInline->Offset() + fInline->Length(), true, false); return; }It is moved to the 4470th line.

comment:7 by jackburton, 18 years ago

What I'm trying to explain is that this implementation works fine in BeOS R5, tested with the R5 IME and with another IME which I can't remember. If isn't working correctly in Haiku, maybe it's an issue of our input server or the IME which you're testing with (I suppose it's Canna).

comment:8 by bxi07354@…, 18 years ago

This problem is not in canna. It becomes a problem by skkIM. (http://bebits.com/app/675)

comment:9 by jackburton, 18 years ago

Status: newassigned

comment:10 by jackburton, 18 years ago

I'll try to have a look.

comment:11 by jackburton, 18 years ago

Owner: changed from bpmagic@… to jackburton

comment:12 by korli, 18 years ago

Could you provide a patch ("diff -u") ? :)

comment:13 by jackburton, 18 years ago

Jerome, please don't apply any patch yet. As you can see in the svn history, in rev 9761 we were handling the confirmation later, but we changed it in rev 9759 because of problems with some IME.

by bxi07354@…, 18 years ago

Attachment: TextView.cpp.patch added

TextView.cpp

comment:14 by diver, 18 years ago

Cc: diver added

comment:15 by jackburton, 17 years ago

Description: modified (diff)
Platform: All
Resolution: fixed
Status: assignedclosed

Fixed by Axel in svn.

Note: See TracTickets for help on using tickets.