selectors["@>"] = selectors["@last"] = new MIM.Selector ('@>');
selectors["@-"] = selectors["@previous"] = new MIM.Selector ('@-');
selectors["@+"] = selectors["@next"] = new MIM.Selector ('@+');
- selectors["@["] = selectors["@previous-candidate-change"]
- = new MIM.Selector ('@[');
- selectors["@]"] = selectors["@next-candidate-change"]
- = new MIM.Selector ('@]');
+ selectors["@["] = selectors["@previous-group"] = new MIM.Selector ('@[');
+ selectors["@]"] = selectors["@next-group"] = new MIM.Selector ('@]');
MIM.Selector.prototype.Parser = function (domain, node)
{
{
this.commit ();
this.keys.val.splice (0, this.key_head);
- this.key_head = this.state_key_head = this.commit_key_head0;
+ this.key_head = this.state_key_head = this.commit_key_head = 0;
this.prev_state = null;
}
}
{
if (! this.active)
{
+ Xex.Log ("active = false");
this.key_unhandled = true;
this.unhandled_key = key;
return false;
this.key_unhandled = false;
this.keys.val.push (key);
var count = 0;
+ Xex.Log ("keyhead=" + this.key_head + " len="+this.keys.val.length);
while (this.key_head < this.keys.val.length)
{
if (! handle_key.call (this))
}
};
-MIM.ignore_focus = false;
-
MIM.update = function (target, ic)
{
var text = target.value;
MIM.set_caret (target, ic);
};
+(function () {
+ var style_props = {
+ width: 'width',
+ height: 'height',
+ padingLeft: 'padding-left',
+ paddingRight: 'padding-right',
+ paddingTop: 'padding-top',
+ paddintBottom: 'padding-bottom',
+ borderLeftStyle: 'border-left-style',
+ borderRightStyle: 'border-right-style',
+ borderTopStyle: 'border-top-style',
+ borderBottomStyle: 'border-bottom-style',
+ borderLeftWidth: 'border-left-width',
+ borderRightWidth: 'border-right-width',
+ borderTopWidth: 'border-top-width',
+ borderBottomWidth: 'border-bottom-width',
+ fontFamily: 'font-family',
+ fontSize: 'font-size',
+ lineHeight: 'line-height',
+ letterSpacing: 'letter-spacing',
+ wordSpacing: 'word-spacing' };
+
+ function copy_style (from, to)
+ {
+ var from_style = getComputedStyle(from,'');
+
+ for(var name in style_props)
+ to.style[name] = from_style.getPropertyValue (style_props[name]);
+
+ to.style.left = from.offsetLeft + 'px';
+ to.style.top = from.offsetTop + 'px';
+ to.style.width = from.offsetWidth;
+ to.style.height = from.offsetHeight;
+ }
+
+ MIM.show = function (target, ic)
+ {
+ if (! ic.div_node)
+ {
+ ic.target_top = 0;
+ ic.target_left = 0;
+ for (var elm = ic.target.offsetParent; elm; elm = elm.offsetParent)
+ {
+ ic.target_top += elm.offsetTop;
+ ic.target_left += elm.offsetLeft;
+ }
+ ic.div_node = document.createElement ('div');
+ ic.div_node.style.visibility="hidden";
+ ic.div_node.style.position = "absolute";
+ document.getElementsByTagName ('body')[0].appendChild (ic.div_node);
+ ic.div_node_first = document.createElement ('span');
+ ic.div_node_last = document.createElement('span');
+ ic.div_node_last.innerHTML = '.';
+ ic.can_node = document.createElement ('div');
+ ic.can_node.appendChild (document.createTextNode ('1. abc'));
+ ic.can_node.appendChild (document.createTextNode ('2. def'));
+ ic.can_node.style.position = 'absolute';
+ ic.can_node.style.display = 'none';
+ document.getElementsByTagName ('body')[0].appendChild (ic.can_node);
+ }
+
+ copy_style (target, ic.div_node);
+ ic.div_node.innerHTML = '';
+ ic.div_node_first.innerHTML = target.value.substr (0, ic.range[0]);
+ ic.div_node.appendChild (ic.div_node_first);
+ ic.div_node.appendChild (ic.div_node_last);
+ Xex.Log (ic.div_node.firstChild.innerHTML);
+ var x = ic.target_left + ic.div_node.lastChild.offsetLeft;
+ var y = ic.target_top + ic.div_node.lastChild.offsetTop - target.scrollTop;
+ ic.can_node.style.left = x + 'px';
+ ic.can_node.style.top = y + 'px';
+ ic.can_node.style.display = 'block';
+ Xex.Log ("x:" + x + "px y:" + y + "px");
+ }
+}) ();
+
MIM.focus_in = function (event)
{
var target = event.target;
return;
if (! (target.type == "text" || target.type == "textarea"))
return;
- document.akey = event;
var ic = target.mim_ic;
if (! ic || ic.im != MIM.current)
if (! MIM.get_range (target, ic))
ic.reset ();
}
+ MIM.show (target, ic);
MIM.debug_print (event, ic);
ic.key = MIM.decode_key_event (event);
if (ic.key)
Xex.Log ("filtering " + ic.key);
try {
var result = ic.Filter (ic.key);
+ Xex.Log ("result = " + result);
} catch (e) {
Xex.Log ('Error:' + e);
throw (e);
} finally {
MIM.debug_print (event, ic);
}
+
return;
};
sk: { name: 'Slovak' },
sr: { name: 'Serbian' },
sv: { name: 'Swedish' },
- vi: { name: 'Vietnamese' },
yi: { name: 'Yiddish' } },
MiddleEast: {
ar: { name: 'Arabic' },
list = lang_category[cat][lang].list;
if (! list)
list = lang_category[cat][lang].list = {};
- break;
+ for (name in MIM.imlist[lang])
+ list[name] = MIM.imlist[lang][name];
}
- if (list)
- for (name in MIM.imlist[lang])
- list[name] = MIM.imlist[lang][name];
- else
+ if (! list)
for (name in MIM.imlist[lang])
Xex.Log ('no category ' + lang + '-' + name);
}
li.style.top = '0px';
li.style.listStyle = 'none';
li.menu_level = level;
- li.appendChild (document.createTextNode (text));
+ var nobr = document.createElement ('nobr');
+ nobr.innerHTML = text;
+ li.appendChild (nobr);
return li;
}
li.appendChild (sub);
menu.appendChild (li);
}
- document.mimmenu = menu;
lang_category = null;
}
menu.style.left = (event.clientX - 10) + "px";