This commit is contained in:
박현우 2025-09-17 15:23:46 +08:00 committed by GitHub
commit eecc9cc664
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1598,6 +1598,47 @@ class EditorWebView(AnkiWebView):
self.editor.doDrop(html, internal, extended, cursor_pos) self.editor.doDrop(html, internal, extended, cursor_pos)
def _processSingleImageHtml(self, mime: QMimeData, extended):
if not mime.hasHtml():
return None
html_content = mime.html()
# Unwraps fragment data.
try:
html_content = html_content[
html_content.index("<!--StartFragment-->")
+ 20 : html_content.rindex("<!--EndFragment-->")
]
if not html_content:
# maybe malformed html?
return None
except ValueError:
return None
bs = BeautifulSoup(html_content, "html.parser")
tags = bs.find_all()
if len(tags) == 1 and tags[0].name.lower() == "img":
img_tag = tags[0]
try:
src = img_tag["src"]
except KeyError:
return None
if self.editor.isURL(src):
fname = self.editor._retrieveURL(src)
if fname:
img_tag["src"] = fname
return str(img_tag)
else:
image_html = self._processImage(mime, extended)
if image_html:
return image_html
return None
# returns (html, isInternal) # returns (html, isInternal)
def _processMime( def _processMime(
self, mime: QMimeData, extended: bool = False, drop_event: bool = False self, mime: QMimeData, extended: bool = False, drop_event: bool = False
@ -1614,6 +1655,10 @@ class EditorWebView(AnkiWebView):
mime, self, internal, extended, drop_event mime, self, internal, extended, drop_event
) )
image_html = self._processSingleImageHtml(mime, extended)
if image_html:
return image_html, True
# try various content types in turn # try various content types in turn
if mime.hasHtml(): if mime.hasHtml():
html_content = mime.html()[11:] if internal else mime.html() html_content = mime.html()[11:] if internal else mime.html()