facebookarchive / nuclide

An open IDE for web and native mobile development, built on top of Atom
https://nuclide.io
Other
7.79k stars 683 forks source link

[File Tree]: Cannot click or open the correct file #1117

Closed joncursi closed 7 years ago

joncursi commented 7 years ago

After upgrading to v219, my file tree has become totally unusable. When I try to click on one file, a different one is selected. Nothing opens.

shushz commented 7 years ago

What theme are you using? Could you please try with, say "One Dark"? Nuclide officially supports "One Dark", "One Light", "Atom Dark" and "Atom Light". In reality it should work OK with many others, but we can't commit to it.

yomansk8 commented 7 years ago

Same problem for me in v220.

joncursi commented 7 years ago

I'm using Atom Dark

shushz commented 7 years ago

Could you please attach an apm list output and perhaps a screen video demonstrating the behavior? If it's not a theme, then maybe there's some other package that interferes with the DOM. Nuclide's file-tree items were changed lately to enable support for the file-icons package. But without being able to repro this, guessing is more or less like shooting in the dark. BTW, if you have the file-icons installed, please make sure it's updated to the latest version.

josh-shaw-dev commented 7 years ago

Theme I am using is "One Dark", also tried atom dark/light and same issue but not quite as bad as I could actually open a file if I clicked enough.

Also I note that in atom dark/light, the colour flashes from a lighter black to darker when I single click on a file like a selection colour change for the whole panel.

The gif is of One Dark

output

Built-in Atom Packages (88) ├── atom-dark-syntax@0.28.0 ├── atom-dark-ui@0.53.0 ├── atom-light-syntax@0.29.0 ├── atom-light-ui@0.46.0 ├── base16-tomorrow-dark-theme@1.5.0 ├── base16-tomorrow-light-theme@1.5.0 ├── one-dark-ui@1.9.2 ├── one-light-ui@1.9.2 ├── one-dark-syntax@1.7.1 ├── one-light-syntax@1.7.1 ├── solarized-dark-syntax@1.1.2 ├── solarized-light-syntax@1.1.2 ├── about@1.7.5 ├── archive-view@0.63.0 ├── autocomplete-atom-api@0.10.0 ├── autocomplete-css@0.15.1 ├── autocomplete-html@0.7.2 ├── autocomplete-plus@2.34.2 ├── autocomplete-snippets@1.11.0 ├── autoflow@0.29.0 ├── autosave@0.24.0 ├── background-tips@0.26.1 ├── bookmarks@0.44.2 ├── bracket-matcher@0.85.3 ├── command-palette@0.40.3 ├── dalek@0.2.0 ├── deprecation-cop@0.56.2 ├── dev-live-reload@0.47.0 ├── encoding-selector@0.23.2 ├── find-and-replace@0.207.3 ├── fuzzy-finder@1.5.0 ├── git-diff@1.3.3 ├── go-to-line@0.32.0 ├── grammar-selector@0.49.3 ├── image-view@0.61.1 ├── incompatible-packages@0.27.2 ├── keybinding-resolver@0.36.3 ├── line-ending-selector@0.6.2 ├── link@0.31.2 ├── markdown-preview@0.159.7 ├── notifications@0.66.2 ├── open-on-github@1.2.1 ├── package-generator@1.1.0 ├── settings-view@0.248.0 ├── snippets@1.1.1 ├── spell-check@0.71.3 ├── status-bar@1.8.5 ├── styleguide@0.49.3 ├── symbols-view@0.115.2 ├── tabs@0.104.2 ├── timecop@0.36.0 ├── tree-view@0.215.1 ├── update-package-dependencies@0.11.0 ├── welcome@0.36.2 ├── whitespace@0.36.2 ├── wrap-guide@0.40.0 ├── language-c@0.57.0 ├── language-clojure@0.22.2 ├── language-coffee-script@0.48.5 ├── language-csharp@0.14.2 ├── language-css@0.42.1 ├── language-gfm@0.88.1 ├── language-git@0.19.0 ├── language-go@0.43.1 ├── language-html@0.47.2 ├── language-hyperlink@0.16.1 ├── language-java@0.27.0 ├── language-javascript@0.126.1 ├── language-json@0.19.0 ├── language-less@0.31.0 ├── language-make@0.22.3 ├── language-mustache@0.13.1 ├── language-objective-c@0.15.1 ├── language-perl@0.37.0 ├── language-php@0.37.5 ├── language-property-list@0.9.1 ├── language-python@0.45.2 ├── language-ruby@0.70.5 ├── language-ruby-on-rails@0.25.2 ├── language-sass@0.58.0 ├── language-shellscript@0.25.0 ├── language-source@0.9.0 ├── language-sql@0.25.4 ├── language-text@0.7.2 ├── language-todo@0.29.1 ├── language-toml@0.18.1 ├── language-xml@0.35.0 └── language-yaml@0.29.0

