X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Fbase.py;h=815d1d3a3f1cf23fedcc776ff980b5d4b727b051;hb=d26dffb73ba125fc76931375365b10060cf5d892;hp=c82026179c9856b4812f6937d433881a8321fddc;hpb=2a9f5c76556f00f631ea10a6cba44a92bdd27512;p=naja.git diff --git a/naja/widgets/base.py b/naja/widgets/base.py index c820261..815d1d3 100644 --- a/naja/widgets/base.py +++ b/naja/widgets/base.py @@ -7,6 +7,8 @@ from naja.events import InvalidateTheWorld, SelectEvent class Widget(object): + _is_selectable_func = None + def __init__(self, pos, size=None): self.pos = pos self.size = size or (0, 0) @@ -39,7 +41,7 @@ class Widget(object): self._prepared = False return False if SelectEvent.matches(ev) or ev.type == pgl.MOUSEBUTTONDOWN: - self.callback('click') + return self.callback('click') return False def add_callback(self, event, callback): @@ -48,6 +50,17 @@ class Widget(object): def callback(self, event): for callback in self.callbacks[event]: callback(event) + return bool(self.callbacks[event]) + + def set_selectable_callback(self, func): + self._is_selectable_func = func + + def is_selectable(self): + """Return False if this widget isn't selectable by SelectorWidget.""" + if self._is_selectable_func is not None: + return self._is_selectable_func() + else: + return True class Container(object):