diff --git a/examples/clickoverride/Override.html b/examples/clickoverride/Override.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/examples/clickoverride/Override.py b/examples/clickoverride/Override.py
new file mode 100644
index 000000000..52820cb4f
--- /dev/null
+++ b/examples/clickoverride/Override.py
@@ -0,0 +1,61 @@
+""" This example shows how to check in onBrowserEvent whether the
+ event targets a child, and if so refuse to handle it, so that
+ the child widget will be the only widget dealing with it.
+
+ see _event_targets_title() for details.
+"""
+
+import pyjd # dummy in pyjs
+
+from pyjamas.ui.VerticalPanel import VerticalPanel
+from pyjamas.ui.HTML import HTML
+from pyjamas.ui.ClickListener import ClickHandler
+from pyjamas.ui.RootPanel import RootPanel
+from pyjamas.ui import Event
+from pyjamas import log
+from pyjamas import DOM
+
+class Board(VerticalPanel, ClickHandler):
+ def __init__(self):
+ """ Standard initialiser.
+ """
+ VerticalPanel.__init__(self)
+ ClickHandler.__init__(self)
+ self.addClickListener(self)
+ self.title=Text('Board')
+ self.title.setzIndex(100)
+ self.add(self.title)
+ self.setSize("100%", "50%")
+ self.setBorderWidth(1)
+
+ def onClick(self, sender):
+ log.writebr('Text'+str(sender))
+
+ def _event_targets_title(self, event):
+ target = DOM.eventGetTarget(event)
+ return target and DOM.isOrHasChild(self.title.getElement(), target)
+
+ def onBrowserEvent(self, event):
+ etype = DOM.eventGetType(event)
+ if etype == "click":
+ if self._event_targets_title(event):
+ return
+ ClickHandler.onBrowserEvent(self, event)
+
+
+class Text(HTML, ClickHandler):
+ def __init__(self, text):
+ HTML.__init__(self, text)
+ ClickHandler.__init__(self, preventDefault=True)
+ self.addClickListener(self)
+
+ def onClick(self, sender):
+ log.writebr('Text'+str(sender))
+
+
+if __name__ == "__main__":
+ pyjd.setup("./Override.html")
+ board = Board()
+ RootPanel().add(board)
+ pyjd.run()
+
diff --git a/library/pyjamas/ui/__init__.py b/library/pyjamas/ui/__init__.py
index 7b72b1c19..6d473faa3 100644
--- a/library/pyjamas/ui/__init__.py
+++ b/library/pyjamas/ui/__init__.py
@@ -78,14 +78,7 @@ def __init__(self, **kwargs):
def applyValues(self, **kwargs):
- if not kwargs:
- return
- k = kwargs.keys()
- l = len(k)
- i = -1
- while i < l-1:
- i += 1
- prop = k[i]
+ for (prop, args) in kwargs.items():
fn = getattr(self, "set%s" % prop, None)
if not fn:
return