mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	ctrl + click / middle click now opens image in a text note in a new tab
This commit is contained in:
		
							parent
							
								
									caa11b8f7e
								
							
						
					
					
						commit
						44af431a93
					
				| @ -5,24 +5,47 @@ import linkService from "../../services/link.js"; | ||||
| import noteContentRenderer from "../../services/note_content_renderer.js"; | ||||
| 
 | ||||
| export default class AbstractTextTypeWidget extends TypeWidget { | ||||
|     doRender() { | ||||
|         this.$widget.on("dblclick", "img", e => { | ||||
|             const $img = $(e.target); | ||||
|             const src = $img.prop("src"); | ||||
|     setupImageOpening(singleClickOpens) { | ||||
|         this.$widget.on("dblclick", "img", e => this.openImageInCurrentTab($(e.target))); | ||||
| 
 | ||||
|             const match = src.match(/\/api\/images\/([A-Za-z0-9]+)\//); | ||||
| 
 | ||||
|             if (match) { | ||||
|                 const noteId = match[1]; | ||||
| 
 | ||||
|                 appContext.tabManager.getActiveTabContext().setNote(noteId); | ||||
|         this.$widget.on("click", "img", e => { | ||||
|             if ((e.which === 1 && e.ctrlKey) || e.which === 2) { | ||||
|                 this.openImageInNewTab($(e.target)); | ||||
|             } | ||||
|             else { | ||||
|                 window.open(src, '_blank'); | ||||
|             else if (e.which === 1 && singleClickOpens) { | ||||
|                 this.openImageInCurrentTab($(e.target)); | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     openImageInCurrentTab($img) { | ||||
|         const imgSrc = $img.prop("src"); | ||||
|         const noteId = this.getNoteIdFromImage(imgSrc); | ||||
| 
 | ||||
|         if (noteId) { | ||||
|             appContext.tabManager.getActiveTabContext().setNote(noteId); | ||||
|         } else { | ||||
|             window.open(imgSrc, '_blank'); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     openImageInNewTab($img) { | ||||
|         const imgSrc = $img.prop("src"); | ||||
|         const noteId = this.getNoteIdFromImage(imgSrc); | ||||
| 
 | ||||
|         if (noteId) { | ||||
|             appContext.tabManager.openTabWithNoteWithHoisting(noteId); | ||||
|         } else { | ||||
|             window.open(imgSrc, '_blank'); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     getNoteIdFromImage(imgSrc) { | ||||
|         const match = imgSrc.match(/\/api\/images\/([A-Za-z0-9]+)\//); | ||||
| 
 | ||||
|         return match ? match[1] : null; | ||||
|     } | ||||
| 
 | ||||
|     async loadIncludedNote(noteId, $el) { | ||||
|         const note = await treeCache.getNote(noteId); | ||||
| 
 | ||||
|  | ||||
| @ -84,6 +84,8 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget { | ||||
| 
 | ||||
|         keyboardActionService.setupActionsForElement('text-detail', this.$widget, this); | ||||
| 
 | ||||
|         this.setupImageOpening(false); | ||||
| 
 | ||||
|         super.doRender(); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -34,6 +34,7 @@ const TPL = ` | ||||
|      | ||||
|     .note-detail-readonly-text img { | ||||
|         max-width: 100%; | ||||
|         cursor: pointer; | ||||
|     } | ||||
|      | ||||
|     .edit-text-note-container { | ||||
| @ -66,6 +67,8 @@ export default class ReadOnlyTextTypeWidget extends AbstractTextTypeWidget { | ||||
|             this.triggerEvent('textPreviewDisabled', {tabContext: this.tabContext}); | ||||
|         }); | ||||
| 
 | ||||
|         this.setupImageOpening(true); | ||||
| 
 | ||||
|         super.doRender(); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam