Make DirectSave just a special text/uri-list which owns

the disk data.
This commit is contained in:
Marco Pesenti Gritti 2007-09-26 10:09:26 +02:00
parent a449430500
commit 55baffea32
2 changed files with 8 additions and 11 deletions

View File

@ -94,16 +94,9 @@ class ClipboardObject:
return '' return ''
format = mime.choose_most_significant(self._formats.keys()) format = mime.choose_most_significant(self._formats.keys())
if format == 'text/uri-list':
uri = None
if format == 'XdndDirectSave0':
uri = self._formats['XdndDirectSave0'].get_data()
elif format == 'text/uri-list':
data = self._formats['text/uri-list'].get_data() data = self._formats['text/uri-list'].get_data()
uri = data.split('\n')[0] uri = urlparse.urlparse(data.split('\n')[0], 'file')
if uri:
uri = urlparse.urlparse(uri, 'file')
if uri.scheme == 'file': if uri.scheme == 'file':
if os.path.exists(uri.path): if os.path.exists(uri.path):
format = mime.get_for_file(uri.path) format = mime.get_for_file(uri.path)
@ -116,6 +109,8 @@ class ClipboardObject:
class Format: class Format:
def __init__(self, type, data, on_disk): def __init__(self, type, data, on_disk):
self.owns_disk_data = False
self._type = type self._type = type
self._data = data self._data = data
self._on_disk = on_disk self._on_disk = on_disk

View File

@ -76,7 +76,9 @@ class ClipboardService(dbus.service.Object):
cb_object = self._objects[str(object_path)] cb_object = self._objects[str(object_path)]
if format_type == 'XdndDirectSave0': if format_type == 'XdndDirectSave0':
cb_object.add_format(Format(format_type, data, on_disk)) format = Format('text/uri-list', data, on_disk)
format.owns_disk_data = True
cb_object.add_format(format)
elif on_disk and cb_object.get_percent() == 100: elif on_disk and cb_object.get_percent() == 100:
new_uri = self._copy_file(data) new_uri = self._copy_file(data)
cb_object.add_format(Format(format_type, new_uri, on_disk)) cb_object.add_format(Format(format_type, new_uri, on_disk))
@ -116,7 +118,7 @@ class ClipboardService(dbus.service.Object):
if percent == 100: if percent == 100:
formats = cb_object.get_formats() formats = cb_object.get_formats()
for format_name, format in formats.iteritems(): for format_name, format in formats.iteritems():
if format.is_on_disk() and format_name != 'XdndDirectSave0': if format.is_on_disk() and not format.owns_disk_data:
new_uri = self._copy_file(format.get_data()) new_uri = self._copy_file(format.get_data())
format.set_data(new_uri) format.set_data(new_uri)