Previously, we were hiding scrollbars when their height/width was 0. On
macOS, however, users can decide to only show scrollbars while
scrolling, which causes Atom to detect scrollbars as being invisible
during measurements. As a result, we were mistakenly setting the
visibility property to `hidden` when this setting was on, thus
preventing users from seeing the scrollbar on scroll.
With this commit we are changing the dummy scrollbar components to only
become invisible when the content is not scrollable rather than when the
scrollbars have zero width or height.
As part of this, we have also renamed the
`is{Horizontal,Vertical}ScrollbarVisible` functions to
`canScroll{Horizontally,Vertically}`, to better express their intent.
This was fixed back in bac9922 and, due to the same reasons, not having
a separate layer causes the "Show scrollbars only when scrolling"
setting on macOS to not work properly.
Previously, when a marker became invalid we would delete the
corresponding block decoration from the DOM, without however removing it
from the `lineTopIndex`. Also, we had a similar issue when decorating a
marker that was already invalid: we would account for it in the index
without adding it to the DOM.
This commit addresses the above problems by ensuring that block
decorations are never added for invalid markers. At the same time, the
editor component will still keep track of changes on the marker that was
decorated, so that it can detect when its validity changes and render it
appropriately.
The xdg desktop file specification allows for icons to be either a
absolute path just a name. If the name is not an absolute path,
a icon from a icon theme will be used. This commit changes the
desktop file to use a icon name and adds the icons to the default
theme (hicolor). This allows the user to choose an alternative icons
theme that will override the default icon.
The relevant specs:
https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s05.html
> Icon to display in file manager, menus, etc. If the name is an
> absolute path, the given file will be used. If the name is not
> an absolute path, the algorithm described in the Icon Theme
> Specification will be used to locate the icon.
https://specifications.freedesktop.org/icon-theme-spec/latest/ar01s07.html
> Installing Application Icons: [...] Minimally you should install a
> 48x48 icon in the hicolor theme. This means installing a PNG file
> in $prefix/share/icons/hicolor/48x48/apps.
https://specifications.freedesktop.org/icon-theme-spec/latest/ar01s03.html
> Icons and themes are looked for in a set of directories. By
> default, apps should look in $HOME/.icons (for backwards
> compatibility), in $XDG_DATA_DIRS/icons and in
> /usr/share/pixmaps (in that order).
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables
> $XDG_DATA_DIRS defines the preference-ordered set of base
> directories to search for data files in addition to the $XDG_DATA_HOME
> base directory. The directories in $XDG_DATA_DIRS should be
> seperated with a colon ':'.
> If $XDG_DATA_DIRS is either not set or empty, a value equal to
> /usr/local/share/:/usr/share/ should be used.
This commit introduces a change in the way we respond to mousewheel
events. In particular, if `delta * scrollSensitivity` is less than 1 or
greater than -1, we will round it up or down in an attempt to honor the
user's scroll intent.
As a consequence of https://github.com/atom/atom/pull/15378, we are now
able to render highlight decorations in a separate div, as opposed to
having an highlight container for each tile.
Code-wise this is much simpler, because highlights spanning multiple
tiles can be represented via a single region and don't need to be split
across the tiles they span anymore. As a byproduct, performance should
improve as well, because the number of nodes that need to be managed
should decrease significantly.
This also fixes https://github.com/atom/atom/issues/15449, and other
similar rendering artifacts, because highlight decoration DOM nodes
won't need to move between tiles anymore when their position changes.