Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-26 09:00:16 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-26 09:00:16 (GMT)
commit79db01065349d796aeb566c1e057186de7e0b75e (patch)
tree7d8c0b4108bc0a090af8c7e7b97a09889eb5213e
parent2a197bb8b863a0f2a71e40a501fe5f2e8e07f371 (diff)
Fix uri list parsing
-rw-r--r--services/shell/clipboardobject.py2
-rw-r--r--services/shell/clipboardservice.py2
-rw-r--r--shell/view/clipboardmenu.py3
-rw-r--r--sugar/objects/mime.py9
4 files changed, 13 insertions, 3 deletions
diff --git a/services/shell/clipboardobject.py b/services/shell/clipboardobject.py
index 86b719c..8a104ff 100644
--- a/services/shell/clipboardobject.py
+++ b/services/shell/clipboardobject.py
@@ -96,7 +96,7 @@ class ClipboardObject:
format = mime.choose_most_significant(self._formats.keys())
if format == 'text/uri-list':
data = self._formats['text/uri-list'].get_data()
- uri = urlparse.urlparse(data.split('\n')[0], 'file')
+ uri = urlparse.urlparse(mime.split_uri_list(data)[0], 'file')
if uri.scheme == 'file':
if os.path.exists(uri.path):
format = mime.get_for_file(uri.path)
diff --git a/services/shell/clipboardservice.py b/services/shell/clipboardservice.py
index c8973ed..a99f7be 100644
--- a/services/shell/clipboardservice.py
+++ b/services/shell/clipboardservice.py
@@ -76,7 +76,7 @@ class ClipboardService(dbus.service.Object):
cb_object = self._objects[str(object_path)]
if format_type == 'XdndDirectSave0':
- format = Format('text/uri-list', data, on_disk)
+ format = Format('text/uri-list', data + '\r\n', on_disk)
format.owns_disk_data = True
cb_object.add_format(format)
elif on_disk and cb_object.get_percent() == 100:
diff --git a/shell/view/clipboardmenu.py b/shell/view/clipboardmenu.py
index 5acd8cc..f6190e4 100644
--- a/shell/view/clipboardmenu.py
+++ b/shell/view/clipboardmenu.py
@@ -183,7 +183,8 @@ class ClipboardMenu(Palette):
transfer_ownership = False
if format == 'text/uri-list':
- file_path = urlparse.urlparse(data['DATA']).path
+ uri = mime.split_uri_list(data['DATA'])[0]
+ file_path = urlparse.urlparse(uri).path
else:
if data['ON_DISK']:
file_path = urlparse.urlparse(data['DATA']).path
diff --git a/sugar/objects/mime.py b/sugar/objects/mime.py
index 08b26b1..62a6f53 100644
--- a/sugar/objects/mime.py
+++ b/sugar/objects/mime.py
@@ -91,6 +91,15 @@ def choose_most_significant(mime_types):
logging.debug('Returning first: %r.' % mime_types[0])
return mime_types[0]
+def split_uri_list(uri_list):
+ result = []
+
+ splitted = uri_list.split('\n')
+ for uri in splitted:
+ result.append(uri.strip())
+
+ return result
+
def _file_looks_like_text(file_name):
f = open(file_name, 'r')
try: