Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe/frame/clipboardtray.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/jarabe/frame/clipboardtray.py')
-rw-r--r--src/jarabe/frame/clipboardtray.py25
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
+