Commit 8c2683f3 authored by GoshaZotov's avatar GoshaZotov

changed function specialPaste

parent 62328afb
...@@ -8764,29 +8764,31 @@ ...@@ -8764,29 +8764,31 @@
WorksheetView.prototype.specialPaste = function (preSpecialPasteData, specialPasteData, props) { WorksheetView.prototype.specialPaste = function (preSpecialPasteData, specialPasteData, props) {
var api = window["Asc"]["editor"]; var api = window["Asc"]["editor"];
var t = this;
History.Create_NewPoint(); if(!specialPasteData)
History.StartTransaction();
//откатываемся до того, что было до вставки
if(preSpecialPasteData && preSpecialPasteData.data)
{
var tempProps = new Asc.SpecialPasteProps();
api.wb.clipboard.specialPasteProps = tempProps;
//меняем activeRange
if(specialPasteData && specialPasteData.activeRange)
{ {
this.model.selectionRange = specialPasteData.activeRange.clone(this.model); return;
} }
//не вызываю для отката api.wb.clipboard.pasteData, потому что внутри асинхронные методы - isLockedCells
var undoPreviousPaste = function()
{
//откатываем данные в ячейках //откатываем данные в ячейках
window["Asc"]["editor"].wb.clipboard.start_specialpaste(); var sBase64 = preSpecialPasteData.data.split('xslData;')[1];
api.wb.clipboard.pasteData(this, AscCommon.c_oAscClipboardDataFormat.Internal, preSpecialPasteData.data, null, null, true); var oBinaryFileReader = new AscCommonExcel.BinaryFileReader(true);
var tempWorkbook = new AscCommonExcel.Workbook();
pptx_content_loader.Start_UseFullUrl();
oBinaryFileReader.Read(sBase64, tempWorkbook);
window["Asc"]["editor"].wb.clipboard.pasteProcessor.activeRange = oBinaryFileReader.copyPasteObj.activeRange;
var pasteData = null;
if (tempWorkbook)
pasteData = tempWorkbook.aWorksheets[0];
if(pasteData)
{
t._pasteFromBinary(pasteData, null, null, api.wb.clipboard.specialPasteProps);
}
window["Asc"]["editor"].wb.clipboard.start_specialpaste();
window["Asc"]["editor"].wb.clipboard.start_paste();
//удаляем вставленные изображения //удаляем вставленные изображения
if(preSpecialPasteData.images) if(preSpecialPasteData.images)
{ {
...@@ -8799,19 +8801,35 @@ ...@@ -8799,19 +8801,35 @@
oObject.setBDeleted(true); oObject.setBDeleted(true);
} }
} }
window["Asc"]["editor"].wb.clipboard.end_paste(); };
//транзакция закроется в end_paste
History.Create_NewPoint();
History.StartTransaction();
window["Asc"]["editor"].wb.clipboard.start_specialpaste();
window["Asc"]["editor"].wb.clipboard.start_paste();
//откатываемся до того, что было до вставки
if(preSpecialPasteData && preSpecialPasteData.data)
{
var tempProps = new Asc.SpecialPasteProps();
api.wb.clipboard.specialPasteProps = tempProps;
//меняем activeRange
if(specialPasteData.activeRange)
{
this.model.selectionRange = specialPasteData.activeRange.clone(this.model);
}
undoPreviousPaste();
} }
//далее специальная вставка //далее специальная вставка
if(specialPasteData)
{
window["Asc"]["editor"].wb.clipboard.start_specialpaste();
api.wb.clipboard.specialPasteProps = props; api.wb.clipboard.specialPasteProps = props;
//TODO пока для закрытия транзации выставляю флаг. пересмотреть! //TODO пока для закрытия транзации выставляю флаг. пересмотреть!
window["Asc"]["editor"].wb.clipboard.bIsEndTransaction = true; window["Asc"]["editor"].wb.clipboard.bIsEndTransaction = true;
api.wb.clipboard.pasteData(this, specialPasteData._format, specialPasteData.data1, specialPasteData.data2, specialPasteData.text_data, true); api.wb.clipboard.pasteData(this, specialPasteData._format, specialPasteData.data1, specialPasteData.data2, specialPasteData.text_data, true);
}
}; };
WorksheetView.prototype._pasteData = function (isLargeRange, fromBinary, val, bIsUpdate, canChangeColWidth) { WorksheetView.prototype._pasteData = function (isLargeRange, fromBinary, val, bIsUpdate, canChangeColWidth) {
...@@ -9275,7 +9293,7 @@ ...@@ -9275,7 +9293,7 @@
var arrFormula = []; var arrFormula = [];
var pasteRange = window["Asc"]["editor"].wb.clipboard.pasteProcessor.activeRange; var pasteRange = window["Asc"]["editor"].wb.clipboard.pasteProcessor.activeRange;
var activeCellsPasteFragment = AscCommonExcel.g_oRangeCache.getAscRange(pasteRange); var activeCellsPasteFragment = typeof pasteRange === "string" ? AscCommonExcel.g_oRangeCache.getAscRange(pasteRange) : pasteRange;
var rMax = (activeCellsPasteFragment.r2 - activeCellsPasteFragment.r1) + arn.r1 + 1; var rMax = (activeCellsPasteFragment.r2 - activeCellsPasteFragment.r1) + arn.r1 + 1;
var cMax = (activeCellsPasteFragment.c2 - activeCellsPasteFragment.c1) + arn.c1 + 1; var cMax = (activeCellsPasteFragment.c2 - activeCellsPasteFragment.c1) + arn.c1 + 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment