- }
- else direction = SCROLL_NONE; /* 0.0 */
-
- if(g_queue_get_length(event_viewer_data->event_fields_queue)==0)
- direction = SCROLL_JUMP;
-
- switch(direction){
- case SCROLL_STEP_UP:
- if(direction == SCROLL_STEP_UP) g_debug("direction STEP_UP");
- case SCROLL_PAGE_UP:
- if(direction == SCROLL_PAGE_UP) g_debug("direction PAGE_UP");
- if(direction == SCROLL_PAGE_UP){
- backward = list_height>event_viewer_data->start_event_index ? TRUE : FALSE;
- }else{
- backward = event_viewer_data->start_event_index == 0 ? TRUE : FALSE;
- }
- if(backward){
- first = event_viewer_data->event_fields_queue->head;
- if(!first)break;
- event_fields = (EventFields*)first->data;
- LttTime backward_start = event_fields->time;
-
- maxNum = RESERVE_SMALL_SIZE_CUBE;
- event_viewer_data->append = FALSE;
- do{
- if(direction == SCROLL_PAGE_UP){
- minNum = list_height - event_viewer_data->start_event_index ;
- }else{
- minNum = 1;
- }
- first = event_viewer_data->event_fields_queue->head;
- if(!first)break;
- event_fields = (EventFields*)first->data;
- end = event_fields->time;
-
- backward_start = LTT_TIME_MAX(ltt_time_sub(backward_start,
- ltt_time_backward),
- tsc->time_span.start_time);
-
- event_viewer_data->current_event_index = event_viewer_data->start_event_index;
- get_events(event_viewer_data, backward_start, end, maxNum, &size);
- event_viewer_data->start_event_index = event_viewer_data->current_event_index;
-
- if(size < minNum
- && (ltt_time_compare(backward_start, tsc->time_span.start_time)>0))
- need_backward_again = TRUE;
- else need_backward_again = FALSE;
- if(size == 0){
- count++;
- }else{
- count = 0;
- }
- }while(need_backward_again);
- }
- if(direction == SCROLL_STEP_UP)
- event_number = event_viewer_data->start_event_index - 1;
- else
- event_number = event_viewer_data->start_event_index - list_height;
- break;
- case SCROLL_STEP_DOWN:
- g_debug("direction STEP_DOWN");
- if(event_viewer_data->end_event_index == event_viewer_data->number_of_events - 1){
- event_viewer_data->append = TRUE;
- first = event_viewer_data->event_fields_queue->head;
- if(!first)break;
- event_fields = (EventFields*)g_list_nth_data(first,event_viewer_data->number_of_events - 1);
- start = event_fields->time;
- start.tv_nsec++;
- end.tv_sec = G_MAXULONG;
- end.tv_nsec = G_MAXULONG;
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE, &size);
- if(size == 0){
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE_SQUARE,&size);
- if(size == 0)
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE_CUBE,&size);
- }
- if(size==0) event_number = event_viewer_data->start_event_index;
- else event_number = event_viewer_data->number_of_events - size - list_height + 1;
- }else event_number = event_viewer_data->start_event_index + 1;
- break;
- case SCROLL_PAGE_DOWN:
- g_debug("direction PAGE_DOWN");
- i = event_viewer_data->number_of_events - 1 - list_height;
- if((gint)(event_viewer_data->end_event_index) >= i){
- int remain_events = event_viewer_data->number_of_events - 1
- - event_viewer_data->end_event_index;
- event_viewer_data->append = TRUE;
- first = event_viewer_data->event_fields_queue->head;
- if(!first)break;
- event_fields = (EventFields*)g_list_nth_data(first,event_viewer_data->number_of_events - 1);
- start = event_fields->time;
- start.tv_nsec++;
- end.tv_sec = G_MAXULONG;
- end.tv_nsec = G_MAXULONG;
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE,&size);
- if(size == 0){
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE_SQUARE,&size);
- if(size == 0)
- get_events(event_viewer_data, start, end, RESERVE_SMALL_SIZE_CUBE,&size);