diff --git a/src/App.vue b/src/App.vue index 5479e4f..36592b8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -22,6 +22,15 @@ export default defineComponent({ window.onresize = (evt: any) => EventBus.getInstance().emit(EventNamesDefine.WindowResize, evt); + window.onmousedown = (evt: any) => + EventBus.getInstance().emit(EventNamesDefine.WindowMouseDown, evt); + window.onmousemove = (evt: any) => + EventBus.getInstance().emit(EventNamesDefine.WindowMouseMove, evt); + window.onmouseup = (evt: any) => + EventBus.getInstance().emit(EventNamesDefine.WindowMouseUp, evt); + window.onmouseout = (evt: any) => + EventBus.getInstance().emit(EventNamesDefine.WindowMouseOut, evt); + window.document.body.onclick = (evt: any) => EventBus.getInstance().emit(EventNamesDefine.DocumentBodyClick, evt); diff --git a/src/common/EventBus.ts b/src/common/EventBus.ts index 9b8e099..46c3b98 100644 --- a/src/common/EventBus.ts +++ b/src/common/EventBus.ts @@ -21,6 +21,10 @@ export namespace EventNamesDefine { export const UnSelectAllWindows = "onUnSelectAllWindows"; export const UnFocusAllWindows = "onUnFocusAllWindows"; export const WindowResize = "onWindowResize"; + export const WindowMouseDown = "onWindowMouseDown"; + export const WindowMouseMove = "onWindowMouseMove"; + export const WindowMouseUp = "onWindowMouseUp"; + export const WindowMouseOut = "onWindowMouseOut"; export const DocumentBodyClick = "onDocumentBodyClick"; export const ResponseMessage = "onResponseData"; export const NotifyMessage = "onNotifyMessage"; diff --git a/src/components/SignalSourceTree.vue b/src/components/SignalSourceTree.vue index 065a9d1..dc646c9 100644 --- a/src/components/SignalSourceTree.vue +++ b/src/components/SignalSourceTree.vue @@ -7,6 +7,20 @@ clickable :draggable="!prop.node.is_group" @dragstart="(evt) => onDragStart(evt, prop.node)" + @click=" + $store.commit( + 'setSelectedSignalSource', + prop.node.is_group + ? $store.state.selected_signal_source + : prop.node.uuid + ) + " + :style="{ + border: + $store.state.selected_signal_source == prop.node.uuid + ? '1px solid #aacceec2' + : 'none', + }" > @@ -354,6 +354,9 @@ export default defineComponent({ disable: { type: Boolean, }, + mouse_area_flag: { + type: Boolean, + }, }, emits: [ "reset_geometry_offset", @@ -472,40 +475,50 @@ export default defineComponent({ calc_is_audio_player_window, onClick(evt: PointerEvent) { - if (selected.value != true) { - EventBus.getInstance().emit(EventNamesDefine.UnSelectAllWindows); - selected.value = true; - focused.value = true; - emit("window_fouse_in", props.window.window_id); - $store.commit("setSelectedWindow", props.window.uuid); - } - }, - onMouseDown(evt: MouseEvent) { - if (props.disable) { - return; - } - if (selected.value) { - if (evt.button == 0) { - mouse_down_flag = true; - mouse_last_pos_x = evt.x; - mouse_last_pos_y = evt.y; + if (!props.mouse_area_flag) { + evt.stopPropagation(); + if (selected.value != true) { + EventBus.getInstance().emit(EventNamesDefine.UnSelectAllWindows); + selected.value = true; + focused.value = true; + emit("window_fouse_in", props.window.window_id); + $store.commit("setSelectedWindow", props.window.uuid); } } }, + onMouseDown(evt: MouseEvent) { + if (!evt.ctrlKey) { + evt.stopPropagation(); + if (props.disable) { + return; + } + if (selected.value) { + if (evt.button == 0) { + mouse_down_flag = true; + mouse_last_pos_x = evt.x; + mouse_last_pos_y = evt.y; + } + } + } + // console.log("down", ctrl_flag); + }, onMouseMove(evt: MouseEvent) { - if (can_move.value && mouse_down_flag && selected.value) { - emit( - "reset_geometry_offset", - props.window, - evt.x - mouse_last_pos_x, - evt.y - mouse_last_pos_y, - 0, - 0 - ); + if (!props.mouse_area_flag) { + evt.stopPropagation(); + if (can_move.value && mouse_down_flag && selected.value) { + emit( + "reset_geometry_offset", + props.window, + evt.x - mouse_last_pos_x, + evt.y - mouse_last_pos_y, + 0, + 0 + ); - mouse_last_pos_x = evt.x; - mouse_last_pos_y = evt.y; - move_flag = true; + mouse_last_pos_x = evt.x; + mouse_last_pos_y = evt.y; + move_flag = true; + } } }, @@ -550,15 +563,19 @@ export default defineComponent({ cleanMouseDownFlag, onMouseLeave(evt: MouseEvent) { - if (selected.value && mouse_down_flag) { - if (move_flag) { - emit("commit_geometry", props.window); + // console.log("leave", ctrl_flag); + if (!props.mouse_area_flag) { + if (selected.value && mouse_down_flag) { + if (move_flag) { + emit("commit_geometry", props.window); + } + cleanMouseDownFlag(); } - cleanMouseDownFlag(); } }, onMouseUp(evt: MouseEvent) { + // console.log("up", ctrl_flag); if (selected.value && mouse_down_flag) { if (move_flag) { emit("commit_geometry", props.window); diff --git a/src/pages/WallPage.vue b/src/pages/WallPage.vue index b50b895..be145ee 100644 --- a/src/pages/WallPage.vue +++ b/src/pages/WallPage.vue @@ -29,6 +29,7 @@ :key="index" :disable="plan_running" class="window" + :mouse_area_flag="area_open_window_flag" :signal_source_table_uuid="item.signal_source_table_uuid" :window="item" :style="{ @@ -88,6 +89,25 @@ +
@@ -107,6 +127,11 @@ .wall_item_flag { } + +.mouse_area_mask { + background: #aacceec2; + border: 1px solid #0069bee7; +}