summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2012-08-16 18:11:13 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2012-08-16 18:11:13 +0100
commit27b65235e99dfd76ac4aaa8a5f35f7124c7211f7 (patch)
tree10abb8016e70c02467f95a45b1b9012345d8ab07
parentfd3aadf8fa99974eba6d239c7d73bdd45c13e491 (diff)
parentd8872b6bab6cbe551d51fd9d795d2123572c2a16 (diff)
downloadnetsurf-27b65235e99dfd76ac4aaa8a5f35f7124c7211f7.tar.gz
netsurf-27b65235e99dfd76ac4aaa8a5f35f7124c7211f7.tar.bz2
Merge branch 'master' of git://git.netsurf-browser.org/netsurf
-rw-r--r--desktop/browser.c2
-rw-r--r--desktop/frames.c58
-rw-r--r--desktop/frames.h4
-rw-r--r--desktop/scrollbar.c20
-rw-r--r--desktop/scrollbar.h2
-rw-r--r--render/form.c10
-rw-r--r--render/html.c6
-rw-r--r--render/html_interaction.c40
-rw-r--r--render/html_internal.h2
-rw-r--r--render/textinput.c10
10 files changed, 60 insertions, 94 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index b7869859f..136557a75 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -419,7 +419,7 @@ browser_drag_type browser_window_get_drag_type(struct browser_window *bw)
/* exported interface, documented in browser.h */
struct browser_window * browser_window_get_root(struct browser_window *bw)
{
- while (bw && !bw->window && bw->parent) {
+ while (bw && bw->parent) {
bw = bw->parent;
}
return bw;
diff --git a/desktop/frames.c b/desktop/frames.c
index c5934cdc1..836108aa3 100644
--- a/desktop/frames.c
+++ b/desktop/frames.c
@@ -59,9 +59,6 @@ void browser_window_scroll_callback(void *client_data,
struct browser_window *bw = client_data;
switch(scrollbar_data->msg) {
- case SCROLLBAR_MSG_REDRAW:
- /* TODO: Is this needed? */
- break;
case SCROLLBAR_MSG_MOVED:
if (bw->browser_window_type == BROWSER_WINDOW_IFRAME) {
html_redraw_a_box(bw->parent->current_content, bw->box);
@@ -291,7 +288,8 @@ void browser_window_recalculate_iframes(struct browser_window *bw)
*/
void browser_window_create_frameset(struct browser_window *bw,
- struct content_html_frames *frameset) {
+ struct content_html_frames *frameset)
+{
int row, col, index;
struct content_html_frames *frame;
struct browser_window *window;
@@ -404,7 +402,8 @@ void browser_window_create_frameset(struct browser_window *bw,
* \param bw The browser window to reposition framesets for
*/
-void browser_window_recalculate_frameset(struct browser_window *bw) {
+void browser_window_recalculate_frameset(struct browser_window *bw)
+{
int widths[bw->cols][bw->rows];
int heights[bw->cols][bw->rows];
int bw_width, bw_height;
@@ -639,7 +638,8 @@ void browser_window_recalculate_frameset(struct browser_window *bw) {
* \param bw The browser window to resize
*/
-void browser_window_resize_frame(struct browser_window *bw, int x, int y) {
+void browser_window_resize_frame(struct browser_window *bw, int x, int y)
+{
struct browser_window *parent;
struct browser_window *sibling;
int col = -1, row = -1, i;
@@ -682,7 +682,8 @@ void browser_window_resize_frame(struct browser_window *bw, int x, int y) {
bool browser_window_resolve_frame_dimension(struct browser_window *bw,
struct browser_window *sibling,
- int x, int y, bool width, bool height) {
+ int x, int y, bool width, bool height)
+{
int bw_dimension, sibling_dimension;
int bw_pixels, sibling_pixels;
struct frame_dimension *bw_d, *sibling_d;
@@ -797,10 +798,10 @@ bool browser_window_resolve_frame_dimension(struct browser_window *bw,
}
-bool browser_window_resize_frames(struct browser_window *bw,
+static bool browser_window_resize_frames(struct browser_window *bw,
browser_mouse_state mouse, int x, int y,
- gui_pointer_shape *pointer, const char **status,
- bool *action) {
+ gui_pointer_shape *pointer)
+{
struct browser_window *parent;
bool left, right, up, down;
int i, resize_margin;
@@ -851,13 +852,21 @@ bool browser_window_resize_frames(struct browser_window *bw,
/* check the sibling frames can be resized */
if (left)
- left &= !parent->children[row * parent->cols + (col - 1)].no_resize;
+ left &= !parent->children[row *
+ parent->cols + (col - 1)].
+ no_resize;
if (right)
- right &= !parent->children[row * parent->cols + (col + 1)].no_resize;
+ right &= !parent->children[row *
+ parent->cols + (col + 1)].
+ no_resize;
if (up)
- up &= !parent->children[(row - 1) * parent->cols + col].no_resize;
+ up &= !parent->children[(row - 1) *
+ parent->cols + col].
+ no_resize;
if (down)
- down &= !parent->children[(row + 1) * parent->cols + col].no_resize;
+ down &= !parent->children[(row + 1) *
+ parent->cols + col].
+ no_resize;
/* can't have opposite directions simultaneously */
if (up)
@@ -899,9 +908,6 @@ bool browser_window_resize_frames(struct browser_window *bw,
bw->drag_resize_right = right;
bw->drag_resize_up = up;
bw->drag_resize_down = down;
-
- *status = messages_get("FrameDrag");
- *action = true;
}
return true;
}
@@ -910,14 +916,28 @@ bool browser_window_resize_frames(struct browser_window *bw,
if (bw->children) {
for (i = 0; i < (bw->cols * bw->rows); i++)
if (browser_window_resize_frames(&bw->children[i],
- mouse, x, y, pointer, status, action))
+ mouse, x, y, pointer))
return true;
}
if (bw->iframes) {
for (i = 0; i < bw->iframe_count; i++)
if (browser_window_resize_frames(&bw->iframes[i],
- mouse, x, y, pointer, status, action))
+ mouse, x, y, pointer))
return true;
}
return false;
}
+
+
+bool browser_window_frame_resize_start(struct browser_window *bw,
+ browser_mouse_state mouse, int x, int y,
+ gui_pointer_shape *pointer)
+{
+ struct browser_window *root = browser_window_get_root(bw);
+ int offx, offy;
+
+ browser_window_get_position(bw, true, &offx, &offy);
+
+ return browser_window_resize_frames(root, mouse,
+ x + offx, y + offy, pointer);
+}
diff --git a/desktop/frames.h b/desktop/frames.h
index 11fbcea2f..efbe6a8c2 100644
--- a/desktop/frames.h
+++ b/desktop/frames.h
@@ -33,9 +33,9 @@ void browser_window_recalculate_iframes(struct browser_window *bw);
void browser_window_create_frameset(struct browser_window *bw,
struct content_html_frames *frameset);
void browser_window_recalculate_frameset(struct browser_window *bw);
-bool browser_window_resize_frames(struct browser_window *bw,
+bool browser_window_frame_resize_start(struct browser_window *bw,
browser_mouse_state mouse, int x, int y,
- gui_pointer_shape *pointer, const char **status, bool *action);
+ gui_pointer_shape *pointer);
void browser_window_resize_frame(struct browser_window *bw, int x, int y);
void browser_window_scroll_callback(void *client_data,
diff --git a/desktop/scrollbar.c b/desktop/scrollbar.c
index ac4c39944..7768be233 100644
--- a/desktop/scrollbar.c
+++ b/desktop/scrollbar.c
@@ -427,16 +427,6 @@ void scrollbar_set(struct scrollbar *s, int value, bool bar_pos)
msg.msg = SCROLLBAR_MSG_MOVED;
msg.scroll_offset = s->offset;
s->client_callback(s->client_data, &msg);
-
- msg.msg = SCROLLBAR_MSG_REDRAW;
- msg.x0 = s->horizontal ? SCROLLBAR_WIDTH - 1 : 0;
- msg.y0 = s->horizontal ? 0 : SCROLLBAR_WIDTH - 1;
- msg.x1 = (s->horizontal ? s->length - SCROLLBAR_WIDTH + 1 :
- SCROLLBAR_WIDTH);
- msg.y1 = (s->horizontal ? SCROLLBAR_WIDTH :
- s->length - SCROLLBAR_WIDTH + 1);
-
- s->client_callback(s->client_data, &msg);
}
@@ -498,16 +488,6 @@ bool scrollbar_scroll(struct scrollbar *s, int change)
msg.scroll_offset = s->offset;
s->client_callback(s->client_data, &msg);
- msg.msg = SCROLLBAR_MSG_REDRAW;
- msg.x0 = s->horizontal ? SCROLLBAR_WIDTH - 1 : 0;
- msg.y0 = s->horizontal ? 0 : SCROLLBAR_WIDTH - 1;
- msg.x1 = (s->horizontal ? s->length - SCROLLBAR_WIDTH + 1 :
- SCROLLBAR_WIDTH);
- msg.y1 = (s->horizontal ? SCROLLBAR_WIDTH :
- s->length - SCROLLBAR_WIDTH + 1);
-
- s->client_callback(s->client_data, &msg);
-
return true;
}
diff --git a/desktop/scrollbar.h b/desktop/scrollbar.h
index 4bd9a17c0..2ce4a154e 100644
--- a/desktop/scrollbar.h
+++ b/desktop/scrollbar.h
@@ -39,7 +39,6 @@
struct scrollbar;
typedef enum {
- SCROLLBAR_MSG_REDRAW, /* the scrollbar requests a redraw */
SCROLLBAR_MSG_MOVED, /* the scroll value has changed */
SCROLLBAR_MSG_SCROLL_START, /* a scrollbar drag has started, all
* mouse events should be passed to
@@ -47,7 +46,6 @@ typedef enum {
* coordinates
*/
SCROLLBAR_MSG_SCROLL_FINISHED, /* cancel the above */
-
} scrollbar_msg;
struct scrollbar_msg_data {
diff --git a/render/form.c b/render/form.c
index c828d817c..c1f097f79 100644
--- a/render/form.c
+++ b/render/form.c
@@ -1272,18 +1272,10 @@ void form_select_menu_scroll_callback(void *client_data,
html_content *html = (html_content *)menu->c;
switch (scrollbar_data->msg) {
- case SCROLLBAR_MSG_REDRAW:
- menu->callback(menu->client_data,
- menu->width -
- SCROLLBAR_WIDTH + scrollbar_data->x0,
- scrollbar_data->y0,
- scrollbar_data->x1 - scrollbar_data->x0,
- scrollbar_data->y1 - scrollbar_data->y0);
- break;
case SCROLLBAR_MSG_MOVED:
menu->callback(menu->client_data,
0, 0,
- menu->width - SCROLLBAR_WIDTH,
+ menu->width,
menu->height);
break;
case SCROLLBAR_MSG_SCROLL_START:
diff --git a/render/html.c b/render/html.c
index 7f3c761bb..22fa80fbd 100644
--- a/render/html.c
+++ b/render/html.c
@@ -2359,13 +2359,13 @@ void html_redraw_a_box(hlcache_handle *h, struct box *box)
* \param box box to redraw
*/
-void html__redraw_a_box(struct content *c, struct box *box)
+void html__redraw_a_box(struct html_content *html, struct box *box)
{
int x, y;
box_coords(box, &x, &y);
- content__request_redraw(c, x, y,
+ content__request_redraw((struct content *)html, x, y,
box->padding[LEFT] + box->width + box->padding[RIGHT],
box->padding[TOP] + box->height + box->padding[BOTTOM]);
}
@@ -2786,7 +2786,7 @@ static bool html_drop_file_at_point(struct content *c, int x, int y, char *file)
/* Redraw box. */
if (containing_content == NULL)
- html__redraw_a_box(c, file_box);
+ html__redraw_a_box(html, file_box);
else
html_redraw_a_box(containing_content, file_box);
diff --git a/render/html_interaction.c b/render/html_interaction.c
index 6b5cef29a..4cdff7608 100644
--- a/render/html_interaction.c
+++ b/render/html_interaction.c
@@ -581,13 +581,13 @@ void html_mouse_action(struct content *c, struct browser_window *bw,
bool done = false;
/* frame resizing */
- if (bw->parent) {
- struct browser_window *parent;
- for (parent = bw->parent; parent->parent;
- parent = parent->parent);
- browser_window_resize_frames(parent, mouse,
- x + bw->x, y + bw->y,
- &pointer, &status, &done);
+ if (browser_window_frame_resize_start(bw, mouse, x, y,
+ &pointer)) {
+ if (mouse & (BROWSER_MOUSE_DRAG_1 |
+ BROWSER_MOUSE_DRAG_2)) {
+ status = messages_get("FrameDrag");
+ }
+ done = true;
}
/* if clicking in the main page, remove the selection from any
@@ -833,34 +833,10 @@ void html_overflow_scroll_callback(void *client_data,
struct html_scrollbar_data *data = client_data;
html_content *html = (html_content *)data->c;
struct box *box = data->box;
- int x, y, box_x, box_y, diff_x, diff_y;
switch(scrollbar_data->msg) {
- case SCROLLBAR_MSG_REDRAW:
- diff_x = box->padding[LEFT] + box->width +
- box->padding[RIGHT] - SCROLLBAR_WIDTH;
- diff_y = box->padding[TOP] + box->height +
- box->padding[BOTTOM] - SCROLLBAR_WIDTH;
-
- box_coords(box, &box_x, &box_y);
- if (scrollbar_is_horizontal(
- scrollbar_data->scrollbar)) {
- x = box_x + scrollbar_get_offset(box->scroll_x);
- y = box_y + scrollbar_get_offset(box->scroll_y) +
- diff_y;
- } else {
- x = box_x + scrollbar_get_offset(box->scroll_x) +
- diff_x;
- y = box_y + scrollbar_get_offset(box->scroll_y);
- }
- content__request_redraw((struct content *)html,
- x + scrollbar_data->x0,
- y + scrollbar_data->y0,
- scrollbar_data->x1 - scrollbar_data->x0,
- scrollbar_data->y1 - scrollbar_data->y0);
- break;
case SCROLLBAR_MSG_MOVED:
- html_redraw_a_box(html->bw->current_content, box);
+ html__redraw_a_box(html, box);
break;
case SCROLLBAR_MSG_SCROLL_START:
{
diff --git a/render/html_internal.h b/render/html_internal.h
index b4e6d2c7c..ef2ea25c5 100644
--- a/render/html_internal.h
+++ b/render/html_internal.h
@@ -122,7 +122,7 @@ bool html_fetch_object(html_content *c, nsurl *url, struct box *box,
void html_set_status(html_content *c, const char *extra);
-void html__redraw_a_box(struct content *c, struct box *box);
+void html__redraw_a_box(html_content *html, struct box *box);
struct browser_window *html_get_browser_window(struct content *c);
struct search_context *html_get_search(struct content *c);
diff --git a/render/textinput.c b/render/textinput.c
index 3712690d4..3c3eb7361 100644
--- a/render/textinput.c
+++ b/render/textinput.c
@@ -967,7 +967,7 @@ bool textinput_textarea_paste_text(struct browser_window *bw,
textinput_textarea_move_caret,
textarea, c);
- html__redraw_a_box(c, textarea);
+ html__redraw_a_box((html_content *)c, textarea);
}
return success;
@@ -1085,7 +1085,7 @@ static void textinput_input_update_display(struct content *c, struct box *input,
input, c);
if (dx || redraw)
- html__redraw_a_box(c, input);
+ html__redraw_a_box(html, input);
}
@@ -1599,7 +1599,7 @@ bool textinput_textarea_callback(struct browser_window *bw, uint32_t key,
textarea, c);
if (scrolled || reflow)
- html__redraw_a_box(c, textarea);
+ html__redraw_a_box(html, textarea);
return true;
}
@@ -1657,7 +1657,7 @@ void textinput_textarea_click(struct content *c, browser_mouse_state mouse,
textarea, c);
if (scrolled)
- html__redraw_a_box(c, textarea);
+ html__redraw_a_box(html, textarea);
}
@@ -2122,7 +2122,7 @@ void textinput_input_click(struct content *c, struct box *input,
input, c);
if (dx)
- html__redraw_a_box(c, input);
+ html__redraw_a_box(html, input);
}