TreeView Widget Drag and Drop Support

HENRY LOWE hlowe at
Tue Mar 30 19:26:37 EDT 2021

I am using the LC TreeView widget to implement a sidebar containing a hierarchical menu in a MacOS app. The widget seems well suited for this purpose and I have successfully created a facsimile of the standard sidebar that is used increasingly in both MacOS and iPadOS apps. However, I need to drag rows from a data grid table to a TreeView widget row in the sidebar but the current implementation of the TreeView widget does not report the TreeView widget row (element) where the drop occurred. A TreeView widget message, such as 'ActionDragDrop pPath’ where pPath is the path to the element that was ‘dropped on’ would be incredibly helpful. I have implemented a workaround method off drag and drop to the widget but it occasionally breaks.

Looking at the LiveCode Builder documentation, widgets can support the following messages related to drag and drop functionality:

OnDragDrop, On DragEnter, OnDragFinish, OnDragLeave, On DragMove, On DragStart.

These messages are not currently supported in the TreeView widget LCB source. Adding them would make this incredibly useful widget even more powerful.

Another issue that I encountered when using the TreeView widget to implement a sidebar hierarchical menu was that clicking on a row in the TreeView widget toggles the row’s hilite state  - click on an item and it hilites, click on it again and it unhilites. While this may be standard behavior for a list, in a menu clicking on a hilited row should not change the row’s hilite state. It should remain hilited. Only clicking on another row (menu item) should unhilite a row and then hilite the selected row. It would be great to have a ’togglehilite’ TreeView property. If true the TreeView would toggle a row’s hilite state as it does now, while if false it would not.

Any thoughts?



More information about the use-livecode mailing list