summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.resources6
-rw-r--r--framebuffer/fb_gui.c64
-rw-r--r--framebuffer/fb_gui.h3
-rw-r--r--framebuffer/fb_image_data.h5
4 files changed, 66 insertions, 12 deletions
diff --git a/Makefile.resources b/Makefile.resources
index 009c111a9..f5bfde9bf 100644
--- a/Makefile.resources
+++ b/Makefile.resources
@@ -18,6 +18,12 @@ FB_IMAGE_left_arrow := framebuffer/res/icons/back.png
FB_IMAGE_right_arrow := framebuffer/res/icons/forward.png
FB_IMAGE_reload := framebuffer/res/icons/reload.png
FB_IMAGE_stop_image := framebuffer/res/icons/stop.png
+
+FB_IMAGE_left_arrow_g := framebuffer/res/icons/back_g.png
+FB_IMAGE_right_arrow_g := framebuffer/res/icons/forward_g.png
+FB_IMAGE_reload_g := framebuffer/res/icons/reload_g.png
+FB_IMAGE_stop_image_g := framebuffer/res/icons/stop_g.png
+
FB_IMAGE_scrolll := framebuffer/res/icons/scrolll.png
FB_IMAGE_scrollr := framebuffer/res/icons/scrollr.png
FB_IMAGE_scrollu := framebuffer/res/icons/scrollu.png
diff --git a/framebuffer/fb_gui.c b/framebuffer/fb_gui.c
index e7db6c8d2..2b90590b4 100644
--- a/framebuffer/fb_gui.c
+++ b/framebuffer/fb_gui.c
@@ -470,18 +470,31 @@ fb_browser_window_input(fbtk_widget_t *widget, int value, void *pw)
return 0;
}
+static void
+fb_update_back_forward(struct gui_window *gw)
+{
+ struct browser_window *bw = gw->bw;
+
+ fbtk_set_bitmap(gw->back,
+ (history_back_available(bw->history))? &left_arrow : &left_arrow_g);
+ fbtk_set_bitmap(gw->forward,
+ (history_forward_available(bw->history))? &right_arrow : &right_arrow_g);
+}
+
/* left icon click routine */
static int
fb_leftarrow_click(fbtk_widget_t *widget,
browser_mouse_state st,
int x, int y, void *pw)
{
- struct browser_window *bw = pw;
+ struct gui_window *gw =pw;
+ struct browser_window *bw = gw->bw;
if (st == BROWSER_MOUSE_CLICK_1) {
if (history_back_available(bw->history))
history_back(bw, bw->history);
}
+ fb_update_back_forward(gw);
return 0;
}
@@ -490,12 +503,14 @@ fb_leftarrow_click(fbtk_widget_t *widget,
static int
fb_rightarrow_click(fbtk_widget_t *widget, browser_mouse_state st, int x, int y, void *pw)
{
- struct browser_window *bw = pw;
+ struct gui_window *gw =pw;
+ struct browser_window *bw = gw->bw;
if (st == BROWSER_MOUSE_CLICK_1) {
if (history_forward_available(bw->history))
history_forward(bw, bw->history);
}
+ fb_update_back_forward(gw);
return 0;
}
@@ -615,23 +630,45 @@ gui_create_browser_window(struct browser_window *bw,
LOG(("Normal window"));
/* fill toolbar background */
- widget = fbtk_create_fill(gw->window, 0, 0, 0, 30, FB_FRAME_COLOUR);
+ widget = fbtk_create_fill(gw->window,
+ 0, 0, 0, 30,
+ FB_FRAME_COLOUR);
fbtk_set_handler_move(widget, set_ptr_default_move, bw);
/* back button */
- widget = fbtk_create_button(gw->window, 5, 2, FB_FRAME_COLOUR, &left_arrow, fb_leftarrow_click, bw);
- fbtk_set_handler_move(widget, set_ptr_hand_move, bw);
+ gw->back = fbtk_create_button(gw->window,
+ 5, 2,
+ FB_FRAME_COLOUR,
+ &left_arrow_g,
+ fb_leftarrow_click,
+ gw);
+ fbtk_set_handler_move(gw->back, set_ptr_hand_move, bw);
/* forward button */
- widget = fbtk_create_button(gw->window, 35, 2, FB_FRAME_COLOUR, &right_arrow, fb_rightarrow_click, bw);
- fbtk_set_handler_move(widget, set_ptr_hand_move, bw);
+ gw->forward = fbtk_create_button(gw->window,
+ 35, 2,
+ FB_FRAME_COLOUR,
+ &right_arrow_g,
+ fb_rightarrow_click,
+ gw);
+ fbtk_set_handler_move(gw->forward, set_ptr_hand_move, bw);
/* reload button */
- widget = fbtk_create_button(gw->window, 65, 2, FB_FRAME_COLOUR, &stop_image, fb_stop_click, bw);
+ widget = fbtk_create_button(gw->window,
+ 65, 2,
+ FB_FRAME_COLOUR,
+ &stop_image,
+ fb_stop_click,
+ bw);
fbtk_set_handler_move(widget, set_ptr_hand_move, bw);
/* reload button */
- widget = fbtk_create_button(gw->window, 95, 2, FB_FRAME_COLOUR, &reload, fb_reload_click, bw);
+ widget = fbtk_create_button(gw->window,
+ 95, 2,
+ FB_FRAME_COLOUR,
+ &reload,
+ fb_reload_click,
+ bw);
fbtk_set_handler_move(widget, set_ptr_hand_move, bw);
/* url widget */
@@ -959,10 +996,13 @@ void gui_window_start_throbber(struct gui_window *g)
schedule(10, throbber_advance, g);
}
-void gui_window_stop_throbber(struct gui_window *g)
+void gui_window_stop_throbber(struct gui_window *gw)
{
- g->throbber_index = -1;
- fbtk_set_bitmap(g->throbber, &throbber0);
+ gw->throbber_index = -1;
+ fbtk_set_bitmap(gw->throbber, &throbber0);
+
+ fb_update_back_forward(gw);
+
}
void gui_window_place_caret(struct gui_window *g, int x, int y, int height)
diff --git a/framebuffer/fb_gui.h b/framebuffer/fb_gui.h
index f9b40f7c8..2d828133e 100644
--- a/framebuffer/fb_gui.h
+++ b/framebuffer/fb_gui.h
@@ -41,7 +41,10 @@ typedef struct framebuffer_s {
struct gui_window {
struct browser_window *bw;
+
struct fbtk_widget_s *window;
+ struct fbtk_widget_s *back;
+ struct fbtk_widget_s *forward;
struct fbtk_widget_s *url;
struct fbtk_widget_s *status;
struct fbtk_widget_s *throbber;
diff --git a/framebuffer/fb_image_data.h b/framebuffer/fb_image_data.h
index a353d65a7..d94f14b51 100644
--- a/framebuffer/fb_image_data.h
+++ b/framebuffer/fb_image_data.h
@@ -25,6 +25,11 @@ extern struct bitmap left_arrow;
extern struct bitmap right_arrow;
extern struct bitmap reload;
extern struct bitmap stop_image;
+extern struct bitmap left_arrow_g;
+extern struct bitmap right_arrow_g;
+extern struct bitmap reload_g;
+extern struct bitmap stop_image_g;
+
extern struct bitmap scrolll;
extern struct bitmap scrollr;
extern struct bitmap scrollu;