summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2014-10-25 12:04:11 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2014-10-25 12:04:11 +0100
commiteed2a97eca65f1b65faf85865d67171031653727 (patch)
tree8046128b9b02b9dbb7750d86239a26c8c0d46b19
parentaf3cb6bf94b77cda7435cc26f55aca8b193bd89d (diff)
downloadnetsurf-eed2a97eca65f1b65faf85865d67171031653727.tar.gz
netsurf-eed2a97eca65f1b65faf85865d67171031653727.tar.bz2
Add bw function to get scrollbar type.
-rw-r--r--desktop/browser.c13
-rw-r--r--desktop/browser.h15
-rw-r--r--desktop/browser_private.h2
-rw-r--r--desktop/frame_types.h6
-rw-r--r--desktop/frames.c4
-rw-r--r--render/box_construct.c14
-rw-r--r--render/html.h5
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 */