Re: Routing scroll events in a Gtk.Overlay



On Thu, Jun 5, 2014 at 2:34 PM, Paul Davis <paul linuxaudiosystems com> wrote:
On Thu, Jun 5, 2014 at 2:11 PM, Robert Schroll <rschroll gmail com> wrote:
So I guess my question becomes, how can a parent (the EventBox) prevent a certain type of event (scrolling) from being delivered to its children.

standard solution to such a question is "return true from its own handler".

I'm obviously misunderstanding something, because that isn't working for me. In the test program below, there's an EventBox containing a SpinButton. The EventBox has a scroll-event handler that returns True. But when you scroll over the SpinButton, this handler is (almost) never called. Instead, the SpinButton consumes these events. If you uncomment the set_above_child line, then the EventBox gets the scroll events, but it also gets the click events, so you can no longer adjust the SpinButton by clicking on its buttons.

Now, I could keep the SpinButton from spinning by having a scroll-event handler for the SpinButton return True. For this example, it'd work fine. But in the circumstance where I have many children, grand-children, great-grand-children, etc. of the EventBox, that gets tedious.

Can you straighten me out?  Thanks,
Robert

=== eventtest.py ===
from gi.repository import Gtk, Gdk

win = Gtk.Window()
eb = Gtk.EventBox()
sb = Gtk.SpinButton(adjustment=Gtk.Adjustment(50, 0, 100, 1, 5, 0))

eb.add(sb)
#eb.set_above_child(True)
win.add(eb)
win.set_default_size(200, 200)
win.connect('destroy', Gtk.main_quit)

def eb_scroll(widget, event):
   print "Event Box scroll event"
   return True
eb.connect('scroll-event', eb_scroll)

win.show_all()
Gtk.main()





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]