2005-04-01 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
* src/plugins/ScratchPad.py (ScratchPadListView.object_drag_data_received, ScratchPadListView.on_object_select_row): disables drop that originates from the pad itself and enabled dropping into the correct row as indicated by the UI. svn: r4270
This commit is contained in:
parent
a187ad7ab8
commit
3f8b592fad
@ -1,3 +1,9 @@
|
||||
2005-04-01 Richard Taylor <rjt-gramps@thegrindstone.me.uk>
|
||||
* src/plugins/ScratchPad.py (ScratchPadListView.object_drag_data_received,
|
||||
ScratchPadListView.on_object_select_row): disables drop that originates from the
|
||||
pad itself and enabled dropping into the correct row as indicated by the
|
||||
UI.
|
||||
|
||||
2005-04-01 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/plugins/Check.py: new database callback scheme; Use Utils.family_name.
|
||||
* src/plugins/ChangeNames.py: new database callback scheme
|
||||
|
@ -393,6 +393,9 @@ class ScratchPadListModel(gtk.ListStore):
|
||||
#-------------------------------------------------------------------------
|
||||
class ScratchPadListView:
|
||||
|
||||
LOCAL_DRAG_TARGET = ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0)
|
||||
LOCAL_DRAG_TYPE = 'MY_TREE_MODEL_ROW'
|
||||
|
||||
def __init__(self, db, widget):
|
||||
self._db = db
|
||||
self._widget = widget
|
||||
@ -436,6 +439,7 @@ class ScratchPadListView:
|
||||
self.treetips = TreeTips.TreeTips(self._widget,2,True)
|
||||
|
||||
self._widget.drag_dest_set(gtk.DEST_DEFAULT_ALL,
|
||||
(ScratchPadListView.LOCAL_DRAG_TARGET,) + \
|
||||
DdTargets.all_targets(),
|
||||
ACTION_COPY)
|
||||
|
||||
@ -494,14 +498,15 @@ class ScratchPadListView:
|
||||
if iter != None:
|
||||
o = model.get_value(iter,1)
|
||||
|
||||
targets = [target.target() for target in o.__class__.DROP_TARGETS]
|
||||
targets = [ScratchPadListView.LOCAL_DRAG_TARGET] + \
|
||||
[target.target() for target in o.__class__.DROP_TARGETS]
|
||||
|
||||
self._widget.enable_model_drag_source(BUTTON1_MASK, targets, ACTION_COPY)
|
||||
|
||||
def object_drag_begin(self, context, a):
|
||||
return
|
||||
|
||||
def object_drag_data_get(self, widget, context, sel_data, info, time):
|
||||
def object_drag_data_get(self, widget, context, sel_data, info, time):
|
||||
tree_selection = widget.get_selection()
|
||||
model,iter = tree_selection.get_selected()
|
||||
o = model.get_value(iter,1)
|
||||
@ -509,6 +514,11 @@ class ScratchPadListView:
|
||||
sel_data.set(sel_data.target, 8, o.pack())
|
||||
|
||||
def object_drag_data_received(self,widget,context,x,y,selection,info,time):
|
||||
|
||||
# Ignore drops from the same widget.
|
||||
if ScratchPadListView.LOCAL_DRAG_TYPE in context.targets:
|
||||
return
|
||||
|
||||
model = widget.get_model()
|
||||
sel_data = selection.data
|
||||
|
||||
@ -530,8 +540,21 @@ class ScratchPadListView:
|
||||
wrapper_class = self._target_type_to_wrapper_class_map[possible_wrappers[0]]
|
||||
|
||||
o = wrapper_class(self._db,sel_data)
|
||||
model.append([o.__class__.DRAG_TARGET.drag_type,o,o.tooltip])
|
||||
|
||||
drop_info = widget.get_dest_row_at_pos(x, y)
|
||||
if drop_info:
|
||||
path, position = drop_info
|
||||
iter = model.get_iter(path)
|
||||
if (position == gtk.TREE_VIEW_DROP_BEFORE
|
||||
or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
|
||||
model.insert_before(iter,[o.__class__.DRAG_TARGET.drag_type,o,o.tooltip])
|
||||
else:
|
||||
model.insert_after(iter,[o.__class__.DRAG_TARGET.drag_type,o,o.tooltip])
|
||||
else:
|
||||
model.append([o.__class__.DRAG_TARGET.drag_type,o,o.tooltip])
|
||||
|
||||
|
||||
# remember time for double drop workaround.
|
||||
self._previous_drop_time = time
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user