diff --git a/word/Drawing/buttons.js b/word/Drawing/buttons.js index fc6a327648..dfac165e48 100644 --- a/word/Drawing/buttons.js +++ b/word/Drawing/buttons.js @@ -1538,6 +1538,88 @@ } return false; }; + CContentControlTrack.prototype.isHitInMoveRect = function(xPos, yPos, koefX, koefY) + { + let rectMove = this.CalculateMoveRect(koefX, koefY, true); + return (rectMove && rectMove.W > 0.001 && xPos > rectMove.X && xPos < (rectMove.X + rectMove.W) && yPos > rectMove.Y && yPos < (rectMove.Y + rectMove.H)) + }; + CContentControlTrack.prototype.isHitInNameRect = function(xPos, yPos, koefX, koefY) + { + let rectName = this.IsNameAdvanced() ? this.CalculateNameRect(koefX, koefY) : null; + return (rectName && xPos > rectName.X && xPos < (rectName.X + rectName.W) && yPos > rectName.Y && yPos < (rectName.Y + rectName.H)) + }; + CContentControlTrack.prototype.isHitInComboRect = function(xPos, yPos, koefX, koefY) + { + let rectCombo = this.CalculateComboRect(koefX, koefY); + return (rectCombo && xPos > rectCombo.X && xPos < (rectCombo.X + rectCombo.W) && yPos > rectCombo.Y && yPos < (rectCombo.Y + rectCombo.H)); + }; + CContentControlTrack.prototype.getButton = function(xPos, yPos, koefX, koefY) + { + if (!this.Buttons.length) + return null; + + var indexButton = -1; + + var x, y, w, h; + let resX = 0, resY = 0; + if (this.formInfo) + { + if (this.isFormFullOneButtonHover()) + { + x = this.formInfo.bounds.x; + y = this.formInfo.bounds.y; + w = this.formInfo.bounds.w; + h = this.formInfo.bounds.h; + } + else + { + w = CONTENT_CONTROL_TRACK_H / koefX; + h = CONTENT_CONTROL_TRACK_H / koefY; + + x = this.formInfo.bounds.x + (this.formInfo.bounds.w - w) / 2; + y = this.formInfo.bounds.y + (this.formInfo.bounds.h - h) / 2; + } + + if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) + { + indexButton = 0; + resX = x; + resY = y + h; + } + } + else + { + let rectOrigin = this.CalculateNameRect(koefX, koefY) || this.CalculateMoveRect(koefX, koefY); + if (!rectOrigin) + return null; + + x = rectOrigin.X + rectOrigin.W; + y = rectOrigin.Y; + w = CONTENT_CONTROL_TRACK_H / koefX; + h = CONTENT_CONTROL_TRACK_H / koefY; + + for (var indexB = 0; indexB < this.Buttons.length; indexB++) + { + if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) + { + resX = x + this.OffsetX; + resY = rectOrigin.Y + rectOrigin.H + this.OffsetY; + indexButton = indexB; + break; + } + x += w; + } + } + + if (-1 === indexButton) + return null; + + return { + index : indexButton, + x : resX, + y : resY + }; + }; // draw methods CContentControlTrack.prototype.SetColor = function(ctx) @@ -1567,7 +1649,7 @@ this.ContentControlObjectsLast = []; this.ContentControlObjectState = -1; this.ContentControlSmallChangesCheck = { X: 0, Y: 0, Page: 0, Min: 2, IsSmall : true }; - this.lastActive = null; + this.lastActive = false; this.lastHover = null; this.measures = {}; @@ -2557,239 +2639,173 @@ return false; }; + + this._getTrackRelativePos = function(pos, ccTrack) + { + var _page = this.document.m_arrPages[ccTrack.Pos.Page]; + if (!_page) + return null; + + var drawingPage = _page.drawingPage; + + var koefX = (drawingPage.right - drawingPage.left) / _page.width_mm; + var koefY = (drawingPage.bottom - drawingPage.top) / _page.height_mm; + + var xPos = pos.X - ccTrack.OffsetX; + var yPos = pos.Y - ccTrack.OffsetY; + if (ccTrack.transform) + { + var tmp = ccTrack.invertTransform.TransformPointX(xPos, yPos); + yPos = ccTrack.invertTransform.TransformPointY(xPos, yPos); + xPos = tmp; + } + return { + xPos : xPos, + yPos : yPos, + koefX : koefX, + koefY : koefY + } + }; this.onPointerDown = function(pos) { var oWordControl = this.document.m_oWordControl; - for (var i = 0; i < this.ContentControlObjects.length; i++) + for (var i = this.ContentControlObjects.length - 1; i >= 0; --i) { - var _object = this.ContentControlObjects[i]; - if (_object.state == AscCommon.ContentControlTrack.In) + let _object = this.ContentControlObjects[i]; + if (AscCommon.ContentControlTrack.In !== _object.state || _object.Pos.Page !== pos.Page) + continue; + + let _pos = this._getTrackRelativePos(pos, _object); + + let xPos = _pos.xPos; + let yPos = _pos.yPos; + let koefX = _pos.koefX; + let koefY = _pos.koefY; + + if (_object.isHitInMoveRect(xPos, yPos, koefX, koefY)) { - if (_object.Pos.Page == pos.Page && !_object.IsNoUseButtons()) - { - // check header - var _page = this.document.m_arrPages[_object.Pos.Page]; - if (!_page) - return false; + oWordControl.m_oLogicDocument.SelectContentControl(_object.base.GetId()); + this.ContentControlObjectState = 1; + this.ContentControlSmallChangesCheck.X = pos.X; + this.ContentControlSmallChangesCheck.Y = pos.Y; + this.ContentControlSmallChangesCheck.Page = pos.Page; + this.ContentControlSmallChangesCheck.IsSmall = true; - var drawingPage = _page.drawingPage; + this.document.InlineTextTrack = null; + this.document.InlineTextTrackPage = -1; - var koefX = (drawingPage.right - drawingPage.left) / _page.width_mm; - var koefY = (drawingPage.bottom - drawingPage.top) / _page.height_mm; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); - var xPos = pos.X - _object.OffsetX; - var yPos = pos.Y - _object.OffsetY; - if (_object.transform) - { - var tmp = _object.invertTransform.TransformPointX(xPos, yPos); - yPos = _object.invertTransform.TransformPointY(xPos, yPos); - xPos = tmp; + this.document.LockCursorType("default"); + return true; + } + + if (_object.isHitInNameRect(xPos, yPos, koefX, koefY)) + { + if (_object.ActiveButtonIndex == -1) + { + _object.ActiveButtonIndex = -2; + oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); + } + else + { + _object.ActiveButtonIndex = -1; + + let rectName = _object.CalculateNameRect(koefX, koefY); + var xCC = rectName.X + _object.OffsetX; + var yCC = rectName.Y + rectName.H + _object.OffsetY; + if (_object.transform) { + var tmp = _object.transform.TransformPointX(xCC, yCC); + yCC = _object.transform.TransformPointY(xCC, yCC); + xCC = tmp; } - // move - var rectMove = _object.CalculateMoveRect(koefX, koefY, true); - if (rectMove && rectMove.W > 0.001 && xPos > rectMove.X && xPos < (rectMove.X + rectMove.W) && yPos > rectMove.Y && yPos < (rectMove.Y + rectMove.H)) - { - oWordControl.m_oLogicDocument.SelectContentControl(_object.base.GetId()); - this.ContentControlObjectState = 1; - this.ContentControlSmallChangesCheck.X = pos.X; - this.ContentControlSmallChangesCheck.Y = pos.Y; - this.ContentControlSmallChangesCheck.Page = pos.Page; - this.ContentControlSmallChangesCheck.IsSmall = true; + var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, _object.Pos.Page); + _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(-1), posOnScreen.X, posOnScreen.Y); + } - this.document.InlineTextTrack = null; - this.document.InlineTextTrackPage = -1; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); + this.document.LockCursorType("default"); + return true; + } + + let buttonInfo = _object.getButton(xPos, yPos, koefX, koefY); + if (buttonInfo && -1 !== buttonInfo.index) + { + let indexButton = buttonInfo.index; + let xCC = buttonInfo.x; + let yCC = buttonInfo.y; + + if (_object.ActiveButtonIndex === indexButton) + { + _object.ActiveButtonIndex = -2; + oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); + } + else + { + _object.ActiveButtonIndex = indexButton; - this.document.LockCursorType("default"); - return true; - } + xCC += _object.OffsetX; + yCC += _object.OffsetY; - // name - var rectName = _object.IsNameAdvanced() ? _object.CalculateNameRect(koefX, koefY) : null; - if (rectName && xPos > rectName.X && xPos < (rectName.X + rectName.W) && yPos > rectName.Y && yPos < (rectName.Y + rectName.H)) + if (_object.transform) { - if (_object.ActiveButtonIndex == -1) - { - _object.ActiveButtonIndex = -2; - oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); - } - else - { - _object.ActiveButtonIndex = -1; - - var xCC = rectName.X + _object.OffsetX; - var yCC = rectName.Y + rectName.H + _object.OffsetY; - if (_object.transform) { - var tmp = _object.transform.TransformPointX(xCC, yCC); - yCC = _object.transform.TransformPointY(xCC, yCC); - xCC = tmp; - } - - var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, _object.Pos.Page); - _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(-1), posOnScreen.X, posOnScreen.Y); - } - - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); - - this.document.LockCursorType("default"); - return true; + var tmp = _object.transform.TransformPointX(xCC, yCC); + yCC = _object.transform.TransformPointY(xCC, yCC); + xCC = tmp; } - // check buttons - if (_object.Buttons.length > 0) - { - var indexButton = -1; - var xCC, yCC; - - var x, y, w, h; - if (_object.formInfo) - { - if (_object.isFormFullOneButtonHover()) - { - x = _object.formInfo.bounds.x; - y = _object.formInfo.bounds.y; - w = _object.formInfo.bounds.w; - h = _object.formInfo.bounds.h; - } - else - { - w = CONTENT_CONTROL_TRACK_H / koefX; - h = CONTENT_CONTROL_TRACK_H / koefY; - - x = _object.formInfo.bounds.x + (_object.formInfo.bounds.w - w) / 2; - y = _object.formInfo.bounds.y + (_object.formInfo.bounds.h - h) / 2; - } - - if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) - { - indexButton = 0; - xCC = x; - yCC = y + h; - } - } - else - { - var rectOrigin = rectName || rectMove; - if (!rectOrigin) - return false; - x = rectOrigin.X + rectOrigin.W; - y = rectOrigin.Y; - w = CONTENT_CONTROL_TRACK_H / koefX; - h = CONTENT_CONTROL_TRACK_H / koefY; - - for (var indexB = 0; indexB < _object.Buttons.length; indexB++) - { - if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) - { - xCC = x + _object.OffsetX; - yCC = rectOrigin.Y + rectOrigin.H + _object.OffsetY; - - indexButton = indexB; - break; - } - x += w; - } - } - - if (-1 !== indexButton) - { - if (_object.ActiveButtonIndex === indexButton) - { - _object.ActiveButtonIndex = -2; - oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); - } - else - { - _object.ActiveButtonIndex = indexButton; - - xCC += _object.OffsetX; - yCC += _object.OffsetY; - - if (_object.transform) - { - var tmp = _object.transform.TransformPointX(xCC, yCC); - yCC = _object.transform.TransformPointY(xCC, yCC); - xCC = tmp; - } - - var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, _object.Pos.Page); - _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(indexButton), posOnScreen.X, posOnScreen.Y); - } - - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); - - this.document.LockCursorType("default"); - return true; - } - } + var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, _object.Pos.Page); + _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(indexButton), posOnScreen.X, posOnScreen.Y); } - var _page = this.document.m_arrPages[pos.Page]; - if (!_page) return false; - - var drawingPage = _page.drawingPage; - - var koefX = (drawingPage.right - drawingPage.left) / _page.width_mm; - var koefY = (drawingPage.bottom - drawingPage.top) / _page.height_mm; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); - var rectCombo = _object.CalculateComboRect(koefX, koefY); + this.document.LockCursorType("default"); + return true; + } - if (rectCombo && pos.Page == rectCombo.Page) + if (_object.isHitInComboRect(xPos, yPos, koefX, koefY)) + { + var indexB = _object.Buttons.length; + if (_object.ActiveButtonIndex == indexB) { - var xPos = pos.X - _object.OffsetX; - var yPos = pos.Y - _object.OffsetY; + _object.ActiveButtonIndex = -2; + oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); + } + else + { + _object.ActiveButtonIndex = indexB; + + let rectCombo = _object.CalculateComboRect(koefX, koefY) + var xCC = rectCombo.X + _object.OffsetX + CONTENT_CONTROL_TRACK_H / koefX; + var yCC = rectCombo.Y + rectCombo.H + _object.OffsetY; if (_object.transform) { - var tmp = _object.invertTransform.TransformPointX(xPos, yPos); - yPos = _object.invertTransform.TransformPointY(xPos, yPos); - xPos = tmp; + var tmp = _object.transform.TransformPointX(xCC, yCC); + yCC = _object.transform.TransformPointY(xCC, yCC); + xCC = tmp; } - if (xPos > rectCombo.X && xPos < (rectCombo.X + rectCombo.W) && yPos > rectCombo.Y && yPos < (rectCombo.Y + rectCombo.H)) - { - var indexB = _object.Buttons.length; - if (_object.ActiveButtonIndex == indexB) - { - _object.ActiveButtonIndex = -2; - oWordControl.m_oApi.sendEvent("asc_onHideContentControlsActions"); - } - else - { - _object.ActiveButtonIndex = indexB; - - var xCC = rectCombo.X + _object.OffsetX + CONTENT_CONTROL_TRACK_H / koefX; - var yCC = rectCombo.Y + rectCombo.H + _object.OffsetY; - if (_object.transform) - { - var tmp = _object.transform.TransformPointX(xCC, yCC); - yCC = _object.transform.TransformPointY(xCC, yCC); - xCC = tmp; - } - - var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, rectCombo.Page); - _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(indexB), posOnScreen.X, posOnScreen.Y); - } - - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); - - this.document.LockCursorType("default"); - return true; - } + var posOnScreen = this.document.ConvertCoordsToCursorWR(xCC, yCC, rectCombo.Page); + _sendEventToApi(oWordControl.m_oApi, _object.GetButtonObj(indexB), posOnScreen.X, posOnScreen.Y); } - break; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); + + this.document.LockCursorType("default"); + return true; } } @@ -2814,23 +2830,25 @@ this.onPointerMove = function(pos, isWithoutCoords) { var oWordControl = this.document.m_oWordControl; - var _object = null; var isChangeHover = false; - for (var i = 0; i < this.ContentControlObjects.length; i++) + for (let i = 0; i < this.ContentControlObjects.length; i++) { - if (-2 != this.ContentControlObjects[i].HoverButtonIndex) + if (-2 !== this.ContentControlObjects[i].HoverButtonIndex) isChangeHover = true; + this.ContentControlObjects[i].HoverButtonIndex = -2; - if (this.ContentControlObjects[i].state == AscCommon.ContentControlTrack.In) - { - _object = this.ContentControlObjects[i]; - break; - } } - - if (_object && !_object.IsNoUseButtons() && pos.Page == _object.Pos.Page) + + for (var i = this.ContentControlObjects.length - 1; i >= 0; --i) { - if (1 == this.ContentControlObjectState) + let _object = this.ContentControlObjects[i]; + + if (AscCommon.ContentControlTrack.In !== _object.state + || pos.Page !== _object.Pos.Page + || !this.document.m_arrPages[pos.Page]) + continue; + + if (!_object.IsNoUseButtons() && 1 == this.ContentControlObjectState) { if (pos.Page == this.ContentControlSmallChangesCheck.Page && Math.abs(pos.X - this.ContentControlSmallChangesCheck.X) < this.ContentControlSmallChangesCheck.Min && @@ -2841,182 +2859,96 @@ oWordControl.EndUpdateOverlay(); return true; } - + this.document.InlineTextTrackEnabled = true; this.ContentControlSmallChangesCheck.IsSmall = false; - + this.document.InlineTextTrack = oWordControl.m_oLogicDocument.Get_NearestPos(pos.Page, pos.X, pos.Y); this.document.InlineTextTrackPage = pos.Page; - - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); - return true; - } - - var _page = this.document.m_arrPages[_object.Pos.Page]; - if (!_page) - return false; - - var drawingPage = _page.drawingPage; - - var koefX = (drawingPage.right - drawingPage.left) / _page.width_mm; - var koefY = (drawingPage.bottom - drawingPage.top) / _page.height_mm; - - var xPos = pos.X - _object.OffsetX; - var yPos = pos.Y - _object.OffsetY; - if (_object.transform) - { - var tmp = _object.invertTransform.TransformPointX(xPos, yPos); - yPos = _object.invertTransform.TransformPointY(xPos, yPos); - xPos = tmp; - } - - var oldState = this.ContentControlObjectState; - this.ContentControlObjectState = -1; - - // move - var rectMove = _object.CalculateMoveRect(koefX, koefY, true); - if (rectMove && rectMove.W > 0.001 && xPos > rectMove.X && xPos < (rectMove.X + rectMove.W) && yPos > rectMove.Y && yPos < (rectMove.Y + rectMove.H)) - { - this.ContentControlObjectState = 0; - oWordControl.ShowOverlay(); - oWordControl.OnUpdateOverlay(); - oWordControl.EndUpdateOverlay(); - - this.document.SetCursorType("default"); - - oWordControl.m_oApi.sync_MouseMoveStartCallback(); - oWordControl.m_oApi.sync_MouseMoveEndCallback(); - return true; - } - - // name - var rectName = _object.IsNameAdvanced() ? _object.CalculateNameRect(koefX, koefY) : null; - if (rectName && xPos > rectName.X && xPos < (rectName.X + rectName.W) && yPos > rectName.Y && yPos < (rectName.Y + rectName.H)) - { - _object.HoverButtonIndex = -1; + oWordControl.ShowOverlay(); oWordControl.OnUpdateOverlay(); oWordControl.EndUpdateOverlay(); - - this.document.SetCursorType("default"); - - oWordControl.m_oApi.sync_MouseMoveStartCallback(); - oWordControl.m_oApi.sync_MouseMoveEndCallback(); return true; } - - // check buttons - if (_object.Buttons.length > 0 && (isWithoutCoords !== true)) + + let _pos = this._getTrackRelativePos(pos, _object); + + let xPos = _pos.xPos; + let yPos = _pos.yPos; + let koefX = _pos.koefX; + let koefY = _pos.koefY; + + if (!_object.IsNoUseButtons()) { - var indexButton = -1; - - var x, y, w, h; - if (_object.formInfo) + var oldState = this.ContentControlObjectState; + this.ContentControlObjectState = -1; + + if (_object.isHitInMoveRect(xPos, yPos, koefX, koefY)) { - if (_object.isFormFullOneButtonHover()) - { - x = _object.formInfo.bounds.x; - y = _object.formInfo.bounds.y; - w = _object.formInfo.bounds.w; - h = _object.formInfo.bounds.h; - } - else - { - w = CONTENT_CONTROL_TRACK_H / koefX; - h = CONTENT_CONTROL_TRACK_H / koefY; - - x = _object.formInfo.bounds.x + (_object.formInfo.bounds.w - w) / 2; - y = _object.formInfo.bounds.y + (_object.formInfo.bounds.h - h) / 2; - } - - if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) - { - indexButton = 0; - } - } - else - { - var rectOrigin = rectName || rectMove; - if (!rectOrigin) - return false; - x = rectOrigin.X + rectOrigin.W; - y = rectOrigin.Y; - w = CONTENT_CONTROL_TRACK_H / koefX; - h = CONTENT_CONTROL_TRACK_H / koefY; - - for (var indexB = 0; indexB < _object.Buttons.length; indexB++) - { - if (xPos > x && xPos < (x + w) && yPos > y && yPos < (y + h)) - { - indexButton = indexB; - break; - } - x += w; - } - } - - if (-1 != indexButton) - { - _object.HoverButtonIndex = indexButton; + this.ContentControlObjectState = 0; oWordControl.ShowOverlay(); oWordControl.OnUpdateOverlay(); oWordControl.EndUpdateOverlay(); - + this.document.SetCursorType("default"); - + oWordControl.m_oApi.sync_MouseMoveStartCallback(); oWordControl.m_oApi.sync_MouseMoveEndCallback(); return true; } - } - - if (oldState != this.ContentControlObjectState) - oWordControl.OnUpdateOverlay(); - } - - if (_object) - { - var _page = this.document.m_arrPages[pos.Page]; - if (!_page) return false; - - var drawingPage = _page.drawingPage; - var koefX = (drawingPage.right - drawingPage.left) / _page.width_mm; - var koefY = (drawingPage.bottom - drawingPage.top) / _page.height_mm; - - var rectCombo = _object.CalculateComboRect(koefX, koefY); - - if (rectCombo && pos.Page == rectCombo.Page) - { - var xPos = pos.X - _object.OffsetX; - var yPos = pos.Y - _object.OffsetY; - if (_object.transform) + + if (_object.isHitInNameRect(xPos, yPos, koefX, koefY)) { - var tmp = _object.invertTransform.TransformPointX(xPos, yPos); - yPos = _object.invertTransform.TransformPointY(xPos, yPos); - xPos = tmp; + _object.HoverButtonIndex = -1; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); + + this.document.SetCursorType("default"); + + oWordControl.m_oApi.sync_MouseMoveStartCallback(); + oWordControl.m_oApi.sync_MouseMoveEndCallback(); + return true; } - - if (xPos > rectCombo.X && xPos < (rectCombo.X + rectCombo.W) && yPos > rectCombo.Y && yPos < (rectCombo.Y + rectCombo.H)) + + let buttonInfo = (isWithoutCoords !== true) ? _object.getButton(xPos, yPos, koefX, koefY) : null; + if (buttonInfo && 1 !== buttonInfo.index) { - _object.HoverButtonIndex = _object.Buttons.length; + _object.HoverButtonIndex = buttonInfo.index; oWordControl.ShowOverlay(); oWordControl.OnUpdateOverlay(); oWordControl.EndUpdateOverlay(); - + this.document.SetCursorType("default"); - + oWordControl.m_oApi.sync_MouseMoveStartCallback(); oWordControl.m_oApi.sync_MouseMoveEndCallback(); return true; } + + if (oldState != this.ContentControlObjectState) + oWordControl.OnUpdateOverlay(); + } + + if (_object.isHitInComboRect(xPos, yPos, koefX, koefY)) + { + _object.HoverButtonIndex = _object.Buttons.length; + oWordControl.ShowOverlay(); + oWordControl.OnUpdateOverlay(); + oWordControl.EndUpdateOverlay(); + + this.document.SetCursorType("default"); + + oWordControl.m_oApi.sync_MouseMoveStartCallback(); + oWordControl.m_oApi.sync_MouseMoveEndCallback(); + return true; } } - + if (isChangeHover) oWordControl.OnUpdateOverlay(); - + return false; }; @@ -3029,7 +2961,7 @@ if (this.ContentControlObjectState == 1) { - for (var i = 0; i < this.ContentControlObjects.length; i++) + for (var i = this.ContentControlObjects.length - 1; i >= 0; --i) { var _object = this.ContentControlObjects[i]; if (_object.state == AscCommon.ContentControlTrack.In)