summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
Diffstat (limited to 'riscos')
-rw-r--r--riscos/gui.h4
-rw-r--r--riscos/gui/status_bar.h4
-rw-r--r--riscos/menus.c17
-rw-r--r--riscos/menus.h1
-rw-r--r--riscos/options.h3
-rw-r--r--riscos/theme.c243
-rw-r--r--riscos/theme.h5
-rw-r--r--riscos/window.c90
8 files changed, 29 insertions, 338 deletions
diff --git a/riscos/gui.h b/riscos/gui.h
index aa18e9dcc..23c888cfc 100644
--- a/riscos/gui.h
+++ b/riscos/gui.h
@@ -29,6 +29,7 @@ extern int os_version;
extern const char * NETSURF_DIR;
struct toolbar;
+struct status_bar;
struct plotter_table;
struct gui_window;
struct tree;
@@ -75,6 +76,7 @@ struct gui_window {
struct browser_window *bw;
struct toolbar *toolbar; /**< Toolbar, or 0 if not present. */
+ struct status_bar *status_bar; /**< Status bar, or 0 if not present. */
wimp_w window; /**< RISC OS window handle. */
@@ -139,11 +141,9 @@ void ro_gui_window_quit(void);
void ro_gui_window_update_theme(void);
void ro_gui_window_mouse_at(struct gui_window *g, wimp_pointer *pointer);
bool ro_gui_toolbar_click(wimp_pointer *pointer);
-bool ro_gui_status_click(wimp_pointer *pointer);
void ro_gui_throb(void);
struct gui_window *ro_gui_window_lookup(wimp_w window);
struct gui_window *ro_gui_toolbar_lookup(wimp_w window);
-struct gui_window *ro_gui_status_lookup(wimp_w window);
void ro_gui_scroll_request(wimp_scroll *scroll);
bool ro_gui_window_to_window_pos(struct gui_window *g, int x, int y, os_coord *pos);
bool ro_gui_window_to_screen_pos(struct gui_window *g, int x, int y, os_coord *pos);
diff --git a/riscos/gui/status_bar.h b/riscos/gui/status_bar.h
index dc8452456..2b0f6beec 100644
--- a/riscos/gui/status_bar.h
+++ b/riscos/gui/status_bar.h
@@ -23,8 +23,8 @@ wimp_w ro_gui_status_bar_get_window(struct status_bar *sb);
unsigned int ro_gui_status_bar_get_width(struct status_bar *sb);
void ro_gui_status_bar_resize(struct status_bar *sb);
void ro_gui_status_bar_set_visible(struct status_bar *pb, bool visible);
-bool ro_gui_status_bar_get_visible(struct status_bar *pb);
-void ro_gui_status_bar_set_text(struct status_bar *pb, const char *text);
+bool ro_gui_status_bar_get_visible(struct status_bar *sb);
+void ro_gui_status_bar_set_text(struct status_bar *sb, const char *text);
void ro_gui_status_bar_set_progress_value(struct status_bar *sb,
unsigned int value);
void ro_gui_status_bar_set_progress_range(struct status_bar *sb,
diff --git a/riscos/menus.c b/riscos/menus.c
index e26d6069d..9ab8abffb 100644
--- a/riscos/menus.c
+++ b/riscos/menus.c
@@ -209,8 +209,7 @@ void ro_gui_menu_init(void)
{ "View.Toolbars", NO_ACTION, 0 },
{ "View.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 },
{ "View.Toolbars.ToolAddress", TOOLBAR_ADDRESS_BAR, 0 },
- { "View.Toolbars.ToolThrob", TOOLBAR_THROBBER, 0 },
- { "_View.Toolbars.ToolStatus", TOOLBAR_STATUS_BAR, 0 },
+ { "_View.Toolbars.ToolThrob", TOOLBAR_THROBBER, 0 },
{ "View.Toolbars.EditToolbar", TOOLBAR_EDIT, 0 },
{ "_View.Render", NO_ACTION, 0 },
{ "View.Render.RenderAnims", BROWSER_BUFFER_ANIMS, 0 },
@@ -340,13 +339,12 @@ void ro_gui_menu_init(void)
(struct ns_menu *)&images_definition);
/* browser toolbar menu */
- NS_MENU(7) browser_toolbar_definition = {
+ NS_MENU(6) browser_toolbar_definition = {
"Toolbar", {
{ "Toolbars", NO_ACTION, 0 },
{ "Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 },
{ "Toolbars.ToolAddress", TOOLBAR_ADDRESS_BAR, 0 },
{ "Toolbars.ToolThrob", TOOLBAR_THROBBER, 0 },
- { "Toolbars.ToolStatus", TOOLBAR_STATUS_BAR, 0 },
{ "EditToolbar", TOOLBAR_EDIT, 0 },
{NULL, 0, 0}
}
@@ -1724,11 +1722,6 @@ bool ro_gui_menu_handle_action(wimp_w owner, menu_action action,
t->display_throbber = !t->display_throbber;
ro_gui_menu_refresh_toolbar(t);
return true;
- case TOOLBAR_STATUS_BAR:
- assert(t);
- t->display_status = !t->display_status;
- ro_gui_menu_refresh_toolbar(t);
- return true;
case TOOLBAR_EDIT:
assert(t);
ro_gui_theme_toggle_edit(t);
@@ -2194,12 +2187,6 @@ void ro_gui_menu_prepare_action(wimp_w owner, menu_action action,
ro_gui_menu_set_entry_ticked(current_menu, action,
(t && t->display_throbber));
break;
- case TOOLBAR_STATUS_BAR:
- ro_gui_menu_set_entry_shaded(current_menu,
- action, !t);
- ro_gui_menu_set_entry_ticked(current_menu, action,
- (t && t->display_status));
- break;
case TOOLBAR_EDIT:
ro_gui_menu_set_entry_shaded(current_menu,
action, !t);
diff --git a/riscos/menus.h b/riscos/menus.h
index c2264fac5..13a4ed249 100644
--- a/riscos/menus.h
+++ b/riscos/menus.h
@@ -115,7 +115,6 @@ typedef enum {
TOOLBAR_BUTTONS,
TOOLBAR_ADDRESS_BAR,
TOOLBAR_THROBBER,
- TOOLBAR_STATUS_BAR,
TOOLBAR_EDIT,
/* misc actions */
diff --git a/riscos/options.h b/riscos/options.h
index 6f669ab94..1fd779593 100644
--- a/riscos/options.h
+++ b/riscos/options.h
@@ -24,7 +24,6 @@ extern int option_fg_plot_style; /* tinct flagword */
extern int option_bg_plot_style; /* tinct flagword */
extern bool option_history_tooltip;
extern int option_scale;
-extern bool option_toolbar_show_status;
extern bool option_toolbar_show_buttons;
extern bool option_toolbar_show_address;
extern bool option_toolbar_show_throbber;
@@ -63,7 +62,6 @@ int option_fg_plot_style = tinct_ERROR_DIFFUSE;\
int option_bg_plot_style = tinct_DITHER;\
bool option_history_tooltip = true; \
int option_scale = 100; \
-bool option_toolbar_show_status = true; \
bool option_toolbar_show_buttons = true; \
bool option_toolbar_show_address = true; \
bool option_toolbar_show_throbber = true; \
@@ -102,7 +100,6 @@ bool option_thumbnail_iconise = true;
{ "plot_bg_quality", OPTION_INTEGER, &option_bg_plot_style },\
{ "history_tooltip", OPTION_BOOL, &option_history_tooltip }, \
{ "scale", OPTION_INTEGER, &option_scale }, \
-{ "toolbar_show_status", OPTION_BOOL, &option_toolbar_show_status }, \
{ "toolbar_status_size", OPTION_INTEGER, &option_toolbar_status_width }, \
{ "toolbar_show_buttons", OPTION_BOOL, &option_toolbar_show_buttons }, \
{ "toolbar_show_address", OPTION_BOOL, &option_toolbar_show_address }, \
diff --git a/riscos/theme.c b/riscos/theme.c
index e25cda820..3eac01944 100644
--- a/riscos/theme.c
+++ b/riscos/theme.c
@@ -39,7 +39,6 @@
#define THEME_URL_MEMORY 256
#define THEME_THROBBER_MEMORY 12
-#define THEME_STATUS_MEMORY 256
static struct theme_descriptor *theme_current = NULL;
static struct theme_descriptor *theme_descriptors = NULL;
@@ -78,8 +77,6 @@ static void ro_gui_theme_add_toolbar_icons(struct toolbar *toolbar,
const char* icons[], const char* ident);
static void ro_gui_theme_set_help_prefix(struct toolbar *toolbar);
-static void ro_gui_theme_status_open(wimp_open *open);
-
/* A basic window for the toolbar and status
*/
static wimp_window theme_toolbar_window = {
@@ -87,7 +84,7 @@ static wimp_window theme_toolbar_window = {
0,
0,
wimp_TOP,
- wimp_WINDOW_NEW_FORMAT | wimp_WINDOW_MOVEABLE |
+ wimp_WINDOW_NEW_FORMAT | wimp_WINDOW_MOVEABLE | wimp_WINDOW_NO_BOUNDS |
wimp_WINDOW_FURNITURE_WINDOW |
wimp_WINDOW_IGNORE_XEXTENT | wimp_WINDOW_IGNORE_YEXTENT,
wimp_COLOUR_BLACK,
@@ -98,11 +95,11 @@ static wimp_window theme_toolbar_window = {
wimp_COLOUR_MID_LIGHT_GREY,
wimp_COLOUR_CREAM,
wimp_WINDOW_NEVER3D | 0x16u /* RISC OS 5.03+ */,
- {0, 0, 1, 1},
+ {0, 0, 16384, 16384},
0,
0,
wimpspriteop_AREA,
- 12,
+ 1,
1,
{""},
0,
@@ -113,7 +110,6 @@ static wimp_window theme_toolbar_window = {
/* Shared icon validation
*/
static char theme_url_validation[] = "Pptr_write;KN\0";
-static char theme_resize_validation[] = "R1;Pptr_lr,8,6\0";
static char theme_null_text_string[] = "\0";
static char theme_separator_name[] = "separator\0";
static char theme_favicon_sprite[12];
@@ -768,7 +764,6 @@ struct toolbar *ro_gui_theme_create_toolbar(struct theme_descriptor *descriptor,
case THEME_BROWSER_TOOLBAR:
toolbar->display_url = true;
toolbar->display_throbber = true;
- toolbar->display_status = true;
ro_gui_theme_add_toolbar_icons(toolbar,
theme_browser_icons,
option_toolbar_browser);
@@ -817,7 +812,7 @@ struct toolbar *ro_gui_theme_create_toolbar(struct theme_descriptor *descriptor,
*/
if (type == THEME_BROWSER_TOOLBAR) {
toolbar->url_buffer = calloc(1, THEME_URL_MEMORY +
- THEME_THROBBER_MEMORY + THEME_STATUS_MEMORY);
+ THEME_THROBBER_MEMORY);
if (!toolbar->url_buffer) {
LOG(("No memory for calloc()"));
ro_gui_theme_destroy_toolbar(toolbar);
@@ -825,8 +820,6 @@ struct toolbar *ro_gui_theme_create_toolbar(struct theme_descriptor *descriptor,
}
toolbar->throbber_buffer = toolbar->url_buffer +
THEME_URL_MEMORY;
- toolbar->status_buffer = toolbar->throbber_buffer +
- THEME_THROBBER_MEMORY;
sprintf(toolbar->throbber_buffer, "throbber0");
}
@@ -899,12 +892,6 @@ bool ro_gui_theme_update_toolbar(struct theme_descriptor *descriptor,
(toolbar->type == THEME_COOKIES_EDIT_TOOLBAR))
theme_toolbar_window.work_flags |= (wimp_BUTTON_CLICK_DRAG <<
wimp_ICON_BUTTON_TYPE_SHIFT);
- theme_toolbar_window.flags &= ~wimp_WINDOW_AUTO_REDRAW;
- theme_toolbar_window.flags |= wimp_WINDOW_NO_BOUNDS;
- theme_toolbar_window.xmin = 1;
- theme_toolbar_window.ymin = 1;
- theme_toolbar_window.extent.x1 = 16384;
- theme_toolbar_window.extent.y1 = 16384;
theme_toolbar_window.sprite_area = sprite_area;
if (toolbar->toolbar_handle) {
error = xwimp_delete_window(toolbar->toolbar_handle);
@@ -1094,101 +1081,12 @@ bool ro_gui_theme_update_toolbar(struct theme_descriptor *descriptor,
if (toolbar->parent_handle)
ro_gui_theme_attach_toolbar(toolbar, toolbar->parent_handle);
- /* Recreate the status window
- */
- if (toolbar->type == THEME_BROWSER_TOOLBAR) {
- /* Delete the old window and create a new one
- */
- if (toolbar->status_handle) {
- xwimp_delete_window(toolbar->status_handle);
- toolbar->status_handle = NULL;
- ro_gui_wimp_event_finalise(toolbar->status_handle);
- }
- if (toolbar->descriptor)
- theme_toolbar_window.work_bg =
- toolbar->descriptor->status_background;
- else
- theme_toolbar_window.work_bg =
- wimp_COLOUR_VERY_LIGHT_GREY;
- theme_toolbar_window.flags &= ~wimp_WINDOW_NO_BOUNDS;
- theme_toolbar_window.flags |= wimp_WINDOW_AUTO_REDRAW;
- theme_toolbar_window.xmin = 12;
- theme_toolbar_window.ymin =
- ro_get_hscroll_height((wimp_w)0) - 4;
- theme_toolbar_window.extent.y1 = theme_toolbar_window.ymin;
- error = xwimp_create_window(&theme_toolbar_window,
- &toolbar->status_handle);
- if (error) {
- LOG(("xwimp_create_window: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return false;
- }
- ro_gui_wimp_event_set_user_data(toolbar->status_handle, toolbar);
- ro_gui_wimp_event_register_mouse_click(toolbar->status_handle,
- ro_gui_status_click);
- ro_gui_wimp_event_register_open_window(toolbar->status_handle,
- ro_gui_theme_status_open);
- ro_gui_wimp_event_set_help_prefix(toolbar->status_handle, "HelpStatus");
-
- /* Create the status resize icon
- */
- new_icon.w = toolbar->status_handle;
- new_icon.icon.flags = wimp_ICON_TEXT | wimp_ICON_INDIRECTED |
- wimp_ICON_BORDER | wimp_ICON_FILLED |
- (wimp_COLOUR_LIGHT_GREY <<
- wimp_ICON_BG_COLOUR_SHIFT) |
- (wimp_BUTTON_CLICK_DRAG <<
- wimp_ICON_BUTTON_TYPE_SHIFT);
- new_icon.icon.data.indirected_text.text =
- theme_null_text_string;
- new_icon.icon.data.indirected_text.validation =
- theme_resize_validation;
- new_icon.icon.data.indirected_text.size = 1;
- error = xwimp_create_icon(&new_icon, 0);
- if (error) {
- LOG(("xwimp_create_icon: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return false;
- }
-
- /* And finally our status display icon
- */
- new_icon.icon.flags = wimp_ICON_TEXT | wimp_ICON_INDIRECTED |
- wimp_ICON_VCENTRED;
- if (toolbar->descriptor)
- new_icon.icon.flags |=
- (toolbar->descriptor->status_foreground <<
- wimp_ICON_FG_COLOUR_SHIFT) |
- (toolbar->descriptor->status_background <<
- wimp_ICON_BG_COLOUR_SHIFT);
- else
- new_icon.icon.flags |=
- (wimp_COLOUR_BLACK <<
- wimp_ICON_FG_COLOUR_SHIFT) |
- (wimp_COLOUR_VERY_LIGHT_GREY <<
- wimp_ICON_BG_COLOUR_SHIFT);
- new_icon.icon.data.indirected_text.text =
- toolbar->status_buffer;
- new_icon.icon.data.indirected_text.validation =
- theme_null_text_string;
- new_icon.icon.data.indirected_text.size = THEME_STATUS_MEMORY;
- error = xwimp_create_icon(&new_icon, 0);
- if (error) {
- LOG(("xwimp_create_icon: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return false;
- }
- }
/* Force a re-processing of the toolbar
*/
width = toolbar->toolbar_current;
toolbar->reformat_buttons = true;
toolbar->toolbar_current = -1;
- toolbar->status_current = -1;
ro_gui_theme_process_toolbar(toolbar, width);
/* Keep menus up to date etc
@@ -1321,10 +1219,7 @@ bool ro_gui_theme_process_toolbar(struct toolbar *toolbar, int width) {
wimp_window_state state;
int height = -1;
int throbber_x = -1;
- int status_max;
int left_edge, right_edge, bottom_edge;
- int status_size = 0;
- int status_height = 0;
if (!toolbar) return false;
int old_height = toolbar->height;
int old_width = toolbar->toolbar_current;
@@ -1343,9 +1238,7 @@ bool ro_gui_theme_process_toolbar(struct toolbar *toolbar, int width) {
/* find the parent window handle if we need to process the status
* window, or the caller has requested we calculate the width ourself */
- if ((toolbar->parent_handle) && ((width == -1) ||
- ((toolbar->status_handle) &&
- (toolbar->display_status)))) {
+ if ((toolbar->parent_handle) && (width == -1)) {
outline.w = toolbar->parent_handle;
error = xwimp_get_window_outline(&outline);
if (error) {
@@ -1620,87 +1513,6 @@ bool ro_gui_theme_process_toolbar(struct toolbar *toolbar, int width) {
}
toolbar->reformat_buttons = false;
}
-
- /* Reformat the status bar
- */
- if ((toolbar->status_handle) && (toolbar->parent_handle)) {
- /* Get the current state
- */
- state.w = toolbar->status_handle;
- error = xwimp_get_window_state(&state);
- if (error) {
- LOG(("xwimp_get_window_state: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return false;
- }
-
- /* Open or close the window
- */
- if ((!toolbar->display_status) || (!parent_hscroll)) {
- if (state.flags & wimp_WINDOW_OPEN)
- xwimp_close_window(toolbar->status_handle);
- } else {
- /* Get the status bar height/width
- */
- status_max = width - ro_get_vscroll_width(toolbar->parent_handle);
- status_size = (status_max * toolbar->status_width) / 10000;
- if (status_size < 12) status_size = 12;
- status_height = ro_get_hscroll_height(toolbar->parent_handle) - 2;
-
- /* Update the extent
- */
- extent.x0 = 0;
- extent.y0 = 0;
- extent.x1 = status_max;
- extent.y1 = status_height - 2;
- xwimp_set_extent(toolbar->status_handle, &extent);
-
- /* Re-open the window
- */
- state.w = toolbar->status_handle;
- state.xscroll = 0;
- state.yscroll = 0;
- state.next = wimp_TOP;
- state.visible.x0 = outline.outline.x0;
- state.visible.x1 = outline.outline.x0 + status_size;
- state.visible.y0 = outline.outline.y0 - status_height;
- state.visible.y1 = outline.outline.y0 - 2;
- xwimp_open_window_nested((wimp_open *)&state,
- toolbar->parent_handle,
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_XORIGIN_SHIFT |
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_YORIGIN_SHIFT |
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_LS_EDGE_SHIFT |
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_BS_EDGE_SHIFT |
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_RS_EDGE_SHIFT |
- wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
- << wimp_CHILD_TS_EDGE_SHIFT);
-
- /* Resize and redraw the icons
- */
- status_size = state.visible.x1 - state.visible.x0;
- if (status_size != toolbar->status_current) {
- xwimp_resize_icon(toolbar->status_handle, ICON_STATUS_TEXT,
- 0, 0,
- status_size - 12, status_height - 2);
- xwimp_resize_icon(toolbar->status_handle, ICON_STATUS_RESIZE,
- status_size - 12, 0,
- status_size, status_height - 2);
- xwimp_force_redraw(toolbar->status_handle,
- toolbar->status_current - 12, 0,
- status_size - 12, status_height - 2);
- xwimp_force_redraw(toolbar->status_handle,
- status_size - 12, 0,
- status_size, status_height - 2);
- toolbar->status_current = status_size;
- }
- }
- }
return true;
}
@@ -1728,11 +1540,6 @@ void ro_gui_theme_destroy_toolbar(struct toolbar *toolbar) {
xwimp_delete_window(toolbar->toolbar_handle);
ro_gui_wimp_event_finalise(toolbar->toolbar_handle);
}
- if (toolbar->status_handle) {
- xwimp_delete_window(toolbar->status_handle);
- ro_gui_wimp_event_finalise(toolbar->status_handle);
-
- }
/* Free the Wimp buffer (we only created one for them all)
*/
free(toolbar->url_buffer);
@@ -2388,46 +2195,6 @@ void ro_gui_theme_set_help_prefix(struct toolbar *toolbar) {
}
}
-void ro_gui_theme_status_open(wimp_open *open) {
- struct toolbar *toolbar = (struct toolbar *)ro_gui_wimp_event_get_user_data(open->w);
- os_error *error;
- wimp_outline outline;
- wimp_w parent = NULL;
- int parent_size, status_size;
-
- /* update the window size */
- error = xwimp_open_window(open);
- if (error) {
- LOG(("xwimp_open_window: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
-
- /* get the width to scale to */
- parent = toolbar->parent_handle;
- outline.w = toolbar->parent_handle;
- error = xwimp_get_window_outline(&outline);
- if (error) {
- LOG(("xwimp_get_window_outline: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return;
- }
- parent_size = outline.outline.x1 - outline.outline.x0 -
- ro_get_vscroll_width(parent) - 2;
-
- /* get the current size */
- status_size = open->visible.x1 - open->visible.x0;
- if (status_size <= 12)
- status_size = 0;
-
- /* Store the new size
- */
- toolbar->status_width = (10000 * status_size) / parent_size;
- if (toolbar->status_width > 10000) toolbar->status_width = 10000;
- ro_gui_theme_process_toolbar(toolbar, -1);
-}
-
int ro_gui_theme_height_change(struct toolbar *toolbar) {
int height, cur_height;
diff --git a/riscos/theme.h b/riscos/theme.h
index ab27de57a..40e6d2340 100644
--- a/riscos/theme.h
+++ b/riscos/theme.h
@@ -99,23 +99,18 @@ struct theme {
};
struct toolbar {
- int status_width; /**< status width percentage * 100 */
bool display_buttons; /**< display standard buttons */
bool display_url; /**< display URL bar (if applicable) */
bool display_throbber; /**< display throbber (if applicable) */
- bool display_status; /**< display status bar (if applicable) */
- int status_current; /**< the size of the status window in OS units */
int toolbar_current; /**< the size of the toolbar window in OS units */
int height; /**< vertical extent of the toolbar (read only) */
int max_height; /**< allowed vertical extent (read only) */
int old_height; /**< height on last test (read only) */
wimp_w toolbar_handle; /**< toolbar window handle */
- wimp_w status_handle; /**< status window handle (if applicable) */
wimp_w parent_handle; /**< parent window handle (read only) */
bool reformat_buttons; /**< buttons need reformatting */
char *url_buffer; /**< buffer for status text (read only) */
char *throbber_buffer; /**< buffer for status text (read only) */
- char *status_buffer; /**< buffer for status text (read only) */
struct toolbar_icon *icon; /**< first toolbar icon (read only) */
struct toolbar_icon *suggest; /**< suggestion toolbar icon (read only) */
struct theme_descriptor *descriptor; /**< theme descriptor (read only) */
diff --git a/riscos/window.c b/riscos/window.c
index d3b52ff3b..d906174ab 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -32,6 +32,7 @@
#include "netsurf/content/urldb.h"
#include "netsurf/css/css.h"
#include "netsurf/desktop/browser.h"
+#include "netsurf/desktop/frames.h"
#include "netsurf/desktop/knockout.h"
#include "netsurf/desktop/plotters.h"
#include "netsurf/desktop/textinput.h"
@@ -44,6 +45,7 @@
#include "netsurf/riscos/dialog.h"
#include "netsurf/riscos/global_history.h"
#include "netsurf/riscos/gui.h"
+#include "netsurf/riscos/gui/status_bar.h"
#include "netsurf/riscos/menus.h"
#include "netsurf/riscos/options.h"
#include "netsurf/riscos/save.h"
@@ -168,6 +170,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
}
g->bw = bw;
g->toolbar = 0;
+ g->status_bar = 0;
g->reformat_pending = false;
g->old_width = 0;
g->old_height = 0;
@@ -192,7 +195,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
window.visible.y1 = 64;
open_centred = false;
} else if (clone && clone->window && option_window_size_clone) {
- state.w = clone->window->window;
+ for (top = clone; top->parent; top = top->parent);
+ state.w = top->window->window;
error = xwimp_get_window_state(&state);
if (error) {
LOG(("xwimp_get_window_state: 0x%x: %s",
@@ -335,8 +339,9 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
window_list = g;
window_count++;
- /* Add in a toolbar */
+ /* Add in a toolbar and status bar */
if (bw->browser_window_type == BROWSER_WINDOW_NORMAL) {
+ g->status_bar = ro_gui_status_bar_create(g->window, option_toolbar_status_width);
g->toolbar = ro_gui_theme_create_toolbar(NULL, THEME_BROWSER_TOOLBAR);
ro_gui_theme_attach_toolbar(g->toolbar, g->window);
} else {
@@ -922,11 +927,8 @@ void gui_window_update_extent(struct gui_window *g)
void gui_window_set_status(struct gui_window *g, const char *text)
{
- if ((!g->toolbar) || (!g->toolbar->status_handle))
- return;
-
- ro_gui_set_icon_string(g->toolbar->status_handle,
- ICON_STATUS_TEXT, text);
+ if (g->status_bar)
+ ro_gui_status_bar_set_text(g->status_bar, text);
}
@@ -1841,6 +1843,8 @@ void ro_gui_window_open(wimp_open *open)
}
/* update the toolbar */
+ if (g->status_bar)
+ ro_gui_status_bar_resize(g->status_bar);
if (g->toolbar) {
ro_gui_theme_process_toolbar(g->toolbar, -1);
/* second resize updates to the new URL bar width */
@@ -2009,23 +2013,6 @@ struct gui_window *ro_gui_toolbar_lookup(wimp_w window)
/**
- * Convert a status bar RISC OS window handle to a gui_window.
- *
- * \param w RISC OS window handle of a status bar
- * \return pointer to a structure if found, 0 otherwise
- */
-
-struct gui_window *ro_gui_status_lookup(wimp_w window)
-{
- struct gui_window *g;
- for (g = window_list; g; g = g->next)
- if (g->toolbar && g->toolbar->status_handle == window)
- return g;
- return 0;
-}
-
-
-/**
* Handle pointer movements in a browser window.
*
* \param g browser window that the pointer is in
@@ -2200,42 +2187,6 @@ bool ro_gui_toolbar_click(wimp_pointer *pointer)
/**
- * Handle Mouse_Click events in the status bar.
- *
- * \param g browser window that owns the status bar
- * \param pointer details of mouse click
- */
-
-bool ro_gui_status_click(wimp_pointer *pointer)
-{
- struct gui_window *g = ro_gui_status_lookup(pointer->w);
- wimp_drag drag;
- os_error *error;
-
- assert(g);
-
- switch (pointer->i) {
- case ICON_STATUS_RESIZE:
- gui_current_drag_type = GUI_DRAG_STATUS_RESIZE;
- drag.w = pointer->w;
- drag.type = wimp_DRAG_SYSTEM_SIZE;
- drag.initial.x0 = pointer->pos.x;
- drag.initial.x1 = pointer->pos.x;
- drag.initial.y0 = pointer->pos.y;
- drag.initial.y1 = pointer->pos.y;
- error = xwimp_drag_box(&drag);
- if (error) {
- LOG(("xwimp_drag_box: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
- break;
- }
- return true;
-}
-
-
-/**
* Handle Mouse_Click events in a browser window.
*
* \param pointer details of mouse click
@@ -2934,21 +2885,16 @@ void ro_gui_window_clone_options(struct browser_window *new_bw,
/* Set up the toolbar
*/
if (new_gui->toolbar) {
+ new_gui->toolbar->display_buttons = option_toolbar_show_buttons;
+ new_gui->toolbar->display_url = option_toolbar_show_address;
+ new_gui->toolbar->display_throbber = option_toolbar_show_throbber;
if ((old_gui) && (old_gui->toolbar)) {
- new_gui->toolbar->status_width = old_gui->toolbar->status_width;
- new_gui->toolbar->display_status = old_gui->toolbar->display_status;
new_gui->toolbar->display_buttons = old_gui->toolbar->display_buttons;
new_gui->toolbar->display_url = old_gui->toolbar->display_url;
new_gui->toolbar->display_throbber = old_gui->toolbar->display_throbber;
- } else {
- new_gui->toolbar->status_width = option_toolbar_status_width;
- new_gui->toolbar->display_status = option_toolbar_show_status;
- new_gui->toolbar->display_buttons = option_toolbar_show_buttons;
- new_gui->toolbar->display_url = option_toolbar_show_address;
- new_gui->toolbar->display_throbber = option_toolbar_show_throbber;
+ new_gui->toolbar->reformat_buttons = true;
+ ro_gui_theme_process_toolbar(new_gui->toolbar, -1);
}
- new_gui->toolbar->reformat_buttons = true;
- ro_gui_theme_process_toolbar(new_gui->toolbar, -1);
}
}
@@ -2978,12 +2924,12 @@ void ro_gui_window_default_options(struct browser_window *bw) {
/* Set up the toolbar
*/
if (gui->toolbar) {
- option_toolbar_status_width = gui->toolbar->status_width;
- option_toolbar_show_status = gui->toolbar->display_status;
option_toolbar_show_buttons = gui->toolbar->display_buttons;
option_toolbar_show_address = gui->toolbar->display_url;
option_toolbar_show_throbber = gui->toolbar->display_throbber;
}
+ if (gui->status_bar)
+ option_toolbar_status_width = ro_gui_status_bar_get_width(gui->status_bar);
}