vscode icon indicating copy to clipboard operation
vscode copied to clipboard

Right Click acting abnormal

Open thwaller opened this issue 4 years ago • 270 comments

Issue Type: Bug

When I right click, the menu will flash on and then off almost immediately, like maybe 100 or 200 milliseconds. This is not all the time, but I am not able to narrow it down. It seems to be only in the editor that this issue exists. I can sometimes "fix" it by right clicking on the left side, like in the Explorer, then going back to the editor. I do not have this issue with any other software on my system. This started maybe Wed this last week, so approx around Dec 16th.

I removed 2 SCSS extensions which I believed were at fault, but with them uninstalled, the problem still exists. Those were my most recently installed extensions, the rest have been there a while.

Regarding what happens, when the right click menu disappears it seems like an option is being selected, almost like there is some sort of double click happening... the first right click to open the menu and a second to select something. I believe this to be the case as different things happen after I right click that normally require me to explicitely call said function.

VS Code version: Code - Insiders 1.53.0-insider (c927a8015b9e26bd454d6e293bb0384aa1975d06, 2020-12-18T05:27:50.274Z) OS version: Linux x64 5.4.0-59-generic

System Info
Item Value
CPUs Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz (8 x 2799)
GPU Status 2d_canvas: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
oop_rasterization: disabled_off
opengl: enabled_on
protected_video_decode: unavailable_off
rasterization: disabled_software
skia_renderer: enabled_on
video_decode: disabled_software
vulkan: disabled_off
webgl: enabled
webgl2: enabled
Load (avg) 0, 0, 0
Memory (System) 31.32GB (0.37GB free)
Process Argv --no-sandbox --unity-launch --crash-reporter-id 99855e03-cc37-4ed5-907b-28a1bf4d8453
Screen Reader no
VM 0%
DESKTOP_SESSION mate
XDG_CURRENT_DESKTOP MATE
XDG_SESSION_DESKTOP mate
XDG_SESSION_TYPE x11
Extensions (68)
Extension Author (truncated) Version
html-snippets abu 0.2.1
scss-lint ada 0.1.10
project-manager ale 12.0.1
code-gnu-global aus 0.2.2
emojisense bie 0.8.0
markdown-checkbox bie 0.1.3
xml2json bui 1.2.4
npm-intellisense chr 1.3.1
path-intellisense chr 2.3.0
vscode-mysql-client2 cwe 2.8.6
vscode-markdownlint Dav 0.38.0
vscode-eslint dba 2.1.14
githistory don 0.6.14
xml Dot 2.5.1
gitlens eam 11.0.6
vscode-html-css ecm 1.2.1
vscode-npm-script eg2 0.3.13
apacheconf-snippets eim 1.3.0
git-project-manager fel 1.7.1
php-intellisense fel 2.3.14
vscode-firefox-debug fir 2.9.1
shell-format fox 7.0.1
vscode-pull-request-github Git 0.22.0
beautify Hoo 1.5.0
vscode-git-add-and-commit iva 2.1.1
search-node-modules jas 1.3.0
shortcut-menu-bar jer 1.5.0
vscode-gnupg-tool JHe 1.3.9
vscode-sshfs Kel 1.19.1
sftp lix 1.12.9
code-beautifier mic 2.3.3
xml-format mik 1.0.2
prettify-json moh 0.0.3
vscode-apache mrm 1.2.0
python ms- 2020.12.424452561
vscode-pylance ms- 2020.12.2
jupyter ms- 2020.12.414227025
cpptools ms- 1.1.3
debugger-for-chrome msj 4.12.11
sqltools mtx 0.23.0
vetur oct 0.31.3
java red 0.73.0
vscode-xml red 0.14.0
shellman Rem 4.7.0
live-sass rit 3.0.0
LiveServer rit 5.6.1
bash-debug rog 0.3.9
joplin-vscode-plugin rxl 0.3.0
bash-beautify sha 0.1.1
markdown-preview-enhanced shd 0.5.13
html5-boilerplate sid 1.1.1
sonarlint-vscode Son 1.19.0
code-spell-checker str 1.10.2
html-preview-vscode tht 0.2.5
shellcheck tim 0.12.2
vscodeintellicode Vis 1.2.10
vscode-java-debug vsc 0.30.0
vscode-java-dependency vsc 0.16.0
vscode-java-pack vsc 0.12.1
vscode-maven vsc 0.27.0
codetour vsl 0.0.42
gistfs vsl 0.1.12
nodejs-extension-pack wad 0.1.9
eno Wsc 2.3.41
JavaScriptSnippets xab 1.8.0
markdown-all-in-one yzh 3.4.0
html-css-class-completion Zig 1.20.0
ab-html-formatter zov 0.0.2

