if event.is_hint: xpos, ypos, state = \ event.window.get_pointer() else: xpos = event.x ypos = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK: ...
event_box.set_events(gtk.gdk.POINTER_MOTION_HINT_MASK)
self.oldxpos = -1 self.oldypos = -1
def scrollimg(self, swi, event): "The method that actually scrolls" if event.is_hint: xpos, ypos, state = \ event.window.get_pointer() else: xpos = event.x ypos = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK: swih = swi.props.hadjustment swiv = swi.props.vadjustment if xpos != self.oldxpos: aux = swih.value + self.oldxpos - xpos if swih.lower <= aux and aux <= \ swih.upper - swih.page_size: swih.value = aux if ypos != self.oldypos: aux = swiv.value + self.oldypos - ypos if swiv.lower <= aux and aux <= \ swiv.upper - swiv.page_size: swiv.value = aux else: self.oldxpos = -1 self.oldypos = -1 def pressimg(self, swi, event): "The method that sets the initial positions" self.oldxpos = event.x self.oldypos = event.y def __init__(self): ... self.mpics_scroll = gtk.ScrolledWindow(None, None) event_box = gtk.EventBox() self.mpics = gtk.Image() event_box.add(self.mpics) event_box.set_above_child(True) self.mpics_scroll.add_with_viewport\ (event_box) self.mpics_scroll.connect\ ("button-press-event", self.pressimg) self.mpics_scroll.connect ("motion-notify-event", self.scrollimg) event_box.set_events\ (gtk.gdk.POINTER_MOTION_HINT_MASK) ....