Tool System Todo
Open, NormalPublic


This task is a TODO for Campbell Barton (other devs welcome!), during the code-quest, and afterwards,
These tasks are needed for the tool system to be generally useful and pleasant to use.

  • Other related things
    • Move ‘Auto-Merge’ to Mesh Options in top bar rB1422c0650c951f21bee2555e4e7f03bb8c64cace
    • Move Snapping & Snapping Options into one popover.
    • Move Proportional Edit & Proportional Edit Options into one popover.
    • Move Show/Hide Manipulator into Overlays. rB90b2e4ce284e77e5422f672ded258c139e35af10
    • Remove internal/unneeded options from the operator redo panels. T54858
    • Update the design of the viewport navigation manipulator to follow design doc. T54723
    • Rotate tool widget should display snapping tick marks when holding Ctrl. See design task: T54661
    • Make the delta of movement clearer when using manipulators. See design task: T54661
    • Add option to show/hide tool manipulators (mapped to Ctrl-Tild)
    • Add option to show/hide viewport navigation widgets
  • Toolbar
    • Display shortcut key when toolbar is expanded. rB06a786f12d5b56fc71f4996aff767dea3fedba6e
    • Make paint modes work with the toolbar (display shortcuts & make the active brush same as active tool)
    • Display ‘insta-tips’ while hovering over icon-only toolbar. Just shows the name of the tool.
    • Display proper tooltips that explains what each tool does, along with a keyboard shortcut to switch to that tool.
  • Implement Spin Widget
    • Make it use scene Orientation in top bar (T54661)
    • Implement drag-to-spin circular motion
    • Implement floating ‘redo’ panel to set the spin steps
  • Add Settings to Box Select, Circle Select & Lasso Select:
  • 3D Cursor tool
    • Make it use the scene Orientation tool setting (Changes how the 3D Cursor orients itself when clicking) rB3c8e4e4180b680c6eefff9b3cab7bd091b19074f
    • Option to ‘Ignore scene Orientation’: Does not copy orientation when placed.
    • Add Snapping setting, so that it can snap to verts, edges, faces etc.
    • The raycasting fails very often, and wrong orientation is often set. Glitchy behaviour.
  • Hair Particle Mode
    • Make hair mode use toolbar
    • Put tool settings in the tool settings
  • Add primitive tool: MOVED to T57210
  • Add Bend tool to toolbar
    • Uses orientation plane setting
    • Option to Clamp
    • Create a bend manipulator (See design task: T54661)
  • Add Extrude Along Normals tool to toolbar (It exists in 2.7) We should probably add this as an option to the Extrude Region tool
  • Add new Polygon Draw tool
    • Uses orientation plane setting
    • Option to fill
      • Clicking creates verts
      • Once you have 3, the last two are selected (last one active).
      • Clicking further, adds a vertex on the edge after the selected edge.
      • If the user doesn't have two adjacent verts selected...
        • If nothing is selected, create a new polygon.
        • If something is selected - add more points to the NGon - at the closest selected vertex to the cursor.

          This way, we can move the odd Poly Build nested behind this one.
  • Curved Extrude tool (bonus)
    • An example of the kinds of tools which is now possible in 2.8
    • It has two handles on each end of the extrusion, and a Move/Rotate manipulator for moving the extrusion. See: T54661
  • Vertex Paint mode (long term TODO, see T54902)
  • Unify the transform operator settings for compensating for custom data layers. This is sometimes called 'Correct UV's', 'Interpolate'. We will call it 'Slip Face Data' and enable it by default for all the tools
  • Always Expose both X, Y and Z rotation values, even if it is a view aligned rotation

    Note: this isn't just a UI change, the operator internals will have to be handled differently for this to work ~ @Campbell Barton (campbellbarton)
  • Status Bar (Refer to design task T54861)
    • Add Status Bar
    • Display a context sensitive active keymap for the active tool for the current editor.
    • Add mouse button glyphs and rounded corners around keyboard buttons (T54861) rBaed82dafff8f7f0f30a7b7c1c7180d13ec52b052
    • Includes the old stats
    • Improve stats by using icons for verts, faces, edges etc
    • Includes Jobs & Notifications
    • Add option in Window menu to disable Status Bar
  • Tool Settings Editor (long term todo)
    • Refer to design task: T55043
    • The same settings should always be accessible both in Top Bar and Tool Settings tab, in case users have top bar collapsed. This is often not the case currently.
    • Implemented as a tab in Properties,
    • We could also include a Tool Adjust panel here, which is basically just the Redo panel.

      Comment: Support for redoing in a different area was possible but error prone and doesn't work well so it has been removed, redo panel needs to be in the area the operator runs in. This is because the original area can be modified or joined after an operator executes ~ ideasman42


