forked from osmocom/wireshark
GTK 3.0
Make tcp_graph.c build on GTK3 without breaking GTK2. Cross and Window scaling graph is not working in GTK 3. svn path=/trunk/; revision=38615
This commit is contained in:
parent
d4951b8e7e
commit
c65403769a
1 changed files with 177 additions and 31 deletions
208
gtk/tcp_graph.c
208
gtk/tcp_graph.c
|
@ -307,15 +307,21 @@ struct graph {
|
||||||
* temporary
|
* temporary
|
||||||
*/
|
*/
|
||||||
PangoFontDescription *font; /* font used for annotations etc. */
|
PangoFontDescription *font; /* font used for annotations etc. */
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#else
|
||||||
GdkGC *fg_gc;
|
GdkGC *fg_gc;
|
||||||
|
#endif
|
||||||
#if GTK_CHECK_VERSION(2,22,0)
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
cairo_surface_t *title_surface;
|
cairo_surface_t *title_surface;
|
||||||
/*cairo_surface_t *surface[2];*/
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
cairo_surface_t *surface[2];
|
||||||
|
#else
|
||||||
|
GdkPixmap *pixmap[2];
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
#else
|
#else
|
||||||
GdkPixmap *title_pixmap;
|
GdkPixmap *title_pixmap;
|
||||||
/*GdkPixmap *pixmap[2];*/
|
|
||||||
#endif
|
|
||||||
GdkPixmap *pixmap[2];
|
GdkPixmap *pixmap[2];
|
||||||
|
#endif
|
||||||
int displayed; /* which of both pixmaps is on screen right now */
|
int displayed; /* which of both pixmaps is on screen right now */
|
||||||
struct {
|
struct {
|
||||||
GtkWidget *control_panel;
|
GtkWidget *control_panel;
|
||||||
|
@ -362,7 +368,10 @@ struct graph {
|
||||||
} gt;
|
} gt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#else
|
||||||
static GdkGC *xor_gc = NULL;
|
static GdkGC *xor_gc = NULL;
|
||||||
|
#endif
|
||||||
static int refnum=0;
|
static int refnum=0;
|
||||||
|
|
||||||
#define debug(section) if (debugging & section)
|
#define debug(section) if (debugging & section)
|
||||||
|
@ -683,8 +692,12 @@ static void create_gui (struct graph *g)
|
||||||
|
|
||||||
static void create_drawing_area (struct graph *g)
|
static void create_drawing_area (struct graph *g)
|
||||||
{
|
{
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
GtkStyleContext *context;
|
||||||
|
#else
|
||||||
GdkColormap *colormap;
|
GdkColormap *colormap;
|
||||||
GdkColor color;
|
GdkColor color;
|
||||||
|
#endif
|
||||||
char window_title[WINDOW_TITLE_LENGTH];
|
char window_title[WINDOW_TITLE_LENGTH];
|
||||||
struct segment current;
|
struct segment current;
|
||||||
struct tcpheader *thdr;
|
struct tcpheader *thdr;
|
||||||
|
@ -787,8 +800,16 @@ static void create_drawing_area (struct graph *g)
|
||||||
g->wp.width = widget_alloc.width - g->wp.x - RMARGIN_WIDTH;
|
g->wp.width = widget_alloc.width - g->wp.x - RMARGIN_WIDTH;
|
||||||
g->wp.height = widget_alloc.height - g->wp.y - g->x_axis->s.height;
|
g->wp.height = widget_alloc.height - g->wp.y - g->x_axis->s.height;
|
||||||
|
|
||||||
g->font = gtk_widget_get_style(g->drawing_area)->font_desc;
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
context = gtk_widget_get_style_context (g->drawing_area);
|
||||||
|
gtk_style_context_get (context, GTK_STATE_NORMAL,
|
||||||
|
"font", &g->font,
|
||||||
|
NULL);
|
||||||
|
#else
|
||||||
|
g->font = gtk_widget_get_style(g->drawing_area)->font_desc;
|
||||||
|
#endif
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#else
|
||||||
colormap = gtk_widget_get_colormap(GTK_WIDGET(g->drawing_area));
|
colormap = gtk_widget_get_colormap(GTK_WIDGET(g->drawing_area));
|
||||||
if (!xor_gc) {
|
if (!xor_gc) {
|
||||||
xor_gc = gdk_gc_new (gtk_widget_get_window(g->drawing_area));
|
xor_gc = gdk_gc_new (gtk_widget_get_window(g->drawing_area));
|
||||||
|
@ -824,6 +845,7 @@ static void create_drawing_area (struct graph *g)
|
||||||
* !!! NEMLLO BY TO BYT NA KONCI graph_init_sequence()? !!!
|
* !!! NEMLLO BY TO BYT NA KONCI graph_init_sequence()? !!!
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#endif
|
||||||
g_signal_connect(g->drawing_area, "configure_event", G_CALLBACK(configure_event),
|
g_signal_connect(g->drawing_area, "configure_event", G_CALLBACK(configure_event),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
@ -1731,9 +1753,27 @@ static void graph_destroy (struct graph *g)
|
||||||
window_destroy (g->gui.control_panel);
|
window_destroy (g->gui.control_panel);
|
||||||
window_destroy (g->toplevel);
|
window_destroy (g->toplevel);
|
||||||
/* window_destroy (g->text); */
|
/* window_destroy (g->text); */
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
/* Hack to allow compilation if GTK 3 */
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
if(g->title_surface){
|
||||||
|
cairo_surface_destroy (g->title_surface);
|
||||||
|
}
|
||||||
|
if(g->surface[0]){
|
||||||
|
cairo_surface_destroy (g->surface[0]);
|
||||||
|
}
|
||||||
|
if(g->surface[1]){
|
||||||
|
cairo_surface_destroy (g->surface[1]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
g_object_unref (g->pixmap[0]);
|
||||||
|
g_object_unref (g->pixmap[1]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else /* GTK_CHECK_VERSION(3,0,0)*/
|
||||||
|
g_object_unref (g->pixmap[0]);
|
||||||
|
g_object_unref (g->pixmap[1]);
|
||||||
g_object_unref (g->fg_gc);
|
g_object_unref (g->fg_gc);
|
||||||
g_object_unref (g->pixmap[0]);
|
#endif /* GTK_CHECK_VERSION(3,0,0)*/
|
||||||
g_object_unref (g->pixmap[1]);
|
|
||||||
g_free (g->x_axis);
|
g_free (g->x_axis);
|
||||||
g_free (g->y_axis);
|
g_free (g->y_axis);
|
||||||
g_free ( (gpointer) (g->title) );
|
g_free ( (gpointer) (g->title) );
|
||||||
|
@ -2091,7 +2131,30 @@ static void graph_title_pixmap_display (struct graph *g)
|
||||||
static void graph_pixmaps_create (struct graph *g)
|
static void graph_pixmaps_create (struct graph *g)
|
||||||
{
|
{
|
||||||
debug(DBS_FENTRY) puts ("graph_pixmaps_create()");
|
debug(DBS_FENTRY) puts ("graph_pixmaps_create()");
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
if(g->surface[0]){
|
||||||
|
cairo_surface_destroy (g->surface[0]);
|
||||||
|
g->surface[0] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(g->surface[1]){
|
||||||
|
cairo_surface_destroy (g->surface[1]);
|
||||||
|
g->surface[1] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
g->surface[0] = gdk_window_create_similar_surface (gtk_widget_get_window(g->drawing_area),
|
||||||
|
CAIRO_CONTENT_COLOR,
|
||||||
|
g->wp.width,
|
||||||
|
g->wp.height);
|
||||||
|
|
||||||
|
g->surface[1] = gdk_window_create_similar_surface (gtk_widget_get_window(g->drawing_area),
|
||||||
|
CAIRO_CONTENT_COLOR,
|
||||||
|
g->wp.width,
|
||||||
|
g->wp.height);
|
||||||
|
|
||||||
|
g->displayed = 0;
|
||||||
|
#else
|
||||||
if (g->pixmap[0])
|
if (g->pixmap[0])
|
||||||
g_object_unref (g->pixmap[0]);
|
g_object_unref (g->pixmap[0]);
|
||||||
if (g->pixmap[1])
|
if (g->pixmap[1])
|
||||||
|
@ -2103,6 +2166,20 @@ static void graph_pixmaps_create (struct graph *g)
|
||||||
g->wp.width, g->wp.height, -1);
|
g->wp.width, g->wp.height, -1);
|
||||||
|
|
||||||
g->displayed = 0;
|
g->displayed = 0;
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
|
if (g->pixmap[0])
|
||||||
|
g_object_unref (g->pixmap[0]);
|
||||||
|
if (g->pixmap[1])
|
||||||
|
g_object_unref (g->pixmap[1]);
|
||||||
|
|
||||||
|
g->pixmap[0] = gdk_pixmap_new (gtk_widget_get_window(g->drawing_area),
|
||||||
|
g->wp.width, g->wp.height, -1);
|
||||||
|
g->pixmap[1] = gdk_pixmap_new (gtk_widget_get_window(g->drawing_area),
|
||||||
|
g->wp.width, g->wp.height, -1);
|
||||||
|
|
||||||
|
g->displayed = 0;
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void graph_display (struct graph *g)
|
static void graph_display (struct graph *g)
|
||||||
|
@ -2119,7 +2196,15 @@ static void graph_pixmap_display (struct graph *g)
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
|
|
||||||
cr = gdk_cairo_create (gtk_widget_get_window(g->drawing_area));
|
cr = gdk_cairo_create (gtk_widget_get_window(g->drawing_area));
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
cairo_set_source_surface (cr, g->surface[g->displayed], g->wp.x, g->wp.y);
|
||||||
|
#else
|
||||||
gdk_cairo_set_source_pixmap (cr, g->pixmap[g->displayed], g->wp.x, g->wp.y);
|
gdk_cairo_set_source_pixmap (cr, g->pixmap[g->displayed], g->wp.x, g->wp.y);
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else
|
||||||
|
gdk_cairo_set_source_pixmap (cr, g->pixmap[g->displayed], g->wp.x, g->wp.y);
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
cairo_rectangle (cr, g->wp.x, g->wp.y, g->wp.width, g->wp.height);
|
cairo_rectangle (cr, g->wp.x, g->wp.y, g->wp.width, g->wp.height);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
|
@ -2144,7 +2229,15 @@ static void graph_pixmap_draw (struct graph *g)
|
||||||
debug(DBS_FENTRY) puts ("graph_display()");
|
debug(DBS_FENTRY) puts ("graph_display()");
|
||||||
not_disp = 1 ^ g->displayed;
|
not_disp = 1 ^ g->displayed;
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
cr = cairo_create (g->surface[not_disp]);
|
||||||
|
#else
|
||||||
cr = gdk_cairo_create (g->pixmap[not_disp]);
|
cr = gdk_cairo_create (g->pixmap[not_disp]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else
|
||||||
|
cr = gdk_cairo_create (g->pixmap[not_disp]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
cairo_set_source_rgb (cr, 1, 1, 1);
|
cairo_set_source_rgb (cr, 1, 1, 1);
|
||||||
cairo_rectangle (cr, 0, 0, g->wp.width, g->wp.height);
|
cairo_rectangle (cr, 0, 0, g->wp.width, g->wp.height);
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
@ -2207,7 +2300,16 @@ static void draw_element_line (struct graph *g, struct element *e)
|
||||||
debug(DBS_GRAPH_DRAWING) printf ("line: (%d,%d)->(%d,%d)\n", xx1, yy1, xx2,yy2);
|
debug(DBS_GRAPH_DRAWING) printf ("line: (%d,%d)->(%d,%d)\n", xx1, yy1, xx2,yy2);
|
||||||
|
|
||||||
g_assert(e->elment_color_p!=NULL);
|
g_assert(e->elment_color_p!=NULL);
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
cr = cairo_create (g->surface[1^g->displayed]);
|
||||||
|
#else
|
||||||
cr = gdk_cairo_create (g->pixmap[1^g->displayed]);
|
cr = gdk_cairo_create (g->pixmap[1^g->displayed]);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
cr = gdk_cairo_create (g->pixmap[1^g->displayed]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
cairo_set_line_width (cr, 1.0);
|
cairo_set_line_width (cr, 1.0);
|
||||||
if(e->elment_color_p!=NULL){
|
if(e->elment_color_p!=NULL){
|
||||||
gdk_cairo_set_source_color (cr, e->elment_color_p);
|
gdk_cairo_set_source_color (cr, e->elment_color_p);
|
||||||
|
@ -2221,8 +2323,9 @@ static void draw_element_line (struct graph *g, struct element *e)
|
||||||
static void draw_element_arc (struct graph *g, struct element *e)
|
static void draw_element_arc (struct graph *g, struct element *e)
|
||||||
{
|
{
|
||||||
int xx1, xx2, yy1, yy2;
|
int xx1, xx2, yy1, yy2;
|
||||||
/*cairo_t *cr;*/
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
cairo_t *cr;
|
||||||
|
#endif
|
||||||
xx1 = (int )rint (e->p.arc.dim.x + g->geom.x - g->wp.x);
|
xx1 = (int )rint (e->p.arc.dim.x + g->geom.x - g->wp.x);
|
||||||
xx2 = (int )e->p.arc.dim.width;
|
xx2 = (int )e->p.arc.dim.width;
|
||||||
yy1 = (int )rint (g->geom.height-1 - e->p.arc.dim.y + g->geom.y - g->wp.y);
|
yy1 = (int )rint (g->geom.height-1 - e->p.arc.dim.y + g->geom.y - g->wp.y);
|
||||||
|
@ -2230,12 +2333,8 @@ static void draw_element_arc (struct graph *g, struct element *e)
|
||||||
if (xx1<-xx2 || xx1>=g->wp.width || yy1<-yy2 || yy1>=g->wp.height)
|
if (xx1<-xx2 || xx1>=g->wp.width || yy1<-yy2 || yy1>=g->wp.height)
|
||||||
return;
|
return;
|
||||||
debug(DBS_GRAPH_DRAWING) printf ("arc: (%d,%d)->(%d,%d)\n", xx1, yy1, xx2, yy2);
|
debug(DBS_GRAPH_DRAWING) printf ("arc: (%d,%d)->(%d,%d)\n", xx1, yy1, xx2, yy2);
|
||||||
gdk_draw_arc (g->pixmap[1^g->displayed], g->fg_gc, e->p.arc.filled, xx1,
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
yy1, xx2, yy2, e->p.arc.angle1, e->p.arc.angle2);
|
cr = cairo_create (g->surface[1^g->displayed]);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* NOTE the coordinates and angels needs to be recalculated as cairo_arc works differently */
|
|
||||||
cr = gdk_cairo_create (g->pixmap[1^g->displayed]);
|
|
||||||
cairo_set_line_width (cr, 1.0);
|
cairo_set_line_width (cr, 1.0);
|
||||||
if(e->elment_color_p!=NULL){
|
if(e->elment_color_p!=NULL){
|
||||||
gdk_cairo_set_source_color (cr, e->elment_color_p);
|
gdk_cairo_set_source_color (cr, e->elment_color_p);
|
||||||
|
@ -2243,7 +2342,7 @@ static void draw_element_arc (struct graph *g, struct element *e)
|
||||||
/* The arc is centered at (xc, yc)
|
/* The arc is centered at (xc, yc)
|
||||||
* begins at angle1 and proceeds in the direction of increasing angles to end at angle2
|
* begins at angle1 and proceeds in the direction of increasing angles to end at angle2
|
||||||
*/
|
*/
|
||||||
cairo_arc(cr, xx1, yy1, e->p.arc.dim.width/2, /*e->p.arc.angle1*/0, /*e->p.arc.angle2*/2 * G_PI);
|
cairo_arc(cr, xx1-xx2, yy1-yy2, e->p.arc.dim.width/2, /*e->p.arc.angle1*/0, /*e->p.arc.angle2*/2 * G_PI);
|
||||||
|
|
||||||
if(e->p.arc.filled){
|
if(e->p.arc.filled){
|
||||||
cairo_fill(cr);
|
cairo_fill(cr);
|
||||||
|
@ -2251,9 +2350,11 @@ static void draw_element_arc (struct graph *g, struct element *e)
|
||||||
cairo_stroke(cr);
|
cairo_stroke(cr);
|
||||||
}
|
}
|
||||||
cairo_destroy(cr);
|
cairo_destroy(cr);
|
||||||
|
#else
|
||||||
g_warning("Drawing arc");
|
gdk_draw_arc (g->pixmap[1^g->displayed], g->fg_gc, e->p.arc.filled, xx1,
|
||||||
|
yy1, xx2, yy2, e->p.arc.angle1, e->p.arc.angle2);
|
||||||
#endif
|
#endif
|
||||||
|
/* NOTE the coordinates and angels needs to be recalculated as cairo_arc works differently */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void axis_pixmaps_create (struct axis *axis)
|
static void axis_pixmaps_create (struct axis *axis)
|
||||||
|
@ -2864,10 +2965,34 @@ static int arc_detect_collision (struct element *e, int x, int y)
|
||||||
|
|
||||||
static void cross_xor (struct graph *g, int x, int y)
|
static void cross_xor (struct graph *g, int x, int y)
|
||||||
{
|
{
|
||||||
#if 0
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
GdkColor color_gray15 = {0x0, 0x2626, 0x2626, 0x2626};
|
GdkColor color_gray15 = {0x0, 0x2626, 0x2626, 0x2626};
|
||||||
cairo_t *cr;
|
cairo_t *cr;
|
||||||
#endif
|
|
||||||
|
/* XXX Fix me: lines do not disapere */
|
||||||
|
if (x > g->wp.x && x < g->wp.x+g->wp.width &&
|
||||||
|
y >= g->wp.y && y < g->wp.y+g->wp.height) {
|
||||||
|
/* Draw horisontal line */
|
||||||
|
cr = gdk_cairo_create (gtk_widget_get_window(g->drawing_area));
|
||||||
|
cairo_set_operator (cr, CAIRO_OPERATOR_XOR);
|
||||||
|
gdk_cairo_set_source_color (cr, &color_gray15);
|
||||||
|
cairo_set_line_width (cr, 1.0);
|
||||||
|
cairo_move_to(cr, g->wp.x, y);
|
||||||
|
cairo_line_to(cr, g->wp.x + g->wp.width, y);
|
||||||
|
cairo_stroke(cr);
|
||||||
|
cairo_destroy(cr);
|
||||||
|
/* draw vertical line */
|
||||||
|
cr = gdk_cairo_create (gtk_widget_get_window(g->drawing_area));
|
||||||
|
cairo_set_operator (cr, CAIRO_OPERATOR_XOR);
|
||||||
|
gdk_cairo_set_source_color (cr, &color_gray15);
|
||||||
|
cairo_set_line_width (cr, 1.0);
|
||||||
|
cairo_move_to(cr, x, g->wp.y);
|
||||||
|
cairo_line_to(cr, x, g->wp.y + g->wp.height);
|
||||||
|
cairo_stroke(cr);
|
||||||
|
cairo_destroy(cr);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
if (x > g->wp.x && x < g->wp.x+g->wp.width &&
|
if (x > g->wp.x && x < g->wp.x+g->wp.width &&
|
||||||
y >= g->wp.y && y < g->wp.y+g->wp.height) {
|
y >= g->wp.y && y < g->wp.y+g->wp.height) {
|
||||||
|
@ -2875,18 +3000,8 @@ static void cross_xor (struct graph *g, int x, int y)
|
||||||
y, g->wp.x + g->wp.width, y);
|
y, g->wp.x + g->wp.width, y);
|
||||||
gdk_draw_line (gtk_widget_get_window(g->drawing_area), xor_gc, x,
|
gdk_draw_line (gtk_widget_get_window(g->drawing_area), xor_gc, x,
|
||||||
g->wp.y, x, g->wp.y + g->wp.height);
|
g->wp.y, x, g->wp.y + g->wp.height);
|
||||||
#if 0
|
|
||||||
/* Draw horisontal line */
|
|
||||||
cr = gdk_cairo_create (gtk_widget_get_window(g->drawing_area));
|
|
||||||
cairo_set_operator (cr, CAIRO_OPERATOR_XOR);
|
|
||||||
gdk_cairo_set_source_color (cr, &gray15);
|
|
||||||
cairo_set_line_width (cr, 1.0);
|
|
||||||
cairo_move_to(cr, g->wp.x, y);
|
|
||||||
cairo_line_to(cr, g->wp.x + g->wp.width, y);
|
|
||||||
cairo_stroke(cr);
|
|
||||||
cairo_destroy(cr);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cross_draw (struct graph *g, int x, int y)
|
static void cross_draw (struct graph *g, int x, int y)
|
||||||
|
@ -2968,7 +3083,15 @@ static void magnify_create (struct graph *g, int x, int y)
|
||||||
}
|
}
|
||||||
} while (e);
|
} while (e);
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
mg->surface[0] = mg->surface[1] = NULL;
|
||||||
|
#else
|
||||||
mg->pixmap[0] = mg->pixmap[1] = NULL;
|
mg->pixmap[0] = mg->pixmap[1] = NULL;
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else
|
||||||
|
mg->pixmap[0] = mg->pixmap[1] = NULL;
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
graph_pixmaps_create (mg);
|
graph_pixmaps_create (mg);
|
||||||
magnify_draw (g);
|
magnify_draw (g);
|
||||||
g->magnify.active = 1;
|
g->magnify.active = 1;
|
||||||
|
@ -2995,8 +3118,23 @@ static void magnify_destroy (struct graph *g)
|
||||||
struct graph *mg = g->magnify.g;
|
struct graph *mg = g->magnify.g;
|
||||||
|
|
||||||
window_destroy (GTK_WIDGET (mg->drawing_area));
|
window_destroy (GTK_WIDGET (mg->drawing_area));
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
if(mg->surface[0]){
|
||||||
|
cairo_surface_destroy (mg->surface[0]);
|
||||||
|
}
|
||||||
|
if(mg->surface[1]){
|
||||||
|
cairo_surface_destroy (mg->surface[1]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
g_object_unref (mg->pixmap[0]);
|
g_object_unref (mg->pixmap[0]);
|
||||||
g_object_unref (mg->pixmap[1]);
|
g_object_unref (mg->pixmap[1]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else
|
||||||
|
g_object_unref (mg->pixmap[0]);
|
||||||
|
g_object_unref (mg->pixmap[1]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
for (list=mg->elists; list; list=list->next)
|
for (list=mg->elists; list; list=list->next)
|
||||||
g_free (list->elements);
|
g_free (list->elements);
|
||||||
|
|
||||||
|
@ -3040,7 +3178,15 @@ static void magnify_draw (struct graph *g)
|
||||||
|
|
||||||
graph_pixmap_draw (g->magnify.g);
|
graph_pixmap_draw (g->magnify.g);
|
||||||
/* graph pixmap is almost ready, just add border */
|
/* graph pixmap is almost ready, just add border */
|
||||||
|
#if GTK_CHECK_VERSION(3,0,0)
|
||||||
|
#if GTK_CHECK_VERSION(2,22,0)
|
||||||
|
cr = cairo_create (g->magnify.g->surface[not_disp]);
|
||||||
|
#else
|
||||||
cr = gdk_cairo_create (g->magnify.g->pixmap[not_disp]);
|
cr = gdk_cairo_create (g->magnify.g->pixmap[not_disp]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(2,22,0) */
|
||||||
|
#else
|
||||||
|
cr = gdk_cairo_create (g->magnify.g->pixmap[not_disp]);
|
||||||
|
#endif /* GTK_CHECK_VERSION(3,0,0) */
|
||||||
cairo_set_line_width (cr, 1.0);
|
cairo_set_line_width (cr, 1.0);
|
||||||
cairo_move_to(cr, 0, 0);
|
cairo_move_to(cr, 0, 0);
|
||||||
cairo_line_to(cr, g->magnify.width - 1, 0);
|
cairo_line_to(cr, g->magnify.width - 1, 0);
|
||||||
|
|
Loading…
Reference in a new issue