state update hooks are added by the main window
[lttv.git] / ltt / branches / poly / lttv / modules / gui / mainWin / src / callbacks.c
index cce4dc4283c83196ca2d14c2241ddbd58a71c0fe..6abfd51cb6863ee9ea7f0f64fd8293696e4f270f 100644 (file)
@@ -134,7 +134,7 @@ void insert_viewer(GtkWidget* widget, view_constructor constructor)
   GtkWidget * viewer;
   LttvTracesetSelector  * s;
   TimeInterval * time_interval;
-  TimeWindow  time_window;
+  TimeWindow  time_window, t;
 
   mw_data = get_window_data_struct(widget);
   if(!mw_data->current_tab) return;
@@ -151,12 +151,16 @@ void insert_viewer(GtkWidget* widget, view_constructor constructor)
     time_window = mw_data->current_tab->time_window;
     time_interval = (TimeInterval*)g_object_get_data(G_OBJECT(viewer), TRACESET_TIME_SPAN);
     if(time_interval){
+      t = time_window;
       time_window.start_time = time_interval->startTime;
       time_window.time_width = ltt_time_sub(time_interval->endTime,time_interval->startTime);
     }
 
     redraw_viewer(mw_data,&time_window);
     set_current_time(mw_data,&(mw_data->current_tab->current_time));
+    if(time_interval){
+      set_time_window(mw_data,&t);
+    }
   }
 }
 
@@ -540,6 +544,8 @@ void zoom(GtkWidget * widget, double size)
   LttTime    current_time, time_delta, time_s, time_e, time_t;
   MainWindow * mw_data = get_window_data_struct(widget);
 
+  if(size == 1) return;
+
   time_span = LTTV_TRACESET_CONTEXT(mw_data->current_tab->
                                    traceset_info->traceset_context)->Time_Span;
   time_window =  mw_data->current_tab->time_window;
@@ -552,7 +558,7 @@ void zoom(GtkWidget * widget, double size)
   }else{
     time_window.time_width = ltt_time_div(time_window.time_width, size);
     if(ltt_time_compare(time_window.time_width,time_delta) > 0)
-      time_window.time_width = time_delta;        
+      time_window.time_width = time_delta;
 
     time_t = ltt_time_div(time_window.time_width, 2);
     if(ltt_time_compare(current_time, time_t) < 0){
@@ -1108,6 +1114,40 @@ on_MWindow_destroy                     (GtkObject       *object,
     gtk_main_quit ();
 }
 
+gboolean    
+on_MWindow_configure                   (GtkWidget         *widget,
+                                        GdkEventConfigure *event,
+                                        gpointer           user_data)
+{
+  MainWindow * mw_data = get_window_data_struct((GtkWidget*)widget);
+  float width = event->width;
+  Tab * tab = mw_data->tab;
+  TimeWindow time_win;
+  double ratio;
+  TimeInterval *time_span;
+  LttTime time;
+       
+       // MD : removed time width modification upon resizing of the main window.
+       // The viewers will redraw themselves completely, without time interval
+       // modification.
+/*  while(tab){
+    if(mw_data->window_width){
+      time_span = LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context)->Time_Span ;
+      time_win = tab->time_window;
+      ratio = width / mw_data->window_width;
+      tab->time_window.time_width = ltt_time_mul(time_win.time_width,ratio);
+      time = ltt_time_sub(time_span->endTime, time_win.start_time);
+      if(ltt_time_compare(time, tab->time_window.time_width) < 0){
+       tab->time_window.time_width = time;
+      }
+    } 
+    tab = tab->next;
+  }
+
+  mw_data->window_width = (int)width;
+       */
+  return FALSE;
+}
 
 void
 on_MNotebook_switch_page               (GtkNotebook     *notebook,
@@ -1680,6 +1720,9 @@ void * create_tab(MainWindow * parent, MainWindow* current_window,
            "Tab_Info",
           tmp_tab,
           (GDestroyNotify)tab_destructor);
+
+  lttv_state_add_event_hooks(
+       (LttvTracesetState*)tmp_tab->traceset_info->traceset_context);
   
   gtk_notebook_append_page(notebook, (GtkWidget*)tmp_tab->multi_vpaned, tmp_tab->label);  
   list = gtk_container_get_children(GTK_CONTAINER(notebook));
This page took 0.024036 seconds and 4 git commands to generate.