Commit 2161baeb authored by Alexander.Trofimov's avatar Alexander.Trofimov

fix bug 33457

parent e560abee
...@@ -1355,84 +1355,101 @@ var editor; ...@@ -1355,84 +1355,101 @@ var editor;
this.collaborativeEditing.endCollaborationEditing(); this.collaborativeEditing.endCollaborationEditing();
}; };
// End Load document // End Load document
spreadsheet_api.prototype._openDocumentEndCallback = function() { spreadsheet_api.prototype._openDocumentEndCallback = function () {
// Не инициализируем дважды // Не инициализируем дважды
if (this.DocumentLoadComplete) { if (this.DocumentLoadComplete) {
return; return;
} }
this.wb = new AscCommonExcel.WorkbookView(this.wbModel, this.controller, this.handlers, this.HtmlElement, this.topLineEditorElement, this, this.collaborativeEditing, this.fontRenderingMode); this.wb = new AscCommonExcel.WorkbookView(this.wbModel, this.controller, this.handlers, this.HtmlElement,
this.topLineEditorElement, this, this.collaborativeEditing, this.fontRenderingMode);
if (this.isMobileVersion) { if (this.isMobileVersion) {
this.wb.defaults.worksheetView.halfSelection = true; this.wb.defaults.worksheetView.halfSelection = true;
this.wb.defaults.worksheetView.activeCellBorderColor = new CColor(79, 158, 79); this.wb.defaults.worksheetView.activeCellBorderColor = new CColor(79, 158, 79);
var _container = document.getElementById(this.HtmlElementName); var _container = document.getElementById(this.HtmlElementName);
if (_container) if (_container) {
_container.style.overflow = "hidden"; _container.style.overflow = "hidden";
this.wb.MobileTouchManager = new AscCommonExcel.CMobileTouchManager({ eventsElement : "cell_mobile_element" }); }
this.wb.MobileTouchManager.Init(this); this.wb.MobileTouchManager = new AscCommonExcel.CMobileTouchManager({eventsElement: "cell_mobile_element"});
this.wb.MobileTouchManager.Init(this);
// input context must be created!!! // input context must be created!!!
var _areaId = AscCommon.g_inputContext.HtmlArea.id; var _areaId = AscCommon.g_inputContext.HtmlArea.id;
var _element = document.getElementById(_areaId); var _element = document.getElementById(_areaId);
_element.parentNode.parentNode.style.zIndex = 10; _element.parentNode.parentNode.style.zIndex = 10;
this.wb.MobileTouchManager.initEvents(AscCommon.g_inputContext.HtmlArea.id); this.wb.MobileTouchManager.initEvents(AscCommon.g_inputContext.HtmlArea.id);
} }
this.DocumentLoadComplete = true; this.DocumentLoadComplete = true;
this.asc_CheckGuiControlColors(); this.asc_CheckGuiControlColors();
this.sendColorThemes(this.wbModel.theme); this.sendColorThemes(this.wbModel.theme);
this.asc_ApplyColorScheme(false); this.asc_ApplyColorScheme(false);
this.sendStandartTextures(); this.sendStandartTextures();
this.sendMathToMenu(); this.sendMathToMenu();
// Применяем пришедшие при открытии изменения // Применяем пришедшие при открытии изменения
this._applyFirstLoadChanges(); this._applyFirstLoadChanges();
// Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и) // Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и)
for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i) { for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i) {
this.arrPreOpenLocksObjects[i](); this.arrPreOpenLocksObjects[i]();
} }
this.arrPreOpenLocksObjects = []; this.arrPreOpenLocksObjects = [];
// Меняем тип состояния (на никакое) // Меняем тип состояния (на никакое)
this.advancedOptionsAction = c_oAscAdvancedOptionsAction.None; this.advancedOptionsAction = c_oAscAdvancedOptionsAction.None;
// Были ошибки при открытии, посылаем предупреждение // Были ошибки при открытии, посылаем предупреждение
if (0 < this.wbModel.openErrors.length) { if (0 < this.wbModel.openErrors.length) {
this.sendEvent('asc_onError', c_oAscError.ID.OpenWarning, c_oAscError.Level.NoCritical); this.sendEvent('asc_onError', c_oAscError.ID.OpenWarning, c_oAscError.Level.NoCritical);
} }
//this.asc_Resize(); // Убрал, т.к. сверху приходит resize (http://bugzilla.onlyoffice.com/show_bug.cgi?id=14680) //this.asc_Resize(); // Убрал, т.к. сверху приходит resize (http://bugzilla.onlyoffice.com/show_bug.cgi?id=14680)
}; };
// Переход на диапазон в листе // Переход на диапазон в листе
spreadsheet_api.prototype._asc_setWorksheetRange = function(val) { spreadsheet_api.prototype._asc_setWorksheetRange = function (val) {
// Получаем sheet по имени // Получаем sheet по имени
var ws = this.wbModel.getWorksheetByName(val.asc_getSheet()); var ranges = null, ws;
if (!ws) { var sheet = val.asc_getSheet();
this.handlers.trigger("asc_onHyperlinkClick", null); if (!sheet) {
return; ranges = AscCommonExcel.getRangeByRef(val.asc_getLocation(), this.wbModel.getActiveWs(), true);
} else if (ws.getHidden()) { if (ranges = ranges[0]) {
return; ws = ranges.worksheet;
} }
// Индекс листа } else {
var sheetIndex = ws.getIndex(); ws = this.wbModel.getWorksheetByName(sheet);
// Если не совпали индекс листа и индекс текущего, то нужно сменить }
if (this.asc_getActiveWorksheetIndex() !== sheetIndex) { if (!ws) {
// Меняем активный лист this.handlers.trigger("asc_onHyperlinkClick", null);
this.asc_showWorksheet(sheetIndex); return;
// Посылаем эвент о смене активного листа } else if (ws.getHidden()) {
this.handlers.trigger("asc_onActiveSheetChanged", sheetIndex); return;
} }
var range = ws.getRange2(val.asc_getRange()); // Индекс листа
if (null !== range) { var sheetIndex = ws.getIndex();
this.wb._onSetSelection(range.getBBox0(), /*validRange*/ true); // Если не совпали индекс листа и индекс текущего, то нужно сменить
} if (this.asc_getActiveWorksheetIndex() !== sheetIndex) {
}; // Меняем активный лист
this.asc_showWorksheet(sheetIndex);
// Посылаем эвент о смене активного листа
this.handlers.trigger("asc_onActiveSheetChanged", sheetIndex);
}
var range;
if (ranges) {
range = ranges.bbox;
} else {
range = ws.getRange2(val.asc_getRange());
if (range) {
range = range.getBBox0();
}
}
this.wb._onSetSelection(range, /*validRange*/ true);
};
spreadsheet_api.prototype.onSaveCallback = function(e) { spreadsheet_api.prototype.onSaveCallback = function(e) {
var t = this; var t = this;
......
...@@ -2356,7 +2356,7 @@ Hyperlink.prototype = { ...@@ -2356,7 +2356,7 @@ Hyperlink.prototype = {
this.Location = Location; this.Location = Location;
this.LocationSheet = this.LocationRange = null; this.LocationSheet = this.LocationRange = null;
if (null != this.Location) { if (null !== this.Location) {
var result = parserHelp.parse3DRef(this.Location); var result = parserHelp.parse3DRef(this.Location);
if (null !== result) { if (null !== result) {
this.LocationSheet = result.sheet; this.LocationSheet = result.sheet;
...@@ -3885,7 +3885,7 @@ function IntervalTreeRBNode(low, high, storedValue){ ...@@ -3885,7 +3885,7 @@ function IntervalTreeRBNode(low, high, storedValue){
this.maxHigh = this.high; this.maxHigh = this.high;
this.minLow = this.key; this.minLow = this.key;
} }
IntervalTreeRBNode.prototype = Object.create(TreeRBNode.prototype); IntervalTreeRBNode.prototype = Object.create(TreeRBNode.prototype);
IntervalTreeRBNode.prototype.constructor = IntervalTreeRBNode; IntervalTreeRBNode.prototype.constructor = IntervalTreeRBNode;
IntervalTreeRBNode.prototype.isEqual = function (x) { IntervalTreeRBNode.prototype.isEqual = function (x) {
return this.key == x.key && this.high == x.high; return this.key == x.key && this.high == x.high;
...@@ -4184,7 +4184,7 @@ TreeRB.prototype = { ...@@ -4184,7 +4184,7 @@ TreeRB.prototype = {
function IntervalTreeRB(){ function IntervalTreeRB(){
TreeRB.call(this); TreeRB.call(this);
} }
IntervalTreeRB.prototype = Object.create(TreeRB.prototype); IntervalTreeRB.prototype = Object.create(TreeRB.prototype);
IntervalTreeRB.prototype.constructor = IntervalTreeRB; IntervalTreeRB.prototype.constructor = IntervalTreeRB;
IntervalTreeRB.prototype._init = function (x) { IntervalTreeRB.prototype._init = function (x) {
this.nil = new IntervalTreeRBNode(); this.nil = new IntervalTreeRBNode();
......
...@@ -7296,8 +7296,8 @@ ...@@ -7296,8 +7296,8 @@
} }
var oRes = null; var oRes = null;
var type = range.type; var type = range.type;
if (type == c_oAscSelectionType.RangeCells || type == c_oAscSelectionType.RangeCol || if (type === c_oAscSelectionType.RangeCells || type === c_oAscSelectionType.RangeCol ||
type == c_oAscSelectionType.RangeRow || type == c_oAscSelectionType.RangeMax) { type === c_oAscSelectionType.RangeRow || type === c_oAscSelectionType.RangeMax) {
this.cleanSelection(); this.cleanSelection();
this.model.selectionRange.assign2(range); this.model.selectionRange.assign2(range);
this._fixSelectionOfMergedCells(); this._fixSelectionOfMergedCells();
...@@ -11236,33 +11236,32 @@ ...@@ -11236,33 +11236,32 @@
this._isLockedCells(aReplaceCells[options.indexInArray], /*subType*/null, onReplaceCallback); this._isLockedCells(aReplaceCells[options.indexInArray], /*subType*/null, onReplaceCallback);
}; };
WorksheetView.prototype.findCell = function (reference, isViewMode) { WorksheetView.prototype.findCell = function (reference, isViewMode) {
var mc, ranges = AscCommonExcel.getRangeByRef(reference, this.model, true); var mc, ranges = AscCommonExcel.getRangeByRef(reference, this.model, true);
if (0 === ranges.length && !isViewMode) { if (0 === ranges.length && !isViewMode) {
/*TODO: сделать поиск по названиям автофигур, должен искать до того как вызвать поиск по именованным диапазонам*/ /*TODO: сделать поиск по названиям автофигур, должен искать до того как вызвать поиск по именованным диапазонам*/
if (this.collaborativeEditing.getGlobalLock() || !this.handlers.trigger("getLockDefNameManagerStatus")) { if (this.collaborativeEditing.getGlobalLock() || !this.handlers.trigger("getLockDefNameManagerStatus")) {
this.handlers.trigger("onErrorEvent", c_oAscError.ID.LockCreateDefName, c_oAscError.Level.NoCritical); this.handlers.trigger("onErrorEvent", c_oAscError.ID.LockCreateDefName, c_oAscError.Level.NoCritical);
this._updateSelectionNameAndInfo(); this._updateSelectionNameAndInfo();
return true; return true;
} }
// ToDo multiselect defined names // ToDo multiselect defined names
var selectionLast = this.model.selectionRange.getLast(); var selectionLast = this.model.selectionRange.getLast();
mc = selectionLast.isOneCell() ? this.model.getMergedByCell(selectionLast.r1, selectionLast.c1) : null; mc = selectionLast.isOneCell() ? this.model.getMergedByCell(selectionLast.r1, selectionLast.c1) : null;
var defName = this.model.workbook.editDefinesNames(null, var defName = this.model.workbook.editDefinesNames(null, new Asc.asc_CDefName(reference,
new Asc.asc_CDefName(reference, parserHelp.get3DRef(this.model.getName(), parserHelp.get3DRef(this.model.getName(), (mc || selectionLast).getAbsName())));
(mc || selectionLast).getAbsName())));
if (defName) { if (defName) {
this._isLockedDefNames(null, defName.getNodeId()); this._isLockedDefNames(null, defName.getNodeId());
} else { } else {
this.handlers.trigger("asc_onError", c_oAscError.ID.InvalidReferenceOrName, this.handlers.trigger("asc_onError", c_oAscError.ID.InvalidReferenceOrName,
c_oAscError.Level.NoCritical); c_oAscError.Level.NoCritical);
} }
} }
return ranges; return ranges;
}; };
/* Ищет дополнение для ячейки */ /* Ищет дополнение для ячейки */
WorksheetView.prototype.getCellAutoCompleteValues = function (cell, maxCount) { WorksheetView.prototype.getCellAutoCompleteValues = function (cell, maxCount) {
......
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