Merge pull request #20278 from calixteman/fix_comment_popup_position
[Editor] Fix the position of the comment popup and its dialog
This commit is contained in:
commit
a68630eee4
@ -2555,6 +2555,10 @@ class PopupElement {
|
|||||||
this.#popupPosition = pos;
|
this.#popupPosition = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDefaultPopupPosition() {
|
||||||
|
return this.#popupPosition === null;
|
||||||
|
}
|
||||||
|
|
||||||
get commentButtonPosition() {
|
get commentButtonPosition() {
|
||||||
return this.#commentButtonPosition;
|
return this.#commentButtonPosition;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,6 +111,10 @@ class Comment {
|
|||||||
this.#popupPosition = pos;
|
this.#popupPosition = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDefaultPopupPosition() {
|
||||||
|
return this.#popupPosition === null;
|
||||||
|
}
|
||||||
|
|
||||||
removeStandaloneCommentButton() {
|
removeStandaloneCommentButton() {
|
||||||
this.#commentStandaloneButton?.remove();
|
this.#commentStandaloneButton?.remove();
|
||||||
this.#commentStandaloneButton = null;
|
this.#commentStandaloneButton = null;
|
||||||
|
|||||||
@ -1953,6 +1953,10 @@ class AnnotationEditor {
|
|||||||
this.#comment.commentPopupPositionInLayer = pos;
|
this.#comment.commentPopupPositionInLayer = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hasDefaultPopupPosition() {
|
||||||
|
return this.#comment.hasDefaultPopupPosition();
|
||||||
|
}
|
||||||
|
|
||||||
get commentButtonWidth() {
|
get commentButtonWidth() {
|
||||||
return this.#comment.commentButtonWidth;
|
return this.#comment.commentButtonWidth;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class CommentManager {
|
|||||||
dateStyle: "long",
|
dateStyle: "long",
|
||||||
});
|
});
|
||||||
this.dialogElement = commentDialog.dialog;
|
this.dialogElement = commentDialog.dialog;
|
||||||
this.#dialog = new CommentDialog(commentDialog, overlayManager, ltr);
|
this.#dialog = new CommentDialog(commentDialog, overlayManager);
|
||||||
this.#popup = new CommentPopup(dateFormat, ltr, this.dialogElement);
|
this.#popup = new CommentPopup(dateFormat, ltr, this.dialogElement);
|
||||||
this.#sidebar = new CommentSidebar(
|
this.#sidebar = new CommentSidebar(
|
||||||
sidebar,
|
sidebar,
|
||||||
@ -572,19 +572,15 @@ class CommentDialog {
|
|||||||
|
|
||||||
#dialogY = 0;
|
#dialogY = 0;
|
||||||
|
|
||||||
#isLTR;
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
{ dialog, toolbar, title, textInput, cancelButton, saveButton },
|
{ dialog, toolbar, title, textInput, cancelButton, saveButton },
|
||||||
overlayManager,
|
overlayManager
|
||||||
ltr
|
|
||||||
) {
|
) {
|
||||||
this.#dialog = dialog;
|
this.#dialog = dialog;
|
||||||
this.#textInput = textInput;
|
this.#textInput = textInput;
|
||||||
this.#overlayManager = overlayManager;
|
this.#overlayManager = overlayManager;
|
||||||
this.#saveButton = saveButton;
|
this.#saveButton = saveButton;
|
||||||
this.#title = title;
|
this.#title = title;
|
||||||
this.#isLTR = ltr;
|
|
||||||
|
|
||||||
const finishBound = this.#finish.bind(this);
|
const finishBound = this.#finish.bind(this);
|
||||||
dialog.addEventListener("close", finishBound);
|
dialog.addEventListener("close", finishBound);
|
||||||
@ -686,17 +682,6 @@ class CommentDialog {
|
|||||||
}
|
}
|
||||||
this.#uiManager?.removeEditListeners();
|
this.#uiManager?.removeEditListeners();
|
||||||
this.#saveButton.disabled = true;
|
this.#saveButton.disabled = true;
|
||||||
const parentDimensions = options?.parentDimensions;
|
|
||||||
if (
|
|
||||||
parentDimensions &&
|
|
||||||
((this.#isLTR &&
|
|
||||||
posX + this._dialogWidth >
|
|
||||||
parentDimensions.x + parentDimensions.width) ||
|
|
||||||
(!this.#isLTR && posX - this._dialogWidth < parentDimensions.x))
|
|
||||||
) {
|
|
||||||
const buttonWidth = this.#editor.commentButtonWidth;
|
|
||||||
posX -= this._dialogWidth - buttonWidth * parentDimensions.width;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.#setPosition(posX, posY);
|
this.#setPosition(posX, posY);
|
||||||
|
|
||||||
@ -903,7 +888,7 @@ class CommentPopup {
|
|||||||
this.#setPosition(
|
this.#setPosition(
|
||||||
this.#posX + (x - this.#prevDragX) / parentWidth,
|
this.#posX + (x - this.#prevDragX) / parentWidth,
|
||||||
this.#posY + (y - this.#prevDragY) / parentHeight,
|
this.#posY + (y - this.#prevDragY) / parentHeight,
|
||||||
/* isDragging = */ true
|
/* correctPosition = */ false
|
||||||
);
|
);
|
||||||
this.#prevDragX = x;
|
this.#prevDragX = x;
|
||||||
this.#prevDragY = y;
|
this.#prevDragY = y;
|
||||||
@ -1019,7 +1004,10 @@ class CommentPopup {
|
|||||||
this.#time.textContent = this.#dateFormat.format(
|
this.#time.textContent = this.#dateFormat.format(
|
||||||
PDFDateString.toDateObject(modificationDate || creationDate)
|
PDFDateString.toDateObject(modificationDate || creationDate)
|
||||||
);
|
);
|
||||||
this.#setPosition(...editor.commentPopupPosition);
|
this.#setPosition(
|
||||||
|
...editor.commentPopupPosition,
|
||||||
|
/* correctPosition = */ editor.hasDefaultPopupPosition()
|
||||||
|
);
|
||||||
editor.elementBeforePopup.after(container);
|
editor.elementBeforePopup.after(container);
|
||||||
container.addEventListener(
|
container.addEventListener(
|
||||||
"focus",
|
"focus",
|
||||||
@ -1033,8 +1021,8 @@ class CommentPopup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#setPosition(x, y, isDragging = false) {
|
#setPosition(x, y, correctPosition = true) {
|
||||||
if (isDragging) {
|
if (!correctPosition) {
|
||||||
this.#editor.commentPopupPosition = [x, y];
|
this.#editor.commentPopupPosition = [x, y];
|
||||||
} else {
|
} else {
|
||||||
const widthRatio =
|
const widthRatio =
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user