xev.xany.send_event = true; /* pretend we are using XSendEvent */
xev.xany.display = GDK_WINDOW_XDISPLAY (gdk_window->gobj());
- if (!_vst->state()->eventProc) {
- XSendEvent (xev.xany.display, xev.xany.window, TRUE, mask, &xev);
- } else {
+ if (_vst->state()->eventProc) {
_vst->state()->eventProc (&xev);
+ } else if (!dispatch_effeditkey (gdk_key)) {
+ XSendEvent (xev.xany.display, xev.xany.window, TRUE, mask, &xev);
}
}
void
WindowsVSTPluginUI::forward_key_event (GdkEventKey* ev)
{
+ if (dispatch_effeditkey (ev)) {
+ return;
+ }
+#ifndef PLATFORM_WINDOWS /* linux + wine ; libs/fst/vstwin.c */
if (ev->type != GDK_KEY_PRESS) {
return;
}
fst->n_pending_keys++;
pthread_mutex_unlock (&fst->lock);
+#endif
}
int