diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2010-04-28 08:57:50 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2010-04-28 08:57:50 +0000 |
commit | dd61b8db20be3aa7957098aaeb81a347061f81c2 (patch) | |
tree | 62057adcb6173256a23db23d0637e079770f0fe0 /framebuffer | |
parent | 74647b752d9d63ae86e824bf842f7a1cc7a61da8 (diff) | |
download | netsurf-dd61b8db20be3aa7957098aaeb81a347061f81c2.tar.gz netsurf-dd61b8db20be3aa7957098aaeb81a347061f81c2.tar.bz2 |
fill bottom right hand corner of framebuffer furniture
svn path=/trunk/netsurf/; revision=10505
Diffstat (limited to 'framebuffer')
-rw-r--r-- | framebuffer/fbtk.c | 2 | ||||
-rw-r--r-- | framebuffer/fbtk_widget.h | 2 | ||||
-rw-r--r-- | framebuffer/fbtk_widget_scroll.c | 19 | ||||
-rw-r--r-- | framebuffer/gui.c | 9 |
4 files changed, 31 insertions, 1 deletions
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 <libnsfb.h> #include <libnsfb_plot.h> #include <libnsfb_event.h> +#include <libnsfb_cursor.h> #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, |