Pie menu design improvements #56949

Open
opened 2018-09-28 16:18:09 +02:00 by William Reynish · 38 comments

Now that we are adding more pie menus, we could make some small but effective improvements to them.

Wedge Highlighting

First, the wedge could be highlighted as you rollover it, to make it clearer how big the area is, like so:
Screenshot 2018-09-26 at 15.52.00.png

Holding, Then Releasing Key Should Always Dismiss Pie

There's a slight quirk in the way we handle input: Normally, if you hold a key to invoke a pie menu and then let go, the pie menu is dismissed. This works if you move your cursor to an item, or to an empty area. But, if you don't move the cursor at all, this doesn't work. This makes the behaviour inconsistent, and makes the pies 'stick' in an annoying way if you regret opening one.

Letter Input While Pie is Active

While number input works reasonably well, in Blender we also use letters to invoke options in menus. For pies, letters work better, because the order makes less direct sense. There's nothing intuitive that says left=1, right=2, and so on. We should enable letter input to activate pie options. This way, user can press Z, S to activate Solid Mode.


These three changes should make pie menus more delightful to use.

Now that we are adding more pie menus, we could make some small but effective improvements to them. ## Wedge Highlighting First, the wedge could be highlighted as you rollover it, to make it clearer how big the area is, like so: ![Screenshot 2018-09-26 at 15.52.00.png](https://archive.blender.org/developer/F4823725/Screenshot_2018-09-26_at_15.52.00.png) ## Holding, Then Releasing Key Should Always Dismiss Pie There's a slight quirk in the way we handle input: Normally, if you hold a key to invoke a pie menu and then let go, the pie menu is dismissed. This works if you move your cursor to an item, or to an empty area. But, if you don't move the cursor at all, this doesn't work. This makes the behaviour inconsistent, and makes the pies 'stick' in an annoying way if you regret opening one. ## Letter Input While Pie is Active While number input works reasonably well, in Blender we also use letters to invoke options in menus. For pies, letters work better, because the order makes less direct sense. There's nothing intuitive that says left=1, right=2, and so on. We should enable letter input to activate pie options. This way, user can press Z, S to activate Solid Mode. ---- These three changes should make pie menus more delightful to use.

Added subscriber: @WilliamReynish

Added subscriber: @WilliamReynish

Added subscriber: @PetterLundh

Added subscriber: @PetterLundh

Added subscriber: @KINjO

Added subscriber: @KINjO

Added subscriber: @0o00o0oo

Added subscriber: @0o00o0oo

Is this task meant for improvements in general to the pie menu, or just these specific proposed changes?

Is this task meant for improvements in general to the pie menu, or just these specific proposed changes?

KiJeon: What do you mean?

KiJeon: What do you mean?

Added subscriber: @Rusculleda

Added subscriber: @Rusculleda

Small suggestion in regards to the pivot point pie menu. I think the two most used pivot point settings are "median point" (the default one) and "3d cursor" so it would make things faster if they were on opposing sides, and "active element" is, I think, much more often used than "bounding box center", so it would be nice if it was placed on one of the main directions, opposing "individual origins".

Small suggestion in regards to the pivot point pie menu. I think the two most used pivot point settings are "median point" (the default one) and "3d cursor" so it would make things faster if they were on opposing sides, and "active element" is, I think, much more often used than "bounding box center", so it would be nice if it was placed on one of the main directions, opposing "individual origins".

Pie menu active state was fixed by commit: c234c3db1b

Pie menu active state was fixed by commit: c234c3db1bcb

Added subscriber: @ideasman42

Added subscriber: @ideasman42

@WilliamReynish, could you report an issue for remaining Pie menu glitches?

@WilliamReynish, could you report an issue for remaining Pie menu glitches?

@WilliamReynish I mean is this task open to discussions on how to improve the pie menu in general, or meant only to discuss the specific items you outlined in the Description above?

I ask because the title seems to indicate the former, but if the intent is latter, I don't want to add noise to the discussion.

@WilliamReynish I mean is this task open to discussions on how to improve the pie menu in general, or meant only to discuss the specific items you outlined in the Description above? I ask because the title seems to indicate the former, but if the intent is latter, I don't want to add noise to the discussion.

Campbell: You are right. Will do.

KiJeon: You are welcome to suggest or point out something that could work better or differently.

Campbell: You are right. Will do. KiJeon: You are welcome to suggest or point out something that could work better or differently.

Added subscriber: @steego-1

Added subscriber: @steego-1

However, the numbering order is scrambled. It doesn't follow the order of the actual items, which is left=1, right=2, top=3, bottom=4, and so on.

