OSDN Git Service

ksnapshot: use the same pixmap size as KPixmapWidget for the drag
authorIvailo Monev <xakepa10@gmail.com>
Wed, 30 Aug 2023 19:17:35 +0000 (22:17 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Wed, 30 Aug 2023 19:17:35 +0000 (22:17 +0300)
because the preview pixmap size depends on the size of ksnapshot itself
it may be very big and the drag pixmap itself may be big covering way too
much screen space if not down-scaled to a reasonable size

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
ksnapshot/ksnapshot.cpp

index c24ae0a..605cc4d 100644 (file)
@@ -347,7 +347,13 @@ void KSnapshot::slotDragSnapshot()
     drag->setMimeData(new QMimeData);
     drag->mimeData()->setImageData(snapshot);
     drag->mimeData()->setData("application/x-kde-suggestedfilename", filename.fileName().toUtf8());
-    drag->setPixmap(preview());
+    const QPixmap previewPixmap = preview();
+    if (!previewPixmap.isNull()) {
+        // NOTE: keep in sync with:
+        // kdelibs/kdeui/widgets/kpixmapwidget.cpp
+        drag->setPixmap(previewPixmap.scaled(QSize(96, 96), Qt::KeepAspectRatio));
+        drag->setHotSpot(QPoint(-5,-7));
+    }
     QList<QUrl> urls;
     urls << urlToOpen();
     drag->mimeData()->setUrls(urls);