Merge pull request #11285 from allenve/330-6.10.0

fix: 全局事件动作避免死锁
This commit is contained in:
Allen 2024-11-28 19:30:54 +08:00 committed by GitHub
commit 08bf37591a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 4 deletions

View File

@ -225,8 +225,12 @@ export const bindGlobalEventForRenderer = (renderer: any) => {
scoped: renderer?.context,
data
});
// 过滤掉当前的广播事件,避免循环广播
const actions = listener.actions.filter(
a => !(a.actionType === 'broadcast' && a.eventName === eventName)
);
runActions(listener.actions, renderer, rendererEvent);
runActions(actions, renderer, rendererEvent);
};
}
return () => {

View File

@ -46,7 +46,7 @@ export default class ActionConfigPanel extends React.Component<RendererProps> {
} else {
const __originActionSchema = data.__actionSchema;
schema = isFunction(__originActionSchema)
? __originActionSchema(manager)
? __originActionSchema(manager, data)
: __originActionSchema;
}

View File

@ -20,7 +20,7 @@ registerActionPanel('broadcast', {
</div>
);
},
schema: (manager: EditorManager) => {
schema: (manager: EditorManager, data: any) => {
const globalEvents =
manager.config?.actionOptions?.globalEventGetter?.(manager) || [];
return {
@ -34,7 +34,8 @@ registerActionPanel('broadcast', {
options: globalEvents.map(item => ({
label: item.label,
value: item.name,
mapping: item.mapping
mapping: item.mapping,
disabled: item.name === data.eventKey
})),
size: 'lg',
mode: 'horizontal',