git-svn-id: http://ltt.polymtl.ca/svn@473 04897980-b3bd-0310-b5e0-8ef037075253
[lttv.git] / ltt / branches / poly / lttv / modules / gui / main / src / callbacks.c
index f7eaa26b6b7e10afb4825df6f9285f4dbdeb41b9..76cd18c208d98ad53479cdf36365ca42349e893e 100644 (file)
@@ -498,19 +498,21 @@ void remove_trace(GtkWidget * widget, gpointer user_data)
       if(strcmp(remove_trace_name,name[i]) == 0){
        //unselect the trace from the current viewer
        w = gtk_multi_vpaned_get_widget(mw_data->current_tab->multi_vpaned);  
-       s = g_object_get_data(G_OBJECT(w), "Traceset_Selector");
-       t = lttv_traceset_selector_trace_get(s,i);
-       lttv_trace_selector_set_selected(t, FALSE);
-
-       //check if other viewers select the trace
-       w = gtk_multi_vpaned_get_first_widget(mw_data->current_tab->multi_vpaned);  
-       while(w){
+       if(w){
          s = g_object_get_data(G_OBJECT(w), "Traceset_Selector");
          t = lttv_traceset_selector_trace_get(s,i);
-         selected = lttv_trace_selector_get_selected(t);
-         if(selected)break;
-         w = gtk_multi_vpaned_get_next_widget(mw_data->current_tab->multi_vpaned);  
-       }
+         lttv_trace_selector_set_selected(t, FALSE);
+
+         //check if other viewers select the trace
+         w = gtk_multi_vpaned_get_first_widget(mw_data->current_tab->multi_vpaned);  
+         while(w){
+           s = g_object_get_data(G_OBJECT(w), "Traceset_Selector");
+           t = lttv_traceset_selector_trace_get(s,i);
+           selected = lttv_trace_selector_get_selected(t);
+           if(selected)break;
+           w = gtk_multi_vpaned_get_next_widget(mw_data->current_tab->multi_vpaned);  
+         }
+       }else selected = FALSE;
 
        //if no viewer selects the trace, remove it
        if(!selected){
@@ -527,7 +529,8 @@ void remove_trace(GtkWidget * widget, gpointer user_data)
            g_object_unref(mw_data->current_tab->traceset_info->traceset_context);
          }
          lttv_traceset_remove(traceset, i);
-         lttv_trace_destroy(trace_v);
+         if(!lttv_trace_get_ref_number(trace_v))
+            lttv_trace_destroy(trace_v);
          mw_data->current_tab->traceset_info->traceset_context =
            g_object_new(LTTV_TRACESET_STATS_TYPE, NULL);
          lttv_context_init(
@@ -535,8 +538,16 @@ void remove_trace(GtkWidget * widget, gpointer user_data)
                                      traceset_info->traceset_context),traceset);      
          //update current tab
          update_traceset(mw_data);
-         redraw_viewer(mw_data, &(mw_data->current_tab->time_window));
-         set_current_time(mw_data,&(mw_data->current_tab->current_time));
+         if(nb_trace > 1){
+           redraw_viewer(mw_data, &(mw_data->current_tab->time_window));
+           set_current_time(mw_data,&(mw_data->current_tab->current_time));
+         }else{
+           if(mw_data->current_tab){
+             while(mw_data->current_tab->multi_vpaned->num_children){
+               gtk_multi_vpaned_widget_delete(mw_data->current_tab->multi_vpaned);
+             }    
+           }       
+         }
        }
        break;
       }
This page took 0.023931 seconds and 4 git commands to generate.