TreeView Widget Drag and Drop Support

HENRY LOWE hlowe at me.com
Wed Mar 31 18:32:25 EDT 2021


Thank you Sean for the detailed recipe.

Henry

> On Mar 30, 2021, at 5:06 PM, Sean Cole (Pi) via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> Hi Henry,
> 
> I often take the widgets, like TreeView, and add in other message
> responders like this. It's real easy to do?
> 
> Just make a copy of the widget folder from the LC Tools Folder
> (Livecode.app/Contents/Tools/Extensions/com.livecode.widget.treeview) and
> into your own Livecode extensions folder (mine is in ~/Documents/My
> LiveCode/Extensions/ or my dropbox folder somewhere). Rename the folder
> from com.livecode. to com.mine. or something. Then open treeview.lcb in
> BBEdit or TextEdit, etc, from the copy folder. Line 88, change widget
> com.livecode.widget.treeview to use the new folder name you gave.
> 
> Next, search for 'onMouseUp'. you should find:
> 
> public handler onMouseLeave() returns nothing
> put 0 into mHoverRow
> redraw all
> end handler
> 
> Before that in the code, add in your other handlers (OnDragDrop, etc) using
> the same syntax. No need to use the put or redraw messages of course. Look
> in the dictionary, lcb section, to check the handler names to use.
> 
> Then, open the manifest.xml from the same folder. Line 2, again
> change <name>com.livecode.widget.treeview</name> to use the new folder name
> and Line 3 to something a little more unique. Then again search for
> onmouseup. You will see:
> 
> <handler name="OnMouseUp" parameters="" return="nothing"/>
> 
> Again, follow the syntax adding in the lines for the handler.
> 
> Look through the other files in the folder and change if you wish but it is
> not essential.
> 
> Now in LC, open the extension builder and use the 'open existing..' button
> to navigate to the folder you created. Then, from the bottom, the install
> button will build it into the toolbar.
> 
> Now you have a customised version. Make sure you add your replacement
> widget in the standaloneSettings>Inclusions before building your
> standalones.
> 
> All the best
> 
> Sean
> 
> On Wed, 31 Mar 2021 at 00:26, HENRY LOWE via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> 
>> 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?
>> 
>> Henry
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list