Skip to content

Commit 4f99a04

Browse files
committed
Hold auto--rerender context manager
1 parent 8a2dc2c commit 4f99a04

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

js/src/core/Renderer.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var RendererModel = RenderableModel.extend({
1919
_model_name: 'RendererModel',
2020
_antialias: false,
2121
_alpha: false,
22+
_pause_autorender: false,
2223

2324
scene: null,
2425
camera: null,
@@ -54,7 +55,9 @@ var RendererModel = RenderableModel.extend({
5455

5556
onChildChanged: function(model, options) {
5657
RenderableModel.prototype.onChildChanged.apply(this, arguments);
57-
this.trigger('rerender', this, {});
58+
if (!this.get('_pause_autorender')) {
59+
this.trigger('rerender', this, {});
60+
}
5861
},
5962

6063
}, {

pythreejs/core/Renderer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"""
33

44
import six
5+
from contextlib import contextmanager
56
from ipywidgets import widget_serialization
67
from traitlets import (
78
Unicode, CInt, Instance, Float, Tuple, Undefined, link)
@@ -22,6 +23,7 @@ class Renderer(RenderableWidget):
2223

2324
_view_name = Unicode('RendererView').tag(sync=True)
2425
_model_name = Unicode('RendererModel').tag(sync=True)
26+
_pause_autorender = Bool(False).tag(sync=True)
2527

2628
width = CInt(200)
2729
height = CInt(200)
@@ -57,6 +59,14 @@ def freeze(self):
5759
}
5860
self.send(content)
5961

62+
@contextmanager
63+
def hold(self):
64+
self._pause_autorender = True
65+
try:
66+
yield
67+
finally:
68+
self._pause_autorender = False
69+
6070

6171
if six.PY3:
6272
from inspect import Signature, Parameter

0 commit comments

Comments
 (0)