summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-10-25 11:01:03 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-10-25 11:01:03 +0900
commit4bfa29c0abb68b217b486a75f48316da1b56e621 (patch)
treeebb685302569ec6d06544ef7f9eebeb4076f109d /src
parentインポート/エクスポート設定を復活 (diff)
downloadsharkey-4bfa29c0abb68b217b486a75f48316da1b56e621.tar.gz
sharkey-4bfa29c0abb68b217b486a75f48316da1b56e621.tar.bz2
sharkey-4bfa29c0abb68b217b486a75f48316da1b56e621.zip
コンテキストメニューの位置計算を改善
Diffstat (limited to 'src')
-rw-r--r--src/client/components/ui/context-menu.vue26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/client/components/ui/context-menu.vue b/src/client/components/ui/context-menu.vue
index 3a11589e8a..1b4d386ebd 100644
--- a/src/client/components/ui/context-menu.vue
+++ b/src/client/components/ui/context-menu.vue
@@ -35,8 +35,30 @@ export default defineComponent({
},
},
mounted() {
- this.$el.style.top = this.ev.pageY + 'px';
- this.$el.style.left = this.ev.pageX + 'px';
+ let left = this.ev.pageX + 1; // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
+ let top = this.ev.pageY + 1; // 間違って右ダブルクリックした場合に意図せずアイテムがクリックされるのを防ぐため + 1
+
+ const width = this.$el.offsetWidth;
+ const height = this.$el.offsetHeight;
+
+ if (left + width - window.pageXOffset > window.innerWidth) {
+ left = window.innerWidth - width + window.pageXOffset;
+ }
+
+ if (top + height - window.pageYOffset > window.innerHeight) {
+ top = window.innerHeight - height + window.pageYOffset;
+ }
+
+ if (top < 0) {
+ top = 0;
+ }
+
+ if (left < 0) {
+ left = 0;
+ }
+
+ this.$el.style.top = top + 'px';
+ this.$el.style.left = left + 'px';
for (const el of Array.from(document.querySelectorAll('body *'))) {
el.addEventListener('mousedown', this.onMousedown);