float mouseReleaseListBox(entity me, vector pos) { vector absSize; if(me.pressed == 1) { // slider dragging mode // in that case, nothing happens on releasing } else if(me.pressed == 2) { me.pressed = 3; // do that here, so setSelected can know the mouse has been released // item dragging mode // select current one one last time... me.setSelected(me, floor((me.scrollPos + pos_y) / me.itemHeight)); // and give it a nice click event if(me.nItems > 0) { absSize = boxToGlobalSize(me.size, eX * (1 - me.controlWidth) + eY * me.itemHeight); me.clickListBoxItem(me, me.selectedItem, globalToBox(pos, eY * (me.selectedItem * me.itemHeight - me.scrollPos), eX * (1 - me.controlWidth) + eY * me.itemHeight)); } } me.pressed = 0; return 1; }