diff options
Diffstat (limited to 'src/load-graph.cpp')
-rw-r--r-- | src/load-graph.cpp | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/load-graph.cpp b/src/load-graph.cpp index 3cf8683..752a4d4 100644 --- a/src/load-graph.cpp +++ b/src/load-graph.cpp @@ -32,7 +32,11 @@ void LoadGraph::clear_background() { if (this->background) { +#if GTK_CHECK_VERSION(3,0,0) + cairo_surface_destroy (this->background); +#else g_object_unref(this->background); +#endif this->background = NULL; } } @@ -66,7 +70,7 @@ unsigned LoadGraph::num_bars() const #define FRAME_WIDTH 4 -void draw_background(LoadGraph *g) { +static void draw_background(LoadGraph *g) { GtkAllocation allocation; double dash[2] = { 1.0, 2.0 }; cairo_t *cr; @@ -82,11 +86,13 @@ void draw_background(LoadGraph *g) { g->graph_buffer_offset = (int) (1.5 * g->graph_delx) + FRAME_WIDTH ; gtk_widget_get_allocation (g->disp, &allocation); - g->background = gdk_pixmap_new (GDK_DRAWABLE (gtk_widget_get_window (g->disp)), - allocation.width, - allocation.height, - -1); +#if GTK_CHECK_VERSION(3,0,0) + g->background = gdk_window_create_similar_surface (gtk_widget_get_window (g->disp), CAIRO_CONTENT_COLOR_ALPHA, allocation.width, allocation.height); + cr = cairo_create (g->background); +#else + g->background = gdk_pixmap_new (GDK_DRAWABLE (gtk_widget_get_window (g->disp)), allocation.width, allocation.height, -1); cr = gdk_cairo_create (g->background); +#endif // set the background colour GtkStyle *style = gtk_widget_get_style (ProcData::get_instance()->notebook); @@ -196,10 +202,11 @@ load_graph_configure (GtkWidget *widget, return TRUE; } -static gboolean -load_graph_expose (GtkWidget *widget, - GdkEventExpose *event, - gpointer data_ptr) +#if GTK_CHECK_VERSION(3,0,0) +static gboolean load_graph_expose (GtkWidget *widget, cairo_t *context, gpointer data_ptr) +#else +static gboolean load_graph_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data_ptr) +#endif { LoadGraph * const g = static_cast<LoadGraph*>(data_ptr); GtkAllocation allocation; @@ -213,7 +220,13 @@ load_graph_expose (GtkWidget *widget, if (g->background == NULL) { draw_background(g); +#if GTK_CHECK_VERSION(3,0,0) + cairo_pattern_t *pattern = cairo_pattern_create_for_surface (g->background); + gdk_window_set_background_pattern (window, pattern); + cairo_pattern_destroy (pattern); +#else gdk_window_set_back_pixmap (window, g->background, FALSE); +#endif } /* Number of pixels wide for one graph point */ @@ -687,8 +700,11 @@ LoadGraph::LoadGraph(guint type) g->disp = gtk_drawing_area_new (); gtk_widget_show (g->disp); - g_signal_connect (G_OBJECT (g->disp), "expose_event", - G_CALLBACK (load_graph_expose), g); +#if GTK_CHECK_VERSION(3,0,0) + g_signal_connect (G_OBJECT (g->disp), "draw", G_CALLBACK (load_graph_expose), g); +#else + g_signal_connect (G_OBJECT (g->disp), "expose_event", G_CALLBACK (load_graph_expose), g); +#endif g_signal_connect (G_OBJECT(g->disp), "configure_event", G_CALLBACK (load_graph_configure), g); g_signal_connect (G_OBJECT(g->disp), "destroy", |