summaryrefslogtreecommitdiff
path: root/framebuffer
diff options
context:
space:
mode:
Diffstat (limited to 'framebuffer')
-rw-r--r--framebuffer/fbtk.c2
-rw-r--r--framebuffer/fbtk_widget.h2
-rw-r--r--framebuffer/fbtk_widget_scroll.c19
-rw-r--r--framebuffer/gui.c9
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,