From eed2a97eca65f1b65faf85865d67171031653727 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 25 Oct 2014 12:04:11 +0100 Subject: Add bw function to get scrollbar type. --- desktop/browser.c | 13 ++++++++++++- desktop/browser.h | 15 +++++++++++++++ desktop/browser_private.h | 2 +- desktop/frame_types.h | 6 ------ desktop/frames.c | 4 ++-- render/box_construct.c | 14 +++++++------- render/html.h | 5 +++-- 7 files changed, 40 insertions(+), 19 deletions(-) diff --git a/desktop/browser.c b/desktop/browser.c index 5a19262cf..315859aeb 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -483,6 +483,17 @@ bool browser_window_is_frameset(struct browser_window *bw) return (bw->children != NULL); } + +/* exported interface, documented in desktop/browser.h */ +nserror browser_window_get_scrollbar_type(struct browser_window *bw, + browser_scrolling *h, browser_scrolling *v) +{ + *h = bw->scrolling; + *v = bw->scrolling; + + return NSERROR_OK; +} + /** * Set or remove a selection. * @@ -772,7 +783,7 @@ nserror browser_window_create(enum browser_window_create_flags flags, /* window characteristics */ ret->browser_window_type = BROWSER_WINDOW_NORMAL; - ret->scrolling = SCROLLING_YES; + ret->scrolling = BW_SCROLLING_YES; ret->border = true; ret->no_resize = true; ret->last_action = wallclock(); diff --git a/desktop/browser.h b/desktop/browser.h index 8bad27632..8dff6dd6f 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -61,6 +61,12 @@ typedef enum { BW_EDITOR_CAN_PASTE = (1 << 2) /**< Can paste, input */ } browser_editor_flags; +typedef enum { + BW_SCROLLING_AUTO, + BW_SCROLLING_YES, + BW_SCROLLING_NO +} browser_scrolling; + /** flags to browser_window_create */ enum browser_window_create_flags { /** No flags set */ @@ -602,6 +608,15 @@ bool browser_window_can_search(struct browser_window *bw); */ bool browser_window_is_frameset(struct browser_window *bw); +/** + * Find out if a browser window contains a frameset + * + * \param bw browser window to look at + * \return NSERROR_OK, or appropriate error otherwise + */ +nserror browser_window_get_scrollbar_type(struct browser_window *bw, + browser_scrolling *h, browser_scrolling *v); + /** * Dump debug info concerning the browser window's contents to file diff --git a/desktop/browser_private.h b/desktop/browser_private.h index 51a11d35f..d373bd42e 100644 --- a/desktop/browser_private.h +++ b/desktop/browser_private.h @@ -123,7 +123,7 @@ struct browser_window { /** frame characteristics */ bool no_resize; - frame_scrolling scrolling; + browser_scrolling scrolling; bool border; colour border_colour; diff --git a/desktop/frame_types.h b/desktop/frame_types.h index f193d03f9..7008e98d4 100644 --- a/desktop/frame_types.h +++ b/desktop/frame_types.h @@ -32,12 +32,6 @@ struct frame_dimension { } unit; }; -typedef enum { - SCROLLING_AUTO, - SCROLLING_YES, - SCROLLING_NO -} frame_scrolling; - /* Handy struct names */ struct content_html_iframe; struct content_html_frames; diff --git a/desktop/frames.c b/desktop/frames.c index 534cca4f7..ff9b88286 100644 --- a/desktop/frames.c +++ b/desktop/frames.c @@ -111,10 +111,10 @@ void browser_window_handle_scrollbars(struct browser_window *bw) c_height = content_get_height(h); } - if (bw->scrolling == SCROLLING_YES) { + if (bw->scrolling == BW_SCROLLING_YES) { scroll_x = true; scroll_y = true; - } else if (bw->scrolling == SCROLLING_AUTO && + } else if (bw->scrolling == BW_SCROLLING_AUTO && bw->current_content) { int bw_width = bw->width; int bw_height = bw->height; diff --git a/render/box_construct.c b/render/box_construct.c index 025220802..c73d0590c 100644 --- a/render/box_construct.c +++ b/render/box_construct.c @@ -2015,7 +2015,7 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n, /* update frameset and create default children */ f->cols = cols; f->rows = rows; - f->scrolling = SCROLLING_NO; + f->scrolling = BW_SCROLLING_NO; f->children = talloc_array(content->bctx, struct content_html_frames, (rows * cols)); @@ -2034,7 +2034,7 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n, frame->name = NULL; frame->url = NULL; frame->no_resize = false; - frame->scrolling = SCROLLING_AUTO; + frame->scrolling = BW_SCROLLING_AUTO; frame->border = default_border; frame->border_colour = default_border_colour; frame->children = NULL; @@ -2170,10 +2170,10 @@ bool box_create_frameset(struct content_html_frames *f, dom_node *n, if (err == DOM_NO_ERR && s != NULL) { if (dom_string_caseless_lwc_isequal(s, corestring_lwc_yes)) - frame->scrolling = SCROLLING_YES; + frame->scrolling = BW_SCROLLING_YES; else if (dom_string_caseless_lwc_isequal(s, corestring_lwc_no)) - frame->scrolling = SCROLLING_NO; + frame->scrolling = BW_SCROLLING_NO; dom_string_unref(s); } @@ -2293,7 +2293,7 @@ bool box_iframe(BOX_SPECIAL_PARAMS) iframe->margin_height = 0; iframe->name = NULL; iframe->url = url; - iframe->scrolling = SCROLLING_AUTO; + iframe->scrolling = BW_SCROLLING_AUTO; iframe->border = true; /* Add this iframe to the linked list of iframes */ @@ -2328,10 +2328,10 @@ bool box_iframe(BOX_SPECIAL_PARAMS) if (err == DOM_NO_ERR && s != NULL) { if (dom_string_caseless_lwc_isequal(s, corestring_lwc_yes)) - iframe->scrolling = SCROLLING_YES; + iframe->scrolling = BW_SCROLLING_YES; else if (dom_string_caseless_lwc_isequal(s, corestring_lwc_no)) - iframe->scrolling = SCROLLING_NO; + iframe->scrolling = BW_SCROLLING_NO; dom_string_unref(s); } diff --git a/render/html.h b/render/html.h index a5ee5ffa5..6f222dbf6 100644 --- a/render/html.h +++ b/render/html.h @@ -32,6 +32,7 @@ #include "content/content_type.h" #include "css/css.h" +#include "desktop/browser.h" #include "desktop/mouse.h" #include "desktop/plot_style.h" #include "desktop/frame_types.h" @@ -117,7 +118,7 @@ struct content_html_frames { struct nsurl *url; /** frame url */ bool no_resize; /** frame is not resizable */ - frame_scrolling scrolling; /** scrolling characteristics */ + browser_scrolling scrolling; /** scrolling characteristics */ bool border; /** frame has a border */ colour border_colour; /** frame border colour */ @@ -134,7 +135,7 @@ struct content_html_iframe { char *name; /** frame name (for targetting) */ struct nsurl *url; /** frame url */ - frame_scrolling scrolling; /** scrolling characteristics */ + browser_scrolling scrolling; /** scrolling characteristics */ bool border; /** frame has a border */ colour border_colour; /** frame border colour */ -- cgit v1.2.3