X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fcfv.c;h=33bcdd2a8c9df1bf1efff772c9450b6aaf88b10e;hb=f0d243f7b3a3fd1f5fe74f9f272213192dc9cdaa;hp=ce77e4d5ecf936245cccc31e24e68d90735ce777;hpb=e8d11122b46e7e2922e65825623c760f84a4d34f;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c index ce77e4d5..33bcdd2a 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c @@ -16,15 +16,21 @@ * MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include +#include +#include +#include #include "cfv.h" #include "drawing.h" #include "processlist.h" #include "eventhooks.h" -#include extern GSList *g_control_flow_data_list; @@ -42,6 +48,37 @@ header_size_allocate(GtkWidget *widget, return 0; } +gboolean cfv_scroll_event(GtkWidget *widget, GdkEventScroll *event, + gpointer data) +{ + ControlFlowData *control_flow_data = (ControlFlowData*)data; + unsigned int cell_height = + get_cell_height( + GTK_TREE_VIEW(control_flow_data->process_list->process_list_widget)); + gdouble new; + + switch(event->direction) { + case GDK_SCROLL_UP: + { + new = gtk_adjustment_get_value(control_flow_data->v_adjust) + - cell_height; + } + break; + case GDK_SCROLL_DOWN: + { + new = gtk_adjustment_get_value(control_flow_data->v_adjust) + + cell_height; + } + break; + default: + return FALSE; + } + if(new >= control_flow_data->v_adjust->lower && + new <= control_flow_data->v_adjust->upper + - control_flow_data->v_adjust->page_size) + gtk_adjustment_set_value(control_flow_data->v_adjust, new); + return TRUE; +} /***************************************************************************** @@ -56,12 +93,14 @@ header_size_allocate(GtkWidget *widget, * @return The widget created. */ ControlFlowData * -guicontrolflow(void) +guicontrolflow(Tab *tab) { GtkWidget *process_list_widget, *drawing_widget, *drawing_area; ControlFlowData* control_flow_data = g_new(ControlFlowData,1) ; + control_flow_data->tab = tab; + control_flow_data->v_adjust = GTK_ADJUSTMENT(gtk_adjustment_new( 0.0, /* Value */ 0.0, /* Lower */ @@ -92,6 +131,15 @@ guicontrolflow(void) GTK_ADJUSTMENT( control_flow_data->v_adjust)); + g_signal_connect (G_OBJECT(process_list_widget), + "scroll-event", + G_CALLBACK (cfv_scroll_event), + (gpointer)control_flow_data); + g_signal_connect (G_OBJECT(drawing_area), + "scroll-event", + G_CALLBACK (cfv_scroll_event), + (gpointer)control_flow_data); + g_signal_connect (G_OBJECT(control_flow_data->process_list->button), "size-allocate", G_CALLBACK(header_size_allocate), @@ -115,7 +163,9 @@ guicontrolflow(void) process_list_widget, FALSE, TRUE); gtk_paned_pack2(GTK_PANED(control_flow_data->h_paned), drawing_widget, TRUE, TRUE); - + + gtk_container_set_border_width(GTK_CONTAINER(control_flow_data->box), 1); + /* Set the size of the drawing area */ //drawing_Resize(drawing, h, w); @@ -146,7 +196,6 @@ guicontrolflow(void) //inserted in the main window before the drawing area //can be configured (and this must happend bedore sending //data) - return control_flow_data;