No description
Find a file
Jonas Dreßler c2a825ef0b st/scroll-view: Allocate the scrollbars 0-size instead of not painting them
StScrollView applies the policy of whether to show or hide the scroll
bar,
and with the AUTOMATIC policy the scroll bar should be hidden as soon as
the
content of the scroll view is small enough to fit without scrolling.

Now we only know about the final size of the content when we're inside
st_scroll_view_allocate(), so that's where we can decide whether the
scroll
bar should be visible or not. Clutter really doesn't like calling
clutter_actor_show/hide() in the middle of an allocation cycle though,
so
what we do instead is saving the state into priv->vscrollbar_visible,
and
then just not painting the scroll bar based on that in a paint() vfunc
override.

This approach is not great for several reasons, it means we also have to
override pick() and finally it means the paint volume of the scroll bar
is
incorrect.

While the greatest solution to this would be to just hide/show the
scroll
bar inside the allocate() function as it is possible in gtk, we have an
established pattern for this kind of case too: We usually allocate a
0-sized
rect for the thing we want to hide, so let's do that instead.

A nice side effect is that we can conveniently drop another paint() and
pick() vfunc override.

Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2190>
(cherry picked from commit a59a992daa)
2023-11-30 18:37:32 +01:00
.gitlab/issue_templates gitlab: Add a comment about disabling extension to the issue template 2022-12-15 19:07:08 +00:00
.gitlab-ci ci: Include .desktop files in POTFILES check 2023-08-22 00:16:52 +00:00
.settings Clean out some eclipse artefacts 2019-02-13 04:39:26 +01:00
data style: Always use light text for recording indicator 2023-10-31 22:45:56 +00:00
docs doc: Add looking glass documentation 2023-09-01 15:11:59 +02:00
js searchController: Use ClutterText::cursor_position instead of position 2023-11-30 18:36:11 +01:00
lint lint: Remove legacy config 2023-08-09 15:10:38 +00:00
man man: Update options 2020-12-28 02:25:17 +01:00
meson theme: Include both dark and light variant in resource 2023-05-25 17:10:53 +02:00
po Update Slovak translation 2023-11-27 13:43:08 +00:00
src st/scroll-view: Allocate the scrollbars 0-size instead of not painting them 2023-11-30 18:37:32 +01:00
subprojects Bump version to 45.1 2023-11-01 00:18:29 +01:00
tests tests/unit: Access shell sources from resource 2023-08-10 17:42:23 +00:00
tools tools/create-toolbox: Allow setting up support for GNOME Classic 2023-05-16 18:20:42 +00:00
.eslintrc.yml js: Port to modules 2023-08-06 13:02:49 +02:00
.gitignore ci: Simplify run-eslint script 2023-08-09 15:10:38 +00:00
.gitlab-ci.yml ci: Bump mutter image 2023-09-01 16:47:38 +02:00
.gitmodules git: Always use libgnome-volume-control submodule from GNOME group 2022-08-04 18:31:16 +02:00
.jscheckignore ci: Don't ignore init.js 2023-04-21 18:28:32 +00:00
config.h.meson shell: Add device monitor for cameras 2023-07-29 13:55:15 +03:00
COPYING Changed obsolete FSF postal address. 2014-01-08 04:35:14 +07:00
gnome-shell.doap gnome-shell.doap: Make marge-bot a maintainer 2020-11-17 17:29:56 +00:00
HACKING.md docs: Use ESM in HACKING guide 2023-08-07 19:05:50 +00:00
meson.build Bump version to 45.1 2023-11-01 00:18:29 +01:00
meson_options.txt shell: Add device monitor for cameras 2023-07-29 13:55:15 +03:00
NEWS Bump version to 45.1 2023-11-01 00:18:29 +01:00
README.md doc: Update contribution section 2022-12-06 01:49:24 +01:00

GNOME Shell

GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.

For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.

Bugs should be reported to the GNOME bug tracking system. Please refer to the Schedule wiki page to see the supported versions.

Contributing

To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.

Commit messages should follow the GNOME commit message guidelines. If a merge request fixes an existing issue, it is good practice to append the full issue URL to each commit message. Try to always prefix commit subjects with a relevant topic, such as panel: or status/network:, and it's always better to write too much in the commit message body than too little.

Default branch

The default development branch is main. If you still have a local checkout under the old name, use:

git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

License

GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.