We've made a fix on the new UniGUI version (function sync removed):
function afterrender(sender, eOpts)
{
sender.activated = true;
var me = sender;
me.selectedText = "";
setTimeout( function(){
me.getDoc().onselectionchange = function(e) {
var doc = me.getDoc(),
clip = "",
selDocFrag;
var txt = '',
hasHTML = false,
selNodes = [],
ret, html = '',
textParse = '';
//if (me.win.getSelection || doc.getSelection) {
if (doc.getSelection || me.win.getSelection) {
// FF, Chrome, Safari
var sel = doc.getSelection();
if (!sel) {
sel = me.win.getSelection();
}
if (!sel.isCollapsed){
if (clip) {
selDocFrag = sel.getRangeAt(0).extractContents();
} else {
selDocFrag = sel.getRangeAt(0).cloneContents();
}
Ext.each(selDocFrag.childNodes, function(n) {
if (n.nodeType !== 3) {
hasHTML = true;
}
});
if (hasHTML) {
var div = document.createElement('div');
div.appendChild(selDocFrag);
html = div.innerHTML;
txt = sel + '';
var children = sel.getRangeAt(0).cloneContents().childNodes;
for (var i = 0; i < children.length; i++) {
var child = children[i];
textParse += child.textContent;
if (child.nodeName === 'DIV'){
textParse += '\r\n';
}
}
} else {
html = txt = selDocFrag.textContent;
}
}
ret = {
textContent: txt,
hasHTML: hasHTML,
html: html
};
} else if (doc.selection) {
// IE
me.win.focus();
txt = doc.selection.createRange();
if (txt.text !== txt.htmlText) {
hasHTML = true;
}
ret = {
textContent: txt.text,
hasHTML: hasHTML,
html: txt.htmlText
};
} else {
ret = {
textContent: ''
};
}
me.selectedText = textParse || ret.textContent;
return ret;
};
},1000);
}