microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.26k stars 29.3k forks source link

Can't drag scroll bars anymore #124895

Open Enrico204 opened 3 years ago

Enrico204 commented 3 years ago

Does this issue occur when all extensions are disabled?: Yes

Steps to Reproduce:

  1. Open any file longer than the display height
  2. Try to drag the scrollbar or left-click in a empty scrollbar section.

Apparently the scrollbar is "missing" the click event. Clicking on the scrollbar is actually sending the click in the current editor itself. I can see the change in the opacity of the scroll indicator, however on click-and-drag VSCode is selecting text from the editor pane instead of scrolling.

Also, left-clicking everywhere over the scrollbar is not scrolling (the correct behavior is to scroll up to the click position immediately). The only way to scroll immediately on click is to use the right click.

No problem scrolling using mouse scroll wheel, or clicking over the minimap.

Currently I went back to 1.55.2 and the issue is not yet there. I also tried in 1.56.0 and the issue is present, so the bug was introduced somewhere between these two versions.

My current desktop environment is Debian 10 with Fluxbox. I tested with a clean install (I removed .vscode and .config/VSCode dirs). I also tried hiding the minimap. No effects, the issue is still there.

vscodebot[bot] commented 3 years ago

(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like:

alexdima commented 3 years ago

I tried to reproduce on Ubuntu 20.04, but I could not reproduce.

Could you please close all instances of vscode and launch code --user-data-dir <specify-some-absolute-directory-path-here>?

Enrico204 commented 3 years ago

I can reproduce the issue using the environment described above (Fluxbox in Debian 10). I just installed a clean VM for tests. I can't reproduce the issue in Xfce instead. So apparently it depends on the desktop environment.

I tried the CLI switched you indicated. No luck, the issue is still there.

PS: I installed VSCode using the .deb package

simon-spinner commented 3 years ago

I can confirm the behavior running Manjaro and KDE Plasma 5.21.5. Switching to Gnome 40 on the same computer and scrolling works as expected. VS code is the only application I see this issue.

prigaux commented 3 years ago

I hit a somewhat similar issue on icewm (on Debian 11) : it occurs after switching windows (using keyboard or mouse). So the workaround is simple : switch virtual desktops or iconize-raise VScode.

I confirm it does not occur on 1.55.2. It does not occur using openbox WM.

Enrico204 commented 3 years ago

Unfortunately the workaround that @prigaux discovered is not working in my setup :-(

alexdima commented 3 years ago

Version 1.56 coincides with our Electron 12 update.

@prigaux @Enrico204 Does this reproduce for you when opening https://vscode-web-test-playground.azurewebsites.net/?enter=true in Chromium?

Enrico204 commented 3 years ago

No, the issue is not present in Chromium. I'm using Chromium Version 90.0.4430.212 (Developer Build). Shall i test that page with Chromium 89?

alexdima commented 3 years ago

Shall i test that page with Chromium 89?

@Enrico204 That would be great if you could! VS Code Insiders is currently using Chromium 89.0.4389.128.

prigaux commented 3 years ago

The lookup for 89.0.4389.128 says 843830. I could not find it so I searched something alike. I just tested with https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/843831/ (version 89.0.4389.0) and https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/843844/ ( 89.0.4389.0 ) : the bug is present with icewm.

alexdima commented 3 years ago

Thank you @prigaux ! This indicates that this was an upstream issue that has been fixed in the meantime. We regularly adopt the latest Electron releases, which also regularly adopts the latest Chromium releases. So as time goes on, we will end up adopting this fix as well.

lampaczcz commented 3 years ago

run code with --disable-features=SendMouseLeaveEvents

same problem https://bugs.chromium.org/p/chromium/issues/detail?id=713746

dromer commented 3 years ago

Have had this issue for very long now. Both the file explorer and in the code editor (vertical + horizontal) scroll bars cannot be dragged. Only way to interact with these scroll bars is to right-click to jump, but in the file browser this opens a context menu.

It is extremely annoying, especially in the filebrowser, when the list is very long and you can only navigate by using the scroll-wheel.

Btw the scroll-bars do highlight when you mouse-over them, so there is some interaction happening.

Currently with 1.60.2 on Debian 11 with Fluxbox, but this has been going on for as long as I can remember (years).

sentientmachin3 commented 3 years ago

Same issue here. Using Arch Linux, installation data:

I noticed they start working if I make some clicks inside the file I want to scroll.

McNobody commented 2 years ago

Same issue here. Using Ubuntu 20.04 LTS and Fluxbox.

Visual Studio Code: Version: 1.62.0 Commit: b3318bc0524af3d74034b8bb8a64df0ccf35549a Date: 2021-11-03T15:18:44.904Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Linux x64 5.11.0-36-generic

@lampaczcz tip works:

run code with --disable-features=SendMouseLeaveEvents

$ code --disable-features=SendMouseLeaveEvents . Warning: 'disable-features' is not in the list of known options, but still passed to Electron/Chromium.

Despite warning the scrollbars are working with this parameter.

dromer commented 2 years ago

run code with --disable-features=SendMouseLeaveEvents

$ code --disable-features=SendMouseLeaveEvents . Warning: 'disable-features' is not in the list of known options, but still passed to Electron/Chromium.

Can confirm that this works! (hopefully a breadcrumb to whoever intends to solve this issue)

jmnc2 commented 2 years ago

I hit a somewhat similar issue on icewm (on Debian 11) : it occurs after switching windows (using keyboard or mouse). So the workaround is simple : switch virtual desktops or iconize-raise VScode.

I am having this problem to. iconize-raise works for me. still a pain though.

Version: 1.62.3 Commit: ccbaa2d27e38e5afa3e5c21c1c7bef4657064247 Date: 2021-11-17T08:00:36.721Z Electron: 13.5.2 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Linux x64 5.8.0-59-generic snap

RyanRHall commented 2 years ago

Still an issue for me on 1.62.3

mrcsh commented 2 years ago

I am seeing this on 1.63.0 under KDE on fedora 34. It is intermittent. Shrinking the window to a single monitor made the scrollbars work, then after expanding it they continue to work.

Version: 1.63.0
Commit: 7db1a2b88f7557e0a43fec75b6ba7e50b3e9f77e
Date: 2021-12-07T05:16:45.441Z
Electron: 13.5.2
Chromium: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Linux x64 5.15.5-100.fc34.x86_64
artemsites commented 2 years ago

scrollbar doesn't work for me either, ubuntu 16.04, I found an alternative to scroll with the wheel with ALT pressed so it turns out to scroll faster

LinAGKar commented 2 years ago

This does not seem to be specific to VSCode/Chromium, I get basically the same problem in Meld, for the arrows used for merging. It happens intermittently on Plasma, but it's consistently reproducible on IceWM by having VSCode/Meld on one desktop and some other application on another desktop, and switching between them.

swarupbc commented 2 years ago

I am facing same problem with my Debian 11 KDE plasma.

DeadlyChambers commented 2 years ago

This just started after I installed Jasmine and Karma. I ran the the tests a few times, and then I got the all green. Closed the browser (which I was not able to click the link in Terminal to open the browser). Now I can't scroll. The hover works, but when I click to drag it does nothing....and it is working again. While I was writing this it started working again. LinuxMint 20.3 Desktop KDE

RipleyTom commented 2 years ago

As of latest update the --disable-features=SendMouseLeaveEvents workaround doesn't seem to work anymore :disappointed: .

lampaczcz commented 2 years ago

Yes, no working, no solution now

Version: 1.71.2 Commit: 74b1f979648cc44d385a2286793c226e611f59e7 Date: 2022-09-14T21:12:14.256Z Electron: 19.0.12 Chromium: 102.0.5005.167 Node.js: 16.14.2 V8: 10.2.154.15-electron.0 OS: Linux x64 5.18.0-4-amd64 Sandboxed: No

iamn1ck commented 2 years ago

As of latest update the --disable-features=SendMouseLeaveEvents workaround doesn't seem to work anymore disappointed .

I was using this option and now its also no longer working, I had to switch back to the July release for now.

RipleyTom commented 2 years ago

Latest version(

Version: 1.72.1
Commit: 129500ee4c8ab7263461ffe327268ba56b9f210d

) seems to have fixed it for me!

Well I still need to click the window once before it's reactive but much better than having to unfocus/refocus the window!

edit: Nvm it's still broken...

dromer commented 2 years ago

Certainly still an issue with:

v-p-b commented 2 years ago

Still an issue with 1.72.2-1665614327

khamudamon commented 2 years ago

Never had this issue before. Opened this morning and suddenly can't use scrollbars. Restarting app and rebooting machine not helping. 1.72.2, about window: https://i.imgur.com/odrMb5j.png

RipleyTom commented 2 years ago

Note sure that will help anyone but I switched today from KDE to Xfce and the issue(which for me was scrollbar not working after switching virtual desktop and coming back to vscode) is just not present, scrollbar always works fine. So the issue may be with KDE?

LinAGKar commented 2 years ago

@RipleyTom

I don't think so, as mentioned earlier it happens with other DEs, such as IceWM.

leafac commented 2 years ago

For what it’s worth: I’m having that problem in macOS 🤷


Update: I tried --disable-features=SendMouseLeaveEvents, which has been mentioned above. It no longer seems to work for other people, and it didn’t work for me either.

I also tried a portable installation to rule out issues with extensions and my settings. Same result.

This has been an issue in at least the last two versions (1.72.0 and 1.73.0).

mhtawfiq commented 2 years ago

I am having this issue on 1.73 on MacOS 13.0 as well.

iamn1ck commented 2 years ago

lol, once mac users have this issues, they're gonna take this issue seriously now

leafac commented 2 years ago

Today I’m not having the issue anymore: I can drag the scrollbars.

The only thing that I know to have changed is that I updated to macOS 13 (Ventura). Maybe that was it, even though @mhtawfiq is having the issue in that version 🤷

RyanRHall commented 1 year ago

I'm still having this issue on 1.73.1, Ubuntu.

I've noticed if I keep the minimap enabled, I can click to scroll, thus putting a band-aid on the issue. Hopefully that helps others who are currently pulling their hair out!

jaym commented 1 year ago

I came up with a way to reproduce this on linux with a minimal window manager. It seems to be related to some interaction that happens with the window manager wants to grab button presses with XGrabButton and then pass those through with XAllowEvents.

First, run Xephyr:

Xephyr -br -ac -noreset -screen 1024x800 :1

Run vscode:

DISPLAY=:1 code . --disable-extensions

At this point, all scroll bars are working. I've checked the terminal scroll bar, editor scroll bar, and the extensions one.

Here's an example wm:

#include <X11/Xlib.h>
#include <stdio.h>

int main(void)
{
    Display * dpy;
    XEvent ev;

    if(!(dpy = XOpenDisplay(NULL))) return 1;

    XGrabButton(dpy, 1, AnyModifier, DefaultRootWindow(dpy), False,
            ButtonPressMask|ButtonReleaseMask|PointerMotionMask, GrabModeSync, GrabModeSync, None, None);

    for(;;)
    {
        XNextEvent(dpy, &ev);
        if(!(ev.xbutton.state & Mod1Mask))
        {
            printf("XAllowEvents\n");
            XAllowEvents(dpy, ReplayPointer, ev.xbutton.time);
        }
    }
}

To compile it:

gcc wm.c -lX11 -o wm 

Run the example window manager:

DISPLAY=:1 ./wm

At this point, the editor scroll bar and extensions scroll bars no longer work. The terminal one continues to work.

We can use some other tools to gather more information:

We can get the window id of vs code by running:

DISPLAY=:1 xwininfo

Click on vs code inside Xephyr. It should display the window id.

With this, we can print xevents with xev:

DISPLAY=:1 xev -id 0x200002

When trying to scroll by clicking on the bar, I get the following output:

LeaveNotify event, serial 19, synthetic NO, window 0x200002,
    root 0x52e, subw 0x0, time 1306485143, (1010,234), root:(1011,249),
    mode NotifyGrab, detail NotifyAncestor, same_screen YES,
    focus YES, state 256

EnterNotify event, serial 19, synthetic NO, window 0x200002,
    root 0x52e, subw 0x0, time 1306485143, (1010,234), root:(1011,249),
    mode NotifyUngrab, detail NotifyAncestor, same_screen YES,
    focus YES, state 256

KeymapNotify event, serial 19, synthetic NO, window 0x0,
    keys:  46  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

PropertyNotify event, serial 19, synthetic NO, window 0x200002,
    atom 0x159 (_NET_WM_USER_TIME), time 1306485144, state PropertyNewValue

I think the thing that's throwing stuff off here is the LeaveNotify and EnterNotify. If you now kill the window manager, the scroll bars should correctly work again. Looking at xev, the LeaveNotify and EnterNotify events wont keep repeating, and only:

PropertyNotify event, serial 19, synthetic NO, window 0x200002,
    atom 0x159 (_NET_WM_USER_TIME), time 1306911717, state PropertyNewValue
Rizary commented 1 year ago

I got this bug, so should I change my WM? I'm using fluxbox.

tamaroning commented 1 year ago

I encountered this bug on Windows10. Closing all windows and reopening vscode (temporarily?) fixes this issue. version : 1.80.0 660393deaaa6d1996740ff4880f1bad43768c814 x64

dimich-dmb commented 1 year ago

It seems to be related to some interaction that happens with the window manager wants to grab button presses with XGrabButton and then pass those through with XAllowEvents.

Some window managers, e.g. Fluxbox, send LeaveNotify/EnterNotify on click to ensure "activate window by click" feature. So sequence is:

LeaveNotify
EnterNotify
ButtonPress
EnterNotify

It's not a problem if application handles these events correctly. Internal flag indicating button pressed should be set on ButtonPress and reset on ButtonRelease events only. But if application (or underlaying library) reset the flag on LeaveNotify/EnterNotify, we observe such weird behavior: button press is ignored.

iamn1ck commented 1 year ago

Hi all, I experienced a similar issue (https://github.com/microsoft/vscode/issues/144656) a while back and I was able to resolve it with this fix.

run code with --disable-features=SendMouseLeaveEvents

same problem https://bugs.chromium.org/p/chromium/issues/detail?id=713746

However, on newer vesions of VSCode the issue has returned. I have been using an older version (1.69.1), the last version before I encountered the bug again, for a long time now and need to update to the latest version.

I am also using fluxbox window manager.

elintendo commented 1 year ago

Hi all, I experienced a similar issue (#144656) a while back and I was able to resolve it with this fix.

run code with --disable-features=SendMouseLeaveEvents same problem https://bugs.chromium.org/p/chromium/issues/detail?id=713746

However, on newer vesions of VSCode the issue has returned. I have been using an older version (1.69.1), the last version before I encountered the bug again, for a long time now and need to update to the latest version.

I am also using fluxbox window manager.

Same problem. Vscode 1.82.2-3 I use berry window manager.

I use ctrl button to drag vertical scroll bar.

Unisay commented 1 year ago

Same problem. I use

VSCode:

Version: 1.82.1
Commit: 6509174151d557a81c9d0b5f8a5a1e9274db5585
Date: 2023-09-08T08:41:36.199Z
Electron: 25.8.0
ElectronBuildId: 23503258
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: 11.4.183.29-electron.0
OS: Linux x64 6.1.53

KDE:

Operating System: NixOS 23.11
KDE Plasma Version: 5.27.8
KDE Frameworks Version: 5.110.0
Qt Version: 5.15.10
Kernel Version: 6.1.53 (64-bit)
Graphics Platform: X11
Graphics Processor: llvmpipe
manuelgarciacr commented 1 year ago

Hello. Workaround. The same problem. For me, vertical scrolling in the terminal panel works again when I close the left opened panel in the IDE (explorer, extensions, etc) Greetings

lampaczcz commented 1 year ago

version 1.83.0 - works for me!

dromer commented 1 year ago

^ 1.83.0 still very much broken over here

Works with the special flag:

code . --disable-features=SendMouseLeaveEvents
Warning: 'disable-features' is not in the list of known options, but still passed to Electron/Chromium.
JordanMajd commented 8 months ago

Clicking on scroll, dragging scroll or clicking on minimap does not work for me:

Version: 1.87.2 (Universal)
Commit: 863d2581ecda6849923a2118d93a088b0745d9d6
Date: 2024-03-08T15:21:31.043Z (1 wk ago)
Electron: 27.3.2
ElectronBuildId: 26836302
Chromium: 118.0.5993.159
Node.js: 18.17.1
V8: 11.8.172.18-electron.0
OS: Darwin x64 22.3.0
samcasmmm commented 1 month ago

Go to VS Code settings, then search for "editor hover stick" to see if it's checked or not.

dromer commented 1 month ago

For me this has been fixed in recent versions.