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

Allow customizing the color of the sticky scroll for tree elements in the workbench #205441

Closed
jvcmarcenes opened this issue Feb 17, 2024 · 6 comments · Fixed by #209604
Closed
Assignees
Labels
insiders-released Patch has been released in VS Code Insiders tree-sticky-scroll Sticky Scroll in Trees

Comments

@jvcmarcenes
Copy link

jvcmarcenes commented Feb 17, 2024

I enabled the workbench.tree.enableStickyScroll setting, but the background of the stickied items is the same as the non-stickied items, which is confusing to me because it's hard to see whether the top items are stickied or not.

I could change the background color for the editor sticky scroll, but I can't do the same for the tree sticky scroll. I want the option to customize the colors of the stickied item.

Alternatively, I would like more ways to separate the sticky items from their contents, such as borders.

@aiday-mar aiday-mar assigned benibenj and unassigned aiday-mar Feb 19, 2024
@benibenj benibenj added the tree-sticky-scroll Sticky Scroll in Trees label Feb 19, 2024
@benibenj benibenj added this to the Backlog milestone Feb 19, 2024
@benibenj benibenj added feature-request Request for new features or functionality tree-sticky-scroll Sticky Scroll in Trees and removed tree-sticky-scroll Sticky Scroll in Trees feature-request Request for new features or functionality labels Feb 19, 2024
@benibenj benibenj removed this from the Backlog milestone Feb 19, 2024
@FyeCobain
Copy link

bump

@chiefdeals
Copy link

bUmP

@benibenj
Copy link
Contributor

benibenj commented Apr 4, 2024

It won't be possible to solve this with a single color. Sticky scroll appears in every tree and the tree adopts the background color from it's container, which could be the color of sidebar, panel, quickpick, editor widget, ... As these could all have a different background color, it won't be possible for us to just add a treeStickyScroll.background color.

