Index: src/Core/Banshee/PlayerInterface.cs
===================================================================
--- src/Core/Banshee/PlayerInterface.cs	(revision 1968)
+++ src/Core/Banshee/PlayerInterface.cs	(working copy)
@@ -109,6 +109,11 @@
         
         private SpecialKeys special_keys;
 
+        private static TargetEntry [] coverArtDestEntries = 
+            new TargetEntry [] {
+                Banshee.Gui.DragDrop.DragDropTarget.UriList
+            };
+
         private static TargetEntry [] playlistViewSourceEntries = 
             new TargetEntry [] {
                 Banshee.Gui.DragDrop.DragDropTarget.PlaylistRows,
@@ -289,6 +294,8 @@
             playback_box.PackStart(next_button, false, false, 0);
       
             trackInfoHeader = new TrackInfoHeader();
+            trackInfoHeader.Cover.DragDataReceived += OnCoverArtDragDataReceived;
+            Gtk.Drag.DestSet(trackInfoHeader.Cover, DestDefaults.All, coverArtDestEntries, DragAction.Copy | DragAction.Move);
             trackInfoHeader.Show();
             ((HBox)gxml["HeaderBox"]).PackStart(trackInfoHeader, true, true, 0);
             
@@ -367,9 +374,10 @@
             (gxml["BottomToolbar"] as Box).PackStart(song_properties_button, false, false, 0);
             
             // Cover Art View
-            
             cover_art_view = new CoverArtView();
             cover_art_view.Hide();
+            cover_art_view.DragDataReceived += OnCoverArtDragDataReceived;
+            Gtk.Drag.DestSet(cover_art_view, DestDefaults.All, coverArtDestEntries, DragAction.Copy | DragAction.Move);
             (gxml["LeftContainer"] as Box).PackStart(cover_art_view, false, false, 0);
             
             // Source View
@@ -612,7 +620,32 @@
             }
             
         }
-        
+
+        private void OnCoverArtDragDataReceived (object o, DragDataReceivedArgs args)
+        {
+            string coverFilename;
+            string data = DragDropUtilities.SelectionDataToString(args.SelectionData);
+            string [] uri_list = DragDropUtilities.SplitSelectionData(data);
+                        
+            TrackInfo track = PlayerEngineCore.CurrentTrack;
+
+            SafeUri uri = new SafeUri(uri_list[0]); 
+
+            if (track.Asin == null || track.Asin == "NOTFOUND") {
+                string album_artist_id = TrackInfo.CreateArtistAlbumID(track.Artist, track.Album, false);
+                coverFilename = Paths.CoverArtDirectory + album_artist_id + ".jpg" ;
+                track.CoverArtFileName = coverFilename;
+                track.Save();
+            } else {
+                coverFilename = Paths.CoverArtDirectory + track.Asin + ".jpg" ;
+            }
+
+            File.Copy(uri.LocalPath, coverFilename, true);                        
+
+            Gtk.Drag.Finish (args.Context, true, false, args.Time);
+            UpdateMetaDisplay();
+        }
+
         // ---- Window Event Handlers ----
         
         private void OnWindowPlayerDeleteEvent(object o, DeleteEventArgs args) 
