git-svn-id: http://ltt.polymtl.ca/svn@472 04897980-b3bd-0310-b5e0-8ef037075253
[lttv.git] / ltt / branches / poly / lttv / modules / gui / main / src / callbacks.c
index 76920ae60a4a2284da2cf079d6594dcfc7d05703..cc6ec38bf791c73086d2eec62e7a6fee1762a8fb 100644 (file)
@@ -189,7 +189,7 @@ void get_label_string (GtkWidget * text, gchar * label)
     strcpy(label,gtk_entry_get_text(entry)); 
 }
 
-void get_label(MainWindow * mw, gchar * str, gchar* dialogue_title, gchar * label_str)
+gboolean get_label(MainWindow * mw, gchar * str, gchar* dialogue_title, gchar * label_str)
 {
   GtkWidget * dialogue;
   GtkWidget * text;
@@ -220,8 +220,9 @@ void get_label(MainWindow * mw, gchar * str, gchar* dialogue_title, gchar * labe
     case GTK_RESPONSE_REJECT:
     default:
       gtk_widget_destroy(dialogue);
-      break;
+      return FALSE;
   }
+  return TRUE;
 }
 
 MainWindow * get_window_data_struct(GtkWidget * widget)
@@ -497,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){
@@ -651,9 +654,8 @@ void create_new_tab(GtkWidget* widget, gpointer user_data){
   }
 
   strcpy(label,"Page");
-  get_label(mw_data, label,"Get the name of the tab","Please input tab's name");
-
-  create_tab (mw_data, mw_data, notebook, label);
+  if(get_label(mw_data, label,"Get the name of the tab","Please input tab's name"))    
+    create_tab (mw_data, mw_data, notebook, label);
 }
 
 void
@@ -1133,10 +1135,19 @@ void
 on_MWindow_destroy                     (GtkObject       *object,
                                         gpointer         user_data)
 {
-  MainWindow *Main_Window = (MainWindow*)user_data;
-  
+  MainWindow *Main_Window = get_window_data_struct((GtkWidget*)object);
+  GtkWidget  *widget;
+  Tab *tab = Main_Window->tab;
   g_printf("There are : %d windows\n",g_slist_length(g_main_window_list));
 
+  while(tab){
+    while(tab->multi_vpaned->num_children){
+      gtk_multi_vpaned_widget_delete(tab->multi_vpaned);
+    }    
+    tab = tab->next;
+  }
+  
   g_win_count--;
   if(g_win_count == 0)
     gtk_main_quit ();
This page took 0.024422 seconds and 4 git commands to generate.