Community Packages (13) /home/some-user/.atom/packages ├── atom-beautify@0.29.23 ├── atom-easy-jsdoc@4.12.1 ├── atom-typescript@11.0.3 ├── busy-signal@1.4.1 ├── docker@0.7.0 ├── highlight-selected@0.13.1 ├── intentions@1.1.2 ├── language-docker@1.1.7 ├── linter@2.1.4 ├── linter-docker@0.2.0 ├── linter-jshint@3.0.3 ├── linter-ui-default@1.2.3 └── nuclide@0.220.0

piotrfalba commented 7 years ago

I have the same issues.

yomansk8 commented 7 years ago

As I said before, I have the same problem. If it can help, I'm using the One Dark theme too.

I'm on macOS 10.12.4 (Dont know if it helps), and this is the list of packages I have installed :

$ apm list                                                                                                                                                                                                                            [node v7.3.0]
Built-in Atom Packages (90)
├── atom-dark-syntax@0.28.0
├── atom-dark-ui@0.53.0
├── atom-light-syntax@0.29.0
├── atom-light-ui@0.46.0
├── base16-tomorrow-dark-theme@1.5.0
├── base16-tomorrow-light-theme@1.5.0
├── one-dark-ui@1.9.2
├── one-light-ui@1.9.2
├── one-dark-syntax@1.7.1
├── one-light-syntax@1.7.1
├── solarized-dark-syntax@1.1.2
├── solarized-light-syntax@1.1.2
├── about@1.7.5
├── archive-view@0.63.0
├── autocomplete-atom-api@0.10.0
├── autocomplete-css@0.15.1
├── autocomplete-html@0.7.2
├── autocomplete-plus@2.34.2
├── autocomplete-snippets@1.11.0
├── autoflow@0.29.0
├── autosave@0.24.0
├── background-tips@0.26.1
├── bookmarks@0.44.2
├── bracket-matcher@0.85.3
├── command-palette@0.40.3
├── dalek@0.2.0
├── deprecation-cop@0.56.2
├── dev-live-reload@0.47.0
├── encoding-selector@0.23.2
├── exception-reporting@0.41.2
├── find-and-replace@0.207.3
├── fuzzy-finder@1.5.0
├── git-diff@1.3.3
├── go-to-line@0.32.0
├── grammar-selector@0.49.3
├── image-view@0.61.1
├── incompatible-packages@0.27.2
├── keybinding-resolver@0.36.3
├── line-ending-selector@0.6.2
├── link@0.31.2
├── markdown-preview@0.159.7
├── metrics@1.2.1
├── notifications@0.66.2
├── open-on-github@1.2.1
├── package-generator@1.1.0
├── settings-view@0.248.0
├── snippets@1.1.1
├── spell-check@0.71.3
├── status-bar@1.8.5
├── styleguide@0.49.3
├── symbols-view@0.115.2
├── tabs@0.104.2
├── timecop@0.36.0
├── tree-view@0.215.1
├── update-package-dependencies@0.11.0
├── welcome@0.36.2
├── whitespace@0.36.2
├── wrap-guide@0.40.0
├── language-c@0.57.0
├── language-clojure@0.22.2
├── language-coffee-script@0.48.5
├── language-csharp@0.14.2
├── language-css@0.42.1
├── language-gfm@0.88.1
├── language-git@0.19.0
├── language-go@0.43.1
├── language-html@0.47.2
├── language-hyperlink@0.16.1
├── language-java@0.27.0
├── language-javascript@0.126.1
├── language-json@0.19.0
├── language-less@0.31.0
├── language-make@0.22.3
├── language-mustache@0.13.1
├── language-objective-c@0.15.1
├── language-perl@0.37.0
├── language-php@0.37.5
├── language-property-list@0.9.1
├── language-python@0.45.2
├── language-ruby@0.70.5
├── language-ruby-on-rails@0.25.2
├── language-sass@0.58.0
├── language-shellscript@0.25.0
├── language-source@0.9.0
├── language-sql@0.25.4
├── language-text@0.7.2
├── language-todo@0.29.1
├── language-toml@0.18.1
├── language-xml@0.35.0
└── language-yaml@0.29.0

