X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Flttvwindow%2Flttvwindow%2Fgtkmultivpaned.c;h=ec8b37552f39619188359154410efe5a2fe4adef;hb=ec7a5af61127aa50a1839eee5be99ce53494c57b;hp=198a57f9e2455b3769974865e2444f71371a3a3d;hpb=36b40c7414a0f4e86c8fe49ba0e9d4ced06f8645;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/gtkmultivpaned.c b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/gtkmultivpaned.c index 198a57f9..ec8b3755 100644 --- a/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/gtkmultivpaned.c +++ b/ltt/branches/poly/lttv/modules/gui/lttvwindow/lttvwindow/gtkmultivpaned.c @@ -16,12 +16,16 @@ * MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include -//#include "gtkintl.h" #include -#include +#include +//#include "gtkintl.h" static void gtk_multi_vpaned_class_init (GtkMultiVPanedClass *klass); static void gtk_multi_vpaned_init (GtkMultiVPaned *multi_vpaned); @@ -32,7 +36,7 @@ static void gtk_multi_vpaned_size_request (GtkWidget *widget, static void gtk_multi_vpaned_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -void gtk_multi_vpaned_scroll_value_changed (GtkRange *range, gpointer multi_vpaned); +void gtk_multi_vpaned_scroll_value_changed (GtkAdjustment *adjust, gpointer multi_vpaned); gboolean gtk_multi_vpaned_destroy(GtkObject *object, gpointer user_data) @@ -147,16 +151,16 @@ gpointer gtk_multi_vpaned_get_data(GtkMultiVPaned * multi_vpaned,char * key) return g_object_get_data(G_OBJECT(multi_vpaned->focused_pane), key); } -void gtk_multi_vpaned_set_focus (GtkWidget * widget, gpointer user_data) +void gtk_multi_vpaned_set_focus (GtkWidget * widget, GtkPaned* paned) { - GtkMultiVPaned * multi_vpaned = (GtkMultiVPaned*) widget; + GtkMultiVPaned * multi_vpaned = GTK_MULTI_VPANED(widget); GtkPaned * pane; if(!multi_vpaned->first_pane) return; pane = multi_vpaned->first_pane; while(1){ - if((GtkWidget*)pane == (GtkWidget*)user_data){ + if((GtkWidget*)pane == GTK_WIDGET(paned)){ multi_vpaned->focused_pane = pane; break; } @@ -168,22 +172,22 @@ void gtk_multi_vpaned_set_focus (GtkWidget * widget, gpointer user_data) } } -void gtk_multi_vpaned_set_adjust(GtkMultiVPaned * multi_vpaned, gboolean first_time) +void gtk_multi_vpaned_set_adjust(GtkMultiVPaned * multi_vpaned, const TimeWindow *time_window, gboolean first_time) { - TimeWindow time_window; TimeInterval *time_span; - double tmp, start; - double range = 0; + double len, start; + Tab *tab = (Tab *)g_object_get_data(G_OBJECT(multi_vpaned), "Tab_Info"); + LttvTracesetContext *tsc = + LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context); - get_time_window(multi_vpaned->mw,&time_window); + if(first_time){ - time_span = LTTV_TRACESET_CONTEXT(multi_vpaned->mw->current_tab->traceset_info-> - traceset_context)->Time_Span ; + time_span = &tsc->time_span ; - multi_vpaned->hadjust->lower = ltt_time_to_double(time_span->startTime) * + multi_vpaned->hadjust->lower = ltt_time_to_double(time_span->start_time) * NANOSECONDS_PER_SECOND; multi_vpaned->hadjust->value = multi_vpaned->hadjust->lower; - multi_vpaned->hadjust->upper = ltt_time_to_double(time_span->endTime) * + multi_vpaned->hadjust->upper = ltt_time_to_double(time_span->end_time) * NANOSECONDS_PER_SECOND; } @@ -193,16 +197,17 @@ void gtk_multi_vpaned_set_adjust(GtkMultiVPaned * multi_vpaned, gboolean first_t return; } - start = ltt_time_to_double(time_window.start_time) * NANOSECONDS_PER_SECOND; - tmp = multi_vpaned->hadjust->upper - multi_vpaned->hadjust->lower; + start = ltt_time_to_double(time_window->start_time) * NANOSECONDS_PER_SECOND; + len = multi_vpaned->hadjust->upper - multi_vpaned->hadjust->lower; multi_vpaned->hadjust->page_increment = ltt_time_to_double( - time_window.time_width) * NANOSECONDS_PER_SECOND; + time_window->time_width) * NANOSECONDS_PER_SECOND; - if(multi_vpaned->hadjust->page_increment >= tmp - range) - multi_vpaned->hadjust->value = multi_vpaned->hadjust->lower; - if(start + multi_vpaned->hadjust->page_increment >= multi_vpaned->hadjust->upper - range) - multi_vpaned->hadjust->value = start; + //if(multi_vpaned->hadjust->page_increment >= len ) + // multi_vpaned->hadjust->value = multi_vpaned->hadjust->lower; + //if(start + multi_vpaned->hadjust->page_increment >= multi_vpaned->hadjust->upper ) + // multi_vpaned->hadjust->value = start; + multi_vpaned->hadjust->value = start; /* page_size to the whole visible area will take care that the * scroll value + the shown area will never be more than what is @@ -211,12 +216,14 @@ void gtk_multi_vpaned_set_adjust(GtkMultiVPaned * multi_vpaned, gboolean first_t multi_vpaned->hadjust->step_increment = multi_vpaned->hadjust->page_increment / 10; gtk_adjustment_changed (multi_vpaned->hadjust); + } void gtk_multi_vpaned_widget_add(GtkMultiVPaned * multi_vpaned, GtkWidget * widget1) { GtkPaned * tmpPane; GtkWidget * w; + Tab *tab = (Tab *)g_object_get_data(G_OBJECT(multi_vpaned), "Tab_Info"); g_return_if_fail(GTK_IS_MULTI_VPANED(multi_vpaned)); g_object_ref(G_OBJECT(widget1)); @@ -230,14 +237,17 @@ void gtk_multi_vpaned_widget_add(GtkMultiVPaned * multi_vpaned, GtkWidget * widg gtk_widget_show(multi_vpaned->hscrollbar); multi_vpaned->hadjust = gtk_range_get_adjustment(GTK_RANGE(multi_vpaned->hscrollbar)); - gtk_multi_vpaned_set_adjust(multi_vpaned, TRUE); + gtk_multi_vpaned_set_adjust(multi_vpaned, &tab->time_window, TRUE); gtk_range_set_update_policy (GTK_RANGE(multi_vpaned->hscrollbar), GTK_UPDATE_CONTINUOUS); //changed by Mathieu Desnoyers, was : // GTK_UPDATE_DISCONTINUOUS); - g_signal_connect(G_OBJECT(multi_vpaned->hscrollbar), "value-changed", + g_signal_connect(G_OBJECT(multi_vpaned->hadjust), "value-changed", G_CALLBACK(gtk_multi_vpaned_scroll_value_changed), multi_vpaned); + g_signal_connect(G_OBJECT(multi_vpaned->hadjust), "changed", + G_CALLBACK(gtk_multi_vpaned_scroll_value_changed), multi_vpaned); + multi_vpaned->vbox = gtk_vbox_new(FALSE,0); gtk_widget_show(multi_vpaned->vbox); @@ -271,11 +281,12 @@ void gtk_multi_vpaned_widget_add(GtkMultiVPaned * multi_vpaned, GtkWidget * widg void gtk_multi_vpaned_widget_delete(GtkMultiVPaned * multi_vpaned) { GtkPaned * tmp, *prev, *next; + GtkWidget *widget; if(!multi_vpaned->focused_pane) return; - tmp = (GtkPaned*)multi_vpaned->focused_pane->child2; //widget in vpaned - g_object_unref(G_OBJECT(tmp)); + widget = GTK_WIDGET(multi_vpaned->focused_pane->child2); //widget in vpaned + g_object_unref(G_OBJECT(widget)); if(multi_vpaned->focused_pane == multi_vpaned->first_pane && multi_vpaned->focused_pane == multi_vpaned->last_pane){ @@ -401,37 +412,39 @@ void gtk_multi_vpaned_widget_move_down(GtkMultiVPaned * multi_vpaned) 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"); + //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) +void gtk_multi_vpaned_scroll_value_changed(GtkAdjustment *adjust, 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); + gdouble value = gtk_adjustment_get_value(adjust); gdouble upper, lower, ratio; + Tab *tab = (Tab *)g_object_get_data(G_OBJECT(multi_vpaned), "Tab_Info"); + LttvTracesetContext * tsc = + LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context); - time_window = multi_vpaned->mw->current_tab->time_window; + time_window = tab->time_window; - time_span = LTTV_TRACESET_CONTEXT(multi_vpaned->mw->current_tab->traceset_info-> - traceset_context)->Time_Span ; + time_span = &tsc->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_sub(time_span->end_time, time_span->start_time); time = ltt_time_mul(time, (float)ratio); - time = ltt_time_add(time_span->startTime, time); + time = ltt_time_add(time_span->start_time, time); time_window.start_time = time; - time = ltt_time_sub(time_span->endTime, time); + time = ltt_time_sub(time_span->end_time, time); if(ltt_time_compare(time,time_window.time_width) < 0){ time_window.time_width = time; } - set_time_window(multi_vpaned->mw, &time_window); + set_time_window(tab, &time_window); }