diff --git a/resources/assets/js/pages/manage/components/DialogItem.vue b/resources/assets/js/pages/manage/components/DialogItem.vue index 806375a3e..62e153637 100644 --- a/resources/assets/js/pages/manage/components/DialogItem.vue +++ b/resources/assets/js/pages/manage/components/DialogItem.vue @@ -44,6 +44,7 @@ :hide-forward="hideForward" :operate-visible="operateVisible" :operate-action="operateVisible && source.id === operateItem.id" + :pointer-mouse="pointerMouse" :is-right-msg="isRightMsg" @on-longpress="onLongpress" @on-view-reply="onViewReply" @@ -91,6 +92,10 @@ export default { return {} } }, + pointerMouse: { + type: Boolean, + default: false + }, simpleView: { type: Boolean, default: false diff --git a/resources/assets/js/pages/manage/components/DialogView.vue b/resources/assets/js/pages/manage/components/DialogView.vue index a3232e338..2302678d7 100644 --- a/resources/assets/js/pages/manage/components/DialogView.vue +++ b/resources/assets/js/pages/manage/components/DialogView.vue @@ -336,6 +336,10 @@ export default { type: Boolean, default: false }, + pointerMouse: { + type: Boolean, + default: false + }, isRightMsg: { type: Boolean, default: false @@ -389,7 +393,7 @@ export default { }, viewClass() { - const {msgData, operateAction, operateEnter} = this; + const {msgData, operateAction, operateEnter, pointerMouse} = this; const array = []; if (msgData.type) { array.push(msgData.type) @@ -400,6 +404,9 @@ export default { array.push('operate-enter') } } + if (pointerMouse && array.indexOf('pointer-mouse') === -1) { + array.push('pointer-mouse') + } return array }, diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 8417d604d..225985d1e 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -8,7 +8,8 @@ @dragleave.prevent="chatDragOver(false, $event)" @touchstart="onTouchStart" @touchmove="onTouchMove" - @touchend="onTouchEnd"> + @touchend="onTouchEnd" + @pointerover="onPointerover">
@@ -188,7 +189,7 @@ :data-sources="allMsgs" :data-component="msgItem" - :extra-props="{dialogData, operateVisible, operateItem, isMyDialog, msgId, unreadOne, scrollIng, readEnabled}" + :extra-props="{dialogData, operateVisible, operateItem, pointerMouse, isMyDialog, msgId, unreadOne, scrollIng, readEnabled}" :estimate-size="dialogData.type=='group' ? 105 : 77" :keeps="dialogMsgKeep" :disabled="scrollDisabled" @@ -783,6 +784,7 @@ export default { recordState: '', wrapperStart: null, + pointerMouse: false, scrollTail: 0, scrollOffset: 0, @@ -941,9 +943,9 @@ export default { const array = []; array.push(...this.dialogMsgList.filter(item => this.msgFilter(item))); if (this.msgId > 0) { - const msgItem = this.dialogMsgs.find(item => item.id == this.msgId) - if (msgItem) { - array.unshift(msgItem) + const dialogMsg = this.dialogMsgs.find(item => item.id == this.msgId) + if (dialogMsg) { + array.unshift(dialogMsg) } } if (this.tempMsgList.length > 0) { @@ -1441,7 +1443,7 @@ export default { }, operateVisible(val) { - if (!val) { + if (!val && !this.pointerMouse) { document.getSelection().removeAllRanges(); } }, @@ -2085,6 +2087,10 @@ export default { } }, + onPointerover({pointerType}) { + this.pointerMouse = pointerType === 'mouse'; + }, + pasteSend() { if (this.__paste_send_index) { return; diff --git a/resources/assets/sass/pages/components/dialog-wrapper.scss b/resources/assets/sass/pages/components/dialog-wrapper.scss index 6b734d9db..8e046170a 100644 --- a/resources/assets/sass/pages/components/dialog-wrapper.scss +++ b/resources/assets/sass/pages/components/dialog-wrapper.scss @@ -2366,7 +2366,7 @@ body.window-touch { } } } - &.operate-enter { + &.pointer-mouse { .dialog-head { .dialog-content { user-select: text; @@ -2541,7 +2541,7 @@ body.window-portrait { } } } - &.operate-enter { + &.pointer-mouse { .dialog-head { .dialog-content { a, img {