Community Packages (27) /Users/yohann/.atom/packages
├── atom-html-preview@0.1.22
├── atom-material-ui@1.3.10
├── busy-signal@1.4.1
├── docblockr@0.9.4
├── file-icons@2.1.4
├── highlight-selected@0.13.1
├── intentions@1.1.2
├── language-docker@1.1.7
├── language-ini@1.19.0
├── language-javascript-jsx@0.3.7
├── language-logstash@0.1.7
├── language-plantuml@0.2.0
├── language-pug@0.0.21
├── linter@2.1.4
├── linter-eslint@8.1.6
├── linter-ui-default@1.2.3
├── minimap@4.27.1
├── minimap-split-diff@0.3.7
├── multi-cursor@2.1.5
├── nuclide@0.220.0
├── open-in-browser@0.5.0
├── plantuml@0.1.2
├── plantuml-viewer@0.7.1
├── source-preview-pug@0.2.0
├── split-diff@1.3.0
├── tablr@1.8.3
└── tool-bar@1.1.0
1st8 commented 7 years ago

Same problem wit the following apm list

Built-in Atom Packages (90)
├── atom-dark-syntax@0.28.0
├── atom-dark-ui@0.53.0
├── atom-light-syntax@0.29.0
├── atom-light-ui@0.46.0
├── base16-tomorrow-dark-theme@1.5.0
├── base16-tomorrow-light-theme@1.5.0
├── one-dark-ui@1.9.2
├── one-light-ui@1.9.2
├── one-dark-syntax@1.7.1
├── one-light-syntax@1.7.1
├── solarized-dark-syntax@1.1.2
├── solarized-light-syntax@1.1.2
├── about@1.7.5
├── archive-view@0.63.0
├── autocomplete-atom-api@0.10.0
├── autocomplete-css@0.15.1
├── autocomplete-html@0.7.2
├── autocomplete-plus@2.34.2
├── autocomplete-snippets@1.11.0
├── autoflow@0.29.0
├── autosave@0.24.0
├── background-tips@0.26.1
├── bookmarks@0.44.2
├── bracket-matcher@0.85.3
├── command-palette@0.40.3
├── dalek@0.2.0
├── deprecation-cop@0.56.2
├── dev-live-reload@0.47.0
├── encoding-selector@0.23.2
├── exception-reporting@0.41.2
├── find-and-replace@0.207.3
├── fuzzy-finder@1.5.0
├── git-diff@1.3.3
├── go-to-line@0.32.0
├── grammar-selector@0.49.3
├── image-view@0.61.1
├── incompatible-packages@0.27.2
├── keybinding-resolver@0.36.3
├── line-ending-selector@0.6.2
├── link@0.31.2
├── markdown-preview@0.159.7
├── metrics@1.2.1
├── notifications@0.66.2
├── open-on-github@1.2.1
├── package-generator@1.1.0
├── settings-view@0.248.0
├── snippets@1.1.1
├── spell-check@0.71.3
├── status-bar@1.8.5
├── styleguide@0.49.3
├── symbols-view@0.115.2
├── tabs@0.104.2
├── timecop@0.36.0
├── tree-view@0.215.1
├── update-package-dependencies@0.11.0
├── welcome@0.36.2
├── whitespace@0.36.2
├── wrap-guide@0.40.0
├── language-c@0.57.0
├── language-clojure@0.22.2
├── language-coffee-script@0.48.5
├── language-csharp@0.14.2
├── language-css@0.42.1
├── language-gfm@0.88.1
├── language-git@0.19.0
├── language-go@0.43.1
├── language-html@0.47.2
├── language-hyperlink@0.16.1
├── language-java@0.27.0
├── language-javascript@0.126.1
├── language-json@0.19.0
├── language-less@0.31.0
├── language-make@0.22.3
├── language-mustache@0.13.1
├── language-objective-c@0.15.1
├── language-perl@0.37.0
├── language-php@0.37.5
├── language-property-list@0.9.1
├── language-python@0.45.2
├── language-ruby@0.70.5
├── language-ruby-on-rails@0.25.2
├── language-sass@0.58.0
├── language-shellscript@0.25.0
├── language-source@0.9.0
├── language-sql@0.25.4
├── language-text@0.7.2
├── language-todo@0.29.1
├── language-toml@0.18.1
├── language-xml@0.35.0
└── language-yaml@0.29.0