To Do

Related Objects

There are a very large number of changes, so older changes are hidden. Show Older Changes

Hello, maybe we can use the 3D cursor in sculpt mode, for example to control the center of the rotate brush, I think it can be pretty usefully. Also the pinch and magnify brush can use that feature.

Hi guys,

Have you ever considered using the active tools without pre-selected elements?
I believe it's tedious and reduntant to do every single item selection separately before using a tool. Especially since you want to make it work continuously.
(If I want to work on multiple elements at once I'd have to select them first for sure)
But many of the tools could simply work with Left Clicking on the elements themselves.
Extrude on polygons would be (/w drag) Click,click, click instead of select, click, select, click, select, click.

Or this wanders into the same shady street as pre-selection highlights?

David: Yes, we have thought of that. Loop Cut will work this way, somewhat like it did in 2.79 and earlier, with no selection needed, and using a kind of 'preview', which is essentially a kind of pre-selection highlighting.

We might expand this to other tools, or perhaps have a tool setting to use the active tool this way.

This setting would be so good...

Assuming that the movement will NOT be screen-space but will happen in the normal direction :)

@Campbell Barton (campbellbarton) @William Reynish (billreynish) Hi Guys, Amazing updates on the Tools Systems & Icons so far. Thanks for ALL the hard work. :) Really love the new Click > Drag > Release method for the Active Tools. Would be awesome if we could have the same functionality on the operations when invoked via Shortcut too. Because I noticed that the action hasn't changed for those. (Yet)

Since most of us work with shortcuts to invoke the same tools, would be amazing if we could have the same functionality for both. Active Tools from Toolbar & Shortcuts alike. :)

Might I suggest a setting in the User Prefs. to avoid any pitch-forks being raised as it does for any changes that are made these days. Lol

User Prefs. > Editing > Edit Mesh Tools, Mesh Tools -or- Tools (Semantics) > Release Confirms. Just like the setting for the Transform.

Using this new system with the active tools has been extremely fluid and natural. I really like how it eliminates the struggle when using a stylus as before this; Clicking to activate, hovering over the tablet to position -or- change values and clicking down to confirm has always been so inaccurate due to micro hand movements while hovering, then tapping down to confirm.

Now with the Click > Drag > Release. Much better control. But felt it was a bit of a bummer that it's limited to only active tools.

Also for the Loop-Cut+Slide Tool. Click to add a loop-cut in middle. Click, Drag 'n Release to slide and place is very well done. Would be nice if scroll up/down to change number of cuts would return during pre-highlighting though. If it's possible. Right now it just adjusts zoom. --- And maybe an in-editor/on-screen pop-up to change cuts for stylus users who don't have a scroll wheel. :)

Also noticed a few inconsistencies in how the Active Tools operate between having LMB Select Vs. RMB Select in User Prefs.

Shortcut Method

Actions seems to be consistent between LMB/RMB Select prefs. --- Shortcut (Invoke Operation) > LMB-Click to Confirm > RMB-Click to Cancel

Active Tool Method

LMB Select: RMB Activates Tool / LMB Confirms
RMB Select: LMB Activates Tool / RMB Cancels

LMB Select: RMB Click > Drag > Release method isn't available for some of the tools like Inset, Bevel, Etc. (Gotta LMB to Confirm)
RMB Select: LMB Click > Drag > Release to perform action works as intended.

LMB Select: (Loop-Cut & Slide Tool): Click > Drag > Release --- Click > Drag > LMB-Click, does the same thing. Not a bad thing, just felt a bit inconsistent compared to RMB Select action of the same tool.
RMB Select: (Loop-Cut & Slide Tool): LMB-Click > Drag > Rlease, works as intended. --- Click > Drag > RMB-Click, Cancels/Snaps Cut to Center.

TL;DR: Would love to see more consistency between how the Active Tools operate between LMB/RMB. Nothing major but would definitely make things more polished. I know we're getting there. :) And also to see the same QoL improvements made to Active Tools also make it into Shortcut Tools. At least an option in preferences to make them work similarly.

Thanks again for all the hard work guys. Hope this small critiques made sense. Cheers 'n have a great week. Code-On! \m/

Gibran: I can answer a few of your questions:

  • Scroll wheel to increase cuts for Loop Cut tool can't work, because it's already used for zoom. Since the active tools are persistent, we can't override basic keys.
  • The new tools currently don't work well with LMB-select, because if LMB is select, then that button can't also be used to manipulate the tools. Other apps mainy get around this by having a separate Select tool, or a way to 'drop' your tool, so you return to selection. I think we should solve this by making improvements to the Select Border tool, so it can act as a proper select tool, mainly for tablet users who don't have a comfortable way to use RMB.

