|
Re: drag-and-drop signal propagation: msg#00139gnome.gtk+.python
A friend of mine reports from looking at the GTK sources that drag-and-drop signals are explicitly excluded from propagating like other signals. matt On Thu, Dec 09, 2004 at 05:58:01PM -0800, Matt Chisholm wrote: >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 pygtk@xxxxxxxxxx http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/ |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: easy hyperlink builder (email-http link): 00139, David Eriksson |
|---|---|
| Next by Date: | Using Combox Box: 00139, Chuck Robey |
| Previous by Thread: | drag-and-drop signal propagationi: 00139, Matt Chisholm |
| Next by Thread: | [Fwd: Re: ANNOUNCE: PyGTK 2.5.0 released (unstable) - PROBLEMS]: 00139, Johan Dahlin |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |