Page MenuHome

Navigation Widget for node graphs.
Needs RevisionPublic

Authored by Lukas Toenne (lukastoenne) on Aug 19 2015, 10:23 AM.



This implements a simplified birds-eye view in the node editor sidebar,
which can be used as an overview of the whole node tree and for
jumping to a location quickly without scrolling/panning.

Alternatively the navigation could also happen as a
temporary operator, bringing up the navigation view with a button
and only as long as its needed.

Diff Detail

rB Blender

Event Timeline

Lukas Toenne (lukastoenne) retitled this revision from to Navigation Widget for node graphs..Aug 19 2015, 10:23 AM
Lukas Toenne (lukastoenne) updated this object.
Lukas Toenne (lukastoenne) updated this revision to Diff 4884.

Redesign of the navigation widget to show it as a template in the sidebar.

@Julian Eisel (Severin) I'm adding you as a reviewer, since you've been working on node features recently.

Julian Eisel (Severin) requested changes to this revision.

In general big +1 for this. I'm not a big fan of putting this into the properties region though, but guess opinions differ here.

Nothing serious found so far, just left some minor comments.


I personally like to set const whenever possible/appropriate (in some cases it really helps communicating what the function etc. does). Of course, this is nit-picking, just thinking it would be better if we keep such things consistent.


I've recently learnt from psy-fi that immediate mode drawing is much slower than array drawing and that it will become deprecated soon, see rB687410a01d9d32f. So maybe better draw using arrays of even a vertex buffer. (I'm slowly getting concerned about Node Editor drawing speed :S)
A BLI_rctx_to_coordvec(const rctx *rect, float/int r_vec[4][2]) or similar could be useful for stuff like this.


Bracket should be in new line *evil-found-a-code-style-issue-laughter*

239 ↗(On Diff #4887)

Using ACTIONMOUSE here would mean it becomes RMB for left-click select configuration. Think it's better to just use LMB here.


Could use bytes from pad3

This revision now requires changes to proceed.Aug 19 2015, 3:17 PM
239 ↗(On Diff #4887)

Actually seems like this isn't needed anymore at all.

Lukas Toenne (lukastoenne) updated this revision to Diff 4889.

Better use of the available drawing area by using either full width or height.

Lukas Toenne (lukastoenne) updated this revision to Diff 4891.

Fixed a few small issues found by Severin.


Well, i can see why using const for local variables can be helpful, but for function arguments it becomes too verbose IMO. Function arguments are passed by value, so it's clear that calling this function will not modify external values.

And as for consistency: the vast majority of the code base does not have this, so that argument would lead to the opposite conclusion ;)


Yes, i'm not sure how all the ui button drawing and such would work without immediate mode. If we want to replace all these calls in widget and node drawing, the few calls for this button would be the simplest i suppose, so i'm not concerned much about it.

Node editor drawing speed has not been an issue so far. Sometimes people complain about "slow nodes" but that's usually because they have a 3D view next to it which blocks UI drawing as a whole ...


fine, fine ... *grumbles*

239 ↗(On Diff #4889)

Oops yes, operator was removed and forgot the keymap entry, fixed.


right, thanks

Why is the thing a square? There is space available left/right of it inside the Properties Region, I would use that too. :)

@Thomas Dinges (dingto): The screenshot is outdated, it now uses the maximum available area (depending on spacing of nodes).

Seems the code is missing do_versions to set navigation size for old files. Also updates are missing when panning in the nodes.

Some quick feedback, don't really want to make decisions in the UI area..



Nice feature :)

Not essential, but would be interesting to get this working for the sequencer, then share some of the logic - its basically the same thing, just looping over different rectangles.


can use glColor3ubv here.


can use rgb_float_to_uchar here.

Just found this patch pretty much by accident - it would be fantastic to have it sometime in the future, now that the manipulators are on the way.

This revision now requires changes to proceed.Dec 16 2017, 5:22 PM

Any updates on this? Love the idea! I'd go even further and if performance is not an issue then not have it in the N panel, but on the bottom right corner of the editor itself, slightly faded so it's not in your face but still readable.