Commit 947ba058 authored by Sergey.Luzyanin's avatar Sergey.Luzyanin

правка бага с позицией контекстного меню, вызываемого по клавише с клавиатуры,...

правка бага с позицией контекстного меню, вызываемого по клавише с клавиатуры, в документах и презентациях. не добавляем ничего в историю при клике на инлайновую картинку.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@60682 954022d7-b5bf-4e40-9824-e11837661b57
parent 74aac471
......@@ -423,7 +423,7 @@ DrawingObjectsController.prototype =
this.changeCurrentState(new PreMoveState(this, x, y, e.ShiftKey, e.CtrlKey, object, is_selected, /*true*/!bInSelect));
else
{
this.changeCurrentState(new PreMoveInlineObject(this, object, is_selected, true));
this.changeCurrentState(new PreMoveInlineObject(this, object, is_selected, true, pageIndex, x, y));
}
}
......@@ -608,10 +608,10 @@ DrawingObjectsController.prototype =
{
dX = aDrawings[i].transform.TransformPointX(aDrawings[i].extX/2, aDrawings[i].extY/2) - aDrawings[i].extX/2;
dY = aDrawings[i].transform.TransformPointY(aDrawings[i].extX/2, aDrawings[i].extY/2) - aDrawings[i].extY/2;
return {X: dX, Y: dY, bSelected: true};
return {X: dX, Y: dY, bSelected: true, PageIndex: pageIndex};
}
}
return {X: 0, Y: 0, bSelected: false};
return {X: 0, Y: 0, bSelected: false, PageIndex: pageIndex};
},
getLeftTopSelectedObject: function(pageIndex)
......@@ -619,88 +619,65 @@ DrawingObjectsController.prototype =
return this.getLeftTopSelectedFromArray(this.getDrawingObjects(), pageIndex);
},
getContextMenuPosition: function(pageIndex)
getFromTargetTextObjectContextMenuPosition: function(oTargetTextObject, pageIndex)
{
var i, aDrawings, dX, dY, oTargetTextObject, oDocContent, oTransformText;
if(this.selectedObjects.length > 0)
var dX, dY, oDocContent, oTransformText, oParagraph, document = editor.WordControl.m_oLogicDocument, dPosX = 0, dPosY = 0;
if(oTargetTextObject.getObjectType() === historyitem_type_Shape || oTargetTextObject.getObjectType() === historyitem_type_Title)
{
oTargetTextObject = getTargetTextObject(this);
if(oTargetTextObject)
dPosX = document.TargetPos.X;
dPosY = document.TargetPos.Y;
oTransformText = oTargetTextObject.transformText;
return {X: oTransformText.TransformPointX(dPosX, dPosY), Y: oTransformText.TransformPointY(dPosX, dPosY), PageIndex: document.TargetPos.PageNum};
}
else if(oTargetTextObject.getObjectType() === historyitem_type_GraphicFrame)
{
var Doc = oTargetTextObject.graphicObject;
oTransformText = oTargetTextObject.transform;
if ( true === Doc.Is_SelectionUse() && !Doc.Selection_IsEmpty())
{
if(oTargetTextObject.getObjectType() === historyitem_type_Shape || oTargetTextObject.getObjectType() === historyitem_type_Title)
switch( Doc.Selection.Type )
{
oDocContent = oTargetTextObject.getDocContent();
oTransformText = oTargetTextObject.transformText;
dX = oTransformText.TransformPointX(oDocContent.CurPos.X, oDocContent.CurPos.Y);
dY = oTransformText.TransformPointY(oDocContent.CurPos.X, oDocContent.CurPos.Y);
return {X: dX, Y: dY, PageIndex: this.selectedObjects[0].selectStartPage};
}
else if(oTargetTextObject.getObjectType() === historyitem_type_GraphicFrame)
{
var Doc = oTargetTextObject.graphicObject, dPosX = 0, dPosY = 0;
if ( true === Doc.Is_SelectionUse() && !Doc.Selection_IsEmpty())
case table_Selection_Cell:
{
switch( Doc.Selection.Type )
{
case table_Selection_Cell:
{
var Row_prev_index = -1;
for ( var Index = 0; Index < this.Selection.Data.length; Index++ )
{
var Pos = this.Selection.Data[Index];
var Row = this.Content[Pos.Row];
var Cell = Row.Get_Cell( Pos.Cell );
var CellInfo = Row.Get_CellInfo( Pos.Cell );
var CellMar = Cell.Get_Margins();
if ( -1 === Row_prev_index || Row_prev_index != Pos.Row )
Row_prev_index = Pos.Row;
var X_start = ( 0 === Pos.Cell ? CellInfo.X_content_start : CellInfo.X_cell_start );
var X_end = CellInfo.X_cell_end;
var Cell_Pages = Cell.Content_Get_PagesCount();
var Cell_PageRel = Page_abs - Cell.Content.Get_StartPage_Absolute();
if ( Cell_PageRel < 0 || Cell_PageRel >= Cell_Pages )
continue;
var Bounds = Cell.Content_Get_PageBounds( Cell_PageRel );
var Y_offset = Cell.Temp.Y_VAlign_offset[Cell_PageRel];
if ( 0 != Cell_PageRel )
{
// мы должны определить ряд, на котором случился перенос на новую страницу
var TempRowIndex = this.Pages[CurPage].FirstRow;
this.DrawingDocument.AddPageSelection( Page_abs, X_start, this.RowsInfo[TempRowIndex].Y[CurPage] + this.RowsInfo[TempRowIndex].TopDy[CurPage] + CellMar.Top.W + Y_offset, X_end - X_start, Bounds.Bottom - Bounds.Top );
}
else
{
this.DrawingDocument.AddPageSelection( Page_abs, X_start, this.RowsInfo[Pos.Row].Y[CurPage] + this.RowsInfo[Pos.Row].TopDy[CurPage] + CellMar.Top.W + Y_offset, X_end - X_start, Bounds.Bottom - Bounds.Top );
}
}
break;
}
case table_Selection_Text:
{
var Cell = this.Content[this.Selection.StartPos.Pos.Row].Get_Cell( this.Selection.StartPos.Pos.Cell );
Cell.Content.Selection_Draw_Page(Page_abs);
break;
}
}
Doc.Selection_Draw_Page(this.parent.num);
drawingDocument.SelectShow();
var oCellInfo = Doc.CurCell.Row.Get_CellInfo(Doc.CurCell.Index);
var oCellMargins = Doc.CurCell.Get_Margins();
dPosX = oCellInfo.X_content_start;
dPosY = Doc.RowsInfo[Doc.CurCell.Row.Index].Y[0] + Doc.RowsInfo[Doc.CurCell.Row.Index].TopDy[0] + oCellMargins.Top.W + Doc.CurCell.Temp.Y_VAlign_offset[0];
dX = oTransformText.TransformPointX(dPosX, dPosY);
dY = oTransformText.TransformPointY(dPosX, dPosY);
return {X: dX, Y: dY, PageIndex: this.selectedObjects[0].selectStartPage};
}
else /*if(this.parent.elementsManipulator.Document.CurPos.Type == docpostype_FlowObjects ) */
case table_Selection_Text:
{
drawingDocument.SelectEnabled(false);
Doc.RecalculateCurPos();
drawingDocument.UpdateTargetTransform(this.transform);
drawingDocument.TargetShow();
dPosX = document.TargetPos.X;
dPosY = document.TargetPos.Y;
oTransformText = oTargetTextObject.transformText;
return {X: oTransformText.TransformPointX(dPosX, dPosY), Y: oTransformText.TransformPointY(dPosX, dPosY), PageIndex: document.TargetPos.PageNum};
}
}
}
else /*if(this.parent.elementsManipulator.Document.CurPos.Type == docpostype_FlowObjects ) */
{
dPosX = document.TargetPos.X;
dPosY = document.TargetPos.Y;
oTransformText = oTargetTextObject.transformText;
return {X: oTransformText.TransformPointX(dPosX, dPosY), Y: oTransformText.TransformPointY(dPosX, dPosY), PageIndex: document.TargetPos.PageNum};
}
}
return {X: 0, Y: 0, PageIndex: pageIndex};
},
getContextMenuPosition: function(pageIndex)
{
var i, aDrawings, dX, dY, oTargetTextObject;
if(this.selectedObjects.length > 0)
{
oTargetTextObject = getTargetTextObject(this);
if(oTargetTextObject)
{
return this.getFromTargetTextObjectContextMenuPosition(oTargetTextObject, pageIndex);
}
else if(this.selection.groupSelection)
{
aDrawings = this.selection.groupSelection.arrGraphicObjects;
......
......@@ -1931,6 +1931,7 @@ function CDrawingDocument()
this.UpdateTarget = function(x, y, pageIndex)
{
this.m_oWordControl.m_oLogicDocument.Set_TargetPos( x, y, pageIndex );
if (pageIndex != this.SlideCurrent)
{
// сначала выставим страницу
......@@ -5001,6 +5002,35 @@ function CThumbnailsManager()
}
break;
}
case 93:
case 57351:
{
var aSelected = this.GetSelectedArray();
var nSlideIndex = Math.min.apply(Math, aSelected);
var ConvertedPos = this.GetThumbnailPagePosition(nSlideIndex );
if(ConvertedPos)
{
editor.sync_ContextMenuCallback(new CContextMenuData({ Type : c_oAscContextMenuTypes.Thumbnails, X_abs : ConvertedPos.X, Y_abs : ConvertedPos.Y, IsSlideSelect: true }) );
}
return false;
}
case 121:
{
if(global_keyboardEvent.ShiftKey)
{
var aSelected = this.GetSelectedArray();
var nSlideIndex = Math.min.apply(Math, aSelected);
var ConvertedPos = this.GetThumbnailPagePosition(nSlideIndex );
if(ConvertedPos)
{
editor.sync_ContextMenuCallback(new CContextMenuData({ Type : c_oAscContextMenuTypes.Thumbnails, X_abs : ConvertedPos.X, Y_abs : ConvertedPos.Y, IsSlideSelect: true }) );
}
return false;
}
break;
}
default:
break;
......
......@@ -2214,72 +2214,17 @@ CPresentation.prototype =
this.Document_Undo();
bRetValue = true;
}
else if ( e.KeyCode == 93 || 57351 == e.KeyCode /*в Opera такой код*/ ) // контекстное меню
else if ( e.KeyCode == 93 || 57351 == e.KeyCode /*в Opera такой код*/ || (e.KeyCode == 121 && true === e.ShiftKey /*shift + f10*/)) // контекстное меню
{
// var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
// var X_abs = ConvertedPos.X;
// var Y_abs = ConvertedPos.Y;
var type;
if(editor.WordControl.Thumbnails.FocusObjType === FOCUS_OBJECT_MAIN)
{
type = c_oAscContextMenuTypes.Main;
if(this.Slides[this.CurPage] )
{
var pos_x = 0, pos_y = 0;
if(this.Slides[this.CurPage].graphicObjects.selectedObjects.length > 0)
{
pos_x = this.Slides[this.CurPage].graphicObjects.selectedObjects[0].x;
pos_y = this.Slides[this.CurPage].graphicObjects.selectedObjects[0].y;
}
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR_2( pos_x, pos_y, this.PageNum );
var X_abs = ConvertedPos.X;
var Y_abs = ConvertedPos.Y;
editor.sync_ContextMenuCallback(new CMouseMoveData({ Type : type, X_abs : X_abs, Y_abs : Y_abs }) );
var oPosition = this.Slides[this.CurPage].graphicObjects.getContextMenuPosition(0);
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( oPosition.X, oPosition.Y, this.PageNum );
editor.sync_ContextMenuCallback(new CContextMenuData({ Type : c_oAscContextMenuTypes.Main, X_abs : ConvertedPos.X, Y_abs : ConvertedPos.Y }) );
}
}
else
{
type = c_oAscContextMenuTypes.Thumbnails;
}
bUpdateSelection = false;
bRetValue = true;
}
else if ( e.KeyCode == 121 && true === e.ShiftKey ) // Shift + F10 - контекстное меню
{
//var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
//var X_abs = ConvertedPos.X;
//var Y_abs = ConvertedPos.Y;
//
//editor.sync_ContextMenuCallback( { Type : c_oAscContextMenuTypes.Common, X_abs : X_abs, Y_abs : Y_abs } );
var type;
if(editor.WordControl.Thumbnails.FocusObjType === FOCUS_OBJECT_MAIN)
{
type = c_oAscContextMenuTypes.Main;
if(this.Slides[this.CurPage] )
{
var pos_x = 0, pos_y = 0;
if(this.Slides[this.CurPage].graphicObjects.selectedObjects.length > 0)
{
pos_x = this.Slides[this.CurPage].graphicObjects.selectedObjects[0].x;
pos_y = this.Slides[this.CurPage].graphicObjects.selectedObjects[0].y;
}
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( pos_x, pos_y, this.PageNum );
var X_abs = ConvertedPos.X;
var Y_abs = ConvertedPos.Y;
editor.sync_ContextMenuCallback(new CMouseMoveData({ Type : type, X_abs : X_abs, Y_abs : Y_abs }) );
}
}
else
{
type = c_oAscContextMenuTypes.Thumbnails;
}
bUpdateSelection = false;
bRetValue = true;
......
......@@ -4912,12 +4912,22 @@ asc_docs_api.prototype.sync_closeChartEditor = function()
// События контекстного меню
//-----------------------------------------------------------------
function CContextMenuData()
function CContextMenuData(oData)
{
this.Type = c_oAscContextMenuTypes.Main;
this.X_abs = 0;
this.Y_abs = 0;
this.IsSlideSelect = true;
if(isRealObject(oData))
{
this.Type = oData.Type;
this.X_abs = oData.X_abs;
this.Y_abs = oData.Y_abs;
this.IsSlideSelect = oData.IsSlideSelect;
}
else
{
this.Type = c_oAscContextMenuTypes.Main;
this.X_abs = 0;
this.Y_abs = 0;
this.IsSlideSelect = true;
}
}
CContextMenuData.prototype.get_Type = function() { return this.Type; };
......
......@@ -9909,9 +9909,18 @@ CDocument.prototype =
}
else if ( e.KeyCode == 93 || 57351 == e.KeyCode /*в Opera такой код*/ ) // контекстное меню
{
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
var X_abs = ConvertedPos.X;
var Y_abs = ConvertedPos.Y;
var X_abs, Y_abs, oPosition, ConvertedPos;
if(this.DrawingObjects.selectedObjects.length > 0)
{
oPosition = this.DrawingObjects.getContextMenuPosition(this.CurPage);
ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( oPosition.X, oPosition.Y, oPosition.PageIndex );
}
else
{
ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
}
X_abs = ConvertedPos.X;
Y_abs = ConvertedPos.Y;
editor.sync_ContextMenuCallback( { Type : c_oAscContextMenuTypes.Common, X_abs : X_abs, Y_abs : Y_abs } );
......@@ -9920,9 +9929,18 @@ CDocument.prototype =
}
else if ( e.KeyCode == 121 && true === e.ShiftKey ) // Shift + F10 - контекстное меню
{
var ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
var X_abs = ConvertedPos.X;
var Y_abs = ConvertedPos.Y;
var X_abs, Y_abs, oPosition, ConvertedPos;
if(this.DrawingObjects.selectedObjects.length > 0)
{
oPosition = this.DrawingObjects.getContextMenuPosition(this.CurPage);
ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( oPosition.X, oPosition.Y, oPosition.PageIndex );
}
else
{
ConvertedPos = this.DrawingDocument.ConvertCoordsToCursorWR( this.TargetPos.X, this.TargetPos.Y, this.TargetPos.PageNum );
}
X_abs = ConvertedPos.X;
Y_abs = ConvertedPos.Y;
editor.sync_ContextMenuCallback( { Type : c_oAscContextMenuTypes.Common, X_abs : X_abs, Y_abs : Y_abs } );
......
......@@ -292,12 +292,15 @@ PreChangeAdjState.prototype =
}
};
function PreMoveInlineObject(drawingObjects, majorObject, isSelected, bInside)
function PreMoveInlineObject(drawingObjects, majorObject, isSelected, bInside, nStartPage, dStartX, dStartY)
{
this.drawingObjects = drawingObjects;
this.majorObject = majorObject;
this.majorObjectIsSelected = isSelected;
this.bInside = bInside;
this.nStartPage = nStartPage;
this.dStartX = dStartX;
this.dStartY = dStartY;
}
PreMoveInlineObject.prototype =
......@@ -315,8 +318,11 @@ PreMoveInlineObject.prototype =
this.onMouseUp(e, x, y, pageIndex);
return;
}
this.drawingObjects.changeCurrentState(new MoveInlineObject(this.drawingObjects, this.majorObject));
this.drawingObjects.OnMouseMove(e, x, y, pageIndex);
if(this.nStartPage !== pageIndex || Math.abs(x - this.dStartX) > MOVE_DELTA || Math.abs(y - this.dStartY) > MOVE_DELTA)
{
this.drawingObjects.changeCurrentState(new MoveInlineObject(this.drawingObjects, this.majorObject));
this.drawingObjects.OnMouseMove(e, x, y, pageIndex);
}
},
onMouseUp: function(e, x,y,pageIndex)
......
......@@ -2507,6 +2507,12 @@ CGraphicObjects.prototype =
getContextMenuPosition: DrawingObjectsController.prototype.getContextMenuPosition,
getLeftTopSelectedFromArray: DrawingObjectsController.prototype.getLeftTopSelectedFromArray,
getFromTargetTextObjectContextMenuPosition: function(oTargetTextObject, pageIndex)
{
var dPosX = this.document.TargetPos.X, dPosY = this.document.TargetPos.Y, oTransform = oTargetTextObject.transformText;
return {X: oTransform.TransformPointX(dPosX, dPosY), Y: oTransform.TransformPointY(dPosX, dPosY), PageIndex: this.document.TargetPos.PageNum};
},
getLeftTopSelectedObject: function(pageIndex)
{
if(this.selectedObjects.length > 0)
......
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