Changeset 47241 in webkit
- Timestamp:
- Aug 13, 2009 3:31:23 PM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r47236 r47241 1 2009-08-13 Zan Dobersek <zandobersek@gmail.com> 2 3 Reviewed by Gustavo Noronha. 4 5 [GTK] Drag and drop support 6 https://bugs.webkit.org/show_bug.cgi?id=23642 7 8 Utilizes functions that are being called upon drag and drop actions. 9 Uses different GTK clipboards that hold different types 10 of drag data - images, HTML markup, text, URL, URL label. 11 Also clears each clipboard before setting new data to it. 12 13 No new tests - despite some implementations, no new functionality 14 is added until implementations of the GTK drag and drop protocol 15 in WebKit part. 16 17 * platform/gtk/ClipboardGtk.cpp: 18 (WebCore::ClipboardGtk::ClipboardGtk): 19 (WebCore::ClipboardGtk::~ClipboardGtk): 20 (WebCore::getCachedImage): 21 (WebCore::ClipboardGtk::declareAndWriteDragImage): 22 (WebCore::ClipboardGtk::writeURL): 23 (WebCore::ClipboardGtk::writeRange): 24 * platform/gtk/ClipboardGtk.h: ClipboardGdk -> ClipboardGtk 25 1 26 2009-08-13 Darin Adler <darin@apple.com> 2 27 -
trunk/WebCore/platform/gtk/ClipboardGtk.cpp
r45169 r47241 18 18 #include "ClipboardGtk.h" 19 19 20 #include "CachedImage.h" 21 #include "CString.h" 22 #include "Editor.h" 23 #include "Element.h" 20 24 #include "FileList.h" 25 #include "Frame.h" 26 #include "markup.h" 21 27 #include "NotImplemented.h" 28 #include "RenderImage.h" 22 29 #include "StringHash.h" 23 30 24 #include "Editor.h"31 #include <gtk/gtk.h> 25 32 26 33 namespace WebCore { … … 34 41 : Clipboard(policy, forDragging) 35 42 { 36 notImplemented();37 43 } 38 44 39 45 ClipboardGtk::~ClipboardGtk() 40 46 { 41 notImplemented();42 47 } 43 48 … … 111 116 } 112 117 113 void ClipboardGtk::declareAndWriteDragImage(Element*, const KURL&, const String&, Frame*)118 static CachedImage* getCachedImage(Element* element) 114 119 { 115 notImplemented(); 120 // Attempt to pull CachedImage from element 121 ASSERT(element); 122 RenderObject* renderer = element->renderer(); 123 if (!renderer || !renderer->isImage()) 124 return 0; 125 126 RenderImage* image = static_cast<RenderImage*>(renderer); 127 if (image->cachedImage() && !image->cachedImage()->errorOccurred()) 128 return image->cachedImage(); 129 130 return 0; 116 131 } 117 132 118 void ClipboardGtk:: writeURL(const KURL&, const String&, Frame*)133 void ClipboardGtk::declareAndWriteDragImage(Element* element, const KURL& url, const String& label, Frame*) 119 134 { 120 notImplemented(); 135 CachedImage* cachedImage = getCachedImage(element); 136 if (!cachedImage || !cachedImage->isLoaded()) 137 return; 138 139 GdkPixbuf* pixbuf = cachedImage->image()->getGdkPixbuf(); 140 if (!pixbuf) 141 return; 142 143 GtkClipboard* imageClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardImage")); 144 gtk_clipboard_clear(imageClipboard); 145 146 gtk_clipboard_set_image(imageClipboard, pixbuf); 147 g_object_unref(pixbuf); 148 149 writeURL(url, label, 0); 121 150 } 122 151 123 void ClipboardGtk::write Range(Range*, Frame*)152 void ClipboardGtk::writeURL(const KURL& url, const String& label, Frame*) 124 153 { 125 notImplemented(); 154 GtkClipboard* textClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardText")); 155 GtkClipboard* urlClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardUrl")); 156 GtkClipboard* urlLabelClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardUrlLabel")); 157 158 gtk_clipboard_clear(textClipboard); 159 gtk_clipboard_clear(urlClipboard); 160 gtk_clipboard_clear(urlLabelClipboard); 161 162 gtk_clipboard_set_text(textClipboard, url.string().utf8().data(), -1); 163 gtk_clipboard_set_text(urlClipboard, url.string().utf8().data(), -1); 164 gtk_clipboard_set_text(urlLabelClipboard, label.utf8().data(), -1); 165 } 166 167 void ClipboardGtk::writeRange(Range* range, Frame* frame) 168 { 169 GtkClipboard* textClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardText")); 170 GtkClipboard* htmlClipboard = gtk_clipboard_get(gdk_atom_intern_static_string("WebKitClipboardHtml")); 171 172 gtk_clipboard_clear(textClipboard); 173 gtk_clipboard_clear(htmlClipboard); 174 175 gtk_clipboard_set_text(textClipboard, frame->selectedText().utf8().data(), -1); 176 gtk_clipboard_set_text(htmlClipboard, createMarkup(range, 0, AnnotateForInterchange).utf8().data(), -1); 126 177 } 127 178 -
trunk/WebCore/platform/gtk/ClipboardGtk.h
r45168 r47241 25 25 */ 26 26 27 #ifndef ClipboardG dk_h28 #define ClipboardG dk_h27 #ifndef ClipboardGtk_h 28 #define ClipboardGtk_h 29 29 30 30 #include "Clipboard.h"
Note: See TracChangeset
for help on using the changeset viewer.