From dc9de4998f267dfe9f1afb3c9b19b60bc6150ad5 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 30 Nov 2019 15:17:39 +0000 Subject: [PATCH] HTML redraw: Don't render scrollbars when the CSS doesn't permit it. --- content/handlers/html/html_redraw.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/handlers/html/html_redraw.c b/content/handlers/html/html_redraw.c index 268bd62d3..0d2f6b523 100644 --- a/content/handlers/html/html_redraw.c +++ b/content/handlers/html/html_redraw.c @@ -1224,7 +1224,6 @@ bool html_redraw_box(const html_content *html, struct box *box, struct rect rect; int x_scrolled, y_scrolled; struct box *bg_box = NULL; - bool has_x_scroll, has_y_scroll; css_computed_clip_rect css_rect; enum css_overflow_e overflow_x = CSS_OVERFLOW_VISIBLE; enum css_overflow_e overflow_y = CSS_OVERFLOW_VISIBLE; @@ -1849,9 +1848,13 @@ bool html_redraw_box(const html_content *html, struct box *box, (box->object && content_get_type(box->object) == CONTENT_HTML)) && box->parent != NULL) { nserror res; + bool has_x_scroll = (overflow_x == CSS_OVERFLOW_SCROLL); + bool has_y_scroll = (overflow_y == CSS_OVERFLOW_SCROLL); - has_x_scroll = box_hscrollbar_present(box); - has_y_scroll = box_vscrollbar_present(box); + has_x_scroll |= (overflow_x == CSS_OVERFLOW_AUTO) && + box_hscrollbar_present(box); + has_y_scroll |= (overflow_y == CSS_OVERFLOW_AUTO) && + box_vscrollbar_present(box); res = box_handle_scrollbars((struct content *)html, box, has_x_scroll, has_y_scroll);