[Sugar-devel] [PATCH 3/3] Journal: fix the API for drag and drop - SL #3999
Manuel Quiñones
manuq at laptop.org
Wed Apr 10 15:22:17 EDT 2013
TestCase:
- open Paint activity, draw something
- go to the Journal
- drag the Paint entry to the Documents drive
- insert a USB stick
- drag the Paint entry to the USB drive
The paint should be in Documents and in the stick
Note: this needs the upstream fix
https://bugzilla.gnome.org/show_bug.cgi?id=692844 which is not in GTK+
3.6 but is added in current olpc builds as gtk3-3.6.4.1.fc18.olpc2.
So it can be tested on an XO.
Note: this does not fix the unwanted palette popup as described in the
ticket. That will be a separate patch.
Signed-off-by: Manuel Quiñones <manuq at laptop.org>
---
src/jarabe/journal/listmodel.py | 11 +++++++----
src/jarabe/journal/volumestoolbar.py | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/jarabe/journal/listmodel.py b/src/jarabe/journal/listmodel.py
index b98d01c..980db70 100644
--- a/src/jarabe/journal/listmodel.py
+++ b/src/jarabe/journal/listmodel.py
@@ -237,14 +237,17 @@ class ListModel(GObject.GObject, Gtk.TreeModel, Gtk.TreeDragSource):
def do_drag_data_get(self, path, selection):
uid = self[path][ListModel.COLUMN_UID]
- if selection.target == 'text/uri-list':
+ target_atom = selection.get_target()
+ target_name = target_atom.name()
+ if target_name == 'text/uri-list':
# Get hold of a reference so the temp file doesn't get deleted
self._temp_drag_file_path = model.get_file(uid)
logging.debug('putting %r in selection', self._temp_drag_file_path)
- selection.set(selection.target, 8, self._temp_drag_file_path)
+ selection.set(target_atom, 8, self._temp_drag_file_path)
return True
- elif selection.target == 'journal-object-id':
- selection.set(selection.target, 8, uid)
+ elif target_name == 'journal-object-id':
+ # uid is unicode but Gtk.SelectionData.set() needs str
+ selection.set(target_atom, 8, str(uid))
return True
return False
diff --git a/src/jarabe/journal/volumestoolbar.py b/src/jarabe/journal/volumestoolbar.py
index e1e6331..750aea5 100644
--- a/src/jarabe/journal/volumestoolbar.py
+++ b/src/jarabe/journal/volumestoolbar.py
@@ -291,7 +291,7 @@ class BaseButton(RadioToolButton):
def _drag_data_received_cb(self, widget, drag_context, x, y,
selection_data, info, timestamp):
- object_id = selection_data.data
+ object_id = selection_data.get_data()
metadata = model.get(object_id)
file_path = model.get_file(metadata['uid'])
if not file_path or not os.path.exists(file_path):
--
1.8.1.4
More information about the Sugar-devel
mailing list