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