I'm looking into this and it looks like we would have to add the colors:

  • sideBarTreeStickyScroll.background
  • panelTreeStickyScroll.background
  • quickPickTreeStickyScroll.background
    (might be more, don't know yet)

For each of these entries you probably would also like to set the border, shadow and hover background colors, right?

@cdllc
Copy link

cdllc commented Apr 4, 2024

Woo alright, my first opportunity to actually contribute with my normal day to day hat. Alright, so, a disclaimer first, decade+ long corporate UX guy learning to code (pun intended) over last 2 years, I make a living on asking clarifying questions that (hopefully) produce insight.

I hear you on the complexity where a potential solution impacts a global set of tree components.

It sounds like (just reiterating) the concern is that a color chosen for one area, to address one need, could be a negative influence on another area since they would be changing due to the same variable. To me, I agree, difficult approach to take and one that would probably introduce more problems than it'd solve (not to mention start to challenge whatever level of accessibility standards you guys are trying to adopt)... so I turn now to spit balling a bit---

Without addressing the colors you've listed directly (since not a comprehensive list anyway) I think the primary problem we're dealing with is a lack of contrast between the two. That leads me to think that for this global component (or even individually if it were ever possible to get to that level of specificity) perhaps exposing a color setting for user choice is less than ideal. If the primary issue is indeed contrast (thoughts?) then would there be a way to programmatically offset the background adoption by some subtle number representing a grayscale? Whether HEX or RGBA or whatever, they compute down to a number that we can mathematically alter for some desired impact.

This would be an example:

treeStickyScroll global colorOffset

This would likely trigger some theme-based OCD, but that comes down to user preference that can be addressed by altering the theme to a liking of their own -- rather than to allow that preference to influence non-action on a glaring accessibility issue. Anyway, this offset, should be able to be toggled on or off, so the user has even more choice:

  • It allows the user to address the accessibility issue because it's a legitimate burden on their working style/process & can adjust their theme accordingly, to their liking.
  • They keep stickyScroll on their trees, with this toggled off, working with the existing solution with no impact to their theme.
  • Or, perhaps, they just dont have stickyScroll enabled on trees.

edit: I forgot to address your last question before hitting submit because I wanted to get to work on other things...

For each of these entries you probably would also like to set the border, shadow and hover background colors, right?

Those might be legitimate desires (I question "needs" - maybe hover, I dont know functionality well enough) at a later time, but for now, to address the glaring problem (which, reiterating is equipping the user with a visual language that differentiates the body of the tree from the stickyScroll of the tree) then contrast could help on its own and perhaps there is no additional work to be done...

(also if tracking my edits, apologies, I'm sleep deprived at the moment)

@jvcmarcenes
Copy link
Author

For each of these entries you probably would also like to set the border, shadow and hover background colors, right?

That would be great, yes

If the primary issue is indeed contrast (thoughts?) then would there be a way to programmatically offset the background adoption by some subtle number representing a grayscale?

I like this, but I don't think VSCode has any settings similar to it. In some themes when I want to have some "offset" of a background color I usually just set a white/black with transparency

@benibenj
Copy link
Contributor

benibenj commented Apr 5, 2024

We added the following colors for sticky scroll:

  • sideBarStickyScroll.background
  • sideBarStickyScroll.border
  • sideBarStickyScroll.shadow
  • panelStickyScroll.background
  • panelStickyScroll.border
  • panelStickyScroll.shadow

If a tree is in the primary or secondary side bar it will use the sideBarStickyScroll colors. If a tree is located in the panel, the panelStickyScroll colors will be applied. This will cover most trees.

Thanks @cdllc for your input. We did consider it as an option, however, we didn't decide to go with this approach as VSCode does not have a similar offset driven theme concept/color already.

@vscodenpa vscodenpa added unreleased Patch has not yet been released in VS Code Insiders insiders-released Patch has been released in VS Code Insiders and removed unreleased Patch has not yet been released in VS Code Insiders labels Apr 5, 2024
@microsoft microsoft locked and limited conversation to collaborators Jun 10, 2024
meslubi2021 added a commit to meslubi2021/vscode that referenced this issue Aug 10, 2024
* primary button

* debug: treat 'subtle' frames like 'deemphasized' (microsoft#209078)

To be closer to DAP

Fixes microsoft#206801

* debug: fix resizing window makes debug toolbar disappear (microsoft#209075)

Fixes microsoft#208895

Should work but testing on aux windows was limited due to microsoft#209073

* trees: always handle an twistie events by the tree if it changes collapsed state (microsoft#209090)

This allows preserving your multi-selection while expanding/collapsing other nodes in the tree. I think this is a good overall change to make across our UI. E.g. similarly, without this change, you can't expand a folder in the Explorer view without losing your selection state. cc @joaomoreno

Fixes microsoft#208852

* Adjust scheme and authority of URIs in remote terminals

Fixes microsoft#208572

* Also check file scheme

* Apply environment when selecting default profile as well

Fixes microsoft#204167

* Add ... suffix to new with profile actions

Fixes microsoft#208655

* Add git bash to shell integration description

* Remove notebook view from focus order & accessibility tree when hidden (microsoft#209059)

* Remove notebook view from focus order when hidden

* Set `inert` on the correct container

* Use IconSelectBox to change terminal icon, remove dupes

Fixes microsoft#199964

* testing: fix resolveHandler not called on item replacement (microsoft#209121)

Fixes microsoft#207574

* remove experimental setting (microsoft#209126)

* Remove terminal change icon tests as they required quick pick

* chore: bump katex (microsoft#209141)

* get request to show up in chat view

* Update src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.ts

* Update src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.ts

* Also fire an event when focus & selection goes to empty (microsoft#209145)

Fixes microsoft#209074

* Port followups candidate to main (microsoft#209203)

Fix followups going to participant ID (microsoft#209114)

Fix microsoft/vscode-copilot#4861

* Remove 'session' from transfer API (microsoft#209204)

* Fix typo in editor.action.startDebugTextMate title (microsoft#209160)

TextMate is one word.

* Remove other icon smoke tests

* Limit drop disablement to just http(s) uris (microsoft#209240)

For microsoft#209239

* Introduce ITerminalConfigurationService

Part of microsoft#181900

* Docs

* Adopt terminal config service in terminalActions

* Adopt terminal config service in terminalEditor

* Adopt terminal config service in more files

* Move more to terminal config service

* Remove ITerminalConfigHelper.config completely

Part of microsoft#181900

* Init TerminalConfigurationService

* Test for TerminalConfigurationService

* Pick up editor action command descriptions (microsoft#209259)

Continuation of microsoft#193937 and microsoft#197442

This adds the command descriptions of editor actions to the ICommandQuickPick results so that those results can be picked up by the "similar commands" feature.

Example:

I can add:
```
metadata: {
    description: nls.localize2('test', "xyz"),
}
```
to the [AddLineCommentAction](https://github.com/microsoft/vscode/blob/7d788e70b95c79718b565ff9e255858db4cc74b3/src/vs/editor/contrib/comment/browser/comment.ts#L105)... and then when I search "xyz" it'll show up.

* Fix leak in terminalConfigHelper.test

* Include Command Description in `_getAllCommands` (microsoft#209260)

This is important information for the command so we should include it in this response.

* Move wsl recommendations out of config helper and into contribution

Part of microsoft#181900

* Fix tests

* Fix XtermTerminal.test

* fix microsoft#209167

* Enable dnd in chat references list (microsoft#209263)

* Fix tests for reals this time

* Pick up latest TS for building VS Code (microsoft#209265)

* fix microsoft#207946

* move a line

* clean up

* Remove xterm triggerDataEvent private API usage

* Make types more correct

* Remove _onData access

* Don't use stateful regex (microsoft#209268)

Fixes microsoft#209254

* Remove _onKey access

* Remove _charSizeService access

* Remove unneeded lint suppression

* Remove unused event emitter type

* Remove hack for canvas to force a refresh

I can no longer reproduce this issue and it was a big hack regardless.
Will track issues for any mentioned of bad resizes on the canvas
renderer.

* testing: fix testing-coverage-lineHeight being marked as a color (microsoft#209273)

* De-select output for `focus cell container` commands (microsoft#209269)

* pass message to de-select when container is selected from output

* clear selection in more cases

* Remove xterm canvas renderer from fallback logic

This simplifies things a lot, the plan is to remove the canvas renderer
completely from VS Code if all goes well (microsoft#209276).

Fixes microsoft#209275

* get insert kb to work in input editor

* eng: fix CSS tooling crashes watch task (microsoft#209278)

Get rid of the gulp-postcss plugin and just implement our own, I couldn't get it to work.

Fixes microsoft#207827

* just add as secondary

* Update src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.ts

* Update src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.ts

* Remove isMeasurement (microsoft#209287)

* Remove isMeaasurement from the typing

* Remove isMeasurement

* fix microsoft#146972

* Migrate rest of TerminalConfigHelper to TerminalConfigurationService

Fixes microsoft#181900

* Replace label computer ctor in test

* Remove safari check to use webgl

* remove extra width from aiButton (microsoft#209295)

* Fix hygiene

* use disposableStore

* notebook output performance (microsoft#209282)

* record perf data for notebook outputs

* debounce event per cell

* send size info, emit directly from perf message listener

* fix classification details

* better names

* Fix test failures due to private mangling

* Add `windowOptions` to xtermTerminal

* SCM - Add support for filtering history item changes (microsoft#209327)

* Support Shift+Up/Down keys in notebook outputs (microsoft#209314)

* Fixes microsoft#209324

* Fix opening folders in file picker (microsoft#209330)

Part of microsoft#208937

* SCM - 💄 API cleanup (microsoft#209339)

* SCM - 💄 API cleanup

* Fix compilation

* fix 208710 (microsoft#209343)

* fix syncing profiles (microsoft#209336)

fix microsoft#208710

* bailout if profile with same name exists already

* make it sync

* Fixes microsoft#209251

* add and use ChatInputPart#contentHeight (microsoft#209345)

fixes https://github.com/microsoft/vscode-copilot/issues/4727

* SCM - use custom hover for history item statistics (microsoft#209346)

* Move onto ITerminalConfigurationService

* Bring terminal editor's mousedown handling closer in line with tabbed view

* Use switch, allow Linux to paste regular clipboard too

* Improve setting description

* docs: categorize chat-list-background as other (microsoft#209303)

* Add experimental support for updating markdown links on copy/paste (microsoft#209319)

* Add experimental support for updating markdown links on copy/paste

For microsoft#209318

* Remove log

* use abstract class

* swap lines

* implement as classes

* Logging navigible container events for debug

* make isPresent optional

* Update src/vs/workbench/contrib/accessibilitySignals/browser/accessibilitySignalLineFeatureContribution.ts

* Log only when config is enabled

* Enable terminal smoke tests on desktop

Fixes microsoft#146811

* exthost: fix profiling not working (microsoft#209142)

* exthost: fix profiling not working

Fixes microsoft#194678. Requires jrieken/v8-inspect-profiler#3 to be merged and published in order to pass the 'host' down.

* bump package

* Inline completion refactoring (microsoft#209011)

* Fix leaks in terminalTabsList

Fixes microsoft#207462

* Fix leaks in terminalInstance dnd

Fixes microsoft#207459

* Fix leaks in hoverService

Fixes microsoft#207454

* Support any OSC link scheme

Fixes microsoft#176812

* SCM - add history item hover (microsoft#209373)

* allow input elements to handle keydown events (microsoft#209362)

* fix microsoft#191745

* move declaration near usage

* chore: increase timeout of Linux x64 job (microsoft#209387)

* Allow via notification

* Fix search text input issues (microsoft#209365)

Fixes microsoft#209361

* fix issue

* api comment (microsoft#209410)

* render inline chat change decoration also inside minimap (microsoft#209414)

* remove restore on profile item (microsoft#209416)

* Engineering - update suppression file (microsoft#209419)

* chore - add `IInstantiationService#dispose` (microsoft#209421)

* Support setting keyboard shortcut from Action Item Context Menu (microsoft#209431)

fixes microsoft#208221

* Introduce hoverDelegate2.ts

Part of microsoft#204965

* Set base delegate, fix imports

* ICustomHover -> IUpdatableHover

* Remove duplicate/deprecated IHoverAction

* Move updatable hover interfaces to hover.ts

* Create IHoverDelegate2.setUpdatableHover

* Add deprecated annotations to old functions

* Move statusBarItem onto new hoverService.setupUpdatableHover

* More adoption, improve deprecated messages

* Remove all usage of setupCustomHover from base/

* Update majority of workbench references to setupCustomHover

* Remove all remaining usages of setupCustomHover

* Remove updatableHoverWidget.ts

* Stub null hover service in some tests

* Fix null access (microsoft#209449)

* Update tab bar colors (microsoft#209451)

tab bar colors debt

* Fix output vsbuffer transfer via workspace edit. (microsoft#209358)

* Fix output vsbuffer transfer via workspace edit.

* Adopt interface change.

* fix microsoft#209091 (microsoft#209454)

* support `vscode.ChatResponseTextEditPart` and support rendering of text edits in chat widget (using the diff editor)

* chore: add new colours (microsoft#209457)

* use disposableStore

* Add CLI cleaning regex (microsoft#209462)

* fix microsoft#152476

* Enable copy paste api in scm input (microsoft#209466)

* Enable dnd and copy paste apis in scm input

For microsoft#209460

Enables dropping or pasting a file from the vscode/system explorer into the scminput to insert the file name. Currently nothing happens when you try this

In the future will also allow extensions to hook into these apis

* Revert organize imports

* Remove duplication

* fix: trim end of matched link (microsoft#209469)

* dispose saved text model with wrong view type (microsoft#209461)

* fix microsoft#184454

* rm empty line

* web: add didResolveRemoteAuthority function for embedders (microsoft#209480)

* Clean up some tests, fix some leaks

* cli: allow public port forwarding via tunnels (microsoft#209489)

* fix microsoft#209487

* chore: increase compile job timeout (microsoft#209497)

* cli: add progress for extraction (microsoft#209499)

For https://github.com/microsoft/vscode-remote-tunnels/issues/724

* Convert Workspace Cell Edit dto to renderer types (microsoft#209498)

* Hide notebook chat actions from f1. (microsoft#209501)

* Fix injected services becoming public by mistake (microsoft#209513)

* Fix injected services becoming public by mistake

Fixes cases of `@IFooService readonly foo: IFooService`. This makes the service public, which is likely not expected and also means we can't mangle it

* Fix name

* Remove unused props

* - extract `IChatListItemRendererOptions`
- use diff editor hiding of unchanged regions
- simpler code compare block (for now)

* Add descriptions for commands microsoft#209511 (microsoft#209524)

* fix microsoft#209441 (microsoft#209526)

* Add color item for sidebar title background (microsoft#209528)

fixes microsoft#209164

* Count replies, not comments (microsoft#209527)

Fixes microsoft/vscode-pull-request-github#5869

* 💄

* Fix tab indicator size when tab action left and tab sizing fixed/shrink (microsoft#209532)

fixes microsoft#207003

* removing issue reporter API (microsoft#209125)

* first snap

* sent the comments to the shadow realm

* one comment we forgot to remove :(

* fix microsoft#207101

* move audio cue config to new file

* rename, move things around

* add accessibility signals to l8n

* add scope

* accessibility signals

* more descriptions

* Add todos for shellIntegration API from API sync

Part of microsoft#145234

* add discard description

* Update src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.ts

* fix microsoft#207813 (microsoft#209553)

* Add eslint rule for potentially unsafe disposable patterns (microsoft#209555)

`DisposableStore`/`MutableDisposable` properties should almost always be `readonly`. Otherwise it's easy to accidentally overwrite the property and leak the previous value. This commonly happens with code such as:

```ts
class Foo {
     private disposables = new DisposableStore();

     bar() {
         this.disposables = new DisposableStore(); // leaks old values
         ...
     }
```

This change adds an eslint rule to enforce this and adopts `readonly` for the caught cases. I only needed to add 2 suppression comments, which seems like an acceptable tradeoff for helping catch a common mistake

* Bump @typescript-eslint versions (microsoft#209516)

6.x is the latest release that supports our current node target

* Fix frontmatter line map (microsoft#209556)

Fixes microsoft#209267

* Fix typo from old code (microsoft#209557)

fix long standing typo

* Add command description (microsoft#209558)

For microsoft#209511

* testing: remove back compat shims for coverage API (microsoft#209559)

Now that the API is finalized, remove the back compat shims that were in place

* chore: update to rust 1.77 (microsoft#209563)

* chore: update to rust 1.77

* fix tests

* debug: add some command descriptions (microsoft#209570)

For microsoft#209511

* Pick up latest md language service (microsoft#209574)

* feat. add a menu item 'expand-select' to expand subtree in search view (microsoft#206033)

* feat. add a menu item 'Expand All' to expand subtree

* feat. update menu text

* Strongly typed instead of `any` for nb config (microsoft#209493)

* Strongly types instead of `any` for nb config

* fix swapped setting fallbacks

* Address review comments

---------

Co-authored-by: Michael Lively <[email protected]>

* Update borders on template reuse. (microsoft#209577)

* fix: deprecate unity-launch flag (microsoft#209471)

* Clean up chat submit actions (microsoft#209578)

* Align submit/send actions in chat

* Clean up chat submit actions

* Make all remote chat agents sticky (microsoft#209579)

* fix: add open user settings JSON description (microsoft#209583)

* Fix leak (microsoft#209588)

Fix microsoft#208621

* Set role on lightbulb widget (microsoft#209592)

* Add tree sticky scroll colors based on view location fixes microsoft#205441

* Expose comments input as text document (microsoft#209512)

* Expose comments input as text document

Fixes https://github.com/microsoft/vscode-pull-request-github/issues/5875
For microsoft#209508

Exposes comment input editors as text documents that extensions can see. Enables a few features in them too such as 'paste as' and 'drop into'

* Small fixes

* Enable markers in comments

* Fix async

* Fix comment buttons on the top

---------

Co-authored-by: Alex Ross <[email protected]>

* Adding command descriptions for TF-IDF search (microsoft#209612)

adding descriptions

* debt - `arrays.ts#tail` can return `undefined` (microsoft#209631)

* Fixing typo in description (microsoft#209630)

fixing typo

* Bump distro (microsoft#209636)

* add `StableEditorBottomScrollState` so that inline chat moves lines of interest less (microsoft#209637)

there is still some movement because the height of the zone changes through out the request

* chore - remove arrays#tail, use `array.at(-1)` instead

---------

Co-authored-by: meganrogge <[email protected]>
Co-authored-by: Connor Peet <[email protected]>
Co-authored-by: Megan Rogge <[email protected]>
Co-authored-by: Daniel Imms <[email protected]>
Co-authored-by: Kyle Cutler <[email protected]>
Co-authored-by: Aaron Munger <[email protected]>
Co-authored-by: Raymond Zhao <[email protected]>
Co-authored-by: Tyler James Leonhardt <[email protected]>
Co-authored-by: Rob Lourens <[email protected]>
Co-authored-by: George Garside <[email protected]>
Co-authored-by: Matt Bierner <[email protected]>
Co-authored-by: Logan Ramos <[email protected]>
Co-authored-by: Andrea Mah <[email protected]>
Co-authored-by: Matt Mastracci <[email protected]>
Co-authored-by: Ladislau Szomoru <[email protected]>
Co-authored-by: Don Jayamanne <[email protected]>
Co-authored-by: Henning Dieterichs <[email protected]>
Co-authored-by: Alex Ross <[email protected]>
Co-authored-by: Sandeep Somavarapu <[email protected]>
Co-authored-by: Johannes Rieken <[email protected]>
Co-authored-by: hsfzxjy <[email protected]>
Co-authored-by: Benjamin Christopher Simmonds <[email protected]>
Co-authored-by: Peng Lyu <[email protected]>
Co-authored-by: Justin Chen <[email protected]>
Co-authored-by: Michael Lively <[email protected]>
Co-authored-by: Premium <[email protected]>
Co-authored-by: BeniBenj <[email protected]>
Co-authored-by: Aiday Marlen Kyzy <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
insiders-released Patch has been released in VS Code Insiders tree-sticky-scroll Sticky Scroll in Trees
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants