Rework of lttv_traceset_get_time_span_real function to take advantage of the seek_las...
[lttv.git] / lttv / modules / gui / detailedevents / events.c
index 8d18ced3e475905554a112a5fd3664258f3407ef..d97de5f0e252ca2de9bbe3047aacf0411af57785 100644 (file)
@@ -1599,6 +1599,9 @@ static void event_update_selection(EventViewerData *event_viewer_data)
   guint i;
   GPtrArray *positions = event_viewer_data->pos;
   g_info("event_update_selection");
+  
+  int isFound = FALSE;
+  
 
   for(i=0;i<positions->len;i++) {
     LttvTracesetPosition *cur_pos = 
@@ -1609,11 +1612,28 @@ static void event_update_selection(EventViewerData *event_viewer_data)
                        if(path) {
              gtk_tree_view_set_cursor(GTK_TREE_VIEW(event_viewer_data->tree_v),
                                     path, NULL, FALSE);
+              gtk_widget_grab_focus(event_viewer_data->tree_v );
              gtk_tree_path_free(path);
+              isFound = TRUE;
               break;
                         }               
     }
   } 
+        if(isFound){
+          return;
+        }
+  /* If the current selection is not in the currently displayed events*/
+  LttTime currentTime = lttv_traceset_position_get_time(
+                                event_viewer_data->currently_selected_position);
+  LttTime time;
+  
+  LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
+  TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
+  time = ltt_time_sub(currentTime, time_span.start_time);
+  gtk_adjustment_set_value(event_viewer_data->vadjust_c,
+                                                ltt_time_to_double(time));
+  gtk_widget_grab_focus(event_viewer_data->tree_v );
+  
 }
 
 static int current_time_get_first_event_hook(void *hook_data, void *call_data)
@@ -1652,8 +1672,7 @@ gboolean update_current_time(void * hook_data, void * call_data)
   EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
  
   const LttTime * current_time = (LttTime*)call_data;
-  LttvTraceset * ts =
-        lttvwindow_get_traceset(event_viewer_data->tab);
+  LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
   
   /* If the currently selected event time != current time, set the first event
    * with this time as currently selected. */
@@ -1661,7 +1680,6 @@ gboolean update_current_time(void * hook_data, void * call_data)
                         event_viewer_data->currently_selected_position);
      
   if(ltt_time_compare(pos_time, *current_time) != 0) {
-   
         /*create position*/
         LttvTracesetPosition *currentPosition = 
                         lttv_traceset_create_time_position(ts,*current_time );
@@ -1670,8 +1688,6 @@ gboolean update_current_time(void * hook_data, void * call_data)
     
     event_viewer_data->currently_selected_position = 
                                         lttv_traceset_create_current_position(ts);
-
-
   }
 
   event_viewer_data->report_position = FALSE;
@@ -1705,7 +1721,7 @@ gboolean timespan_changed(void * hook_data, void * call_data)
        
   EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
   LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
-  TimeInterval time_span = lttv_traceset_get_time_span(ts);
+  TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
  
   LttTime end;
 
@@ -1727,7 +1743,7 @@ gboolean traceset_changed(void * hook_data, void * call_data)
 
   EventViewerData *event_viewer_data = (EventViewerData*) hook_data;
   LttvTraceset * ts = lttvwindow_get_traceset(event_viewer_data->tab);
-  TimeInterval time_span = lttv_traceset_get_time_span(ts);
+  TimeInterval time_span = lttv_traceset_get_time_span_real(ts);
   
   LttTime end;
   gtk_list_store_clear(event_viewer_data->store_m);
@@ -1740,7 +1756,7 @@ gboolean traceset_changed(void * hook_data, void * call_data)
   lttv_traceset_destroy_position(event_viewer_data->currently_selected_position);
   lttv_traceset_destroy_position(event_viewer_data->first_event);
   lttv_traceset_destroy_position(event_viewer_data->last_event);
+  
   event_viewer_data->currently_selected_position =
                                 lttv_traceset_create_current_position(ts);
   event_viewer_data->first_event =
@@ -1749,6 +1765,7 @@ gboolean traceset_changed(void * hook_data, void * call_data)
                                 lttv_traceset_create_current_position(ts);
 
   get_events(event_viewer_data->vadjust_c->value, event_viewer_data);
+
 #endif //babel_cleanup
   //  event_viewer_data->vadjust_c->value = 0;
 
This page took 0.023927 seconds and 4 git commands to generate.