Browse Source

fix(fix wrap bug): alt + enter twice bug

master
wbfsa 5 years ago
parent
commit
789bab5e5d
  1. 52
      src/controllers/inlineString.js
  2. 4
      src/controllers/keyboard.js
  3. 35
      src/global/cursorPos.js
  4. 6
      src/global/formula.js
  5. 4
      src/global/getRowlen.js

52
src/controllers/inlineString.js

@ -202,7 +202,7 @@ export function updateInlineStringFormat(cell, attr, value, $input){
}
}
export function enterKeyControll(){
export function enterKeyControll(cell){
var w = window.getSelection();
if(w.type=="None"){
@ -228,7 +228,12 @@ export function enterKeyControll(){
if($textEditor.length>0){
let startSpan = startContainer.parentNode;
let startSpanIndex = $textEditor.find("span").index(startSpan);
if(startContainer.id=="luckysheet-rich-text-editor"){
startSpan = $(startContainer).find("span");
startSpan = startSpan.get(startSpan.length-1);
startOffset = startSpan.innerHTML.length;
}
// let startSpanIndex = $textEditor.find("span").index(startSpan);
if(range.collapsed===false){
range.deleteContents();
}
@ -240,15 +245,48 @@ export function enterKeyControll(){
sleft = startContent.substring(s1, s2);
sright = startContent.substring(s2, startContent.length);
let cont = "<span style='"+ startSpan.style.cssText +"'>" + sleft + "\n" + sright + "</span>";
let spanIndex;
let spanIndex,cont;
if(startContainer.parentNode.tagName=="SPAN"){
spanIndex = $textEditor.find("span").index(startSpan);
let textSpan = $textEditor.find("span");
spanIndex = textSpan.index(startSpan);
if((spanIndex==textSpan.length-1) && sright==""){
let txt = textSpan[spanIndex].innerHTML;
if(txt.substr(txt.length-1, 1)=="\n"){
cont = "<span style='"+ startSpan.style.cssText +"'>" + sleft + "\n" + "</span>";
}
else{
cont = "<span style='"+ startSpan.style.cssText +"'>" + sleft + "\n\n" + "</span>";
}
}
else{
cont = "<span style='"+ startSpan.style.cssText +"'>" + sleft + "\n" + sright + "</span>";
}
$(startSpan).replaceWith(cont);
}
else{
spanIndex = 0;
$(startSpan).html(cont);
let cssText = getFontStyleByCell(cell);
if(sright==""){
cont = "<span style='"+ cssText +"'>" + sleft + "\n\n" + "</span>";
}
else{
cont = "<span style='"+ cssText +"'>" + sleft + "\n" + sright + "</span>";
}
if(startContainer.id=="luckysheet-rich-text-editor"){
$(startSpan).replaceWith(cont);
let textSpan = $textEditor.find("span");
spanIndex = textSpan.length-1;
startOffset = textSpan.get(spanIndex).innerHTML.length-1;
}
else{
$(startSpan).html(cont);
spanIndex = 0;
}
}
selectTextContentCollapse($textEditor.find("span").get(spanIndex), startOffset+1);

4
src/controllers/keyboard.js

@ -307,7 +307,9 @@ export function keyboardInitial(){
let $inputbox = $("#luckysheet-input-box");
if((altKey || event.metaKey) && kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0){
enterKeyControll();
let last = Store.luckysheet_select_save[Store.luckysheet_select_save.length - 1];
let row_index = last["row_focus"], col_index = last["column_focus"];
enterKeyControll(Store.flowdata[row_index][col_index]);
event.preventDefault();
}
else if (kcode == keycode.ENTER && parseInt($inputbox.css("top")) > 0) {

35
src/global/cursorPos.js

@ -64,8 +64,10 @@ function selectTextDom(ele){
if (window.getSelection) {
let range = document.createRange();
range.selectNodeContents(ele);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
if(range.startContainer && isInPage(range.startContainer)){
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
else if (document.selection) {
let range = document.body.createTextRange();
@ -80,8 +82,10 @@ function selectTextContent(ele){
var content=ele.firstChild;
range.setStart(content,0);
range.setEnd(content,content.length);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
if(range.startContainer && isInPage(range.startContainer)){
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
else if (document.selection) {
let range = document.body.createTextRange();
@ -96,8 +100,10 @@ function selectTextContentCross(sEle, eEle){
var sContent=sEle.firstChild, eContent=eEle.firstChild;
range.setStart(sContent,0);
range.setEnd(eContent,eContent.length);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
if(range.startContainer && isInPage(range.startContainer)){
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
}
@ -105,13 +111,26 @@ function selectTextContentCollapse(sEle, index){
if (window.getSelection) {
let range = document.createRange();
var sContent=sEle.firstChild;
if(index>sContent.length){
index=sContent.length;
}
else if(index<0){
index = 0;
}
range.setStart(sContent,index);
range.collapse(true);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
if(range.startContainer && isInPage(range.startContainer)){
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
}
function isInPage(node) {
return (node === document.body) ? false : document.body.contains(node);
}
export {
luckysheetRangeLast,
getCursortPosition,

6
src/global/formula.js

@ -888,14 +888,16 @@ const luckysheetformula = {
let $cell = _this.getrangeseleciton();
_this.searchFunctionCell = $cell;
if ($cell == null || $editer == null) {
return;
}
let inputContent = $editer.text();
let searchtxt = $cell.text().toUpperCase();
let reg = /^[a-zA-Z]|[a-zA-Z_]+$/;
if (!reg.test(searchtxt)) {
if (!reg.test(searchtxt) || inputContent.substr(0, 1)!="=") {
return;
}

4
src/global/getRowlen.js

@ -338,7 +338,7 @@ function getCellTextInfo(cell , ctx, option){
for(let x=0;x<splitArr.length;x++){
let newValue = splitArr[x];
if(newValue==""){
if(newValue=="" && x!=splitArr.length-1){
inlineStringArr.push({
fontset:scfontset,
fc:fc==null?"#000":fc,
@ -366,7 +366,7 @@ function getCellTextInfo(cell , ctx, option){
}
if(x!=splitArr.length-1 && !(preNewValue=="" && newValue=="") ){
if(x!=splitArr.length-1 && preNewValue!="" ){
inlineStringArr.push({
fontset:scfontset,
fc:fc==null?"#000":fc,

Loading…
Cancel
Save