diff --git a/IPython/html/static/widgets/js/widget.js b/IPython/html/static/widgets/js/widget.js
index fb3a404..0a4caa7 100644
--- a/IPython/html/static/widgets/js/widget.js
+++ b/IPython/html/static/widgets/js/widget.js
@@ -76,7 +76,7 @@ define(["widgets/js/manager",
this.set_state(msg.content.data.state);
if (this.init_state_callback) {
this.init_state_callback.apply(this, [this]);
- this.init_state_callback = null;
+ delete this.init_state_callback;
}
break;
case 'custom':
diff --git a/IPython/html/widgets/widget.py b/IPython/html/widgets/widget.py
index e4c189d..f16b94d 100644
--- a/IPython/html/widgets/widget.py
+++ b/IPython/html/widgets/widget.py
@@ -102,7 +102,7 @@ class Widget(LoggingConfigurable):
target_name = msg['content']['data']['target_name']
widget_class = import_item(target_name)
widget = widget_class(open_comm=False)
- widget.set_comm(comm)
+ widget.comm = comm
#-------------------------------------------------------------------------
@@ -160,11 +160,11 @@ class Widget(LoggingConfigurable):
'model_module': self._model_module})
if self._model_id is not None:
args['comm_id'] = self._model_id
- self.set_comm(Comm(**args))
+ self.comm = Comm(**args)
- def set_comm(self, comm):
- """Set's the comm of the widget."""
- self.comm = comm
+ def _comm_changed(self, name, new):
+ """Called when the comm is changed."""
+ self.comm = new
self._model_id = self.model_id
self.comm.on_msg(self._handle_msg)
@@ -173,7 +173,6 @@ class Widget(LoggingConfigurable):
# first update
self.send_state()
-
@property
def model_id(self):
"""Gets the model id of this widget.