preview_pane: fix Copy File to Clipboard, add Copy Image URL
Copy File to Clipboard now sets QMimeData with both the file URL and image data, matching main_window's Ctrl+C behavior. Previously it only called setPixmap which didn't work in file managers. Added Copy Image URL context menu entry that copies the booru CDN URL as text. behavior change: clipboard copy now includes file URL for paste into file managers; new context menu entry for URL copy.
This commit is contained in:
parent
e9d1ca7b3a
commit
fd21f735fb
@ -332,6 +332,7 @@ class ImagePreview(QWidget):
|
|||||||
|
|
||||||
menu.addSeparator()
|
menu.addSeparator()
|
||||||
copy_image = menu.addAction("Copy File to Clipboard")
|
copy_image = menu.addAction("Copy File to Clipboard")
|
||||||
|
copy_url = menu.addAction("Copy Image URL")
|
||||||
open_action = menu.addAction("Open in Default App")
|
open_action = menu.addAction("Open in Default App")
|
||||||
browser_action = menu.addAction("Open in Browser")
|
browser_action = menu.addAction("Open in Browser")
|
||||||
|
|
||||||
@ -367,15 +368,22 @@ class ImagePreview(QWidget):
|
|||||||
elif id(action) in save_folder_actions:
|
elif id(action) in save_folder_actions:
|
||||||
self.save_to_folder.emit(save_folder_actions[id(action)])
|
self.save_to_folder.emit(save_folder_actions[id(action)])
|
||||||
elif action == copy_image:
|
elif action == copy_image:
|
||||||
|
from pathlib import Path as _Path
|
||||||
|
from PySide6.QtCore import QMimeData, QUrl
|
||||||
from PySide6.QtWidgets import QApplication
|
from PySide6.QtWidgets import QApplication
|
||||||
from PySide6.QtGui import QPixmap as _QP
|
from PySide6.QtGui import QPixmap as _QP
|
||||||
pix = self._image_viewer._pixmap
|
cp = self._current_path
|
||||||
if pix and not pix.isNull():
|
if cp and _Path(cp).exists():
|
||||||
QApplication.clipboard().setPixmap(pix)
|
mime = QMimeData()
|
||||||
elif self._current_path:
|
mime.setUrls([QUrl.fromLocalFile(str(_Path(cp).resolve()))])
|
||||||
pix = _QP(self._current_path)
|
pix = _QP(cp)
|
||||||
if not pix.isNull():
|
if not pix.isNull():
|
||||||
QApplication.clipboard().setPixmap(pix)
|
mime.setImageData(pix.toImage())
|
||||||
|
QApplication.clipboard().setMimeData(mime)
|
||||||
|
elif action == copy_url:
|
||||||
|
from PySide6.QtWidgets import QApplication
|
||||||
|
if self._current_post and self._current_post.file_url:
|
||||||
|
QApplication.clipboard().setText(self._current_post.file_url)
|
||||||
elif action == open_action:
|
elif action == open_action:
|
||||||
self.open_in_default.emit()
|
self.open_in_default.emit()
|
||||||
elif action == browser_action:
|
elif action == browser_action:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user