Quick Drop Enthusiasts

Showing results for 
Search instead for 
Did you mean: 

Proposed Quick Drop Behavior Changes in LabVIEW 2013 (prototype included)

Based on user feedback, I am proposing the following behavior changes for the Quick Drop window in LabVIEW 2013:

  • The combo box no longer auto completes text.  The text you type now acts as a filter for the content in the results list. The first item in the list is always selected, and the text you type is never changed in any way by the Quick Drop window.
  • If the item name you type has no matches, the last match that was made will be used for the object to drop. This means that the "invalid object name" dialog will never appear...you'll always drop *something*. This change in behavior is to help with situations where you mis-type the name of the item you want, but after the point that the list was filtered correctly to display that item.

Please try the attached prototype, which includes these changes, and let me know what you think of them.  To try the prototype, back up your copy of [LabVIEW 2012]\resource\dialog\QuickDrop\QuickDrop Launch Window.vi, and copy the VIs attached below to the same folder. The prototype is currently only available for LabVIEW 2012. To "uninstall" the prototype, remove these VIs, then replace the main VI with your backed up copy.

Unless I'm missing something, these changes should not have any adverse effects on the workflow of current Quick Drop users (*please* let me know if there's something I'm not thinking of). I will be using the prototype extensively over the next few weeks to see how I like it. If you are interested in seeing these changes get into LabVIEW 2013, I ask that you do all your LabVIEW 2012 development with the prototype as well, and let me know if you encounter any problems.

Message 1 of 19

First thoughts:

  • The one issue I encountered the most with the existing behaviour, although fairly infrequently in all fairness, was problems with the auto-complete preventing me from quickly correcting my typos. For example, if I typed "dds" for Diagram Disable Structure, but accidentally put another character on the end, say another "s" and end up with "ddss" I get no results. As quickly as you recognise the incorrect fourth character you've pressed backspace to remove it, but frustratingly that no longer associated as a shortcut with Diagram Disable Structure!? Pressing enter resulted in the "dds is not a valid object" - BUT NO MORE! This first change is perfect, it means I will still get my Diagram Disable Structure! Hurray!
  • I like that you still get 'something' if you mistype and don't correct it too, but the filter list empties after the first character to cause no more valid results, so when you press return you can't be sure what you're gonna get. There's always a chance that you're about to get a big nasty Wizard VI that insists on immediate configuration and takes an age to launch it's panel. So, could you somehow get the filter list to show the last valid selection in this scenario? Perhaps identifying that it's a system assumption based on the last valid search with a different colour, use italics maybe?

I wholeheartedly support these changes, thank you for your efforts Darren!

Thoric (CLA, CLED, CTD and LabVIEW Champion)

Message 2 of 19

Thanks for the quick reply, Thoric.  I agree that it was a little awkward to have nothing showing in the list, but still get a valid drop object. So I updated the prototype so that, if the filter text doesn't yield any valid results, then the last valid selected item will be shown in the list, but in gray text. I hesitate to use italics because of issues I've had with italics on non-English LabVIEWs.  Let me know what you think of the latest version.

0 Kudos
Message 3 of 19

Darren wrote:

...the last valid selected item will be shown in the list, but in gray text.

Ah, that's much better. I love it ! Great work

Thoric (CLA, CLED, CTD and LabVIEW Champion)

0 Kudos
Message 4 of 19

I'm sure I don't have to repeat how I think that this behavior is much better.

One thing I don't like about this prototype is the sorting of the results. It seems that the logic is to place items with shortcuts at the top of the list and then there's a secondary sort which is sort-of alphabetical but not quite. In my experience, a much more natural sort is to give a lot of weight to a match found in the beginning of a word, particularly if the match is at the beginning of the string (e.g. if I type "ind" then "Index Array" should be the first result, not "Quotient & Remainder", which happens to have a shortcut that's earlier in the alphabet. The same applies to "nd", which gives me "bbn (Bundle By Name)" as the first result, when the first result should be "ndx").

I also use the frequency-of-use data as a factor in the sorting, but I think that the previous mechanism is responsible for most of the natual feel of the sort order.

Try to take over the world!
Message 5 of 19

If the ordering can be tweaked, then I'd also like to the see results that come from my Project tree at the top - especially if frequently used. I often drop type-def constants or subVIs from my Project onto my block diagrams with QD, but unless I type a lot of the filename to shorten the results list the items are always off the bottom of the visible window. For example, "check_digital_input_channel.vi" might be best found by typing the initial characters of each word, such "ch dig in", but there are 15 results including some very obscure ones such as "IviDigitizer Fetch Multi Record Waveform Int8 [MRA].vi". It would be great if my stuff was shown before the poorer matching stuff.

Thoric (CLA, CLED, CTD and LabVIEW Champion)

Message 6 of 19

tst and Thoric,

Unfortunately, messing with the list sort order isn't quite the low-hanging fruit that the other stuff was.   Here's how the list is currently sorted:

  • Shortcuts on top
  • Palette objects in the middle
  • Project items at the end

For the palette objects, they are currently sorted (by default) with the NI-SEARCH algorithm, which is relevancy based, and isn't necessarily alphabetical. In case you didn't know, there's an INI token you can use (QuickDropFastSearch=True) that turns off the NI-SEARCH functionality, and replaces it with a simple string search algorithm. I added this INI token because I didn't like the slight delay that occurs when performing the NI-SEARCH query, which is out of my hands. A simple string search provides results much faster (resulting in much better responsiveness in the UI), so I use QuickDropFastSearch, but I doubt many other people do.

With QuickDropFastSearch, I could potentially mess with the order of the 3 categories with minimal effort. But the default setting (which I imagine 99.9% of Quick Drop users have) is to use NI-SEARCH, which magically returns search results to me from the NI-SEARCH DLL...it would be considerably more work (and would take up precious milliseconds) to try to mess with the order once I've gotten the NI-SEARCH results back.

As it stands, I've got code in the prototype that will highlight a non-zero item in the results list if the text that is typed is an *exact* match for something in the list.  For example, if you type 'add', and you have a shortcut for "Add Array Elements", then the "Add" palette entry will be selected in the list, even though there's a shortcut above it.  I'm about to upload an update to the prototype that actually scrolls the list so that, in this situation, the selected item is at the top of the list in terms of what you first see.

All this to say, I don't actually have time budgeted to work on any of this.   Is the prototype in its current state a good enough improvement that y'all still want to see it in 2013, or is it not worth the change in behavior if I leave the sorting mechanism unchanged?

0 Kudos
Message 7 of 19

Darren wrote:

I'm about to upload an update to the prototype that actually scrolls the list so that, in this situation, the selected item is at the top of the list in terms of what you first see.


You're going to "scroll" the items that would be above "Add" in your example to the bottom of the list (instead of hiding them), correct?

Certified LabVIEW Architect
TestScript: Free Python/LabVIEW Connector

One global to rule them all,
One double-click to find them,
One interface to bring them all
and in the panel bind them.
0 Kudos
Message 8 of 19

LabBEAN wrote:

You're going to "scroll" the items that would be above "Add" in your example to the bottom of the list (instead of hiding them), correct?

No, I'm leaving the list order unchanged, I'm just moving the scrollbar so the selected item is at the top...if you up-arrow (or shift-tab) from here, you'll still get to the (actual) top of the list that has the shortcut:


0 Kudos
Message 9 of 19

The current prototype is still worth including, it's already much better (for me anyway).

Thoric (CLA, CLED, CTD and LabVIEW Champion)

0 Kudos
Message 10 of 19