boolRequestSelectAll;// ms:w, app:r / / ms:w, app:r // 2. Request app/user to select all.
boolRequestSetRange;// / / ms:w, app:r // 3. Request app/user to select/unselect [RangeFirstItem..RangeLastItem] items, based on RangeSelected. Only EndMultiSelect() request this, app code can read after BeginMultiSelect() and it will always be false.
ImGuiSelectionUserDataRequestFocusItem;// app:w / app:r / app:r // (If using deletion) 4. Request user to focus item. This is actually only manipulated in user-space, but we provide storage to facilitate implementing a deletion idiom (see demo).
// STATE/ARGUMENTS -------------------------// BEGIN / LOOP / END
ImGuiSelectionUserDataRangeSrcItem;// ms:w app:r / / // (If using clipper) Begin: Source item (generally the first selected item when multi-selecting, which is used as a reference point) must never be cliped!
ImGuiSelectionUserDataRangeFirstItem;// / / ms:w, app:r // End: parameter for RequestSetRange request (this is generally == RangeSrcItem when shift selecting from top to bottom)
@ -2740,7 +2739,7 @@ struct ImGuiMultiSelectIO
ImGuiSelectionUserDataNavIdItem;// ms:w, app:r / / // (If using deletion) Last known SetNextItemSelectionUserData() value for NavId (if part of submitted items).
if(ms_io->NavIdSelected==false)// Here 'NavIdSelected' should be == to 'GetSelected(ms_io->NavIdData)'
// If current item is not selected: land on same item.
if(ms_io->NavIdSelected==false)// At this point 'ms_io->NavIdSelected == Contains(ms_io->NavIdItem)' should be true.
{
ms_io->RangeSrcReset=true;// Request to recover RangeSrc from NavId next frame. Would be ok to reset even without the !NavIdSelected test but it would take an extra frame to recover RangeSrc when deleting a selected item.
return(int)ms_io->NavIdItem;// Request to land on same item after deletion.
ms_io->RangeSrcReset=true;// Request to recover RangeSrc from NavId next frame. Would be ok to reset even without the NavIdSelected==false test but it would take an extra frame to recover RangeSrc when deleting a selected item.
returnidx;// Request to land on same item after deletion.
}
// If current item is selected: land on first unselected item after RangeSrc.