summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/gtk/DragImageGtk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/gtk/DragImageGtk.cpp')
-rw-r--r--WebCore/platform/gtk/DragImageGtk.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/WebCore/platform/gtk/DragImageGtk.cpp b/WebCore/platform/gtk/DragImageGtk.cpp
index 4ddae3a..4c77830 100644
--- a/WebCore/platform/gtk/DragImageGtk.cpp
+++ b/WebCore/platform/gtk/DragImageGtk.cpp
@@ -20,20 +20,37 @@
#include "CachedImage.h"
#include "Image.h"
+#include <gtk/gtk.h>
+
namespace WebCore {
-IntSize dragImageSize(DragImageRef)
+IntSize dragImageSize(DragImageRef image)
{
+ if (image)
+ return IntSize(gdk_pixbuf_get_width(image), gdk_pixbuf_get_height(image));
+
return IntSize(0, 0);
}
-void deleteDragImage(DragImageRef)
+void deleteDragImage(DragImageRef image)
{
+ if (image)
+ g_object_unref(image);
}
-DragImageRef scaleDragImage(DragImageRef image, FloatSize)
+DragImageRef scaleDragImage(DragImageRef image, FloatSize scale)
{
- return image;
+ if (image) {
+ IntSize imageSize = dragImageSize(image);
+ GdkPixbuf* scaledImage = gdk_pixbuf_scale_simple(image,
+ imageSize.width() * scale.width(),
+ imageSize.height() * scale.height(),
+ GDK_INTERP_BILINEAR);
+ deleteDragImage(image);
+ return scaledImage;
+ }
+
+ return 0;
}
DragImageRef dissolveDragImageToFraction(DragImageRef image, float)
@@ -41,9 +58,9 @@ DragImageRef dissolveDragImageToFraction(DragImageRef image, float)
return image;
}
-DragImageRef createDragImageFromImage(Image*)
+DragImageRef createDragImageFromImage(Image* image)
{
- return 0;
+ return image->getGdkPixbuf();
}
DragImageRef createDragImageIconForCachedImage(CachedImage*)