diff options
Diffstat (limited to 'src/jarabe/frame/clipboardtray.py')
-rw-r--r-- | src/jarabe/frame/clipboardtray.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/jarabe/frame/clipboardtray.py b/src/jarabe/frame/clipboardtray.py index e915d15..40f0a32 100644 --- a/src/jarabe/frame/clipboardtray.py +++ b/src/jarabe/frame/clipboardtray.py @@ -125,11 +125,27 @@ class ClipboardTray(tray.VTray): def drag_motion_cb(self, widget, context, x, y, time): logging.debug('ClipboardTray._drag_motion_cb') - context.drag_status(gtk.gdk.ACTION_COPY, time) + + if self._internal_drag(context): + context.drag_status(gtk.gdk.ACTION_MOVE, time) + else: + context.drag_status(gtk.gdk.ACTION_COPY, time) + self.props.drag_active = True + return True + def drag_leave_cb(self, widget, context, time): + self.props.drag_active = False + def drag_drop_cb(self, widget, context, x, y, time): logging.debug('ClipboardTray._drag_drop_cb') + + if self._internal_drag(context): + # TODO: We should move the object within the clipboard here + if not self._context_map.has_context(context): + context.drop_finish(False, gtk.get_current_event_time()) + return False + cb_service = clipboard.get_instance() object_id = cb_service.add_object(name="") @@ -191,3 +207,10 @@ class ClipboardTray(tray.VTray): if not self._context_map.has_context(context): context.drop_finish(True, gtk.get_current_event_time()) + def _internal_drag(self, context): + view_ancestor = context.get_source_widget().get_ancestor(gtk.Viewport) + if view_ancestor is self._viewport: + return True + else: + return False + |