From dd61b8db20be3aa7957098aaeb81a347061f81c2 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 28 Apr 2010 08:57:50 +0000 Subject: fill bottom right hand corner of framebuffer furniture svn path=/trunk/netsurf/; revision=10505 --- framebuffer/fbtk.c | 2 +- framebuffer/fbtk_widget.h | 2 ++ framebuffer/fbtk_widget_scroll.c | 19 +++++++++++++++++++ framebuffer/gui.c | 9 +++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/framebuffer/fbtk.c b/framebuffer/fbtk.c index ee988dd12..6334bedd5 100644 --- a/framebuffer/fbtk.c +++ b/framebuffer/fbtk.c @@ -134,7 +134,7 @@ new_widget(enum fbtk_widgettype_e type) /* find the root widget from any widget in the toolkits hierarchy */ -static fbtk_widget_t * +fbtk_widget_t * get_root_widget(fbtk_widget_t *widget) { while (widget->parent != NULL) diff --git a/framebuffer/fbtk_widget.h b/framebuffer/fbtk_widget.h index 5e48cebb6..c6d365712 100644 --- a/framebuffer/fbtk_widget.h +++ b/framebuffer/fbtk_widget.h @@ -112,6 +112,8 @@ struct fbtk_widget_s { /* widget manipulation functions */ +fbtk_widget_t *get_root_widget(fbtk_widget_t *widget); + fbtk_widget_t *new_widget(enum fbtk_widgettype_e type); fbtk_widget_t *add_widget_to_window(fbtk_widget_t *window, fbtk_widget_t *widget); diff --git a/framebuffer/fbtk_widget_scroll.c b/framebuffer/fbtk_widget_scroll.c index d9360c0e5..fab2d0445 100644 --- a/framebuffer/fbtk_widget_scroll.c +++ b/framebuffer/fbtk_widget_scroll.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "utils/log.h" #include "desktop/browser.h" @@ -146,6 +147,21 @@ vscrollarea_click(fbtk_widget_t *widget, return 0; } +static int +set_ptr_hand_move(fbtk_widget_t *widget, + int x, int y, + void *pw) +{ + fbtk_widget_t *root = get_root_widget(widget); + nsfb_cursor_set(root->u.root.fb, + (nsfb_colour_t *)hand_image.pixdata, + hand_image.width, + hand_image.height, + hand_image.width); + + return 0; +} + fbtk_widget_t * fbtk_create_vscroll(fbtk_widget_t *window, int x, int y, @@ -173,8 +189,11 @@ fbtk_create_vscroll(fbtk_widget_t *window, neww->callback_context = context; neww->u.scroll.btnul = fbtk_create_button(window, x + (width - scrollu.width) / 2, y, fg, &scrollu, vscrollu_click, neww); + fbtk_set_handler_move(neww->u.scroll.btnul, set_ptr_hand_move, NULL); neww->u.scroll.btndr = fbtk_create_button(window, x + (width - scrolld.width) / 2, y + height - scrolld.height, fg, &scrolld, vscrolld_click, neww); + fbtk_set_handler_move(neww->u.scroll.btndr, set_ptr_hand_move, NULL); + return add_widget_to_window(window, neww); } diff --git a/framebuffer/gui.c b/framebuffer/gui.c index eecfe7f37..7eae2b630 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -943,6 +943,15 @@ gui_create_browser_window(struct browser_window *bw, fb_scroll_callback, gw); + /* fill bottom right area */ + widget = fbtk_create_fill(gw->window, + fbtk_get_width(gw->window) - furniture_width, + fbtk_get_height(gw->window) - furniture_width, + furniture_width, + furniture_width, + FB_FRAME_COLOUR); + fbtk_set_handler_move(widget, set_ptr_default_move, bw); + /* create vertical scrollbar */ gw->vscroll = fbtk_create_vscroll(gw->window, fbtk_get_width(gw->window) - furniture_width, -- cgit v1.2.3