thwaller avatar Dec 20 '20 03:12 thwaller

@thwaller what is almost certainly happening is that the menu is being drawn underneath the mouse cursor and that is activating the menu since the mouse up action triggers the item. we can't prevent that mouse up action from triggering as these are native menus, but we can try to fix the position (we already do try but there seems to be a consistent case you are hitting). if you could reproduce and take a short video, that would be helpful.

sbatten avatar Dec 21 '20 17:12 sbatten

Please see a right click attempt that worked, then one that did not, then one that did in the video.

Side note: I was disappointed to see that MKV files cannot be uploaded.

EDIT: Before anyone comments, I have no issue with showing the credentials, they are only temp during this process.

https://user-images.githubusercontent.com/13359198/102859911-7a6c5a00-43f2-11eb-8fdf-a5cba1807989.mp4

thwaller avatar Dec 22 '20 07:12 thwaller

Interesting. For me, I have tried what you suggest and attached a video of a series of right clicks at different lengths of time pressing the button down. For me, it did not seem to make a difference, it just changed how fast the menu disappeared. Also note that in this video you can see the mouse cursor is not moving, it is just a series of right clicks.

https://user-images.githubusercontent.com/13359198/103209266-48faff00-48c8-11eb-889e-f2efa50b9e58.mp4

thwaller avatar Dec 28 '20 10:12 thwaller

@deepak1556 if you get a chance, maybe you could help me with this some time. It seems even with the same coordinates on our side, the menu is sometimes still drawn under the cursor on linux and I am not sure we can do any more about it.

sbatten avatar Jan 04 '21 14:01 sbatten

@sbatten How about always using custom menus, but still allow title bar style to be switched between native and custom?

yume-chan avatar Feb 07 '21 02:02 yume-chan