Community Packages (10) /Users/christophwork/.atom/packages
├── busy-signal@1.4.1
├── intentions@1.1.2
├── js-hyperclick@1.10.1
├── language-groovy@0.6.0
├── linter@2.1.4
├── linter-eslint@8.1.7
├── linter-ui-default@1.2.3
├── nuclide@0.220.0
├── prettier-atom@0.29.0
└── sort-lines@0.14.0
1st8 commented 7 years ago

Workaround for anyone interested: apm install nuclide@0.218.0

shushz commented 7 years ago

Thanks for providing the additional details. I've reproed it. The packages you have in common are: ├── busy-signal@1.4.1 ├── intentions@1.1.2 ├── linter@2.1.4 ├── linter-ui-default@1.2.3

I tried installing this, along with linter-eslint and after I caused an error the behavior would reproduce. The linter inserts a linter-decoration element that spans the entire height of the file tree and intercepts the on mouse down events. So even though you're clicking outside of the visual underline, it grabs the mouse event, which causes the file-tree think that the underlined element was clicked and not whatever the mouse was pointing at.

See: screen shot 2017-04-27 at 3 28 05 pm

I propose reporting this issue on the linter-ui-default repo

steelbrain commented 7 years ago

Thanks for the investigation into this @shushz

Linter needs that element to highlight entries in tree view. It does not listen for or stop any kind-of events. Furthermore it works fine in the builtin Tree View, so maybe nuclide should modify it's tree view click event handling?

I'm asking you this because after a quick investigation, I wasn't able to find any other way (without a ton of complexity that is) to decorate the tree view without adding anything to tree view elements.

Edit Here's a css snapshot from builtin tree view

screen shot 2017-05-01 at 4 12 28 am
josh-shaw-dev commented 7 years ago

@shushz can you take another look at this, as It did work in 0.218 but broke in 0.219

shushz commented 7 years ago

@jgebhardt could you chime in? UI is not really my domain.

matthewwithanm commented 7 years ago

@steelbrain If you don't need to intercept any events, could you add pointer-events: none to the linter-decoration element? That seems to fix it.

steelbrain commented 7 years ago

@matthewwithanm I would add it very happily, In fact I'll push an update very soon doing it.

In the meantime, if you could have a look inside what's changed between Nuclide v0.218 and v0.219's css that made the linter elements appear all over the tree view, that would fix it for any other packages out there adding decorations on TreeView, because their decorations work with Atom's tree view but only break on yours :)

matthewwithanm commented 7 years ago

Looking through the commits my guess would be that it's facebook/nuclide@147924b, which seems to have removed one of the nodes.

@jgebhardt @shushz Any background on this change?