@William Reynish (billreynish) Hi, Thanks William for the info. Appreciate it. :)

Hmmm. That's understandable about scroll wheel not being able to work with Loop-Cut Tool. It still works with the Ctrl+R shortcut and I guess when we have on-screen mini-panels to change # of cuts, etc. No loss there. :) Thanks for explaining this though, I'm sure many others will find the information useful. (Before pitch-forks. Lol)

Also about the LMB for Active Tools + Select. I'm totally fine with LMB being 'Select' and RMB being 'Tool'. This works as expected, so that's not really the inconsistency I was referencing. :)

When RMB is set as 'Select'. LMB Click > Drag > Release works as intended.

But when LMB is set as 'Select', RMB Click > Drag works. But if when you release RMB it Cancels and you need to LMB-Click to Confirm.

It's only in a couple of tools I regularly use that I noticed, (Inset, Bevel Tool, Etc.) Might be in more. But it basically boils down to RMB not working as a Click > Drag > Release method when in a LMB Select setup. Other than that, totally fine with LMB being 'Select' and RMB being 'Active Tool' when setup as such in Prefs. I'm sorry if there was any confusion in the way I worded my post regarding this difference. :)

Agreed on the Select Border Tool though. Lotta artists use tablets now more for health purposes than just artistic needs. So having comfortable hotkey & tool setups with on-screen edit-panels (sliders/values) that pop-up under or close to mouse pointer are definitely the way to go.

Ok, that could be a bug/mistake. This kind of thing can happen if we mix 'action mouse' and 'left mouse'. When the user then switches to LMB select, only the action mouse events are flipped, which can cause conflicts.

Ok, that could be a bug/mistake. This kind of thing can happen if we mix 'action mouse' and 'left mouse'. When the user then switches to LMB select, only the action mouse events are flipped, which can cause conflicts.

Yeah. Exactly what I was thinking too. Other than that slight inconsistency between how the Click > Drag > Release Mouse works in LMB Vs. RMB Select. No other issues with how selection and active tool is mapped to both clicks. :) I only noticed it in Bevel and Inset tools. But it might be in other tools also. Will definitely test and let you guys know if I find any.

Also, would love to have the same functionality of Click > Drag > Release to Confirm for these same tools in their shortcut form. SO convenient as a Mouse/Tablet user. At least a setting in User Prefs. as to not take away current functionality from users who are used to Click > Confirm. :)

PS: Also noticed C key for (C)lamp function doesn't work when using Loop-Cut+Slide in Shortcut or Tool. Alt works as a Hold Toggle. But C key doesn't Toggle the Clamp On/Off.

xrg (xrg) added a subscriber: xrg (xrg).EditedAug 23 2018, 12:15 PM

The new tools currently don't work well with LMB-select, because if LMB is select, then that button can't also be used to manipulate the tools.

I thought the whole purpose of the widgets was to perform the action?

LMB = Select on any tools that require a selection to work. Brushes and certain tools like Knife would be exceptions.
LMB-Drag = Border Select (or whatever selection tool is selected). Border select is how those of us that already use LMB select can select "through" manipulators.
Active tool widget = Perform the action

I guess maybe I don't understand the purpose of the widgets. If we have something selected we can click anywhere to perform the action without the widget. If we have nothing selected, most of the tools appear to be broken since clicking LMB will just fail silently.

It seems like an odd implementation to add widgets and then not really use them.

xrg: I'm confused by your question.

The purpose of the widgets is to manipulate your scene in a visual way. By default, tools are used with LMB, so you drag in the viewport to use whatever tool is active.

You can't do two things at the same time with the same key. If LMB is using the tool, it can't be select at the same time.

It seems as if you are suggesting that tools should go into a select mode if nothing is selected?

BTW, modo works that way. When you are done interacting with a tool, you have to 'drop' that tool to return to selection. Blender currently doesn't work like that.

For LMB-select users, we really need to make bigger changes to the keymap to support it in a good way, to avoid the conflict of using tool vs selecting. Many apps solve this by simply having a super easy way to switch to the select tool, which is often the Q key, next to WER for Move, Rotate, Scale. By default, the Select Border tool doesn't have a shortcut assigned in Blender, so it's currently a hassle to switch to it.

This thing shows you that the LMB-Select option that simply flips things around just isn't a very good option. We can and should support devices, such as tablets, where RMB is not available or uncomfortable to use, but it requires deeper changes than just flipping LMB and RMB.

I guess right now the simple way to have the best of both worlds in Blender (which is the current setup anyway) is to have Select = LMB and Active-Tool = RMB. And vice versa if you use RMB to Select.

