Many thanks Brian. As you suggested, I have created an enhancement request.

https://quality.livecode.com/show_bug.cgi?id=23147 
<https://quality.livecode.com/show_bug.cgi?id=23147>

Henry

> On Mar 31, 2021, at 3:32 PM, HENRY LOWE via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Thanks Brian. I am handling the ‘on DragDrop’ message in the widget’s script 
> but on completing the drop there is no way to determine which row in the 
> TreeView widget the data was dropped into. Ideally when in DragDrop mode the 
> widget would automatically hilite the row that the mouse is currently over 
> (standard drag and drop behavior) so that when the user finally releases the 
> mouse button the row that was the drop target would be available in 'the 
> hilitedElement’ property of the widget. Currently I am having to try to 
> determine which row was dropped on using the mouseLoc to calculate which row 
> I am in.
> 
> On the second issue, I tried using hiliteChanged message but could not get it 
> to work. Do you have an example script to do this?
> 
> Henry
> 
>> On Mar 30, 2021, at 5:06 PM, Sean Cole (Pi) via use-livecode 
>> <use-livecode@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@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@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@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@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@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to