multi_vpaned->first_pane = NULL;
multi_vpaned->last_pane = NULL;
multi_vpaned->focused_pane = NULL;
+ multi_vpaned->iter = NULL;
multi_vpaned->num_children = 0;
multi_vpaned->vbox = NULL;
return GTK_WIDGET (g_object_new (gtk_multi_vpaned_get_type (), NULL));
}
+GtkWidget * gtk_multi_vpaned_get_widget(GtkMultiVPaned * multi_vpaned)
+{
+ if(multi_vpaned->focused_pane == NULL)return NULL;
+ return (GtkWidget*)multi_vpaned->focused_pane->child2;
+}
+
+GtkWidget * gtk_multi_vpaned_get_first_widget(GtkMultiVPaned * multi_vpaned)
+{
+ if(multi_vpaned->first_pane == NULL)return NULL;
+ multi_vpaned->iter = multi_vpaned->first_pane;
+ return multi_vpaned->first_pane->child2;
+}
+
+GtkWidget * gtk_multi_vpaned_get_next_widget(GtkMultiVPaned * multi_vpaned)
+{
+ if(multi_vpaned->iter != multi_vpaned->last_pane){
+ multi_vpaned->iter = (GtkPaned *)multi_vpaned->iter->child1;
+ return multi_vpaned->iter->child2;
+ }else {
+ return NULL;
+ }
+}
+
+void gtk_multi_vpaned_set_data(GtkMultiVPaned * multi_vpaned,char * key, gpointer value)
+{
+ g_object_set_data(G_OBJECT(multi_vpaned->focused_pane), key, value);
+}
+
+gpointer gtk_multi_vpaned_get_data(GtkMultiVPaned * multi_vpaned,char * key)
+{
+ if(multi_vpaned->focused_pane == NULL)return NULL;
+ return g_object_get_data(G_OBJECT(multi_vpaned->focused_pane), key);
+}
void gtk_multi_vpaned_set_focus (GtkWidget * widget, gpointer user_data)
{
gtk_multi_vpaned_set_adjust(multi_vpaned, TRUE);
gtk_range_set_update_policy (GTK_RANGE(multi_vpaned->hscrollbar),
- GTK_UPDATE_DISCONTINUOUS);
+ GTK_UPDATE_CONTINUOUS);
+ //changed by Mathieu Desnoyers, was :
+ // GTK_UPDATE_DISCONTINUOUS);
g_signal_connect(G_OBJECT(multi_vpaned->hscrollbar), "value-changed",
G_CALLBACK(gtk_multi_vpaned_scroll_value_changed), multi_vpaned);
g_object_unref(G_OBJECT(multi_vpaned->focused_pane));
}
+void gtk_multi_vpaned_set_scroll_value(GtkMultiVPaned * multi_vpaned, double value)
+{
+ gtk_adjustment_set_value(multi_vpaned->hadjust, value);
+ g_signal_stop_emission_by_name(G_OBJECT(multi_vpaned->hscrollbar), "value-changed");
+}
+
void gtk_multi_vpaned_scroll_value_changed(GtkRange *range, gpointer multi_vpaned_arg)
{
+ TimeWindow time_window;
+ TimeInterval *time_span;
LttTime time;
GtkMultiVPaned * multi_vpaned = (GtkMultiVPaned*)multi_vpaned_arg;
gdouble value = gtk_range_get_value(range);
- time = ltt_time_from_double(value / NANOSECONDS_PER_SECOND);
- set_current_time(multi_vpaned->mw, &time);
- g_warning("The current time is second :%d, nanosecond : %d\n", time.tv_sec, time.tv_nsec);
+ gdouble upper, lower, ratio;
+
+ time_window = multi_vpaned->mw->current_tab->time_window;
+
+ time_span = LTTV_TRACESET_CONTEXT(multi_vpaned->mw->current_tab->traceset_info->
+ traceset_context)->Time_Span ;
+ lower = multi_vpaned->hadjust->lower;
+ upper = multi_vpaned->hadjust->upper;
+ ratio = (value - lower) / (upper - lower);
+
+ time = ltt_time_sub(time_span->endTime, time_span->startTime);
+ time = ltt_time_mul(time, (float)ratio);
+ time = ltt_time_add(time_span->startTime, time);
+
+ time_window.start_time = time;
+
+ time = ltt_time_sub(time_span->endTime, time);
+ if(ltt_time_compare(time,time_window.time_width) < 0){
+ time_window.time_width = time;
+ }
+ set_time_window(multi_vpaned->mw, &time_window);
}