summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-05-06 20:37:48 +0000
committerJames Bursa <james@netsurf-browser.org>2004-05-06 20:37:48 +0000
commit7cb9b4d79b078040967e5326615779d7c073b23d (patch)
treedc7d3e9adb473c5f8a9bc1ef87d74b56641d922f
parentc0a4ab450b9802e618bb1e98b46b4a5dbed49c13 (diff)
downloadnetsurf-7cb9b4d79b078040967e5326615779d7c073b23d.tar.gz
netsurf-7cb9b4d79b078040967e5326615779d7c073b23d.tar.bz2
[project @ 2004-05-06 20:37:48 by bursa]
Remove obsolete theme files. Hide some unimplemented toolbar icons. F2 moves caret to URL bar and clears it to "www.". Simplify some of the toolbar code. Fix menu-related crash (reported by Jerome Mathevet). svn path=/import/netsurf/; revision=836
-rw-r--r--!NetSurf/Themes/Default/Preview,ff9bin28728 -> 0 bytes
-rw-r--r--!NetSurf/Themes/Default/Templates,fecbin700 -> 0 bytes
-rw-r--r--riscos/dialog.c17
-rw-r--r--riscos/menus.c22
-rw-r--r--riscos/toolbar.c109
-rw-r--r--riscos/toolbar.h30
-rw-r--r--riscos/window.c9
7 files changed, 95 insertions, 92 deletions
diff --git a/!NetSurf/Themes/Default/Preview,ff9 b/!NetSurf/Themes/Default/Preview,ff9
deleted file mode 100644
index ed97b6311..000000000
--- a/!NetSurf/Themes/Default/Preview,ff9
+++ /dev/null
Binary files differ
diff --git a/!NetSurf/Themes/Default/Templates,fec b/!NetSurf/Themes/Default/Templates,fec
deleted file mode 100644
index 459d35d60..000000000
--- a/!NetSurf/Themes/Default/Templates,fec
+++ /dev/null
Binary files differ
diff --git a/riscos/dialog.c b/riscos/dialog.c
index ca7dd2763..3e530bdf2 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -632,8 +632,7 @@ void ro_gui_build_theme_menu(void)
continue;
if (info.obj_type != fileswitch_IS_DIR)
continue;
- if (!(file_exists(THEMES_DIR, info.name, "Templates", 0xfec) &&
- file_exists(THEMES_DIR, info.name, "Sprites", 0xff9)))
+ if (!file_exists(THEMES_DIR, info.name, "Sprites", 0xff9))
continue;
theme_menu = xrealloc(theme_menu, wimp_SIZEOF_MENU(i + 1));
@@ -654,7 +653,19 @@ void ro_gui_build_theme_menu(void)
i++;
}
- assert(i != 0);
+ if (i == 0) {
+ theme_menu->entries[0].menu_flags = 0;
+ theme_menu->entries[0].sub_menu = wimp_NO_SUB_MENU;
+ theme_menu->entries[0].icon_flags = wimp_ICON_TEXT |
+ wimp_ICON_FILLED | wimp_ICON_INDIRECTED |
+ (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) |
+ (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT) |
+ wimp_ICON_SHADED;
+ theme_menu->entries[0].data.indirected_text.text = xstrdup("-");
+ theme_menu->entries[0].data.indirected_text.validation = (char*)-1;
+ theme_menu->entries[0].data.indirected_text.size = 2;
+ i = 1;
+ }
entries = i;
theme_menu->entries[0].menu_flags |= wimp_MENU_TITLE_INDIRECTED;
diff --git a/riscos/menus.c b/riscos/menus.c
index cc689e028..7eab07e45 100644
--- a/riscos/menus.c
+++ b/riscos/menus.c
@@ -43,7 +43,7 @@ static void ro_gui_menu_prepare_images(void);
static void ro_gui_menu_prepare_toolbars(void);
static void ro_gui_menu_pageinfo(wimp_message_menu_warning *warning);
static void ro_gui_menu_objectinfo(wimp_message_menu_warning *warning);
-static struct box *find_object_box(void);
+static struct box *ro_gui_menu_find_object_box(void);
static wimp_menu *current_menu;
static int current_menu_x, current_menu_y;
@@ -343,15 +343,11 @@ void ro_gui_create_menu(wimp_menu *menu, int x, int y, gui_window *g)
current_menu_x = x;
current_menu_y = y;
current_gui = g;
- if (menu != iconbar_menu) {
- if (find_object_box() == NULL && menu == browser_menu) {
- menu->entries[1].sub_menu = (wimp_menu*)1;
- menu->entries[1].icon_flags |= wimp_ICON_SHADED;
- }
- else if (menu == browser_menu) {
- menu->entries[1].sub_menu = (wimp_menu*)&object_menu;
- menu->entries[1].icon_flags &= ~wimp_ICON_SHADED;
- }
+ if (menu == browser_menu) {
+ if (ro_gui_menu_find_object_box())
+ menu->entries[1].icon_flags &= ~wimp_ICON_SHADED;
+ else
+ menu->entries[1].icon_flags |= wimp_ICON_SHADED;
}
wimp_create_menu(menu, x, y);
}
@@ -656,7 +652,7 @@ void ro_gui_menu_warning(wimp_message_menu_warning *warning)
}
break;
}
- struct box *box = find_object_box();
+ struct box *box = ro_gui_menu_find_object_box();
if (box) {
ro_gui_menu_prepare_save(box->object);
error = xwimp_create_sub_menu((wimp_menu *) dialog_saveas,
@@ -865,7 +861,7 @@ void ro_gui_menu_objectinfo(wimp_message_menu_warning *warning)
const char *target = "-";
const char *mime = "-";
- box = find_object_box();
+ box = ro_gui_menu_find_object_box();
if (box) {
sprintf(icon_buf, "file_%x", ro_content_filetype(box->object));
if (box->object->url) url = box->object->url;
@@ -893,7 +889,7 @@ void ro_gui_menu_objectinfo(wimp_message_menu_warning *warning)
}
}
-struct box *find_object_box(void)
+struct box *ro_gui_menu_find_object_box(void)
{
struct content *c = current_gui->data.browser.bw->current_content;
struct box_selection *boxes = NULL;
diff --git a/riscos/toolbar.c b/riscos/toolbar.c
index 046df40b8..9a42851f1 100644
--- a/riscos/toolbar.c
+++ b/riscos/toolbar.c
@@ -21,6 +21,31 @@
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/log.h"
+
+struct toolbar_icon {
+ /* The desired WIMP icon number (-1 for separator)
+ */
+ int icon_number;
+
+ /* Set to non-zero to display the icon
+ */
+ unsigned int available;
+
+ /* Icon dimensions (OS units)
+ */
+ unsigned int width;
+ unsigned int height;
+
+ /* Icon validation string
+ */
+ char validation[40];
+
+ /* The next icon (linked list)
+ */
+ struct toolbar_icon *next_icon; // Next toolbar icon
+};
+
+
/* A basic window for the toolbar and status
*/
static wimp_window empty_window = {
@@ -53,14 +78,15 @@ static wimp_icon_create empty_icon;
/* Shared URL validation
*/
-static char *url_validation = "Pptr_write\0";
-static char *resize_validation = "R1;Pptr_lr,8,6\0";
-static char *null_text_string = "\0";
+static char url_validation[] = "Pptr_write\0";
+static char resize_validation[] = "R1;Pptr_lr,8,6\0";
+static char null_text_string[] = "\0";
static struct toolbar *ro_toolbar_create_icons(struct toolbar *toolbar, osspriteop_area *sprite_area,
char *url_buffer, char *throbber_buffer);
-static struct toolbar_icon *ro_toolbar_create_icon(osspriteop_area *sprite_area, char *sprite, unsigned int icon);
+static struct toolbar_icon *ro_toolbar_initialise_icon(osspriteop_area *sprite_area,
+ const char *sprite, unsigned int icon);
static struct toolbar_icon *ro_toolbar_create_separator(void);
static void ro_toolbar_destroy_icon(struct toolbar_icon *icon);
static void ro_toolbar_add_icon(struct toolbar *toolbar, struct toolbar_icon *icon);
@@ -89,20 +115,20 @@ struct toolbar *ro_toolbar_create(osspriteop_area *sprite_area, char *url_buffer
/* Load the toolbar icons
*/
if (sprite_area) {
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "back", ICON_TOOLBAR_BACK));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "forward", ICON_TOOLBAR_FORWARD));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "stop", ICON_TOOLBAR_STOP));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "reload", ICON_TOOLBAR_RELOAD));
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "back", ICON_TOOLBAR_BACK));
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "forward", ICON_TOOLBAR_FORWARD));
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "stop", ICON_TOOLBAR_STOP));
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "reload", ICON_TOOLBAR_RELOAD));
ro_toolbar_add_icon(toolbar, ro_toolbar_create_separator());
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "home", ICON_TOOLBAR_HOME));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "up", ICON_TOOLBAR_UP));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "search", ICON_TOOLBAR_SEARCH));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "history", ICON_TOOLBAR_HISTORY));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "scale", ICON_TOOLBAR_SCALE));
+/* ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "home", ICON_TOOLBAR_HOME)); */
+/* ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "up", ICON_TOOLBAR_UP)); */
+/* ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "search", ICON_TOOLBAR_SEARCH)); */
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "history", ICON_TOOLBAR_HISTORY));
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "scale", ICON_TOOLBAR_SCALE));
ro_toolbar_add_icon(toolbar, ro_toolbar_create_separator());
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "mark", ICON_TOOLBAR_BOOKMARK));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "save", ICON_TOOLBAR_SAVE));
- ro_toolbar_add_icon(toolbar, ro_toolbar_create_icon(sprite_area, "print", ICON_TOOLBAR_PRINT));
+/* ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "mark", ICON_TOOLBAR_BOOKMARK)); */
+ ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "save", ICON_TOOLBAR_SAVE));
+/* ro_toolbar_add_icon(toolbar, ro_toolbar_initialise_icon(sprite_area, "print", ICON_TOOLBAR_PRINT)); */
}
/* Set the sprite area
@@ -110,7 +136,7 @@ struct toolbar *ro_toolbar_create(osspriteop_area *sprite_area, char *url_buffer
if (sprite_area) {
empty_window.sprite_area = sprite_area;
} else {
- empty_window.sprite_area = 1;
+ empty_window.sprite_area = (osspriteop_area *) 1;
}
/* Create the basic windows
@@ -241,7 +267,7 @@ static struct toolbar *ro_toolbar_create_icons(struct toolbar *toolbar, ossprite
if (sprite_area) {
empty_icon.icon.data.indirected_sprite.area = sprite_area;
} else {
- empty_icon.icon.data.indirected_sprite.area = 1;
+ empty_icon.icon.data.indirected_sprite.area = (osspriteop_area *) 1;
}
empty_icon.icon.data.indirected_sprite.size = 12;
if (xwimp_create_icon(&empty_icon, &icon_handle)) {
@@ -310,41 +336,31 @@ void ro_toolbar_destroy(struct toolbar *toolbar) {
* \param sprite the requested sprite
* \param icon the icon number
*/
-static struct toolbar_icon *ro_toolbar_create_icon(osspriteop_area *sprite_area, char *sprite, unsigned int icon) {
+struct toolbar_icon *ro_toolbar_initialise_icon(osspriteop_area *sprite_area,
+ const char *sprite, unsigned int icon) {
struct toolbar_icon *current_icon;
- int i;
- int sprite_name_size = 0;
os_coord dimensions;
char name[16];
osbool mask;
os_mode mode;
- unsigned int validation_length;
+ os_error *error;
- /* Check if the sprite exists
- */
- for (i = 1; i <= sprite_area->sprite_count; i++) {
- if (!xosspriteop_return_name(osspriteop_USER_AREA,
- sprite_area, name, 16, i, &sprite_name_size)) {
- name[sprite_name_size] = '\0';
- if (strncmp(name, sprite, sprite_name_size + 1) == 0) {
-
- /* Yes, a while loop would be better...
- */
- goto ro_toolbar_create_icon_found;
- }
- }
- }
-
- /* No icon found
- */
- return NULL;
-ro_toolbar_create_icon_found:
+ strcpy(name, sprite);
/* Get the sprite details
*/
- xosspriteop_read_sprite_info(osspriteop_USER_AREA,
- sprite_area, (osspriteop_id)name,
+ error = xosspriteop_read_sprite_info(osspriteop_USER_AREA,
+ sprite_area, (osspriteop_id) name,
&dimensions.x, &dimensions.y, &mask, &mode);
+ if (error && error->errnum == error_SPRITE_OP_DOESNT_EXIST) {
+ /** \todo inform user */
+ return NULL;
+ } else if (error) {
+ LOG(("xosspriteop_read_sprite_info: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user(error->errmess);
+ return NULL;
+ }
/* Create an icon
*/
@@ -355,12 +371,6 @@ ro_toolbar_create_icon_found:
there is a pushed variant as RISC OS happily ignores it if it doesn't
exist.
*/
- validation_length = sprite_name_size * 2 + 8;
- current_icon->validation = malloc(validation_length);
- if (!current_icon->validation) {
- free(current_icon);
- return NULL;
- }
sprintf(current_icon->validation, "R5;S%s,p%s", name, name);
/* We want eig factors rather than pixels
@@ -407,7 +417,6 @@ static struct toolbar_icon *ro_toolbar_create_separator(void) {
* \param icon the icon to destroy
*/
static void ro_toolbar_destroy_icon(struct toolbar_icon *icon) {
- if (!icon->icon_number >= 0) free(icon->validation);
free(icon);
}
diff --git a/riscos/toolbar.h b/riscos/toolbar.h
index f54bde320..c7c94cf94 100644
--- a/riscos/toolbar.h
+++ b/riscos/toolbar.h
@@ -15,29 +15,7 @@
#include "oslib/wimp.h"
-struct toolbar_icon {
- /* The desired WIMP icon number (-1 for separator)
- */
- int icon_number;
-
- /* Set to non-zero to display the icon
- */
- unsigned int available;
-
- /* Icon dimensions (OS units)
- */
- unsigned int width;
- unsigned int height;
-
- /* Icon validation, or NULL if this icon is unavailable
- */
- unsigned char* validation;
-
- /* The next icon (linked list)
- */
- struct toolbar_icon *next_icon; // Next toolbar icon
-};
-
+struct toolbar_icon;
struct toolbar {
@@ -51,7 +29,7 @@ struct toolbar {
int status_old_width; // Old status width
int width; // Toolbar width on last reformat
unsigned int height; // Toolbar height on last reformat
-
+
/* General options
*/
unsigned int throbber_width; // Throbber width (0 = unavaiable)
@@ -61,11 +39,11 @@ struct toolbar {
unsigned int url_bar; // Show URL bar?
unsigned int throbber; // Show Throbber?
unsigned int status_width; // Width of status window
-
+
/* The first toolbar icon
*/
struct toolbar_icon *icon;
-
+
/* Window handles
*/
wimp_w toolbar_handle;
diff --git a/riscos/window.c b/riscos/window.c
index 30deef0dd..f711c8187 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -775,6 +775,15 @@ bool ro_gui_window_keypress(gui_window *g, int key, bool toolbar)
gui_window_redraw_window(g);
return true;
+ case wimp_KEY_F2:
+ if (!g->data.browser.toolbar)
+ return false;
+ ro_gui_set_icon_string(g->data.browser.toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL, "www.");
+ xwimp_set_caret_position(g->data.browser.toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL, 0, 0, -1, 4);
+ return true;
+
case wimp_KEY_CONTROL + wimp_KEY_F2: /* Close window. */
browser_window_destroy(g->data.browser.bw
#ifdef WITH_FRAMES