diff --git a/example_scenes.py b/example_scenes.py index b57fb76a..bf817fed 100644 --- a/example_scenes.py +++ b/example_scenes.py @@ -681,6 +681,8 @@ class InteractiveDevelopment(Scene): class ControlsExample(Scene): + drag_to_pan = False + def setup(self): self.textbox = Textbox() self.checkbox = Checkbox() diff --git a/manimlib/mobject/mobject.py b/manimlib/mobject/mobject.py index 321518be..19f758fd 100644 --- a/manimlib/mobject/mobject.py +++ b/manimlib/mobject/mobject.py @@ -1319,11 +1319,9 @@ class Mobject(object): for mob in self.get_family(recurse): data = mob.data if mob.has_points() > 0 else mob._data_defaults if color is not None: - if isinstance(color, list): - rgbs = np.array(list(map(color_to_rgb, color))) + rgbs = np.array(list(map(color_to_rgb, listify(color)))) + if 1 < len(rgbs) < len(data): rgbs = resize_with_interpolation(rgbs, len(data)) - else: - rgbs = color_to_rgb(color) data[name][:, :3] = rgbs if opacity is not None: if isinstance(opacity, list): diff --git a/manimlib/scene/scene.py b/manimlib/scene/scene.py index a17cd760..2ebf1dec 100644 --- a/manimlib/scene/scene.py +++ b/manimlib/scene/scene.py @@ -60,6 +60,7 @@ class Scene(object): random_seed: int = 0 pan_sensitivity: float = 0.5 scroll_sensitivity: float = 20 + drag_to_pan: bool = True max_num_saved_states: int = 50 default_camera_config: dict = dict() default_window_config: dict = dict() @@ -831,7 +832,8 @@ class Scene(object): modifiers: int ) -> None: self.mouse_drag_point.move_to(point) - self.frame.shift(-d_point) + if self.drag_to_pan: + self.frame.shift(-d_point) event_data = {"point": point, "d_point": d_point, "buttons": buttons, "modifiers": modifiers} propagate_event = EVENT_DISPATCHER.dispatch(EventType.MouseDragEvent, **event_data)