It's not scrambled, the layout follows that of the numpad if I'm not mistaken?

> However, the numbering order is scrambled. It doesn't follow the order of the actual items, which is left=1, right=2, top=3, bottom=4, and so on. It's not scrambled, the layout follows that of the numpad if I'm not mistaken?

Stig: You are right. Removed this section.

Stig: You are right. Removed this section.

Added subscriber: @JJones

Added subscriber: @JJones

Fix for: Holding, Then Releasing Key Should Always Dismiss Pie
I believe this fix complies with the intended behaviour of the pie menu as per the discussion at devtalk

I'm attaching a diff that adds a "Tap Key Timeout" setting to the Pie Menu preferences. It changes these files:

release/scripts/startup/bl_ui/space_userpref.py
source/blender/blenloader/ versioning_userdef.c
source/blender/editors/interface/interface_handlers.c
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_userdef.c

OR Instead of the diff... try it out with a hardcoded value of 20 by changing one line in interface_handlers.c:

+++ b/source/blender/editors/interface/interface_handlers.c
@@ -9405,7 +9405,7 @@ static int ui_pie_handler(bContext *C, const wmEvent *event, uiPopupBlockHandle
                        }
                        else {
                                /* distance from initial point */
-                               if (!(block->pie_data.flags & UI_PIE_DRAG_STYLE)) {
+                               if ((duration < 0.01 * 20  ) && !(block->pie_data.flags & UI_PIE_DRAG_STYLE)) {
                                        block->pie_data.flags |= UI_PIE_CLICK_STYLE;
                                }
                                else {

I submitted a proper diff here:
https://developer.blender.org/D4180

Sorry for all the noise.. learning the system.

Fix for: Holding, Then Releasing Key Should Always Dismiss Pie I believe this fix complies with the intended behaviour of the pie menu as per the discussion at [devtalk ](https://devtalk.blender.org/t/pie-menu-disable-on-release-key-patch/2237/19) I'm attaching a diff that adds a "Tap Key Timeout" setting to the Pie Menu preferences. It changes these files: ``` release/scripts/startup/bl_ui/space_userpref.py source/blender/blenloader/ versioning_userdef.c source/blender/editors/interface/interface_handlers.c source/blender/makesdna/DNA_userdef_types.h source/blender/makesrna/intern/rna_userdef.c ``` OR Instead of the diff... try it out with a hardcoded value of 20 by changing one line in interface_handlers.c: ``` +++ b/source/blender/editors/interface/interface_handlers.c @@ -9405,7 +9405,7 @@ static int ui_pie_handler(bContext *C, const wmEvent *event, uiPopupBlockHandle } else { /* distance from initial point */ - if (!(block->pie_data.flags & UI_PIE_DRAG_STYLE)) { + if ((duration < 0.01 * 20 ) && !(block->pie_data.flags & UI_PIE_DRAG_STYLE)) { block->pie_data.flags |= UI_PIE_CLICK_STYLE; } else { ``` I submitted a proper diff here: https://developer.blender.org/D4180 Sorry for all the noise.. learning the system.

Added subscriber: @zebus3dream

Added subscriber: @zebus3dream

D4220: Action With Second Press of Pie Shortcut Key
I've been trying out another change and have made a patch here

My first experience with Pie menus I expected to be able to toggle them away with the same key I used to bring them up and was slightly annoyed when that didn't occur. This patch also allows you to activate items with this key ( after a mouse move ). Essentially it acts as a mouse click.

I also felt ( not so strongly) that pressing the middle '5' key on the numeric keypad should act as if you clicked in the middle... i.e. dismiss it.
I expect a reviewer to request this be separated out into a second patch but have left it in for testing.

Issues:
If the pie is called up with a letter and no modifier then you will not be able to access a shortcut in the menu using that letter. This isn't an issue for modified key codes such as Shift-S. If it's a concern a preferences setting could allow the user to disable this or maybe change the shortcut to a shifted version.

[D4220](https://archive.blender.org/developer/D4220): **Action With Second Press of Pie Shortcut Key** I've been trying out another change and have made a [patch here ](https://developer.blender.org/D4220) My first experience with Pie menus I expected to be able to toggle them away with the same key I used to bring them up and was slightly annoyed when that didn't occur. This patch also allows you to activate items with this key ( after a mouse move ). Essentially it acts as a mouse click. I also felt ( not so strongly) that pressing the middle '5' key on the numeric keypad should act as if you clicked in the middle... i.e. dismiss it. I expect a reviewer to request this be separated out into a second patch but have left it in for testing. *Issues:* If the pie is called up with a letter and no modifier then you will not be able to access a shortcut in the menu using that letter. This isn't an issue for modified key codes such as Shift-S. If it's a concern a preferences setting could allow the user to disable this or maybe change the shortcut to a shifted version.

Default Pie Menu Action.
Also... I'm experimenting on ways to allow the short 'tap' of a pie-menu key to perform an action ( instead of sticking the pie menu ).
For example, z held down brings up the Shading Pie menu however tapping it would simply toggle wireframe mode.

With the patch in my last post ( action with second press of pie shortcut key ) you can assign a double-click key action to a pie-menu key and have it occur when you activate and dismiss a pie menu with two quick taps. A preferences setting could modify this so that the double press action occurs for pie menus when a single short tap occurs.

**Default Pie Menu Action.** Also... I'm experimenting on ways to allow the short 'tap' of a pie-menu key to perform an action ( instead of sticking the pie menu ). For example, z held down brings up the Shading Pie menu however tapping it would simply toggle wireframe mode. With the patch in my last post ( action with second press of pie shortcut key ) you can assign a double-click key action to a pie-menu key and have it occur when you activate and dismiss a pie menu with two quick taps. A preferences setting could modify this so that the double press action occurs for pie menus when a single short tap occurs.

Complex Pie Menus for testing?
Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc?

**Complex Pie Menus for testing?** Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc?

Added subscribers: @JulianEisel, @brecht

Added subscribers: @JulianEisel, @brecht

D4220: Action With Second Press of Pie Shortcut Key

That seems reasonable. The conflict with shortcuts for items I guess can be avoided by consider that key as already taken so it users a different one.

Default Pie Menu Action.
Also... I'm experimenting on ways to allow the short 'tap' of a pie-menu key to perform an action ( instead of sticking the pie menu ).
For example, z held down brings up the Shading Pie menu however tapping it would simply toggle wireframe mode.

We tried this for tab and edit mode switching, but found it does not work well. Many users multitask and move their mouse while pressing shortcut keys, and so accidentally trigger the pie menu.

Complex Pie Menus for testing?
Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc?

Not that I'm aware, maybe @JulianEisel knows.

> [D4220](https://archive.blender.org/developer/D4220): Action With Second Press of Pie Shortcut Key That seems reasonable. The conflict with shortcuts for items I guess can be avoided by consider that key as already taken so it users a different one. > Default Pie Menu Action. > Also... I'm experimenting on ways to allow the short 'tap' of a pie-menu key to perform an action ( instead of sticking the pie menu ). > For example, z held down brings up the Shading Pie menu however tapping it would simply toggle wireframe mode. We tried this for tab and edit mode switching, but found it does not work well. Many users multitask and move their mouse while pressing shortcut keys, and so accidentally trigger the pie menu. > Complex Pie Menus for testing? > Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc? Not that I'm aware, maybe @JulianEisel knows.

In #56949#601428, @JJones wrote:
Complex Pie Menus for testing?
Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc?

I can answer this. There aren't any 'complex' pie menus in the default Blender pie menus. We decided against this for now, as they go against the main advantage of pie menus, which is the speedy, gestural input.

However, I believe there are some more advanced ones inside the pie menus addon, and there's also the Pie Menu Editor addon that allows users to build very complicated custom things.

> In #56949#601428, @JJones wrote: > **Complex Pie Menus for testing?** > Are there any test pie menus hidden away... something involving pie menus with inner block menus/pie menus etc? I can answer this. There aren't any 'complex' pie menus in the default Blender pie menus. We decided against this for now, as they go against the main advantage of pie menus, which is the speedy, gestural input. However, I believe there are some more advanced ones inside the pie menus addon, and there's also the Pie Menu Editor addon that allows users to build very complicated custom things.

I cleaned up my original diff and added an Interface->Pie Menus preferences entry "Pie Key Again Click" - "Pressing pie shortcut again will act as click ( to cancel or select )" which defaults to enabled.

Still diff D4220

I tried it with some of the pie menu add-ons: works well with submenus.

I cleaned up my original diff and added an Interface->Pie Menus preferences entry "Pie Key Again Click" - "Pressing pie shortcut again will act as click ( to cancel or select )" which defaults to enabled. Still diff [D4220](https://archive.blender.org/developer/D4220) I tried it with some of the pie menu add-ons: works well with submenus.

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

Added subscriber: @SimHacker

Added subscriber: @SimHacker

Added subscriber: @Jasiek

Added subscriber: @Jasiek

Is there currently a way to re-arrange the Pie-Menus from the side of the user?
For instance the horizontal axis for the most used items is completely wrong for me, and I'd like to have them on a vertical one - so for instance the a TAB pie menu would have Object mode up top and Edit mode on the bottom.
Or at least provide us with a settings option to change them from a horizontal layout for most used items to a vertical one.

I like the tab pie menu but I'm one of the people who move their mouse a lot when pressing tab - so I constantly go into vertex paint when I just want to exit from Edit mode to Object mode with a single tab press.
Increasing the time needed to hold the tab before we can move the mouse to enter a pie menu would be cool too.

Is there currently a way to re-arrange the Pie-Menus from the side of the user? For instance the horizontal axis for the most used items is completely wrong for me, and I'd like to have them on a vertical one - so for instance the a TAB pie menu would have Object mode up top and Edit mode on the bottom. Or at least provide us with a settings option to change them from a horizontal layout for most used items to a vertical one. I like the tab pie menu but I'm one of the people who move their mouse a lot when pressing tab - so I constantly go into vertex paint when I just want to exit from Edit mode to Object mode with a single tab press. Increasing the time needed to hold the tab before we can move the mouse to enter a pie menu would be cool too.

Added subscriber: @keenan18

Added subscriber: @keenan18

I hope I'm not putting this in the wrong place. But I have a feature suggestion for pie menu.

It could be helpful if pie menu had sub-pie menus. For example a default sculpt brush could be the main selection, but the same brush with modifications could be a sub-pie menu.

Or, in general for say properties window. Sub-pie menus could descend into setting those properties, where finally the relevant setting widget would pop-up in the pie menu and be ready for manipulation by the activating device. dyntopo properties would be a breeze with this kind of set-up.

This type of set-up would create the fastest way to manipulate widgets, because it uses the least amount of pixel real estate to make those changes. It would be second place for speed to a hotkey.

I hope I'm not putting this in the wrong place. But I have a feature suggestion for pie menu. It could be helpful if pie menu had sub-pie menus. For example a default sculpt brush could be the main selection, but the same brush with modifications could be a sub-pie menu. Or, in general for say properties window. Sub-pie menus could descend into setting those properties, where finally the relevant setting widget would pop-up in the pie menu and be ready for manipulation by the activating device. dyntopo properties would be a breeze with this kind of set-up. This type of set-up would create the fastest way to manipulate widgets, because it uses the least amount of pixel real estate to make those changes. It would be second place for speed to a hotkey.

Added subscriber: @Daxter753

Added subscriber: @Daxter753

Sorry but I want to swap where edit mode and object mode are but I don't know how.

If you do respond thanks in advance.

Sorry but I want to swap where edit mode and object mode are but I don't know how. If you do respond thanks in advance.

Added subscriber: @ckohl_art

Added subscriber: @ckohl_art
Julian Eisel changed title from Blender 2.8: Pie menu improvements to Pie menu desgin improvements 2020-06-26 19:10:18 +02:00
Julian Eisel changed title from Pie menu desgin improvements to Pie menu design improvements 2020-06-26 19:10:27 +02:00

Added subscriber: @AlexeyPerminov

Added subscriber: @AlexeyPerminov

Remove Issue? "Holding, Then Releasing Key Should Always Dismiss Pie" - This mentions the menu sticking open if the mouse isn't moved... I cannot replicate this behaviour. The pie menu will activate/cancel if menu key released.

Note the "Tap Key Timeout" preferences setting. Interface->Menus->Pie Menus controls how short a keypress will cause the menu to stick open ( 0 for never, defaults is 20/100s ).

Consider changing the issue to: " Dismiss Pie Menu with Second Press of Pie Menu shortcut Key"
Once stuck open the pie menu needs to be closed with a mouse click. Patch D4220 allows you to close it with another press of the key.

**Remove Issue?** "*Holding, Then Releasing Key Should Always Dismiss Pie*" - This mentions the menu sticking open if the mouse isn't moved... I cannot replicate this behaviour. The pie menu will activate/cancel if menu key released. Note the "Tap Key Timeout" preferences setting. Interface->Menus->Pie Menus controls how short a keypress will cause the menu to stick open ( 0 for never, defaults is 20/100s ). **Consider changing the issue** to: " *Dismiss Pie Menu with Second Press of Pie Menu shortcut Key*" Once stuck open the pie menu needs to be closed with a mouse click. Patch [D4220](https://archive.blender.org/developer/D4220) allows you to close it with another press of the key.

Removed subscriber: @Rusculleda

Removed subscriber: @Rusculleda
Philipp Oeser removed the
Interest
User Interface
label 2023-02-10 09:26:12 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
17 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#56949
No description provided.