Premiere Pro doesn't send a PF_Event_MOUSE_EXITED event, or one last sequence of PF_Event_ADJUST_CURSOR and PF_Event_DRAW events, when the mouse cursor exists a custom parameter’s UI in the inspector (ECW).
This problem makes it impossible for third-party plug-ins to implement "mouse hovering" effects, such a highlighting a button’s frame and title only while the mouse sits above the control – similarly to how Premiere Pro’s own native controls work.
A third-party plugin crucially needs either a PF_Event_MOUSE_EXITED event (during which it can set out_flags->PF_OutFlag_REFRESH_UI and evt_out_flags->PF_EO_ALWAYS_UPDATE flags) or one more round of PF_Event_ADJUST_CURSOR and PF_Event_DRAW events to have a chance to redraw its custom controls without any effects or elements that are supposed to be visible only while the mouse cursor is within its section of the inspector (ECW).
Because plugins are not given a chance to redraw their UI every single time the mouse leaves the parameter’s area, you see the sort of UI glitch exemplified in the attached video.
Steps to reproduce:
- Install the most recent version of FxFactory from our website: https://fxfactory.com/download/
- Launch the FxFactory app, and install the Face Blur plugin
- Launch Premiere Pro
- Locate the Face Blur effect, and apply it to a clip.
- As shown in the attached video the Face Blur plugin has a custom parameter whose UI will conditionally display a tooltip/title when the mouse cursor happens to be over one of the available Shape choices:
In the screenshot above, the mouse cursor is over the Oval.
In the screenshow below, the mouse is over the Rectangle:
And if the mouse cursor is not over the control, no tooltip should be visible:
- Notice that our custom UI can correctly show/hide its tooltips only insofar as it receives mouse events. Crucially, if the user happens to be moving the mouse cursor too fast over the inspector, Premiere Pro seems all too happy to skip sending events. This is why the tooltip sometimes "sticks", even though it's not supposed to be displayed. The plugin is never given one more chance to redraw the custom UI without the tooltip. The last events it received, were sent while the mouse cursor was still above its area.
The same problem affects AE. Both host apps are probably tring to be efficient, and minimize the number of events sent to plugins that have custom parameters... but in doing so they are preventing plugins from creating UI that feels "first-class" in the inspector. The new (and pretty neat :-)) Spectrum UI makes extensive use of mouse-hovering effects to highlight its own controls, and we would love to be able to do the same.
One final note: the docs (assuming they are up-to-date on this topic) mention that the PF_Event_MOUSE_EXITED event is only ever invoked for the layer/composition windows, when implementing custom on-screen controls. If that is the case, then the issue to be addressed by the SDK is that PF_Event_MOUSE_EXITED needs to be invoked for the inspector (ECW) too. Alternatively, the host app must send another pair of PF_Event_ADJUST_CURSOR and PF_Event_DRAW events allowing the custom parameter to acknowledge the fact that the mouse is not longer within its section of the ECW and redraw its custom UI accordingly.