(1) Is this the way to go?
Yes.
(2) Please explain the following output: why so many events and what is the general meaning of their issue and ordering?
THE NODE CHANGE IS ALLOWED:
(NodeFocusChanging (name DestinationNode) (focused False))
(NodeFocusChanging (name SourceNode) (focused True))
(NodeFocusChanging (name DestinationNode) (focused True))
(NodeFocusChanging (name DestinationNode) (focused False))
This notification is send when node become to change it's focus,
when node is focused and node is unfocused.
If you need to control changes from unfocused to focused state (node become to focused), please filter this notification, as following:
[c#]
if (!node.Focused)
{
//your code to allow or disallow focus changing
}
THE NODE CHANGE IS CANCELLED (by returning false from handler):
(NodeFocusChanging (name DestinationNode) (focused False))
(NodeFocusChanging (name DestinationNode) (focused False))
This log reflect situation when FlyGrid.Net tries to focus node when receives focus.