Commit ae2a2938 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

Теперь zoom на каждом листе одинаковый (Решили сделать так, чтобы было только...

Теперь zoom на каждом листе одинаковый (Решили сделать так, чтобы было только 2 менеджера шрифтов на весь документ)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@47332 954022d7-b5bf-4e40-9824-e11837661b57
parent 41a18a78
...@@ -80,6 +80,8 @@ ...@@ -80,6 +80,8 @@
this.fmgrGraphics[1].Initialize(true); // IE memory enable this.fmgrGraphics[1].Initialize(true); // IE memory enable
this.buffers = {}; this.buffers = {};
this.drawingCtx = undefined;
this.overlayCtx = undefined;
this.stringRender = undefined; this.stringRender = undefined;
this.emSize = 0; this.emSize = 0;
...@@ -124,6 +126,8 @@ ...@@ -124,6 +126,8 @@
this.buffers.main = asc_DC({canvas: this.canvas[0], units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics}); this.buffers.main = asc_DC({canvas: this.canvas[0], units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics});
this.buffers.overlay = asc_DC({canvas: this.canvasOverlay[0], units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics}); this.buffers.overlay = asc_DC({canvas: this.canvasOverlay[0], units: 1/*pt*/, fmgrGraphics: this.fmgrGraphics});
this.drawingCtx = this.buffers.main;
this.overlayCtx = this.buffers.overlay;
this.stringRender = asc_SR(this.buffers.main); this.stringRender = asc_SR(this.buffers.main);
this.stringRender.setDefaultFont(this.defaultFont); this.stringRender.setDefaultFont(this.defaultFont);
...@@ -882,11 +886,14 @@ ...@@ -882,11 +886,14 @@
this.wsActive = index; this.wsActive = index;
ws = this.getWorksheet(index); ws = this.getWorksheet(index);
// Мы меняли zoom, но не перерисовывали данный лист (он был не активный)
if (ws.updateZoom)
ws.changeZoom(true);
ws.draw(); ws.draw();
this._onSelectionNameChanged(ws.getSelectionName(/*bRangeText*/false)); this._onSelectionNameChanged(ws.getSelectionName(/*bRangeText*/false));
this._onWSSelectionChanged(ws.getSelectionInfo()); this._onWSSelectionChanged(ws.getSelectionInfo());
this.controller.reinitializeScroll(); this.controller.reinitializeScroll();
this.handlers.trigger("asc_onZoomChanged",ws.getZoom()); // Zoom теперь на каждом листе одинаковый, не отправляем смену
return this; return this;
}, },
...@@ -981,16 +988,32 @@ ...@@ -981,16 +988,32 @@
}, },
getZoom: function () { getZoom: function () {
return this.getWorksheet().getZoom(); return this.drawingCtx.getZoom();
}, },
changeZoom: function (factor) { changeZoom: function (factor) {
var ws = this.getWorksheet(); if (factor === this.getZoom())
ws.changeZoom(factor); return;
ws.draw();
ws.drawDepCells(); this.buffers.main.changeZoom(factor);
this.buffers.overlay.changeZoom(factor);
var item;
var activeIndex = this.model.getActive();
for(var i in this.wsViews) {
if (this.wsViews.hasOwnProperty(i)) {
item = this.wsViews[i];
// Меняем zoom (для не активных сменим как только сделаем его активным)
item.changeZoom(/*isDraw*/i == activeIndex);
if (i == activeIndex) {
item.draw();
item.drawDepCells();
}
}
}
this.controller.reinitializeScroll(); this.controller.reinitializeScroll();
this.handlers.trigger("asc_onZoomChanged",this.getWorksheet().getZoom()); this.handlers.trigger("asc_onZoomChanged",this.getZoom());
}, },
enableKeyEventsHandler: function (f) { enableKeyEventsHandler: function (f) {
......
...@@ -373,6 +373,9 @@ ...@@ -373,6 +373,9 @@
this.stringRender = stringRender; this.stringRender = stringRender;
// Флаг, сигнализирует о том, что мы сменили zoom, но это не активный лист (поэтому как только будем показывать, нужно перерисовать и пересчитать кеш)
this.updateZoom = false;
var cnv = $('<canvas width="2" height="2"/>')[0]; var cnv = $('<canvas width="2" height="2"/>')[0];
var ctx = cnv.getContext("2d"); var ctx = cnv.getContext("2d");
ctx.clearRect(0, 0, 2, 2); ctx.clearRect(0, 0, 2, 2);
...@@ -610,23 +613,24 @@ ...@@ -610,23 +613,24 @@
return this.drawingCtx.getZoom(); return this.drawingCtx.getZoom();
}, },
changeZoom: function (factor) { changeZoom: function (isUpdate) {
if (factor === this.getZoom()) if (isUpdate) {
return this; this.cleanSelection();
this.cleanSelection(); this._initCellsArea(true);
this.buffers.main.changeZoom(factor); this._normalizeViewRange();
this.buffers.overlay.changeZoom(factor); this._cleanCellsTextMetricsCache();
this._initCellsArea(true); this._shiftVisibleRange();
this._normalizeViewRange(); this._prepareCellTextMetricsCache(this.visibleRange);
this._cleanCellsTextMetricsCache(); this._shiftVisibleRange();
this._shiftVisibleRange(); this.cellCommentator.updateCommentPosition();
this._prepareCellTextMetricsCache(this.visibleRange);
this._shiftVisibleRange(); this.updateZoom = false;
this.cellCommentator.updateCommentPosition(); } else {
this.updateZoom = true;
}
return this; return this;
}, },
getCellTextMetrics: function (col, row) { getCellTextMetrics: function (col, row) {
var ct = this._getCellTextCache(col, row); var ct = this._getCellTextCache(col, row);
return ct ? $.extend({}, ct.metrics) : undefined; return ct ? $.extend({}, ct.metrics) : undefined;
......
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