*** empty log message ***
authorhanda <handa>
Thu, 11 Mar 2010 13:30:20 +0000 (13:30 +0000)
committerhanda <handa>
Thu, 11 Mar 2010 13:30:20 +0000 (13:30 +0000)
global.mimx
xex.html
xex.js

index fcc5959..25c6023 100644 (file)
@@ -453,4 +453,4 @@ should not be used in a map of an input method.</gettext>
       </keyseq>
     </defcmd>
   </command-list>
-</input-method>
+</input-method>
\ No newline at end of file
index d6e3dfd..b62260f 100644 (file)
--- a/xex.html
+++ b/xex.html
@@ -16,7 +16,7 @@
 <h4>m17n-lib input method in Javascript</h4>
 <table>
 <tr><th>textarea</th><td><textarea id="TEXTAREA" name="TEXTAREA"></textarea></td></tr>
-<tr><th>text</th><td><form><input type="text"></form></td></tr></table>
+<tr><th>text</th><td><form><input type="text" id="TEXT"></form></td></tr></table>
 <div style="font-weight: bold;">debug Info</div>
 <table border="1">
 <tr><th>key</th><th>status</th><th>keycode</th><th>keymap</th><th>preedit</th></tr>
diff --git a/xex.js b/xex.js
index a1d38c0..08930d8 100644 (file)
--- a/xex.js
+++ b/xex.js
@@ -2812,7 +2812,7 @@ MIM.im_domain.DefType (MIM.State.prototype);
            {
              this.commit ();
              this.keys.val.splice (0, this.key_head);
-             this.key_head = 0;
+             this.key_head = this.state_key_head = this.commit_key_head0;
              this.prev_state = null;
            }
        }
@@ -2875,17 +2875,7 @@ MIM.im_domain.DefType (MIM.State.prototype);
        {
          this.keys.val.splice (0, this.commit_key_head);
          this.key_head -= this.commit_key_head;
-         if (this.key_head < 0)
-           {
-             Xex.Log ('RECOVER key_head');
-             this.key_head = 0;
-           }
          this.state_key_head -= this.commit_key_head;
-         if (this.state_key_head < 0)
-           {
-             Xex.Log ('RECOVER state_key_head');
-             this.state_key_head = 0;
-           }
          this.commit_key_head = 0;
        }
       if (this.key_unhandled)
@@ -3138,41 +3128,39 @@ MIM.update = function (target, ic)
   ic.range[0] += ic.produced.length;
   ic.range[1] = ic.range[0] + ic.preedit.length;
   MIM.set_caret (target, ic);
-  target.wait_update = false;
 };
 
 MIM.focus_in = function (event)
 {
   var target = event.target;
   var ic = target.mim_ic;
-  if (target.wait_focus_in);
+  if (ic.wait_update == true)
     {
       Xex.Log ("Focus in " + target.tagName + ' IGNORED');
       event.preventDefault ();
-      return;
+      return false;
     }
   Xex.Log ("Focus in " + target.tagName);
   ic.Filter (MIM.Key.FocusIn);
-  //target.removeEventListener (target, 'focus', MIM.focus_in);
-  target.wait_update = true;
-  setTimeout (MIM.update (target, ic), 100);
+  MIM.update (target, ic);
 }
 
 MIM.focus_out = function (event)
 {
   var target = event.target;
   var ic = target.mim_ic;
-  if (target.wait_focus_out)
+  function reset_update () { ic.wait_update = false; };
+  if (ic.wait_update == true)
     {
       Xex.Log ("Focus out " + target.tagName + ' IGNORED');
       event.preventDefault ();
-      return;
+      return false;
     }
   Xex.Log ("Focus out " + target.tagName);
   ic.Filter (MIM.Key.FocusOut);
-  //target.removeEventListener (target, 'blur', MIM.focus_out);
-  target.wait_update = true;
-  setTimeout (MIM.update (target, ic), 100);
+  ic.wait_update = true;
+  MIM.update (target, ic, true);
+  setTimeout (reset_update, 1000);
 };
 
 MIM.keydown = function (event)
@@ -3199,7 +3187,6 @@ MIM.keydown = function (event)
     }
   else
     {
-      while (target.wait_update);
       if (! MIM.get_range (target, ic))
        ic.reset ();
     }