Yes, using custom menus does help, but it creates other issues for my workflow. One is that I can no longer hide the title bar, as I currently do with the native one (I'm using Linux/KDE). The other is that the menus are much, much larger, to a point where using them means scrolling through the list of options and this makes the workflow more difficult.

I understand some have had this issue years ago as well (I found a github issue opened 4 years ago), but for me personally it only appeared in VSCode 1.53. I reverted back to 1.52 and it's working fine again. It seems to be something related either to the Electron version used in 1.53 or to VSCode itself.

For me personally, using the "custom menus" workaround doesn't seem a solution. I would rather prefer this issue is investigated and fixed, as you would normally do with bugs.

Thank you.

bogdanbeniaminb avatar Feb 07 '21 05:02 bogdanbeniaminb

I understand some have had this issue years ago as well (I found a github issue opened 4 years ago), but for me personally it only appeared in VSCode 1.53. I reverted back to 1.52 and it's working fine again. It seems to be something related either to the Electron version used in 1.53 or to VSCode itself.

I agree with this statement. This issue is "new" for me as well. There was a change somewhere that caused this issue, at least for some of us.

thwaller avatar Feb 07 '21 07:02 thwaller

I have the same issue with VS Code 1.53. And it also works normal in 1.52.

Version: 1.53.0
Commit: 8490d3dde47c57ba65ec40dd192d014fd2113496
Date: 2021-02-03T15:56:04.185Z
Electron: 11.2.1
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: 8.7.220.31-electron.0
OS: Linux x64 5.4.0-65-generic

IvanSafonov avatar Feb 07 '21 17:02 IvanSafonov

For me, this problem happens when I right-click in a central area of my window. If I right-click near an edge, the menu does not spawn under the pointer hot spot.

jayschwa avatar Feb 15 '21 02:02 jayschwa

I have the same problem on VSCode 1.53.2 on Ubuntu 18.04 64bit

My Quickfix solution to use VSCode even thouhg it has the bug, is to not right-click but to right-hold. Then the context menu shows up and stays as long as one holds the right button pressed As soon as you release the right mouse button, the lift event seems to click the currently selected line on the context menu - even though the event comes from the right mouse button.

Maybe it could be possible to implement a locking mechanism. I.e. when the mouse up action triggers the context menu, the callback code checks that the according mouse button is truly different from the one that triggered the context menu. In this way the same click should not be able to trigger it.

hofingermarkus avatar Feb 19 '21 13:02 hofingermarkus

Same here, Linux Mint 20.1, Firefox 85.0.1, VSCodium 1.53.2. And yes, it started not that long ago, maybe a month or two. Same happens in Parallels on Mac, then same versions of Mint, Firefox and VSCodium.

acim avatar Feb 23 '21 03:02 acim

I am trying to repro the issue,

  • Ubuntu 20.04 with x11
  • CentOS 8 with x11

Couldn't see the issue with both native and custom context menus. Can anyone provide exact repro steps along with a sample workspace, also please provide the value of XDG_SESSION_TYPE.

deepak1556 avatar Feb 23 '21 06:02 deepak1556

I am trying to repro the issue,

* Ubuntu 20.04 with x11

* CentOS 8 with x11

Couldn't see the issue with both native and custom context menus. Can anyone provide exact repro steps along with a sample workspace, also please provide the value of XDG_SESSION_TYPE.

Do you have some extension that add stuff to the context menu? Like GitLens, Go...

acim avatar Feb 23 '21 08:02 acim

Do you have some extension that add stuff to the context menu? Like GitLens, Go...

No, the test was done without any extensions.

I have installed gitlens now and still doesn't repro the issue. Can you start with code --user-data-dir /tmp/code-test which will setup the app with fresh configuration and if you can repro the issue here, please provide the steps.

Side note, can you check if the issue repros with code --disable-gpu ?

deepak1556 avatar Feb 23 '21 08:02 deepak1556

Do you have some extension that add stuff to the context menu? Like GitLens, Go...

No, the test was done without any extensions.

I have installed gitlens now and still doesn't repro the issue. Can you start with code --user-data-dir /tmp/code-test which will setup the app with fresh configuration and if you can repro the issue here, please provide the steps.

Side note, can you check if the issue repros with code --disable-gpu ?

I tried this and it seems to work fine. I suspect to zoom level now. When I just start code without flags (old setup) and set zoom level back to zero, it behaves better but I will need more time to prove this.

acim avatar Feb 23 '21 09:02 acim

Do you have some extension that add stuff to the context menu? Like GitLens, Go...

No, the test was done without any extensions.

I have installed gitlens now and still doesn't repro the issue. Can you start with code --user-data-dir /tmp/code-test which will setup the app with fresh configuration and if you can repro the issue here, please provide the steps.

Side note, can you check if the issue repros with code --disable-gpu ?

You need some extensions to add items to your context menus. The issue only appears when the context menu appears under the mouse cursor - you need enough items in the context menu or a screen that is short enough (in height) so that the context menu can't go up or down, avoiding the mouse cursor.

bogdanbeniaminb avatar Feb 23 '21 11:02 bogdanbeniaminb

I am so grateful for all of you reporting on this issue and also for those who are working on this issue and repo.

I am on Ubuntu 20.04.1 LTS x86_64 VSCode version 1.53.2

BEFORE (sorry I don't know which release it started happening but it was within the last 2 weeks)

What used to happen when I right-click is the menu would appear and then I can left-click to select what I am looking for.

AFTER

Now what I need to do is right-click and HOLD while I move my cursor off of the pop-up window menu, THEN release right-click, and then I can left-click on the thing that I want to choose.

Another option is to hold the right-click down until I have my cursor pointing over the thing that I want to select and then release right-click and it will select that item

What I believe is happening is the release of the right-click when a menu is opened is being interpreted as a selection.

I believe that before it was opening the menu on "mouse up" from right-click and NOW it is opening the menu on "mouse-down" of right-click and therefore entering selection mode and interpreting "mouse up" as a selection.

That's just what I am perceiving and I hope it is helpful. (I find it very unnatural to move my cursor while holding right-click on my laptop)

justinleebehnke avatar Feb 24 '21 15:02 justinleebehnke

After I disabled zoom, it works fine on my laptop (two fingers touch).

acim avatar Feb 24 '21 18:02 acim

I think this issue is due to VS Code does not work well with high DPI settings. I set my font DPI to 120 so that things are not super tiny on my screen and this issue consistently happens. If I set my font DPI to default then the problem goes away. One would have thought that since Chromium doesn't have this issue, VS Code shouldn't also have it.

image

lephuongbg avatar Feb 25 '21 00:02 lephuongbg

After I disabled zoom, it works fine on my laptop (two fingers touch).

This seems to have worked for me too.

JSKenyon avatar Feb 26 '21 09:02 JSKenyon

For me, this seems to happen only when zoom is enabled. This bug is actually pretty serious since the behavior is unpredictable - it simply depends on what menu item your cursor happens to be over. Luckily there isn't much too destructive by default (especially if under source control), but what might someone have from an extension?

Some info:

"window.zoomLevel": 0.33

Version: 1.53.2
Commit: 622cb03f7e070a9670c94bae1a45d78d7181fbd4
Date: 2021-02-11T11:48:44.518Z
Electron: 11.2.1
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: 8.7.220.31-electron.0
OS: Linux x64 5.8.0-43-generic

Ubuntu 20.04.2 LTS

jibbers42 avatar Feb 28 '21 08:02 jibbers42

Mostly a +1 but if it helps, this only happens to me when I am zoomed in (ctrl -) twice I think? And only if the menu is touching the bottom of the screen.

deefdragon avatar Mar 07 '21 05:03 deefdragon

I encountered this problem in VSCode 1.54 (lastest version). This is quite an annoying problem making right-click menu completely unusable. So I downgraded my VSCode back to 1.52.

Then I found that the cursor would still hover on the item beside, but not activate or execute it.

vscode_bug

However, if I right click and hold for a short time, the item will be executed upon release.

YalandHong avatar Mar 07 '21 12:03 YalandHong

For me, this seems to happen only when zoom is enabled. This bug is actually pretty serious since the behavior is unpredictable - it simply depends on what menu item your cursor happens to be over. Luckily there isn't much too destructive by default (especially if under source control), but what might someone have from an extension?

Some info:

"window.zoomLevel": 0.33

Version: 1.53.2
Commit: 622cb03f7e070a9670c94bae1a45d78d7181fbd4
Date: 2021-02-11T11:48:44.518Z
Electron: 11.2.1
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: 8.7.220.31-electron.0
OS: Linux x64 5.8.0-43-generic

Ubuntu 20.04.2 LTS

Confirmed, happens only when window.zoomLevel changed.

jamazi avatar Mar 07 '21 14:03 jamazi

@jamazi suggested the issue might be the window.zoomLevel, I used user settings to set it to 0, and control- and control+ to adjust it. I found that the menu needed to touch the bottom of the screen (not window), and be in the white space between column zero and the code to trigger the "auto dismiss" on right button release.

So with code like:

class A:               # line 1
    def b(self):       # line 2
        if c:          # line 3
            if d:      # line 4
                d = d  # line 5

#column:
#000000001111111111
#234567890123456789

save it as "whatever.py" and split the window down so you have two copies of the file open, adjust your vc code window so it's like 80% coverage of your screen, and not touching the edges of the screen. Open user settings and set the zoom level to 0. Right click to your hearts content.

Now press control-minus to zoom down, and right click again in these locations:

  • from column 1 to the end of the first keyword (class, def, if) : menu closes
  • on some magical pixel column in the space between the first keyword and the identifier menu stays open
  • on the identifier to the end of the line

It is really hard to find why the menu stays up, sometimes it seems like one column is more likely to keep the menu up, but it's hard to find the exact x,y click position. I sort of think that the magical pixel column is associated with the text cursor. I don't think it would be helpful to adjust my mouse movement settings to further narrow this down as I don't know if this is a zooming + cursor + mouse click math issue or something else.

Work around looks like setting window.zoomLevel = 0.

Version: 1.54.1
Commit: f30a9b73e8ffc278e71575118b6bf568f04587c8
Date: 2021-03-04T22:38:50.094Z
Electron: 11.3.0
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: 8.7.220.31-electron.0
OS: Linux x64 4.15.0-136-generic
Ubuntu 18.04 LTS

Based on comment by @jayschwa

"editor.fontFamily": "'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'"
"editor.fontSize": 16

drjasonharrison avatar Mar 09 '21 18:03 drjasonharrison

A zoom level of zero does not fix this problem for me. I do use a font size of 16, so maybe that also impacts it.

jayschwa avatar Mar 10 '21 16:03 jayschwa

Zeroed zoom level fixes the problem, but now I cannot see anything! Not until UI font sizes are configurable!

admirabilis avatar Mar 12 '21 16:03 admirabilis

@teresaejunior you can set the font size using "editor.fontSize": 16 and debug.console.fontSize and markdown.preview.fontSize and "terminal.integrated.fontSize": 16

drjasonharrison avatar Mar 13 '21 01:03 drjasonharrison

@drjasonharrison Thanks, but I'm referring mostly to https://github.com/microsoft/vscode/issues/519

admirabilis avatar Mar 13 '21 01:03 admirabilis

Ironically, my right click issue was resolved once I connected a different mouse. Right clicking the vscode terminal window to paste a copied command made me realize it almost always pasted it twice. Apparently my 'old' mouse triggers multiple events with each right click..

EDIT: I tested what events my old mouse sends at https://unixpapa.com/js/testmouse.html Pressing down the right mouse down (without releasing) immediately sends 'down','up' and 'contextmenu' events, so this confirms my mouse being defective. I don't know why though, I've only had it for like... 20 years?

appy-one avatar Mar 24 '21 13:03 appy-one