Project

General

Profile

Feature #5151

Add complete support for tree-list OCX triggers

Added by Adrian Lungu about 3 years ago. Updated over 2 years ago.

Status:
WIP
Priority:
Normal
Assignee:
Target version:
-
Start date:
Due date:
% Done:

70%

billable:
No
vendor_id:
GCD

Related issues

Related to User Interface - Bug #5118: TREELIST widget issues WIP
Related to User Interface - Bug #5622: TREEVIEW widget issues WIP

History

#1 Updated by Adrian Lungu about 3 years ago

  • Related to Bug #5118: TREELIST widget issues added

#3 Updated by Adrian Lungu about 3 years ago

  • Assignee set to Adrian Lungu
  • Status changed from New to WIP

Some of the tree based widgets don't have conversion support for some ocx-triggers:

  • OnChangeNode (supported)
  • OnChangeNodeDirect (added in 3821c/rev. 12049)
  • OnChangeTopVisibleNode (added in 3821c/rev. 12049)
  • OnClick (reworked in 3821c/rev.11995)
  • OnCollapsed (supported)
  • OnColumnSorting (added in 3821c/rev. 12017)
  • OnDblClick (reworked in 3821c/rev.11997)
  • OnExpanded (supported)
  • OnExpanding (supported)
  • OnKeyDown (supported)
  • OnMouseLeftDown (added in 3821c/rev.11995)
  • OnMouseLeftUp (added in 3821c/rev.11995)
  • OnMouseRightDown (added in 3821c/rev. 12017)
  • OnMouseRightUp (added in 3821c/rev.11995)
  • OnTreeDragDrop (added in 3821c/rev.12038)
  • OnTreeDragOver (added in 3821c/rev.12038)
  • OnTreeDragStart (added in 3821c/rev.12038)

#4 Updated by Greg Shah about 3 years ago

  • Project changed from FWD to User Interface

#5 Updated by Greg Shah about 3 years ago

Please summarize the steps for adding the needed support.

#6 Updated by Adrian Lungu about 3 years ago

I investigated the OnTreeDrag* triggers and they seem to be compatible with our current effort with OLEDRAGDROP, OLEDRAOVER and OLEDRAGSTART events. I am currently working on adding support to those by:
  • add conversion support with proper trigger call and parameters: p-DraggedNodeId, p-NodeIdAtMousePos and p-Accept.
  • add tree-list properties matching p-DraggedNodeId, p-NodeIdAtMousePos: DRAGGED-NODE and DRAGGER-OVER-NODE as they are not part of the standard OLE* events.
  • add runtime support such that the properties are set at client-side before firing the trigger.

I haven't tested yet the OnChangeNodeDirect and OnChangeTopVisibleNode and I can't say yet when they are fired.

#7 Updated by Adrian Lungu about 3 years ago

Committed 3821c/rev. 12038 regarding OnTreeDrag* OCX event triggers. The tests are mostly accurate; however, the implemented OLE drag mechanism for tree-list has some issues regarding OLEDRAGOVER. The trigger should be fired only once per hovered node. In FWD, the trigger is fired multiple times (a lot) as long as the dragging hovers a node.

Starting to investigate OnChangeNodeDirect, OnChangeTopVisibleNode and find a fix for the OLEDRAGOVER.

#8 Updated by Adrian Lungu about 3 years ago

  • % Done changed from 0 to 70
After some investigation, the following behavior is expected:
  • OnChangeNodeDirect is fired when the selected node is changed due to user node selection. In contrast to OnChangeNode, OnChangeNodeDirect does not fire when the selection is implicitlly changed (due to a collapse or node remove for example).
  • OnChangeTopVisibleNode is fired when the top visible node (the one which is the first in the viewport) is changed. This can happen when the tree-list is scrolled or the first node is removed.

#9 Updated by Adrian Lungu about 3 years ago

Committed 3821c/rev. 12049 adding support for OnChangeNodeDirect and OnChangeTopVisibleNode. In this process, I reworked the topNode property of tree widgets such that it stores a node id (not a node index). Going to fix remaining side-issues: #5151-8 OLEDRAGOVER multiple calls, performance issue on tree-list scroll and properly set SCROLL-NODE-COUNT value.

#10 Updated by Eugenie Lyzenko about 3 years ago

Adrian,

I need to change customer specific code that uses modified TreeGuiImp.setCurrentNode(TreeNode<N> node, boolean trigger, boolean direct). Previously we used 2 parametrs call TreeGuiImp.setCurrentNode(TreeNode<N> node, boolean trigger). What the 3-rd option default value is better, true or false?

#11 Updated by Adrian Lungu about 3 years ago

The direct flag is set on true when setCurrentNode is fired due to a user specific action (usually a mouse press on another node). Otherwise, it should be set on false meaning that the setCurrentNode is fired due to a implicit action (node collapse, node remove, node add etc.).

#12 Updated by Adrian Lungu about 3 years ago

I can't tell if is is safe to presume a default value for direct - maybe the majority of node changes are due to implicit actions, so false may be more often encountered.

#14 Updated by Vladimir Tsichevski over 2 years ago

  • Related to Bug #5622: TREEVIEW widget issues added

#15 Updated by Vladimir Tsichevski over 2 years ago

The second argument for the OnKeyDown event is integer key modifiers mask. It is currently converted as new logical(false).

Note also, that the TREEVIEW KeyDown and the TREELIST OnKeyDown events differ: the former has its first keyCode argument of INPUT-OUTPUT type. Currently both events are treated with the same code in ocx_conversion_rules, so the first argument is INPUT for TREEVIEW also, which is not correct.

Also available in: Atom PDF