Merge pull request #16533 from calixteman/fix_freetext_undo
[Editor] Fix test failures in m-c because of the new FreeText undo/redo stuff
This commit is contained in:
		
						commit
						f2a29e858f
					
				| @ -330,36 +330,6 @@ class AnnotationEditorLayer { | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Add a new editor and make this addition undoable. | ||||
|    * @param {AnnotationEditor} editor | ||||
|    */ | ||||
|   addANewEditor(editor) { | ||||
|     const cmd = () => { | ||||
|       this.addOrRebuild(editor); | ||||
|     }; | ||||
|     const undo = () => { | ||||
|       editor.remove(); | ||||
|     }; | ||||
| 
 | ||||
|     this.addCommands({ cmd, undo, mustExec: true }); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Add a new editor and make this addition undoable. | ||||
|    * @param {AnnotationEditor} editor | ||||
|    */ | ||||
|   addUndoableEditor(editor) { | ||||
|     const cmd = () => { | ||||
|       this.addOrRebuild(editor); | ||||
|     }; | ||||
|     const undo = () => { | ||||
|       editor.remove(); | ||||
|     }; | ||||
| 
 | ||||
|     this.addCommands({ cmd, undo, mustExec: false }); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Get an id for an editor. | ||||
|    * @returns {string} | ||||
|  | ||||
| @ -472,6 +472,7 @@ class AnnotationEditor { | ||||
|    */ | ||||
|   rebuild() { | ||||
|     this.div?.addEventListener("focusin", this.#boundFocusin); | ||||
|     this.div?.addEventListener("focusout", this.#boundFocusout); | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|  | ||||
| @ -46,8 +46,6 @@ class FreeTextEditor extends AnnotationEditor { | ||||
| 
 | ||||
|   #editorDivId = `${this.id}-editor`; | ||||
| 
 | ||||
|   #hasAlreadyBeenCommitted = false; | ||||
| 
 | ||||
|   #fontSize; | ||||
| 
 | ||||
|   static _freeTextDefaultContent = ""; | ||||
| @ -355,13 +353,6 @@ class FreeTextEditor extends AnnotationEditor { | ||||
|     } | ||||
| 
 | ||||
|     super.commit(); | ||||
|     if (!this.#hasAlreadyBeenCommitted) { | ||||
|       // This editor has something and it's the first time
 | ||||
|       // it's commited so we can add it in the undo/redo stack.
 | ||||
|       this.#hasAlreadyBeenCommitted = true; | ||||
|       this.parent.addUndoableEditor(this); | ||||
|     } | ||||
| 
 | ||||
|     this.disableEditMode(); | ||||
|     const savedText = this.#content; | ||||
|     const newText = (this.#content = this.#extractText().trimEnd()); | ||||
| @ -371,7 +362,12 @@ class FreeTextEditor extends AnnotationEditor { | ||||
| 
 | ||||
|     const setText = text => { | ||||
|       this.#content = text; | ||||
|       if (!text) { | ||||
|         this.remove(); | ||||
|         return; | ||||
|       } | ||||
|       this.#setContent(); | ||||
|       this.rebuild(); | ||||
|       this.#setEditorDimensions(); | ||||
|     }; | ||||
|     this.addCommands({ | ||||
|  | ||||
| @ -418,6 +418,51 @@ describe("Editor", () => { | ||||
|         }); | ||||
| 
 | ||||
|         expect(text).withContext(`In ${browserName}`).toEqual("AAAA"); | ||||
| 
 | ||||
|         for (let i = 0; i < 4; i++) { | ||||
|           await page.keyboard.down("Control"); | ||||
|           await page.keyboard.press("z"); | ||||
|           await page.keyboard.up("Control"); | ||||
|           await page.waitForTimeout(10); | ||||
|         } | ||||
| 
 | ||||
|         expect(await getSelectedEditors(page)) | ||||
|           .withContext(`In ${browserName}`) | ||||
|           .toEqual([]); | ||||
| 
 | ||||
|         await page.keyboard.down("Control"); | ||||
|         await page.keyboard.press("y"); | ||||
|         await page.keyboard.up("Control"); | ||||
|         await page.waitForTimeout(10); | ||||
| 
 | ||||
|         text = await page.$eval(`${getEditorSelector(9)} .internal`, el => { | ||||
|           return el.innerText; | ||||
|         }); | ||||
| 
 | ||||
|         expect(text).withContext(`In ${browserName}`).toEqual("A"); | ||||
| 
 | ||||
|         // Add a new A.
 | ||||
|         const editorRect = await page.$eval(getEditorSelector(9), el => { | ||||
|           const { x, y, width, height } = el.getBoundingClientRect(); | ||||
|           return { x, y, width, height }; | ||||
|         }); | ||||
|         await page.mouse.click( | ||||
|           editorRect.x + editorRect.width / 2, | ||||
|           editorRect.y + editorRect.height / 2, | ||||
|           { clickCount: 2 } | ||||
|         ); | ||||
|         await page.type(`${getEditorSelector(9)} .internal`, "A"); | ||||
| 
 | ||||
|         // Commit.
 | ||||
|         await page.mouse.click( | ||||
|           editorRect.x, | ||||
|           editorRect.y + 2 * editorRect.height | ||||
|         ); | ||||
| 
 | ||||
|         text = await page.$eval(`${getEditorSelector(9)} .internal`, el => { | ||||
|           return el.innerText; | ||||
|         }); | ||||
|         expect(text).withContext(`In ${browserName}`).toEqual("AA"); | ||||
|       } | ||||
|     }); | ||||
|   }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user