Plugin widgets are lacking proper integration with Studio’s docking system which makes them have bad UX in various ways:
-
Plugins docked in the main viewport are not tracked or reachable by Ctrl+Tab/Ctrl+Shift+Tab/Ctrl+P which disrupts established workflow/muscle memory for switching between tabs in the main viewport. This is especially annoying when there are many tabs open at once.
- (To be fair, Ctrl+P is only meant to be used for instances, but in practice I use it as a quick way to select tabs without my hands leaving the keyboard, and to avoid being affected by tab clutter. So I found that worth mentioning here – I have the same problem with the game viewport since it can be difficult to bring bring to foreground sometimes if I have lots of other tabs.)
-
Plugins docked in the foreground of the main viewport prevent other tabs from being brought to the foreground in some scenarios.
- e.g. when the docked plugin uses the
ScriptEditorService:OpenScriptDocumentAsync()
API, the desired script will not be brought to the foreground if the script is already open (if the script is not open then the creation of the new tab for that script will force it be placed in the foreground).
- e.g. when the docked plugin uses the
-
Plugin widgets cannot capture focus on themselves (see next point 4. for example)
-
Plugin widgets cannot bring themselves to the foreground if they are docked with other widgets (and they also cannot detect whether they are currently in the foreground or not)
- e.g. when a hotkey relevant to the plugin is pressed, it is often expected that the plugin widget will be shown. A great example is the Find All / Replace All widget which is able to do this somehow.
-
Users cannot forcibly bring a plugin to the foreground aside from completely opening and closing it again.
- e.g. in the scenario if you have lost where you docked a plugin widget and it is not currently visible, you want to force open it so you can find it. Or you just want to quickly open the widget without worrying about where it was before.
- (This issue could be solved by plugin developers provided the previous point 4. was fixed. As a user I often subconsciously expect that pressing the plugin’s “toggle widget” button to bring the widget to the foreground if it was not currently in the foreground.)
My plugin Diffy which I released recently showcases some of these issues. I thought these issues to be significant enough to mention as being Studio limitations as to a user they would seem like bugs or negligences on my part.