Nice! Ended up rolling my own UI for the time being. I checked out YUI, but found it was too heavy. And the new Gamemaker UI layers are just too hard to work with.
Gonna give it another shot in the future!
A little unsure if I'm misunderstanding how EmuList.Deselect works. But isn't it supposed to pass the list index here?

Even so, having changed Deselct to pass list_index to DeselectNoCallback in my own project, GetSelection keeps returning the wrong selection since list.selected_entries[?"first"] doesn't get updated in subsequent calls to list.Select.
Again, maybe I'm just not understanding how to use this.