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

Windows application menu take two #991

Merged
merged 116 commits into from
Mar 28, 2017
Merged

Windows application menu take two #991

merged 116 commits into from
Mar 28, 2017

Conversation

niik
Copy link
Member

@niik niik commented Mar 1, 2017

This implements a custom menu bar component on Windows, see #836 for more details on why.

Navigating with mouse

menubar

Navigating with keyboard

This shows me hitting Alt+F to open the file menu and then O to open Options.

menubar-access-key

Things this does not do / known limitations

Full screen

The menu bar is currently not accessible when running the app in full-screen. I plan to tackle that in a separate PR rather than drag this out any longer.

Submenus

Sub menus are not handled with any grace at the moment. They work but they do not position themselves as one would expect. We currently don't have any sub menus for top level menus so I don't plan to tackle that until it becomes a problem as it is non-trivial to implement well.

image

Fixes #836

We're not using it for anything
To accomodate for icon and menu bar
Only when some menu is open
This allows us to capture arrow keys even though no menu items have focus
@niik
Copy link
Member Author

niik commented Mar 27, 2017

EDIT: having the File menu item be active when pressing ALT would actually be really great. But I'm fine to 👢 that to a follow-up PR.

Good catch, we should indeed support that scenario. I modeled the interactions after how Notepad does things as that seemed like a good example of how things should be done. I've documented some of my findings in https://github.com/desktop/desktop/blob/88e4525ac9f8f94392eff44ca35f8e891557ed8b/docs/windows-menu-bar.md

I'm pretty happy with the current state so it's time for another look

menubar-focus-opt

Copy link
Member

@shiftkey shiftkey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shout out to some great docs. I'm mostly nit-picking things now.

I'd also love @joshaber or @iAmWillShepherd to pull this down and test it out a bit, just incase I've missed something.


## Keyboard navigation

When a user is holding down the `ALT` key the access-keys (which is separate from

This comment was marked as spam.

File -> New Branch item a user should be able to press `ALT+F` followed by `B`.

Pressing the `ALT` key and releasing it without pressing an access key should
put focus on the first top level menu item if no menu is currently expanded. If

This comment was marked as spam.

* Whether or not to render the accelerator (shortcut) next to the label.
* This can be turned off when the menu item is used as a stand-alone item
*/
readonly renderAcceleratorText?: boolean

This comment was marked as spam.

This comment was marked as spam.

private renderTitlebar() {
const winControls = __WIN32__
? <WindowControls />
: null

// On windows it's not possible to resize a frameless window if the

This comment was marked as spam.

private onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {

if (event.key === 'Escape') {
// Are we currently collapsed?

This comment was marked as spam.

@niik
Copy link
Member Author

niik commented Mar 28, 2017

🔊

@joshaber joshaber mentioned this pull request Mar 28, 2017
@joshaber
Copy link
Contributor

Damn, this is a hell of a thing. Works well in the cursory testing I did 👍

? 'open'
: 'closed'

const dropDownState = this.isMenuOpen ? 'open' : 'closed'

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

@shiftkey shiftkey merged commit 470c123 into master Mar 28, 2017
@shiftkey shiftkey deleted the app-menu-take-two branch March 28, 2017 21:28
@ZexuanTHU
Copy link

The support of cross=platform titlebar from Electron is nasty, maybe you guys should consider to PR your efforts to the Electron repo and makes it kinda a standard.

@lock lock bot locked as resolved and limited conversation to collaborators Aug 3, 2018
@desktop desktop unlocked this conversation Sep 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants