diff options
Diffstat (limited to 'WebCore/platform/gtk/DragImageGtk.cpp')
-rw-r--r-- | WebCore/platform/gtk/DragImageGtk.cpp | 29 |
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*) |