-
Notifications
You must be signed in to change notification settings - Fork 255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve multi-selection for touch UI by adding option that synchonizes selection and check-state #708
Comments
I did a test implementation on basic high level paths and the basic select and multi-select is now working which is exactly similar to Explorer check boxes. But I found numerous cases on inspection of the code where this should work, for example, draw selection, reselection or selection when inserting nodes by stream (copy, paste), etc. This is more work, and I have marked all such paths and then am going to make the new feature work for all of the paths by a different low level code. Some paths will need a modification of the demo for testing and verification. |
In case the necessary refactorings are large, we should consider postponing this issue for V7.0. I would like to have the last V6 release to be stable. A new major version is a good point to do in-depth refactorings. |
I have now implemented this in my local copy and tested all the paths. It works. Besides, this code is used only when the new Selection option will be turned ON which is OFF by default so existing applications not using this option are not going to be affected. Do you still think that I should postpone it? BTW, this option is not specific to touch. When it is ON and check boxes are shown, this works exactly like Windows Explorer's Show Checkboxes feature. So it works even with the mouse, including the multi-selection/draw-selection behavior from Explorer where when you change selection, check boxes follow the selection and when you click on check boxes, the selection follows the check boxes. In that sense, it's useful even without Touch if the application wants this kind of feature. FEEDBACK REQUESTED: The option name I thought of is toSyncCheckboxesWithSelections (please suggest a shorter name that conveys the meaning) It's a TVTSelectionOption and requires 2 other conditions to be effective:
But the above conditions can only be mentioned in the comments as per the standard in VirtualTreeView code where many options depend on other options. The conditions will be evaluated via a function at run time because the checktype is in the node. |
This is entirely up to you. It was just meant as a kind of offer to postpone the bug in case the chnages are very extensive.
Yes, this was the intention.
I vote for |
Additionally you can set the depending properties / flags in case the |
Yes, that makes sense. Thanks. |
I would have liked to switch on something in Design to instantly get the CheckBox support of many kinds, simple checkboxes that are streamed, above sync checkboxes, with selection, and more. But VTV also requires that each node then should switch on its CheckType in its initialization event. That will need special flags and the associated logic for pre-initialization of the node. May be, in version 7 we should look at giving more such features that do not require writing code. Have there been any requests for such design-time features? |
You are right. But maybe it would be a good idea to initialize the fields |
I don't think so. But all open feature request can be found in the issue tracker flagged as "Enhancement". |
This will be nice. I will inspect and see if I can find clues on why it was left uninitialized. If we can initialize them then switching on the CheckBoxes would be easier by the option. |
I cannot imagine any except performance. But the difference will be absolutely negligible. We should however open a separate issue for this change. |
…on that synchonizes selection and check-state
The desired behavior should be similar to Windows 10 Explorer with checkboxes activated on the right pane.
The text was updated successfully, but these errors were encountered: