@@ -478,6 +478,7 @@ class MultiCanvas(DOMWidget):
478478
479479 def __init__ (self , n_canvases = 3 , * args , ** kwargs ):
480480 """Constructor."""
481+ self .caching = kwargs .get ('caching' , False )
481482 size = kwargs .get ('size' , (700 , 500 ))
482483
483484 super (MultiCanvas , self ).__init__ (* args , _canvases = [Canvas (size = size ) for _ in range (n_canvases )], ** kwargs )
@@ -488,10 +489,15 @@ def __getitem__(self, key):
488489 """Access one of the Canvas instances."""
489490 return self ._canvases [key ]
490491
491- @observe ('size' )
492- def _on_size_change (self , change ):
493- for canvas in self ._canvases :
494- canvas .size = change .new
492+ def __setattr__ (self , name , value ):
493+ super (MultiCanvas , self ).__setattr__ (name , value )
494+
495+ if name == 'caching' :
496+ for layer in self ._canvases :
497+ layer .caching = value
498+ if name == 'size' :
499+ for layer in self ._canvases :
500+ layer .size = value
495501
496502 def on_client_ready (self , callback , remove = False ):
497503 """Register a callback that will be called when a new client is ready to receive draw commands.
@@ -503,6 +509,16 @@ def on_client_ready(self, callback, remove=False):
503509 """
504510 self ._canvases [- 1 ]._client_ready_callbacks .register_callback (callback , remove = remove )
505511
512+ def clear (self ):
513+ """Clear the Canvas."""
514+ for layer in self ._canvases :
515+ layer .clear ()
516+
517+ def flush (self ):
518+ """Flush all the cached commands and clear the cache."""
519+ for layer in self ._canvases :
520+ layer .flush ()
521+
506522
507523@contextmanager
508524def hold_canvas (canvas ):
0 commit comments