Mouse Drag Scrolling for Studio

Mouse drag scrolling is holding a mouse button (typically the middle one) then moving your mouse to scroll, essentially grabbing the screen and dragging it.
Too many programs lack this amazing usability, accessibility and productivity enhancing feature, including roblox studio. I personally make heavy use of mouse drag scrolling wherever I can, be it Inkscape, Firefox (using an extension), SumatraPDF and most recently Code::Blocks. Its presence in Code::Blocks in particular has been a huge eye opener to me regarding the effectiveness of mouse drag scrolling in a programming context.
I highly recommend anyone reading this to find some way to experience the joy of mouse drag scrolling today. It’s a feature that needs to be felt personally to be fully appreciated.

Benefits of proper, built-in mouse drag scrolling:

  • greater control over scrolling than both the scrollwheel and the scroll bar
  • faster than the arrow keys and page up, down
  • fixes accidental zooming and horizontal scrolling
  • functional scrolling for touchpads on windows

List of implementation details to make it not be bad:

  • don’t bother with inertia or smoothing or bouncing; nothing else does any of this when dragged
  • have an adjustable mouse move distance -> scroll distance ratio
  • rebindable scrolling button or a sensible default (middle mouse button)
  • scrolling happens per-line, not per-pixel where applicable (and vice-versa); mirrors scroll bar behaviour
  • applies to all dockable windows, not just the script editor (context help is the only exception I’d be okay with)
  • mouse drag scrolling the 3D view zooms the camera in and out (in studio, at least); locks mouse like left-click does
  • mouse drag scrolling does not lock the mouse anywhere else
  • mouse drag scrolling works on ScrollingFrames, sensibly mimicks touchscreen scrolling behaviour by deviating where appropriate (no inertia)
  • mouse drag scrolling changes the mouse cursor to either the current cursor scheme’s “moving” cursor or a closed hand cursor styled according to the expected platform (win10 for ribbonUI, win98 for SystemMenu, OSX for OSX)
  • I’d use mouse drag scrolling in Studio
  • I’ve used it elsewhere but won’t in Studio
  • I have and will never use it

0 voters

please please please


I was confused a bit by the OP. Do you want mouse drag scrolling for:

  • Panning the camera?
  • Moving up and down the explorer?
  • Moving up and down the script editor?
  • All of the above?

Looks like all dockable windows with a scrollbar and 3d view

1 Like

This is something i think is absolutely needed!
Also a bit off topic but does roblox even support middle clicks?

As of recently, yes. I use it in a camera plugin for panning (one of the things OP is requesting)

That sounds cool. Care to share a link?

Modified version of Sharksie’s own custom studio camera. Changes are: Camera rocket boost over time (present in default camera but not Sharksie’s), compatibility with camera.CFrame = x while camera is focused on a part, removed Q/E and arrow key functionality (so I could use those as keybinds), and the middle mouse button panning I mentioned. You can hold shift like with everything else to make the panning smoother.

What’s the point of the custom camera aside from the panning feature?

Originally the 60 fps movement that wasn’t built in to the 30 fps default studio camera at the time (now 60 fps), but I still stick with the custom camera mainly for the unbinding of Q/E and the arrow keys in addition to the panning. Q and E are really close to my fingers (on WASD), so they’re good keybinds that are otherwise wasted on the camera. The arrow keys can be used to shift parts (imagine if when using CmdUtl you press the up arrow key and the part moved up 0.0001 studs instead of you having to try to drag it there), but I haven’t gotten around to doing that yet.

Can you make version that doesn’t unbind Q/E but still has the pan feature?

1 Like