summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkbufferview.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/gtkbufferview.c')
-rw-r--r--src/gtkext/gtkbufferview.c55
1 files changed, 50 insertions, 5 deletions
diff --git a/src/gtkext/gtkbufferview.c b/src/gtkext/gtkbufferview.c
index f0efce0..2032547 100644
--- a/src/gtkext/gtkbufferview.c
+++ b/src/gtkext/gtkbufferview.c
@@ -342,6 +342,7 @@ static gboolean gtk_buffer_view_draw(GtkWidget *widget, cairo_t *cr)
cairo_region_t *region; /* Région visible à redessiner */
cairo_rectangle_int_t area; /* Surface correspondante */
GtkStyleContext *context; /* Contexte du thème actuel */
+ GdkRGBA color; /* Couleur de thème récupérée */
gint fake_x; /* Abscisse virtuelle */
gint fake_y; /* Ordonnée virtuelle */
bool sel_line; /* Souslignage de la sélection */
@@ -359,22 +360,66 @@ static gboolean gtk_buffer_view_draw(GtkWidget *widget, cairo_t *cr)
cairo_region_get_extents(region, &area);
cairo_region_destroy(region);
+ context = gtk_widget_get_style_context(widget);
+
+ if (pview->show_border)
+ {
+ gtk_view_panel_define_border_path(pview, cr, 0, 0);
+ cairo_clip(cr);
+ }
+
/* Dessin de la marge gauche */
- context = gtk_widget_get_style_context(widget);
+ gtk_style_context_save(context);
+
+ gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOOLBAR);
+
+ gtk_style_context_get_background_color(context, GTK_STATE_FLAG_ACTIVE, &color);
+
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue, color.alpha);
+
+ cairo_rectangle(cr, 0, area.y, view->left_margin, area.height);
+ cairo_fill(cr);
+
+ gtk_style_context_restore(context);
+
+ /* Fond de la zone de texte */
gtk_style_context_save(context);
- gtk_style_context_add_class(context, GTK_STYLE_CLASS_TROUGH);
+ gtk_style_context_add_class(context, GTK_STYLE_CLASS_VIEW);
+
+ gtk_style_context_get_background_color(context, GTK_STATE_FLAG_ACTIVE, &color);
+
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue, color.alpha * 0.7);
+
+ cairo_rectangle(cr, view->left_margin, area.y, area.width, area.height);
+ cairo_fill(cr);
+
+ gtk_style_context_restore(context);
+
+ /* Ligne de séparation */
+
+ gtk_style_context_save(context);
+
+ gtk_style_context_add_class(context, GTK_STYLE_CLASS_FRAME);
+
+ gtk_style_context_get_border_color(context, GTK_STATE_FLAG_ACTIVE, &color);
+
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue, color.alpha);
+
+ cairo_set_line_width(cr, 1.0);
- gtk_render_background(context, cr, 0, area.y, view->left_margin, area.height);
- gtk_render_frame(context, cr, 0, area.y - 10, view->left_margin, area.height + 20);
+ cairo_move_to(cr, view->left_margin + 0.5, area.y - 0.5);
+ cairo_line_to(cr, view->left_margin + 0.5, area.y + area.height + 0.5);
+ cairo_stroke(cr);
gtk_style_context_restore(context);
/* Eventuelle bordure globale */
- GTK_WIDGET_CLASS(gtk_buffer_view_parent_class)->draw(widget, cr);
+ if (pview->show_border)
+ gtk_view_panel_draw_border(pview, cr);
/* Impression du désassemblage */