summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkbufferdisplay.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-03-18 09:00:20 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-03-18 09:00:55 (GMT)
commit43d57853c6f2c59197c7dc20ff61f3f2eacc2445 (patch)
tree3dcb5ad426c7e5d4159d95f7e9e5e80eef45bfe0 /src/gtkext/gtkbufferdisplay.c
parentf65f83fd222d14934b527152899359327813128e (diff)
Exported graph views using Cairo.
Diffstat (limited to 'src/gtkext/gtkbufferdisplay.c')
-rw-r--r--src/gtkext/gtkbufferdisplay.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/gtkext/gtkbufferdisplay.c b/src/gtkext/gtkbufferdisplay.c
index 0794dd4..01df570 100644
--- a/src/gtkext/gtkbufferdisplay.c
+++ b/src/gtkext/gtkbufferdisplay.c
@@ -382,6 +382,7 @@ static gboolean gtk_buffer_display_draw(GtkWidget *widget, cairo_t *cr)
GtkBufferDisplay *display; /* Autre version du composant */
GtkDisplayPanel *parent; /* Autre version du composant */
GdkWindow *window; /* Fenêtre à redessiner */
+ GtkAllocation allocation; /* Aire complète du composant */
cairo_region_t *region; /* Région visible à redessiner */
cairo_rectangle_int_t area; /* Surface correspondante */
GtkStyleContext *context; /* Contexte du thème actuel */
@@ -401,9 +402,22 @@ static gboolean gtk_buffer_display_draw(GtkWidget *widget, cairo_t *cr)
gtk_cairo_transform_to_window(cr, widget, window);
- region = gdk_window_get_clip_region(window);
- cairo_region_get_extents(region, &area);
- cairo_region_destroy(region);
+ if (parent->export)
+ {
+ gtk_widget_get_allocation(widget, &allocation);
+
+ area.x = 0;
+ area.y = 0;
+ area.width = allocation.width;
+ area.height = allocation.height;
+
+ }
+ else
+ {
+ region = gdk_window_get_clip_region(window);
+ cairo_region_get_extents(region, &area);
+ cairo_region_destroy(region);
+ }
context = gtk_widget_get_style_context(widget);
@@ -473,7 +487,7 @@ static gboolean gtk_buffer_display_draw(GtkWidget *widget, cairo_t *cr)
g_generic_config_get_value(get_main_configuration(), MPK_SELECTION_LINE, &sel_line);
sel_line &= gtk_widget_has_focus(widget);
- if (!sel_line || display->cursor == NULL || !g_line_cursor_is_valid(display->cursor))
+ if (!sel_line || display->cursor == NULL || !g_line_cursor_is_valid(display->cursor) || parent->export)
selected = NULL;
else
{
@@ -484,7 +498,8 @@ static gboolean gtk_buffer_display_draw(GtkWidget *widget, cairo_t *cr)
area.x -= virt_x;
virt_y += area.y;
- g_buffer_view_draw(display->view, cr, virt_y, &area, parent->options, &display->offsets, selected);
+ g_buffer_view_draw(display->view, cr, virt_y, &area, parent->options, &display->offsets,
+ selected, parent->export);
}