I totally get what William is referring to as having a different tool for Selection, so then when you drop that tool and pick up another tool. LMB is free to use for that specific tool. And RMB can act as a context sensitive options menu for that specific tool or specific editor window.

But in Blender we don't really have RMB menus used much in the 3D View yeah? So instead we have Selection which works on LMB -or- RMB depending on User Prefs. and the Alternating MB always works as a Active Tool. It's sure different but it works so. And practically speaking, I'd find it cumbersome to have to always switch to a dedicated 'Select' tool, while using another tool whenever I have to select something.

Eg:- Right now, if I wanna Bevel an edge, I can LMB-Click to select it and RMB-Click > Drag > Release to Bevel it with the Bevel Tool active. Select another edge to Bevel? Left-Click and RMB > Drag. It works right? :)

@xrg (xrg) In a perfect world. It would be amazing to have the Selection + Tool Operation both in the same Mouse Button. LMB -or- RMB. At least what we have atm isn't overly confusing or annoying to use. And with the new Click > Drag >Release method makes it even more fluid to use rather than when you use a tool and forget to Click > Confirm. :)

PS: Thanks for sharing all the Important Dev updates on BA Forum. Follow your threads daily. Good Work mate. :)

Well, as far as I see it, there isn't much point in having LMB select if it means that tools are used with RMB. The entire reason why most people use LMB select is if they use a device where RMB is not easily accessible, and so RMB for tools is equally as bad, just in a different way.

Yes, you can flip it and it does work, but using tools with RMB is even more non-standard and weird than RMB-Select, so I almost don't see the point.

To make LMB-select work well, the whole setup needs bigger underlying changes, so that it's easy to switch between selection and other tools. This is part of the reason I think the Industry Standard keymap could be interesting for people, because it is designed with LMB-select and LMB tools from the start, without conflicting. It then uses RMB for right click context sensitive menus.

@William Reynish (billreynish) Agreed on all points. And I think that's the same as what @xrg (xrg) was trying to convey too. Point of Active-Tools/Widgets should be to use LMB-Click to Select (for tools that need selection first, like bevel, extrude, inset, etc.) and then Click > Drag > Release to Manipulate that selection via the selected tool or an on-screen manipulator and compliment that with pop-ups/widget panels (Options/Values/Sliders) that appear under or close to manipulator or mouse pointer. (I know you guys are working on manipulators & widget panels for the tools so super excited for when those get committed.)

Kinda like what add-ons such Hard-Ops, Box-Cutter, Speedflow, Etc. do by giving visual feedback on-screen while manipulating the selection with Click-Drag Events. --- But still having actual widgets and manipulators with control points/planes, manipulators, pop-ups with option boxes, slider, values would be Next Level for Blender. It'll be a dream, working in full-screen with just shortcuts or a single toolbar in the left corner and everything done with LMB-Click/Drags and RMB for Extra Options. :)

To make LMB-select work well, the whole setup needs bigger underlying changes, so that it's easy to switch between selection and other tools.

And therein lies the issue, It'll definitely be a lotta work. Re-doing an entire system, not to mention so many Blender Vets who would be ready with the torches to rally against the changes. Lol I for one would love if we could experiment and create such a build. But I'm no coder and the current hotkey editor breaks something somewhere deeper more than I can make changes to get it working properly. :( --- In a perfect world, but for now. at least the setup we have isn't too annoying to use. Sucks a lot for tablet users for sure when using LMB-Select. And RMB-Drag-Release for Tools. But it's a compromise for the time being.

Hope the Community + Devs can get together and come up with a setup where everything works so Fluently and Naturally from Mouse-Clicks-Drags to Shortcuts that nobody will find it a chore to get started in Blender.

This is part of the reason I think the Industry Standard keymap could be interesting for people, because it is designed with LMB-select and LMB tools from the start, without conflicting. It then uses RMB for right click context sensitive menus.

Would definitely be worth the try. I'm totally open to changes and adapting to them if it makes sense, isn't un-necessarily clunky/complicated and doesn't slow me down as an end-user. Looking forward to it. Thanks for all the effort you guys have been putting into it. :)

Any plans on making the "Rip Vertices and Fill (Alt + V)" tool as an active tool available in the toolbar?
This is a really powerful modeling tool, it would great to have it available there.

Thx. 👍

Hi @Campbell Barton (campbellbarton) thanks for the tip, I totally missed that option.
Another thing, the true power of the Fill option is when you press "G" after you started using the tool, as it allows you to slide the edges. So if there was an option to initiate this tool in this mode already (without the need to press G) it would help a lot. Also an option to generate N-gons when sliding the edges would make this tool even more powerful.