Index: trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c =================================================================== --- trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 17337) +++ trunk/src_plugins/hid_gtk2_gdk/gtkhid-gdk.c (revision 17338) @@ -1595,9 +1595,16 @@ } } +static GtkWidget *ghid_gdk_new_drawing_widget(void) +{ + return gtk_drawing_area_new(); +} + + void ghid_gdk_install(pcb_gtk_common_t *common, pcb_hid_t *hid) { if (common != NULL) { + common->new_drawing_widget = ghid_gdk_new_drawing_widget; common->init_drawing_widget = ghid_gdk_init_drawing_widget; common->drawing_realize = ghid_gdk_port_drawing_realize_cb; common->drawing_area_expose = ghid_gdk_drawing_area_expose_cb; Index: trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17337) +++ trunk/src_plugins/hid_gtk2_gl/gtkhid-gl.c (revision 17338) @@ -1123,13 +1123,17 @@ glPopAttrib(); } +static GtkWidget *ghid_gl_new_drawing_widget(void) +{ + return gtk_drawing_area_new(); +} - void ghid_gl_install(pcb_gtk_common_t *common, pcb_hid_t *hid) { if (common != NULL) { + common->new_drawing_widget = ghid_gl_new_drawing_widget; common->init_drawing_widget = ghid_gl_init_drawing_widget; common->drawing_realize = ghid_gl_port_drawing_realize_cb; common->drawing_area_expose = ghid_gl_drawing_area_expose_cb; Index: trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c =================================================================== --- trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17337) +++ trunk/src_plugins/hid_gtk3_cairo/gtkhid-cairo.c (revision 17338) @@ -1611,9 +1611,16 @@ } } +static GtkWidget *ghid_cairo_new_drawing_widget(void) +{ + return gtk_drawing_area_new(); +} + + void ghid_cairo_install(pcb_gtk_common_t * common, pcb_hid_t * hid) { if (common != NULL) { + common->new_drawing_widget = ghid_cairo_new_drawing_widget; common->init_drawing_widget = ghid_cairo_init_drawing_widget; common->drawing_realize = ghid_cairo_port_drawing_realize_cb; common->drawing_area_expose = ghid_cairo_drawing_area_expose_cb; Index: trunk/src_plugins/lib_gtk_common/dlg_topwin.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_topwin.c (revision 17337) +++ trunk/src_plugins/lib_gtk_common/dlg_topwin.c (revision 17338) @@ -477,7 +477,7 @@ /* -- The PCB layout output drawing area */ - tw->drawing_area = gtk_drawing_area_new(); + tw->drawing_area = tw->com->new_drawing_widget(); g_signal_connect(G_OBJECT(tw->drawing_area), "realize", G_CALLBACK(tw->com->drawing_realize), tw->com->gport); tw->com->init_drawing_widget(tw->drawing_area, tw->com->gport); Index: trunk/src_plugins/lib_gtk_common/glue.h =================================================================== --- trunk/src_plugins/lib_gtk_common/glue.h (revision 17337) +++ trunk/src_plugins/lib_gtk_common/glue.h (revision 17338) @@ -20,6 +20,7 @@ gboolean (*drawing_area_expose)(GtkWidget *w, pcb_gtk_expose_t *p, void *gport); void (*drawing_area_configure_hook)(void *); + GtkWidget *(*new_drawing_widget)(void); void (*init_drawing_widget)(GtkWidget *widget, void *gport); gboolean (*preview_expose)(GtkWidget *widget, pcb_gtk_expose_t *p, pcb_hid_expose_t expcall, pcb_hid_expose_ctx_t *ctx); void (*load_bg_image)(void);