Selection
rs-grid utilise un modele de selection ancre/focus. L'ancre est le point de depart de la selection ; le focus est le point ou elle se termine actuellement. Le shift-clic etend la selection de l'ancre vers un nouveau focus.
SelectionState
SelectionState suit deux positions :
Chaque position peut faire reference a une cellule, une ligne ou une colonne. La granularite mixte (ancre sur une cellule, focus sur une ligne) n'est pas supportee.
Commandes
Hit-testing
Etant donne une coordonnee pixel (x, y) relative au canvas, le
hit-testing retourne la cellule sous le curseur :
Le hit-testing utilise le meme tableau precalcule de decalages de colonnes que le viewport, offrant une performance O(log n). Le hit-testing des lignes est O(1) avec une hauteur de ligne uniforme.
N'introduisez jamais un parcours O(n) dans le chemin du hit-testing. La garantie O(log n) est un invariant fondamental.
Rendu de la selection
SceneBuilder lit SelectionState et emet des entrees
ScenePrimitive::Rect avec la couleur de surbrillance de selection pour
chaque cellule selectionnee dans le viewport.
Meme avec une selection de toute la grille (toutes les lignes x toutes les colonnes), seules les primitives des cellules visibles sont construites. La taille de la scene est limitee par le viewport, pas par la taille de la selection.