diff --git a/src/octoprint/__init__.py b/src/octoprint/__init__.py index 4c20bd9f..337a4378 100644 --- a/src/octoprint/__init__.py +++ b/src/octoprint/__init__.py @@ -211,6 +211,8 @@ def init_pluginsystem(settings): def handle_plugin_loaded(name, plugin): if hasattr(plugin.instance, "__plugin_settings_overlay__"): + plugin.needs_restart = True + # plugin has a settings overlay, inject it overlay_definition = getattr(plugin.instance, "__plugin_settings_overlay__") if isinstance(overlay_definition, (tuple, list)): diff --git a/src/octoprint/plugin/core.py b/src/octoprint/plugin/core.py index cbcf51e2..a9d7f061 100644 --- a/src/octoprint/plugin/core.py +++ b/src/octoprint/plugin/core.py @@ -134,6 +134,7 @@ class PluginInfo(object): self.bundled = False self.loaded = False self.managable = True + self.needs_restart = False self._name = name self._version = version @@ -900,7 +901,7 @@ class PluginManager(object): pass def is_restart_needing_plugin(self, plugin): - return self.has_restart_needing_implementation(plugin) or self.has_restart_needing_hooks(plugin) + return plugin.needs_restart or self.has_restart_needing_implementation(plugin) or self.has_restart_needing_hooks(plugin) def has_restart_needing_implementation(self, plugin): if not plugin.implementation: