From c9fe1b604e98e02391aecfda2923130f09407453 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Mon, 27 Jun 2011 22:21:15 +0000 Subject: HTML contents manage box scrollbars, rather than browser_windows. svn path=/trunk/netsurf/; revision=12519 --- desktop/browser.c | 13 +++---------- desktop/browser.h | 9 --------- desktop/textinput.c | 13 ++++++++----- 3 files changed, 11 insertions(+), 24 deletions(-) (limited to 'desktop') diff --git a/desktop/browser.c b/desktop/browser.c index 8728a6170..1f8a10c7a 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -633,8 +633,6 @@ nserror browser_window_callback(hlcache_handle *c, browser_window_remove_caret(bw); - bw->scrollbar = NULL; - if (bw->window) gui_window_new_content(bw->window); @@ -708,7 +706,6 @@ nserror browser_window_callback(hlcache_handle *c, else if (c == bw->current_content) { bw->current_content = NULL; browser_window_remove_caret(bw); - bw->scrollbar = NULL; selection_init(bw->sel, NULL); } @@ -1803,6 +1800,7 @@ void browser_window_mouse_drag_end(struct browser_window *bw, } selection_drag_end(bw->sel); } + bw->drag_type = DRAGGING_NONE; break; case DRAGGING_OTHER: @@ -1810,19 +1808,14 @@ void browser_window_mouse_drag_end(struct browser_window *bw, if (bw->visible_select_menu != NULL) { form_select_mouse_drag_end(bw->visible_select_menu, mouse, x, y); - } - - if (bw->scrollbar != NULL) { - html_overflow_scroll_drag_end(bw->scrollbar, - mouse, x, y); + bw->drag_type = DRAGGING_NONE; } break; default: + bw->drag_type = DRAGGING_NONE; break; } - - bw->drag_type = DRAGGING_NONE; } diff --git a/desktop/browser.h b/desktop/browser.h index 8790fad1f..6ab7f5c7d 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -114,10 +114,6 @@ struct browser_window { unsigned int drag_resize_up : 1; unsigned int drag_resize_down : 1; - /** Scroll capturing all mouse events, updated to any active HTML - * scrollbar, or NULL when no scrollbar drags active */ - struct scrollbar *scrollbar; - /** Current fetch is download */ bool download; @@ -198,11 +194,6 @@ struct browser_window { int status_miss; /**< Number of times status was really updated. */ }; -struct browser_scrollbar_data { - struct browser_window *bw; - struct box *box; -}; - extern struct browser_window *current_redraw_browser; extern bool browser_reformat_pending; diff --git a/desktop/textinput.c b/desktop/textinput.c index 4f5d771e3..b5163b375 100644 --- a/desktop/textinput.c +++ b/desktop/textinput.c @@ -37,6 +37,7 @@ #include "render/box.h" #include "render/font.h" #include "render/form.h" +#include "render/html_internal.h" #include "render/layout.h" #include "utils/log.h" #include "utils/talloc.h" @@ -2168,7 +2169,7 @@ void textarea_reflow(struct browser_window *bw, struct box *textarea, textarea->width = width; textarea->height = height; layout_calculate_descendant_bboxes(textarea); - box_handle_scrollbars(bw, textarea, + box_handle_scrollbars(c, textarea, box_hscrollbar_present(textarea), box_vscrollbar_present(textarea)); } @@ -2263,6 +2264,8 @@ bool word_right(const char *text, size_t len, size_t *poffset, size_t *pchars) bool ensure_caret_visible(struct browser_window *bw, struct box *textarea) { + html_content *html = (html_content *) + hlcache_handle_get_content(bw->current_content); int cx, cy; int scrollx, scrolly; @@ -2302,14 +2305,14 @@ bool ensure_caret_visible(struct browser_window *bw, struct box *textarea) return false; if (textarea->scroll_x != NULL) { - bw->scrollbar = textarea->scroll_x; + html->scrollbar = textarea->scroll_x; scrollbar_set(textarea->scroll_x, scrollx, false); - bw->scrollbar = NULL; + html->scrollbar = NULL; } if (textarea->scroll_y != NULL) { - bw->scrollbar = textarea->scroll_x; + html->scrollbar = textarea->scroll_x; scrollbar_set(textarea->scroll_y, scrolly, false); - bw->scrollbar = NULL; + html->scrollbar = NULL; } return true; -- cgit v1.2.3