void DataTransfer::setDragImage(Element* element, int x, int y) { if (!canSetDragImage()) return; CachedImage* image; if (element && isHTMLImageElement(element) && !element->inDocument()) image = toHTMLImageElement(element)->cachedImage(); else image = 0; m_dragLocation = IntPoint(x, y); if (m_dragImageLoader && m_dragImage) m_dragImageLoader->stopLoading(m_dragImage); m_dragImage = image; if (m_dragImage) { if (!m_dragImageLoader) m_dragImageLoader = std::make_unique<DragImageLoader>(this); m_dragImageLoader->startLoading(m_dragImage); } m_dragImageElement = image ? 0 : element; updateDragImage(); }
void DataTransfer::setDragImage(Element* element, int x, int y) { if (!canSetDragImage()) return; CachedImage* image = nullptr; if (is<HTMLImageElement>(element) && !element->inDocument()) image = downcast<HTMLImageElement>(*element).cachedImage(); m_dragLocation = IntPoint(x, y); if (m_dragImageLoader && m_dragImage) m_dragImageLoader->stopLoading(m_dragImage); m_dragImage = image; if (m_dragImage) { if (!m_dragImageLoader) m_dragImageLoader = std::make_unique<DragImageLoader>(this); m_dragImageLoader->startLoading(m_dragImage); } m_dragImageElement = image ? nullptr : element; updateDragImage(); }