Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide Scrollable.setScrollbarsMode to add the possibility to change the scrollbars mode #1184

Closed
wiresketch opened this issue Apr 18, 2024 · 3 comments · Fixed by #1188
Closed
Assignees
Labels
api Adds new API enhancement New feature or request
Milestone

Comments

@wiresketch
Copy link
Contributor

Is your feature request related to a problem? Please describe.
We've encountered a performance issue with GEF/Draw2d and overlay scrollbars on Linux/GTK3. See eclipse#430.

This performance issue can be avoided by disabling overlay scrolling using GTK_OVERLAY_SCROLLING=0 environment variable. However this is not a good solution since it impact all scrollable controls in the application and not only the specific control with have performance issues with. Also in GTK4 this variable is not supported anymore so this solution won't work in the future (see https://docs.gtk.org/gtk4/running.html#environment-variables where GTK_OVERLAY_SCROLLING variable is not listed anymore).

A more appropriate solution would be to add Scrollable.setScrollbarsMode(int) method that would allow to disable overlay scrolling for a specific scrollable control without affecting the rest of the application.

Describe the solution you'd like

Add Scrollable.setScrollbarsMode(int) method that would allow to change the scrolling mode for a specific Scrollable control. On GTK3 and GTK4 this can be easily implemented using the gtk_scrolled_window_set_overlay_scrolling method.

On Windows as far as I can see this method would be noop since overlay scrollbars are not supported there.

I am not familiar with macOS API, but it looks like it would be possible to set scrollerStyle property on NSScrollView.

@iloveeclipse iloveeclipse added enhancement New feature or request help wanted Extra attention is needed api Adds new API labels Apr 18, 2024
@iloveeclipse
Copy link
Member

@wiresketch : would be nice if you could contribute a patch.

wiresketch added a commit to wiresketch/eclipse.platform.swt that referenced this issue Apr 19, 2024
eclipse-platform#1184

Add Scrollable.setScrollbarsMode(int) method to provide the possibility
to disable/enable overlay scrollbars.

Fixes: eclipse-platform#1184
@wiresketch
Copy link
Contributor Author

I've created a pull request and added the required implementation for GTK. On Windows I've left the method as noop.

On macOS I've also left the method as noop. I am not sure if this method needs such an implementation there. Those with more experience on macOS please chime in.

iloveeclipse pushed a commit to wiresketch/eclipse.platform.swt that referenced this issue Apr 24, 2024
Add Scrollable.setScrollbarsMode(int) API to provide the possibility
to disable/enable overlay scrollbars.

Fixes eclipse-platform#1184
iloveeclipse pushed a commit to wiresketch/eclipse.platform.swt that referenced this issue Apr 24, 2024
Add Scrollable.setScrollbarsMode(int) API to provide the possibility
to disable/enable overlay scrollbars.

Fixes eclipse-platform#1184
iloveeclipse pushed a commit that referenced this issue Apr 24, 2024
Add Scrollable.setScrollbarsMode(int) API to provide the possibility
to disable/enable overlay scrollbars.

Fixes #1184
@iloveeclipse iloveeclipse removed the help wanted Extra attention is needed label Apr 24, 2024
@iloveeclipse iloveeclipse added this to the 4.32 M2 milestone Apr 24, 2024
@iloveeclipse
Copy link
Member

Thanks for contributing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Adds new API enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants