Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
KhromovNikita committed Feb 14, 2025
1 parent dbea77f commit e147cac
Show file tree
Hide file tree
Showing 14 changed files with 301 additions and 150 deletions.
4 changes: 2 additions & 2 deletions common/Drawings/CommonController.js
Original file line number Diff line number Diff line change
Expand Up @@ -7266,7 +7266,7 @@
drawing = drawings[i];

// skip sticky note for pdf editor
if (drawing.IsAnnot && drawing.IsAnnot() && drawing.IsComment()) {
if (drawing.IsAnnot && drawing.IsAnnot() && drawing.IsComment() || drawing.IsEditFieldShape && drawing.IsEditFieldShape()) {
continue;
}

Expand Down Expand Up @@ -7925,7 +7925,7 @@
let hyperlink_properties = null;
if(drawings.length === 1) {
let oDrawing = drawings[0];
let isStickyNote = oDrawing.IsAnnot && oDrawing.IsAnnot() && oDrawing.IsComment(); // skip pdf text annot
let isStickyNote = oDrawing.IsAnnot && oDrawing.IsAnnot() && oDrawing.IsComment() || drawing.IsEditFieldShape && oDrawing.IsEditFieldShape(); // skip pdf text annot and form

if(!isStickyNote && (oDrawing.isShape() || oDrawing.isImage())) {

Expand Down
4 changes: 4 additions & 0 deletions pdf/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -1097,6 +1097,10 @@
/////////////////////////////////////////////////////////////
///////// For filed
////////////////////////////////////////////////////////////
PDFEditorApi.prototype.SetEditFieldsMode = function(bEdit) {
let oDoc = this.getPDFDoc();
oDoc.SetEditFieldsMode(bEdit);
};
PDFEditorApi.prototype.AddTextField = function() {
let oDoc = this.getPDFDoc();

Expand Down
7 changes: 6 additions & 1 deletion pdf/src/GraphicObjects.js
Original file line number Diff line number Diff line change
Expand Up @@ -978,7 +978,7 @@
let oDoc = this.document;
let isDrawHandles = oApi ? oApi.isShowShapeAdjustments() : true;

let oObject = AscCommon.g_oTableId.Get_ById(ret.objectId) || oDoc.GetShapeBasedAnnotById(ret.objectId);
let oObject = AscCommon.g_oTableId.Get_ById(ret.objectId) || oDoc.GetShapeBasedAnnotById(ret.objectId) || this.selectedObjects.find(function(obj) { return obj.GetId() == ret.objectId});
let isViewerObj = this.document.IsViewerObject(oObject);

if (!isDrawHandles && isViewerObj) {
Expand Down Expand Up @@ -1206,6 +1206,11 @@
for (i = 0; i < this.selectedObjects.length; ++i) {
let oDrawing = this.selectedObjects[i];
if (oDrawing.selectStartPage === pageIndex) {

if (oDrawing.IsForm()) {
oDrawing = oDrawing.editShape;
}

let nType = oDrawing.IsAnnot() && oDrawing.IsStamp() ? AscFormat.TYPE_TRACK.ANNOT_STAMP : AscFormat.TYPE_TRACK.SHAPE;

if (oDrawing.IsAnnot() && (oDrawing.IsTextMarkup() || oDrawing.IsComment())) {
Expand Down
81 changes: 57 additions & 24 deletions pdf/src/document.js
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,16 @@ var CPresentation = CPresentation || function(){};
oField.SetDocument(this);
return oField;
};
CPDFDoc.prototype.SetEditFieldsMode = function(bEdit) {
this.editFieldsMode = bEdit;

this.widgets.forEach(function(field) {
field.SetEditMode(bEdit);
});
};
CPDFDoc.prototype.IsEditFieldsMode = function() {
return this.editFieldsMode;
};
CPDFDoc.prototype.CreateTextField = function(bDateField) {
let oTextField = this.CreateField('TextField1', AscPDF.FIELD_TYPES.text, [200, 50, 350, 72]);

Expand Down Expand Up @@ -1214,8 +1224,8 @@ var CPresentation = CPresentation || function(){};
oViewer.onMouseDownEpsilon(e);
}

// если в селекте нет drawing (аннотации или шейпа) по которой кликнули, то сбрасываем селект
if (oMouseDownObject == null || (false == oController.selectedObjects.includes(oMouseDownObject) && oController.selection.groupSelection != oMouseDownObject)) {
// если в селекте нет drawing по которой кликнули, то сбрасываем селект
if (oMouseDownObject == null || (this.IsEditFieldsMode() == false && (false == oController.selectedObjects.includes(oMouseDownObject)) && oController.selection.groupSelection != oMouseDownObject)) {
oController.resetSelection();
oController.resetTrackState();
}
Expand Down Expand Up @@ -1819,6 +1829,11 @@ var CPresentation = CPresentation || function(){};
}
// обработка mouseMove в полях
else if (this.activeForm) {
if (this.IsEditFieldsMode()) {
oController.OnMouseMove(e, X, Y, pageObject.index);
return;
}

// селект текста внутри формы с редаткриуемым текстом
if ([AscPDF.FIELD_TYPES.text, AscPDF.FIELD_TYPES.combobox].includes(this.activeForm.GetType())) {
this.SelectionSetEnd(AscCommon.global_mouseEvent.X, AscCommon.global_mouseEvent.Y, e);
Expand Down Expand Up @@ -1925,6 +1940,12 @@ var CPresentation = CPresentation || function(){};
else if (oCurObject.GetId() == oCursorInfo.objectId) {
return true;
}
else if (this.IsEditFieldsMode()) {
let oEditShape = oCurObject.GetEditShape && oCurObject.GetEditShape();
if (oEditShape && oEditShape.GetId() == oCursorInfo.objectId) {
return true;
}
}
}

// курсор залочен для этих действий
Expand All @@ -1939,29 +1960,34 @@ var CPresentation = CPresentation || function(){};
if (!pageObject)
return false;

switch (oMouseMoveField.GetType()) {
case AscPDF.FIELD_TYPES.text: {
cursorType = "text";

if (oMouseMoveField.IsDateFormat() && oMouseMoveField.IsInForm()) {
// попадание в mark поля с датой
if (pageObject.x >= oMouseMoveField._markRect.x1 && pageObject.x <= oMouseMoveField._markRect.x2 && pageObject.y >= oMouseMoveField._markRect.y1 && pageObject.y <= oMouseMoveField._markRect.y2) {
if (this.IsEditFieldsMode()) {
cursorType = "pointer";
}
else {
switch (oMouseMoveField.GetType()) {
case AscPDF.FIELD_TYPES.text: {
cursorType = "text";

if (oMouseMoveField.IsDateFormat() && oMouseMoveField.IsInForm()) {
// попадание в mark поля с датой
if (pageObject.x >= oMouseMoveField._markRect.x1 && pageObject.x <= oMouseMoveField._markRect.x2 && pageObject.y >= oMouseMoveField._markRect.y1 && pageObject.y <= oMouseMoveField._markRect.y2) {
cursorType = "pointer";
}
}
break;
}
case AscPDF.FIELD_TYPES.combobox: {
cursorType = "text";

// попадание в mark выбора элементов списка
if (pageObject.x >= oMouseMoveField._markRect.x1 && pageObject.x <= oMouseMoveField._markRect.x2 && pageObject.y >= oMouseMoveField._markRect.y1 && pageObject.y <= oMouseMoveField._markRect.y2 && oMouseMoveField._options.length != 0) {
cursorType = "pointer";
}
break;
}
break;
}
case AscPDF.FIELD_TYPES.combobox: {
cursorType = "text";

// попадание в mark выбора элементов списка
if (pageObject.x >= oMouseMoveField._markRect.x1 && pageObject.x <= oMouseMoveField._markRect.x2 && pageObject.y >= oMouseMoveField._markRect.y1 && pageObject.y <= oMouseMoveField._markRect.y2 && oMouseMoveField._options.length != 0) {
default:
cursorType = "pointer";
}
break;
}
default:
cursorType = "pointer";
}
}
else if (oMouseMoveAnnot) {
Expand Down Expand Up @@ -2034,8 +2060,15 @@ var CPresentation = CPresentation || function(){};
return;
}

if (this.mouseDownField && oMouseUpField == this.mouseDownField) {
this.OnMouseUpField(oMouseUpField, e);
if (this.mouseDownField) {
if (this.IsEditFieldsMode()) {
oController.OnMouseUp(e, X, Y, pageObject.index);
return;
}

if (oMouseUpField == this.mouseDownField) {
this.OnMouseUpField(oMouseUpField, e);
}
}
else if (this.mouseDownAnnot) {
oController.OnMouseUp(e, X, Y, pageObject.index);
Expand Down Expand Up @@ -6335,7 +6368,7 @@ var CPresentation = CPresentation || function(){};

if (isRestrictionView) {
for (let i = 0; i < selected_objects.length; i++) {
if (selected_objects[i].IsDrawing()) {
if (selected_objects[i].IsDrawing() && !selected_objects[i].IsEditFieldShape()) {
return true;
}
}
Expand Down Expand Up @@ -6768,7 +6801,7 @@ var CPresentation = CPresentation || function(){};
return this.Api.canEdit() && false == this.Api.IsCommentMarker();
};
CPDFDoc.prototype.IsViewerObject = function(oObject) {
return !!(oObject && oObject.IsAnnot && (oObject.IsAnnot() || oObject.IsForm() || oObject.group && oObject.group.IsAnnot()));
return !!(oObject && oObject.IsAnnot && (oObject.IsAnnot() || oObject.IsForm() || (oObject.IsDrawing() && oObject.IsEditFieldShape()) || oObject.group && oObject.group.IsAnnot()));
};
CPDFDoc.prototype.IsFillingFormMode = function() {
return false;
Expand Down
2 changes: 1 addition & 1 deletion pdf/src/drawings/chart.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

CPdfChart.prototype.constructor = CPdfChart;
CPdfChart.prototype = Object.create(AscFormat.CChartSpace.prototype);
Object.assign(CPdfChart.prototype, AscPDF.PdfDrawingPrototype.prototype);
Object.assign(CPdfChart.prototype, AscPDF.CPdfDrawingPrototype.prototype);

CPdfChart.prototype.IsChart = function() {
return true;
Expand Down
2 changes: 1 addition & 1 deletion pdf/src/drawings/drawingPrototype.js
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,6 @@
this.toXml(memory, '');
};

window["AscPDF"].PdfDrawingPrototype = CPdfDrawingPrototype;
window["AscPDF"].CPdfDrawingPrototype = CPdfDrawingPrototype;
})();

2 changes: 1 addition & 1 deletion pdf/src/drawings/graphicFrame.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

CPdfGraphicFrame.prototype.constructor = CPdfGraphicFrame;
CPdfGraphicFrame.prototype = Object.create(AscFormat.CGraphicFrame.prototype);
Object.assign(CPdfGraphicFrame.prototype, AscPDF.PdfDrawingPrototype.prototype);
Object.assign(CPdfGraphicFrame.prototype, AscPDF.CPdfDrawingPrototype.prototype);

CPdfGraphicFrame.prototype.IsGraphicFrame = function() {
return true;
Expand Down
2 changes: 1 addition & 1 deletion pdf/src/drawings/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

CPdfImage.prototype.constructor = CPdfImage;
CPdfImage.prototype = Object.create(AscFormat.CImageShape.prototype);
Object.assign(CPdfImage.prototype, AscPDF.PdfDrawingPrototype.prototype);
Object.assign(CPdfImage.prototype, AscPDF.CPdfDrawingPrototype.prototype);

CPdfImage.prototype.IsImage = function() {
return true;
Expand Down
31 changes: 30 additions & 1 deletion pdf/src/drawings/shape.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,36 @@

CPdfShape.prototype.constructor = CPdfShape;
CPdfShape.prototype = Object.create(AscFormat.CShape.prototype);
Object.assign(CPdfShape.prototype, AscPDF.PdfDrawingPrototype.prototype);
Object.assign(CPdfShape.prototype, AscPDF.CPdfDrawingPrototype.prototype);

CPdfShape.prototype.IsShape = function() {
return true;
};
CPdfShape.prototype.SetEditField = function(oForm) {
this.editField = oForm;
};
CPdfShape.prototype.IsEditFieldShape = function() {
return !!this.editField;
};
CPdfShape.prototype.GetEditField = function() {
return this.editField;
}
CPdfShape.prototype.GetDocument = function() {
if (this.IsEditFieldShape()) {
return this.editField.GetDocument();
}
else {
return AscPDF.CPdfDrawingPrototype.prototype.GetDocument.call(this);
}
};
CPdfShape.prototype.GetPage = function() {
if (this.IsEditFieldShape()) {
return this.editField.GetPage();
}
else {
return AscPDF.CPdfDrawingPrototype.prototype.GetPage.call(this);
}
};
CPdfShape.prototype.ShouldDrawImaginaryBorder = function(graphicsWord) {
let bDraw = !!(this.spPr && this.spPr.hasNoFill() && !(this.pen && this.pen.Fill && this.pen.Fill.fill && !(this.pen.Fill.fill instanceof AscFormat.CNoFill)));
bDraw = bDraw && this.IsFromScan();
Expand Down Expand Up @@ -80,6 +105,10 @@
return false;
}

if (this.IsEditFieldShape()) {
return false;
}

return this.getNoRot() === false;
};
CPdfShape.prototype.Recalculate = function() {
Expand Down
2 changes: 1 addition & 1 deletion pdf/src/drawings/smartArt.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

CPdfSmartArt.prototype.constructor = CPdfSmartArt;
CPdfSmartArt.prototype = Object.create(AscFormat.SmartArt.prototype);
Object.assign(CPdfSmartArt.prototype, AscPDF.PdfDrawingPrototype.prototype);
Object.assign(CPdfSmartArt.prototype, AscPDF.CPdfDrawingPrototype.prototype);

CPdfSmartArt.prototype.IsSmartArt = function() {
return true;
Expand Down
Loading

0 comments on commit e147cac

Please sign in to comment.