h = get_text_h(item) + ICON_MARGIN * 2;
break; }
case LISTBOX_ICON_LIST: {
- w = get_text_width(MEDIUMFONT, item->text) + LISTBOX_MARGIN * 2;
+ w = column_width ? column_width[0] : default_column_width[0];
h = row_height;
break; }
default:
yposition = item->text_y - top_item->text_y - view_h / 2;
}
}
+ if( yposition < 0 ) yposition = 0;
return 1;
}
// Multiple item selection is possible
if( selection_mode == LISTBOX_MULTIPLE &&
- (ctrl_down() || shift_down()) ) {
+ (ctrl_down() || shift_down() || current_item->selected) ) {
// Expand text selection.
// Fill items between selected region and current item.
if( shift_down() &&
new_value = 1;
}
// Toggle a single item on or off
- else {
+ else if( ctrl_down() ) {
toggle_item_selection(data, selection_number);
new_value = current_item->selected;
}
}
// Select single item
else {
- if( !current_item->selected ) {
+ if( !current_item->selected || (get_buttonpress() == 1 && !new_value) ) {
set_all_selected(data, 0);
- set_selected(data,
- selection_number,
- 1);
+ set_selected(data, selection_number, 1);
}
new_value = 1;
}
if( (display_format == LISTBOX_TEXT ||
display_format == LISTBOX_ICON_LIST) &&
shift_down() ) {
-// Deselect everything.
- set_all_selected(data, 0);
-
// Select just the items
redraw = expand_selection(0, selection_number);
}