fTrack
track_data* fTrack;
if (fTrack == 0) {
fTrack = 1;
if (fTrack == 1) {
fTrack = 2;
fTrack = 0;
uint8 fTrack;
delete fTrack;
fTrack = new track_data;
fTrack->drag_start = B_ORIGIN;
fTrack->item_index = -1;
fTrack->buttons = 0;
fTrack->selected_click_count = 0;
fTrack->was_selected = false;
fTrack->try_drag = false;
fTrack->is_dragging = false;
fTrack->last_click_time = 0;
} else if (fTrack->selected_click_count != 1)
if (!fTrack->is_dragging)
BPoint delta = where - fTrack->drag_start;
bigtime_t timeDelta = sysTime - fTrack->last_click_time;
&& fTrack->item_index == index) {
fTrack->drag_start.Set(INT32_MAX, INT32_MAX);
fTrack->drag_start = where;
fTrack->last_click_time = system_time();
fTrack->item_index = index;
fTrack->was_selected = index >= 0 ? ItemAt(index)->IsSelected() : false;
fTrack->try_drag = true;
fTrack->buttons = buttons;
if (fTrack->buttons > 0 && fTrack->was_selected)
fTrack->selected_click_count++;
fTrack->selected_click_count = 0;
bool wasDragging = fTrack->is_dragging;
fTrack->buttons = 0;
fTrack->try_drag = false;
fTrack->is_dragging = false;
if (index == fTrack->item_index)
index = fTrack->item_index;
if (fTrack->item_index >= 0 && fTrack->try_drag) {
BPoint offset = where - fTrack->drag_start;
fTrack->try_drag = false;
fTrack->is_dragging = InitiateDrag(fTrack->drag_start,
fTrack->item_index, fTrack->was_selected);
if (fTrack->buttons == 0 || index == -1)
if (!fTrack->is_dragging && fListType != B_MULTIPLE_SELECTION_LIST