2011/7/24 Carlos López Camey <c.lopez@xxxxxxxxx>: > Hello again, > > Let's say I'd like to save a GtkDrawingArea 'screenshot' to a file. > I'm able to do > > cairo_t *cr = gtkDrawingAreaWidget->window; > cairo_surface_t *screenshot = cairo_get_target(cr); > cairo_surface_write_to_png(screenshot,"screenshot.png"); > > but what this code does is save a screenshot for the *entire window*, > including other widgets in it (e.g. toolbar). I can't get a cairo > context for a GtkDrawingArea since it's not GdkDrawable, and it's not > possible to have child GtkWindow. I've seen > gtk_widget_set_has_window() but it didn't work, I think because it > says "This function should only be called by widget implementations". > Is there a work-around? First, create a similar surface with the size of the GtkDrawingArea's allocation. Then call cairo_set_source_surface on the new surface's context with x, y from GtkDrawingArea's allocation. Set the operator to OPERATOR_SOURCE and then cairo_paint(). > What I'm really trying to do: Save my drawing area surface everytime > it's modified (drawn on it), so I can later do "undos" and set the > surface source to a previous one. > > Thanks, > Carlos Maarten _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list