Do drag-and-drop signals not propagate to parent widgets like other
signals?
Nested widgets can attach signal handlers to a signal, and then return
gtk.FALSE if they want the signal to be propagated to their
ancestors But returning gtk.FALSE from a signal handler attached to a
drag-and-drop signal (specifically, 'drag_motion') does not seem to
propagate the signal to parent widgets.
Is there some way to force DND signals to propagate to parent widgets?
Perhaps I am really stupid and just missing something important.
I'm including some sample code with a series of nested widgets that
demonstrates this. Clicking anywhere propagates the click signal to
all parent widgets. But dragging "middle" over anything only raises
the signal on the current widget.
matt
ps. I assume that there is no built-in way to have a scrolled window
containing drag targets automatically scroll as you drag a drag-source
over it...
import gtk
TARGET_TYPE = 1
def event(widget, event, i, *args):
if event.type == gtk.gdk.BUTTON_RELEASE:
print 'click event on frame #', i
return gtk.FALSE
def drag_motion(widget, context, x, y, time, i):
print 'drag motion on frame #', i
return gtk.FALSE
last = None
for i in range(0,4):
b = gtk.EventBox()
b.connect_after('event', event, i)
b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_DROP |
gtk.DEST_DEFAULT_HIGHLIGHT,
[("application/x-bittorrent",
gtk.TARGET_SAME_APP, TARGET_TYPE)],
gtk.gdk.ACTION_MOVE)
b.connect_after('drag_motion', drag_motion, i)
b.set_border_width(10)
f = gtk.Frame('frame %d'%i)
b.add(f)
if last is None:
l = gtk.Label('middle')
e = gtk.EventBox()
e.set_border_width(10)
e.drag_source_set(gtk.gdk.BUTTON1_MASK,
[("application/x-bittorrent",
gtk.TARGET_SAME_APP, TARGET_TYPE)],
gtk.gdk.ACTION_MOVE)
e.add(l)
f.add(e)
else:
f.add(last)
last = b
w = gtk.Window()
w.connect('destroy', lambda w: gtk.main_quit())
w.add(last)
w.show_all()
gtk.main()
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/