How to use CanvasLayer in an Editor plugin?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By tangentstorm

I am making a drawing program, and wanted to run it inside the editor.

I have a canvas layer behind the drawing area for showing a grid and dragging to select on the canvas.

I have a second canvas layer in front of the drawing area for my toolbar and other ui widgets.

The drawings area itself is not in a canvas layer, but is rendered by a camera that can pan and zoom around the scene.

All of this works great, until I try to make the scene run inside the editor, at which point my “background” is invisible behind the editor scene, and the “ui layer” covers the godot menu (outside the bounding box of the panel that holds the drawing scene).

To make everything draw within the bounds of the plugin panel, I created a second scene that loads the original scene inside a Viewport inside a VieportContainer.

Running this scene standalone also works fine, and now it renders correctly inside the godot editor (I can see background, ui, and drawing) … BUT even though the viewport is set to not disable the gui events, no gui events are recieved. It’s like looking at screenshot.

What is the proper way to construct my scene so that I can have canvas layers working with gui input inside a godot editor panel?

( My plugin scene is here, if it helps. )