terminal icon indicating copy to clipboard operation
terminal copied to clipboard

Rebuild the profile nav view items via MenuItemsSource, to mitigate a crash

Open zadjii-msft opened this issue 2 years ago • 1 comments

Directly manipulating the NavigationView::MenuItems vector is bad. If you do that, you're gonna get crashes, in WinUI code for Measure. However, a WinUI PR (below) gave me an idea: Changing NavigationView::MenuItemsSource will wholly invalidate the entirety of the nav view items, and that will avoid the crash.

This code does that. It's a wee bit janky, but it works.

Closes #13673

might affect #12333, need to try and repro.

TODO

  • [x] [WIN 10] Cannot keyboard navigate through nav view items (#14691)
    • Dug into this a bit, this weirdly seems to happen all the time to Win 10 VMs (both before and after this PR)
    • I pulled out an old Vb machine and put the bugbash build (with this PR) on it, and it worked fine.
    • We're gonna treat this as a VM thing and move on.
  • [ ] KB Focus keeps moving to "open json file" and that's annoying

See also:

  • #9273
  • #10390
  • https://github.com/microsoft/microsoft-ui-xaml/issues/6302
  • https://github.com/microsoft/microsoft-ui-xaml/pull/3138, which was the fix for https://github.com/microsoft/microsoft-ui-xaml/issues/2818

zadjii-msft avatar Jan 04 '23 22:01 zadjii-msft

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view or the :scroll:action log for details.

Unrecognized words (3)

istantiating origina Wek

Previously acknowledged words that are now absent Hirots inthread reingest :arrow_right:
To accept :heavy_check_mark: these unrecognized words as correct and remove the previously acknowledged and now absent words, run the following commands

... in a clone of the [email protected]:microsoft/terminal.git repository on the dev/migrie/b/13673-winui-is-horrible branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/v0.0.21/apply.pl' |
perl - 'https://github.com/microsoft/terminal/actions/runs/3842228223/attempts/1'
:pencil2: Contributor please read this

By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.

:warning: The command is written for posix shells. If it doesn't work for you, you can manually add (one word per line) / remove items to expect.txt and the excludes.txt files.

If the listed items are:

  • ... misspelled, then please correct them instead of using the command.
  • ... names, please add them to .github/actions/spelling/allow/names.txt.
  • ... APIs, you can add them to a file in .github/actions/spelling/allow/.
  • ... just things you're using, please add them to an appropriate file in .github/actions/spelling/expect/.
  • ... tokens you only need in one place and shouldn't generally be used, you can add an item in an appropriate file in .github/actions/spelling/patterns/.

See the README.md in each directory for more information.

:microscope: You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. :wink:

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Jan 04 '23 22:01 github-actions[bot]