summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-01-29 10:40:10 +0100
committerMatthias Clasen <mclasen@redhat.com>2020-02-07 13:15:59 -0500
commitb1d64a6b3a6d16904104772e3a86294897acf41b (patch)
tree3680ec5ed9358831e3e3f1a4e1cc6370dc8c46b1
parent60095ade9b1bdb761ebe2ac260b9ca3be543768e (diff)
downloadgtk+-b1d64a6b3a6d16904104772e3a86294897acf41b.tar.gz
renderborder: Make simple border case more obvious
When reaching this point, it is impossible that all border styles are HIDDEN or NONE, but up to 3 of them can still be that style. In any case, the "none or solid" border style is the most common on there is, so try to make this simpler here by just appending a border node directly instead of going through the snapshot_border path.
-rw-r--r--gtk/gtkrenderborder.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/gtk/gtkrenderborder.c b/gtk/gtkrenderborder.c
index 1396e7833e..a137d0814c 100644
--- a/gtk/gtkrenderborder.c
+++ b/gtk/gtkrenderborder.c
@@ -707,12 +707,26 @@ gtk_css_style_snapshot_border (GtkCssBoxes *boxes,
border_width[3] = _gtk_css_number_value_get (border->border_left_width, 100);
gtk_snapshot_push_debug (snapshot, "CSS border");
- snapshot_border (snapshot,
- gtk_css_boxes_get_border_box (boxes),
- border_width,
- colors,
- border_style);
- gtk_snapshot_pop (snapshot);
+ if (border_style[0] <= GTK_BORDER_STYLE_SOLID &&
+ border_style[1] <= GTK_BORDER_STYLE_SOLID &&
+ border_style[2] <= GTK_BORDER_STYLE_SOLID &&
+ border_style[3] <= GTK_BORDER_STYLE_SOLID)
+ {
+ /* The most common case of a solid border */
+ gtk_snapshot_append_border (snapshot,
+ gtk_css_boxes_get_border_box (boxes),
+ border_width,
+ colors);
+ }
+ else
+ {
+ snapshot_border (snapshot,
+ gtk_css_boxes_get_border_box (boxes),
+ border_width,
+ colors,
+ border_style);
+ }
+ gtk_snapshot_pop (snapshot);
}
}