r11176 stevef - in /branches/stevef/toolbars/riscos: Makefile.target cookies.c cookies.h global_history.c global_history.h gui.c help.c hotlist.c hotlist.h iconbar.c iconbar.h menus.c menus.h treeview.c wimp_event.c wimp_event.h window.c window.h
by netsurf@semichrome.net
Author: stevef
Date: Fri Dec 31 12:05:55 2010
New Revision: 11176
URL: http://source.netsurf-browser.org?rev=11176&view=rev
Log:
Begin to rationalise menu handling code.
Added:
branches/stevef/toolbars/riscos/iconbar.c
branches/stevef/toolbars/riscos/iconbar.h
branches/stevef/toolbars/riscos/window.h
Modified:
branches/stevef/toolbars/riscos/Makefile.target
branches/stevef/toolbars/riscos/cookies.c
branches/stevef/toolbars/riscos/cookies.h
branches/stevef/toolbars/riscos/global_history.c
branches/stevef/toolbars/riscos/global_history.h
branches/stevef/toolbars/riscos/gui.c
branches/stevef/toolbars/riscos/help.c
branches/stevef/toolbars/riscos/hotlist.c
branches/stevef/toolbars/riscos/hotlist.h
branches/stevef/toolbars/riscos/menus.c
branches/stevef/toolbars/riscos/menus.h
branches/stevef/toolbars/riscos/treeview.c
branches/stevef/toolbars/riscos/wimp_event.c
branches/stevef/toolbars/riscos/wimp_event.h
branches/stevef/toolbars/riscos/window.c
Modified: branches/stevef/toolbars/riscos/Makefile.target
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/Makefil...
==============================================================================
--- branches/stevef/toolbars/riscos/Makefile.target (original)
+++ branches/stevef/toolbars/riscos/Makefile.target Fri Dec 31 12:05:55 2010
@@ -68,9 +68,9 @@
S_RISCOS := 401login.c artworks.c assert.c awrender.s bitmap.c buffer.c \
cookies.c configure.c debugwin.c dialog.c download.c draw.c \
filetype.c font.c global_history.c gui.c help.c history.c \
- hotlist.c image.c menus.c message.c palettes.c plotters.c \
- plugin.c print.c query.c save.c save_draw.c save_pdf.c \
- schedule.c search.c searchweb.c sprite.c sslcert.c \
+ hotlist.c iconbar.c image.c menus.c message.c palettes.c \
+ plotters.c plugin.c print.c query.c save.c save_draw.c \
+ save_pdf.c schedule.c search.c searchweb.c sprite.c sslcert.c \
textarea.c textselection.c theme.c theme_install.c thumbnail.c \
toolbar.c treeview.c ucstables.c uri.c url_complete.c \
url_protocol.c url_suggest.c wimp.c wimp_event.c window.c \
Modified: branches/stevef/toolbars/riscos/cookies.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/cookies...
==============================================================================
--- branches/stevef/toolbars/riscos/cookies.c (original)
+++ branches/stevef/toolbars/riscos/cookies.c Fri Dec 31 12:05:55 2010
@@ -201,9 +201,12 @@
*
* \param window The window owning the menu.
* \param *menu The menu about to be opened.
- */
-
-void ro_gui_cookies_menu_prepare(wimp_w window, wimp_menu *menu)
+ * \param *pointer Pointer to the relevant wimp event block, or
+ * NULL for an Adjust click.
+ */
+
+void ro_gui_cookies_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer)
{
bool selection;
Modified: branches/stevef/toolbars/riscos/cookies.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/cookies...
==============================================================================
--- branches/stevef/toolbars/riscos/cookies.h (original)
+++ branches/stevef/toolbars/riscos/cookies.h Fri Dec 31 12:05:55 2010
@@ -32,7 +32,8 @@
bool ro_gui_cookies_check_menu(wimp_menu *menu);
bool ro_gui_cookies_toolbar_click(wimp_pointer *pointer);
-void ro_gui_cookies_menu_prepare(wimp_w window, wimp_menu *menu);
+void ro_gui_cookies_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer);
bool ro_gui_cookies_menu_select(wimp_w window, wimp_menu *menu,
wimp_selection *selection, menu_action action);
void ro_gui_cookies_menu_warning(wimp_w window, wimp_menu *menu,
Modified: branches/stevef/toolbars/riscos/global_history.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/global_...
==============================================================================
--- branches/stevef/toolbars/riscos/global_history.c (original)
+++ branches/stevef/toolbars/riscos/global_history.c Fri Dec 31 12:05:55 2010
@@ -214,9 +214,12 @@
*
* \param window The window owning the menu.
* \param *menu The menu about to be opened.
- */
-
-void ro_gui_global_history_menu_prepare(wimp_w window, wimp_menu *menu)
+ * \param *pointer Pointer to the relevant wimp event block, or
+ * NULL for an Adjust click.
+ */
+
+void ro_gui_global_history_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer)
{
bool selection;
Modified: branches/stevef/toolbars/riscos/global_history.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/global_...
==============================================================================
--- branches/stevef/toolbars/riscos/global_history.h (original)
+++ branches/stevef/toolbars/riscos/global_history.h Fri Dec 31 12:05:55 2010
@@ -34,7 +34,8 @@
bool ro_gui_global_history_check_menu(wimp_menu *menu);
bool ro_gui_global_history_toolbar_click(wimp_pointer *pointer);
-void ro_gui_global_history_menu_prepare(wimp_w window, wimp_menu *menu);
+void ro_gui_global_history_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer);
bool ro_gui_global_history_menu_select(wimp_w window, wimp_menu *menu,
wimp_selection *selection, menu_action action);
void ro_gui_global_history_menu_warning(wimp_w window, wimp_menu *menu,
Modified: branches/stevef/toolbars/riscos/gui.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/gui.c?r...
==============================================================================
--- branches/stevef/toolbars/riscos/gui.c (original)
+++ branches/stevef/toolbars/riscos/gui.c Fri Dec 31 12:05:55 2010
@@ -74,6 +74,7 @@
#include "riscos/gui.h"
#include "riscos/help.h"
#include "riscos/hotlist.h"
+#include "riscos/iconbar.h"
#include "riscos/menus.h"
#include "riscos/message.h"
#include "riscos/options.h"
@@ -94,6 +95,7 @@
#include "riscos/wimp.h"
#include "riscos/wimp_event.h"
#include "riscos/wimputils.h"
+#include "riscos/window.h"
#include "utils/filename.h"
#include "utils/log.h"
#include "utils/messages.h"
@@ -250,7 +252,6 @@
static void ro_gui_create_dirs(void);
static void ro_gui_create_dir(char *path);
static void ro_gui_choose_language(void);
-static void ro_gui_icon_bar_create(void);
static void ro_gui_signal(int sig);
static void ro_gui_cleanup(void);
static void ro_gui_handle_event(wimp_event_no event, wimp_block *block);
@@ -258,7 +259,6 @@
static void ro_gui_close_window_request(wimp_close *close);
static void ro_gui_pointer_leaving_window(wimp_leaving *leaving);
static void ro_gui_pointer_entering_window(wimp_entering *entering);
-static bool ro_gui_icon_bar_click(wimp_pointer *pointer);
static void ro_gui_check_resolvers(void);
static void ro_gui_drag_end(wimp_dragged *drag);
static void ro_gui_keypress(wimp_key *key);
@@ -480,12 +480,14 @@
ro_gui_query_init();
/* Initialise the history subsystem */
ro_gui_history_init();
+ /* Initialise browser windows */
+ ro_gui_window_initialise();
/* Done with the templates file */
wimp_close_template();
- /* Create Iconbar icon */
- ro_gui_icon_bar_create();
+ /* Create Iconbar icon and menus */
+ ro_gui_iconbar_initialise();
/* Finally, check Inet$Resolvers for sanity */
ro_gui_check_resolvers();
@@ -618,31 +620,6 @@
if (is_dir(path))
return lang;
return "en";
-}
-
-
-/**
- * Create an iconbar icon.
- */
-
-void ro_gui_icon_bar_create(void)
-{
- os_error *error;
-
- wimp_icon_create icon = {
- wimp_ICON_BAR_RIGHT,
- { { 0, 0, 68, 68 },
- wimp_ICON_SPRITE | wimp_ICON_HCENTRED | wimp_ICON_VCENTRED |
- (wimp_BUTTON_CLICK << wimp_ICON_BUTTON_TYPE_SHIFT),
- { "!netsurf" } } };
- error = xwimp_create_icon(&icon, 0);
- if (error) {
- LOG(("xwimp_create_icon: 0x%x: %s",
- error->errnum, error->errmess));
- die(error->errmess);
- }
- ro_gui_wimp_event_register_mouse_click(wimp_ICON_BAR,
- ro_gui_icon_bar_click);
}
@@ -1231,43 +1208,6 @@
ro_gui_cookies_check_window(gui_track_wimp_w);
break;
}
-}
-
-
-/**
- * Handle Mouse_Click events on the iconbar icon.
- */
-
-bool ro_gui_icon_bar_click(wimp_pointer *pointer)
-{
- char url[80];
- int key_down = 0;
-
- if (pointer->buttons == wimp_CLICK_MENU) {
- ro_gui_menu_create(iconbar_menu, pointer->pos.x,
- 96 + iconbar_menu_height, wimp_ICON_BAR,
- true);
-
- } else if (pointer->buttons == wimp_CLICK_SELECT) {
- if (option_homepage_url && option_homepage_url[0]) {
- browser_window_create(option_homepage_url, NULL, 0,
- true, false);
- } else {
- snprintf(url, sizeof url,
- "file:///<NetSurf$Dir>/Docs/welcome/index_%s",
- option_language);
- browser_window_create(url, NULL, 0, true, false);
- }
-
- } else if (pointer->buttons == wimp_CLICK_ADJUST) {
- xosbyte1(osbyte_SCAN_KEYBOARD, 0 ^ 0x80, 0, &key_down);
- if (key_down == 0)
- ro_gui_menu_handle_action(pointer->w, HOTLIST_SHOW,
- false);
- else
- ro_gui_debugwin_open();
- }
- return true;
}
Modified: branches/stevef/toolbars/riscos/help.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/help.c?...
==============================================================================
--- branches/stevef/toolbars/riscos/help.c (original)
+++ branches/stevef/toolbars/riscos/help.c Fri Dec 31 12:05:55 2010
@@ -33,11 +33,13 @@
#include "riscos/gui.h"
#include "riscos/hotlist.h"
#include "riscos/help.h"
+#include "riscos/iconbar.h"
#include "riscos/menus.h"
#include "riscos/options.h"
#include "riscos/treeview.h"
#include "riscos/wimp.h"
#include "riscos/wimp_event.h"
+#include "riscos/window.h"
#include "utils/messages.h"
#include "utils/log.h"
#include "utils/utf8.h"
@@ -170,9 +172,9 @@
return;
/* get the menu prefix */
- if (current_menu == iconbar_menu)
+ if (ro_gui_iconbar_check_menu(current_menu))
sprintf(message_token, "HelpIconMenu");
- else if (current_menu == browser_menu)
+ else if (ro_gui_window_check_menu(current_menu))
sprintf(message_token, "HelpBrowserMenu");
else if (ro_gui_hotlist_check_menu(current_menu))
sprintf(message_token, "HelpHotlistMenu");
Modified: branches/stevef/toolbars/riscos/hotlist.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/hotlist...
==============================================================================
--- branches/stevef/toolbars/riscos/hotlist.c (original)
+++ branches/stevef/toolbars/riscos/hotlist.c Fri Dec 31 12:05:55 2010
@@ -234,9 +234,12 @@
*
* \param window The window owning the menu.
* \param *menu The menu about to be opened.
- */
-
-void ro_gui_hotlist_menu_prepare(wimp_w window, wimp_menu *menu)
+ * \param *pointer Pointer to the relevant wimp event block, or
+ * NULL for an Adjust click.
+ */
+
+void ro_gui_hotlist_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer)
{
bool selection;
Modified: branches/stevef/toolbars/riscos/hotlist.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/hotlist...
==============================================================================
--- branches/stevef/toolbars/riscos/hotlist.h (original)
+++ branches/stevef/toolbars/riscos/hotlist.h Fri Dec 31 12:05:55 2010
@@ -33,7 +33,8 @@
bool ro_gui_hotlist_check_window(wimp_w window);
bool ro_gui_hotlist_check_menu(wimp_menu *menu);
bool ro_gui_hotlist_toolbar_click(wimp_pointer *pointer);
-void ro_gui_hotlist_menu_prepare(wimp_w window, wimp_menu *menu);
+void ro_gui_hotlist_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer);
bool ro_gui_hotlist_menu_select(wimp_w window, wimp_menu *menu,
wimp_selection *selection, menu_action action);
void ro_gui_hotlist_menu_warning(wimp_w window, wimp_menu *menu,
Added: branches/stevef/toolbars/riscos/iconbar.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/iconbar...
==============================================================================
--- branches/stevef/toolbars/riscos/iconbar.c (added)
+++ branches/stevef/toolbars/riscos/iconbar.c Fri Dec 31 12:05:55 2010
@@ -1,0 +1,224 @@
+/*
+ * Copyright 2010 Stephen Fryatt <stevef(a)netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * Iconbar icon and menus (implementation).
+ */
+
+#include <assert.h>
+#include <errno.h>
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <features.h>
+#include "oslib/os.h"
+#include "oslib/osbyte.h"
+#include "oslib/wimp.h"
+#include "riscos/configure.h"
+#include "riscos/cookies.h"
+#include "riscos/dialog.h"
+#include "riscos/global_history.h"
+#include "riscos/hotlist.h"
+#include "riscos/iconbar.h"
+#include "riscos/options.h"
+#include "riscos/wimp_event.h"
+#include "utils/log.h"
+#include "utils/utils.h"
+
+static bool ro_gui_iconbar_click(wimp_pointer *pointer);
+
+static bool ro_gui_iconbar_menu_select(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action);
+static void ro_gui_iconbar_menu_warning(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action);
+
+
+static wimp_menu *ro_gui_iconbar_menu = NULL; /**< Iconbar menu handle */
+
+/**
+ * Initialise the iconbar menus, create an icon and register the necessary
+ * handlers to look after them all.
+ */
+
+void ro_gui_iconbar_initialise(void)
+{
+ os_error *error;
+
+ /* Build the iconbar menu */
+
+ static const struct ns_menu iconbar_definition = {
+ "NetSurf", {
+ { "Info", NO_ACTION, &dialog_info },
+ { "AppHelp", HELP_OPEN_CONTENTS, 0 },
+ { "Open", BROWSER_NAVIGATE_URL, 0 },
+ { "Open.OpenURL", BROWSER_NAVIGATE_URL, &dialog_openurl },
+ { "Open.HotlistShow", HOTLIST_SHOW, 0 },
+ { "Open.HistGlobal", HISTORY_SHOW_GLOBAL, 0 },
+ { "Open.ShowCookies", COOKIES_SHOW, 0 },
+ { "Choices", CHOICES_SHOW, 0 },
+ { "Quit", APPLICATION_QUIT, 0 },
+ {NULL, 0, 0}
+ }
+ };
+ ro_gui_iconbar_menu = ro_gui_menu_define_menu(&iconbar_definition);
+
+ /* Create an iconbar icon. */
+
+ wimp_icon_create icon = {
+ wimp_ICON_BAR_RIGHT,
+ { { 0, 0, 68, 68 },
+ wimp_ICON_SPRITE | wimp_ICON_HCENTRED | wimp_ICON_VCENTRED |
+ (wimp_BUTTON_CLICK << wimp_ICON_BUTTON_TYPE_SHIFT),
+ { "!netsurf" } } };
+ error = xwimp_create_icon(&icon, 0);
+ if (error) {
+ LOG(("xwimp_create_icon: 0x%x: %s",
+ error->errnum, error->errmess));
+ die(error->errmess);
+ }
+
+ /* Register handlers to look after clicks and menu actions. */
+
+ ro_gui_wimp_event_register_mouse_click(wimp_ICON_BAR,
+ ro_gui_iconbar_click);
+
+ ro_gui_wimp_event_register_iconbar_menu(wimp_ICON_BAR,
+ ro_gui_iconbar_menu, NULL,
+ ro_gui_iconbar_menu_select, NULL,
+ ro_gui_iconbar_menu_warning, true);
+}
+
+
+/**
+ * Handle Mouse_Click events on the iconbar icon.
+ *
+ * \param *pointer The wimp event block to be processed.
+ * \return true if the event was handled; else false.
+ */
+
+bool ro_gui_iconbar_click(wimp_pointer *pointer)
+{
+ char url[80];
+ int key_down = 0;
+
+ switch (pointer->buttons) {
+ case wimp_CLICK_SELECT:
+ if (option_homepage_url && option_homepage_url[0]) {
+ browser_window_create(option_homepage_url, NULL, 0,
+ true, false);
+ } else {
+ snprintf(url, sizeof url,
+ "file:///<NetSurf$Dir>/Docs/welcome/index_%s",
+ option_language);
+ browser_window_create(url, NULL, 0, true, false);
+ }
+ break;
+
+ case wimp_CLICK_ADJUST:
+ xosbyte1(osbyte_SCAN_KEYBOARD, 0 ^ 0x80, 0, &key_down);
+ if (key_down == 0)
+ ro_gui_hotlist_open();
+ else
+ ro_gui_debugwin_open();
+ break;
+ }
+
+ return true;
+}
+
+/**
+ * Handle submenu warnings for the iconbar menu
+ *
+ * \param window The window owning the menu.
+ * \param *menu The menu to which the warning applies.
+ * \param *selection The wimp menu selection data.
+ * \param action The selected menu action.
+ */
+
+void ro_gui_iconbar_menu_warning(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action)
+{
+ switch (action) {
+ case BROWSER_NAVIGATE_URL:
+ ro_gui_dialog_prepare_open_url();
+ break;
+ default:
+ break;
+ }
+}
+
+/**
+ * Handle selections from the iconbar menu
+ *
+ * \param window The window owning the menu.
+ * \param *menu The menu from which the selection was made.
+ * \param *selection The wimp menu selection data.
+ * \param action The selected menu action.
+ * \return true if action accepted; else false.
+ */
+
+bool ro_gui_iconbar_menu_select(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action)
+{
+ switch (action) {
+ case HELP_OPEN_CONTENTS:
+ ro_gui_open_help_page("documentation/index");
+ return true;
+ case BROWSER_NAVIGATE_URL:
+ ro_gui_dialog_prepare_open_url();
+ ro_gui_dialog_open_persistent(NULL, dialog_openurl, true);
+ return true;
+ case HOTLIST_SHOW:
+ ro_gui_hotlist_open();
+ return true;
+ case HISTORY_SHOW_GLOBAL:
+ ro_gui_global_history_open();
+ return true;
+ case COOKIES_SHOW:
+ ro_gui_cookies_open();
+ return true;
+ case CHOICES_SHOW:
+ ro_gui_configure_show();
+ return true;
+ case APPLICATION_QUIT:
+ if (ro_gui_prequit()) {
+ LOG(("QUIT in response to user request"));
+ netsurf_quit = true;
+ }
+ return true;
+ default:
+ return false;
+ }
+
+ return false;
+}
+
+/**
+ * Check if a particular menu handle is the iconbar menu
+ *
+ * \param *menu The menu in question.
+ * \return true if this menu is the iconbar menu
+ */
+
+bool ro_gui_iconbar_check_menu(wimp_menu *menu)
+{
+ return (ro_gui_iconbar_menu == menu) ? true : false;
+}
+
Added: branches/stevef/toolbars/riscos/iconbar.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/iconbar...
==============================================================================
--- branches/stevef/toolbars/riscos/iconbar.h (added)
+++ branches/stevef/toolbars/riscos/iconbar.h Fri Dec 31 12:05:55 2010
@@ -1,0 +1,32 @@
+/*
+ * Copyright 2010 Stephen Fryatt <stevef(a)netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * Iconbar icon and menus (interface).
+ */
+
+#include <stdbool.h>
+
+#ifndef _NETSURF_RISCOS_ICONBAR_H_
+#define _NETSURF_RISCOS_ICONBAR_H_
+
+void ro_gui_iconbar_initialise(void);
+bool ro_gui_iconbar_check_menu(wimp_menu *menu);
+
+#endif
+
Modified: branches/stevef/toolbars/riscos/menus.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/menus.c...
==============================================================================
--- branches/stevef/toolbars/riscos/menus.c (original)
+++ branches/stevef/toolbars/riscos/menus.c Fri Dec 31 12:05:55 2010
@@ -127,11 +127,8 @@
wimp_w current_menu_window;
/** Icon that owns the current menu (only valid for popup menus) */
static wimp_i current_menu_icon;
-/** The height of the iconbar menu */
-int iconbar_menu_height = 5 * 44;
/** The available menus */
-wimp_menu *iconbar_menu, *browser_menu, *image_quality_menu,
- *browser_toolbar_menu, *tree_toolbar_menu,
+wimp_menu *image_quality_menu, *browser_toolbar_menu, *tree_toolbar_menu,
*proxy_type_menu, *languages_menu;
static wimp_MENU(URL_SUGGEST_MAX_URLS) url_suggest_menu_block;
@@ -148,122 +145,6 @@
*/
void ro_gui_menu_init(void)
{
- /* iconbar menu */
- static const struct ns_menu iconbar_definition = {
- "NetSurf", {
- { "Info", NO_ACTION, &dialog_info },
- { "AppHelp", HELP_OPEN_CONTENTS, 0 },
- { "Open", BROWSER_NAVIGATE_URL, 0 },
- { "Open.OpenURL", BROWSER_NAVIGATE_URL, &dialog_openurl },
- { "Open.HotlistShow", HOTLIST_SHOW, 0 },
- { "Open.HistGlobal", HISTORY_SHOW_GLOBAL, 0 },
- { "Open.ShowCookies", COOKIES_SHOW, 0 },
- { "Choices", CHOICES_SHOW, 0 },
- { "Quit", APPLICATION_QUIT, 0 },
- {NULL, 0, 0}
- }
- };
- iconbar_menu = ro_gui_menu_define_menu(&iconbar_definition);
-
- /* browser menu */
- static const struct ns_menu browser_definition = {
- "NetSurf", {
- { "Page", BROWSER_PAGE, 0 },
- { "Page.PageInfo",BROWSER_PAGE_INFO, &dialog_pageinfo },
- { "Page.Save", BROWSER_SAVE, &dialog_saveas },
- { "Page.SaveComp", BROWSER_SAVE_COMPLETE, &dialog_saveas },
- { "Page.Export", NO_ACTION, 0 },
-#ifdef WITH_DRAW_EXPORT
- { "Page.Export.Draw", BROWSER_EXPORT_DRAW, &dialog_saveas },
-#endif
-#ifdef WITH_PDF_EXPORT
- { "Page.Export.PDF", BROWSER_EXPORT_PDF, &dialog_saveas },
-#endif
- { "Page.Export.Text", BROWSER_EXPORT_TEXT, &dialog_saveas },
- { "Page.SaveURL", NO_ACTION, 0 },
- { "Page.SaveURL.URI", BROWSER_SAVE_URL_URI, &dialog_saveas },
- { "Page.SaveURL.URL", BROWSER_SAVE_URL_URL, &dialog_saveas },
- { "Page.SaveURL.LinkText", BROWSER_SAVE_URL_TEXT, &dialog_saveas },
- { "_Page.Print", BROWSER_PRINT, &dialog_print },
- { "Page.NewWindow", BROWSER_NEW_WINDOW, 0 },
- { "Page.FindText", BROWSER_FIND_TEXT, &dialog_search },
- { "Page.ViewSrc", BROWSER_VIEW_SOURCE, 0 },
- { "Object", BROWSER_OBJECT, 0 },
- { "Object.Object", BROWSER_OBJECT_OBJECT, 0 },
- { "Object.Object.ObjInfo", BROWSER_OBJECT_INFO, &dialog_objinfo },
- { "Object.Object.ObjSave", BROWSER_OBJECT_SAVE, &dialog_saveas },
- { "Object.Object.Export", BROWSER_OBJECT_EXPORT, 0 },
- { "Object.Object.Export.Sprite", BROWSER_OBJECT_EXPORT_SPRITE, &dialog_saveas },
-#ifdef WITH_DRAW_EXPORT
- { "Object.Object.Export.ObjDraw", BROWSER_OBJECT_EXPORT_DRAW, &dialog_saveas },
-#endif
- { "Object.Object.SaveURL", NO_ACTION, 0 },
- { "Object.Object.SaveURL.URI", BROWSER_OBJECT_SAVE_URL_URI, &dialog_saveas },
- { "Object.Object.SaveURL.URL", BROWSER_OBJECT_SAVE_URL_URL, &dialog_saveas },
- { "Object.Object.SaveURL.LinkText", BROWSER_OBJECT_SAVE_URL_TEXT, &dialog_saveas },
- { "Object.Object.ObjPrint", BROWSER_OBJECT_PRINT, 0 },
- { "Object.Object.ObjReload", BROWSER_OBJECT_RELOAD, 0 },
- { "Object.Link", BROWSER_OBJECT_LINK, 0 },
- { "Object.Link.LinkSave", BROWSER_LINK_SAVE, 0 },
- { "Object.Link.LinkSave.URI", BROWSER_LINK_SAVE_URI, &dialog_saveas },
- { "Object.Link.LinkSave.URL", BROWSER_LINK_SAVE_URL, &dialog_saveas },
- { "Object.Link.LinkSave.LinkText", BROWSER_LINK_SAVE_TEXT, &dialog_saveas },
- { "_Object.Link.LinkDload", BROWSER_LINK_DOWNLOAD, 0 },
- { "Object.Link.LinkNew", BROWSER_LINK_NEW_WINDOW, 0 },
- { "Selection", BROWSER_SELECTION, 0 },
- { "_Selection.SelSave", BROWSER_SELECTION_SAVE, &dialog_saveas },
- { "Selection.Copy", BROWSER_SELECTION_COPY, 0 },
- { "Selection.Cut", BROWSER_SELECTION_CUT, 0 },
- { "_Selection.Paste", BROWSER_SELECTION_PASTE, 0 },
- { "Selection.Clear", BROWSER_SELECTION_CLEAR, 0 },
- { "Selection.SelectAll", BROWSER_SELECTION_ALL, 0 },
- { "Navigate", NO_ACTION, 0 },
- { "Navigate.Home", BROWSER_NAVIGATE_HOME, 0 },
- { "Navigate.Back", BROWSER_NAVIGATE_BACK, 0 },
- { "Navigate.Forward", BROWSER_NAVIGATE_FORWARD, 0 },
- { "_Navigate.UpLevel", BROWSER_NAVIGATE_UP, 0 },
- { "Navigate.Reload", BROWSER_NAVIGATE_RELOAD_ALL, 0 },
- { "Navigate.Stop", BROWSER_NAVIGATE_STOP, 0 },
- { "View", NO_ACTION, 0 },
- { "View.ScaleView", BROWSER_SCALE_VIEW, &dialog_zoom },
- { "View.Images", NO_ACTION, 0 },
- { "View.Images.ForeImg", BROWSER_IMAGES_FOREGROUND, 0 },
- { "View.Images.BackImg", BROWSER_IMAGES_BACKGROUND, 0 },
- { "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.EditToolbar", TOOLBAR_EDIT, 0 },
- { "_View.Render", NO_ACTION, 0 },
- { "View.Render.RenderAnims", BROWSER_BUFFER_ANIMS, 0 },
- { "View.Render.RenderAll", BROWSER_BUFFER_ALL, 0 },
- { "_View.OptDefault", BROWSER_SAVE_VIEW, 0 },
- { "View.Window", NO_ACTION, 0 },
- { "View.Window.WindowSave", BROWSER_WINDOW_DEFAULT, 0 },
- { "View.Window.WindowStagr", BROWSER_WINDOW_STAGGER, 0 },
- { "_View.Window.WindowSize", BROWSER_WINDOW_COPY, 0 },
- { "View.Window.WindowReset", BROWSER_WINDOW_RESET, 0 },
- { "Utilities", NO_ACTION, 0 },
- { "Utilities.Hotlist", HOTLIST_SHOW, 0 },
- { "Utilities.Hotlist.HotlistAdd", HOTLIST_ADD_URL, 0 },
- { "Utilities.Hotlist.HotlistShow", HOTLIST_SHOW, 0 },
- { "Utilities.History", HISTORY_SHOW_GLOBAL, 0 },
- { "Utilities.History.HistLocal", HISTORY_SHOW_LOCAL, 0 },
- { "Utilities.History.HistGlobal", HISTORY_SHOW_GLOBAL, 0 },
- { "Utilities.Cookies", COOKIES_SHOW, 0 },
- { "Utilities.Cookies.ShowCookies", COOKIES_SHOW, 0 },
- { "Utilities.Cookies.DeleteCookies", COOKIES_DELETE, 0 },
- { "Help", HELP_OPEN_CONTENTS, 0 },
- { "Help.HelpContent", HELP_OPEN_CONTENTS, 0 },
- { "Help.HelpGuide", HELP_OPEN_GUIDE, 0 },
- { "_Help.HelpInfo", HELP_OPEN_INFORMATION, 0 },
- { "_Help.HelpAbout", HELP_OPEN_ABOUT, 0 },
- { "Help.HelpInter", HELP_LAUNCH_INTERACTIVE, 0 },
- {NULL, 0, 0}
- }
- };
- browser_menu = ro_gui_menu_define_menu(&browser_definition);
-
/* image quality menu */
static const struct ns_menu images_definition = {
"Display", {
@@ -403,8 +284,9 @@
}
}
+
/* read the object under the pointer for a new gui_window menu */
- if ((!current_menu) && (menu == browser_menu)) {
+/* if ((!current_menu) && (menu == browser_menu)) {
hlcache_handle *h;
g = ro_gui_window_lookup(w);
@@ -429,14 +311,14 @@
}
break;
case CONTENT_TEXTPLAIN:
- /* no object, no url */
+ /* no object, no url *//*
break;
default:
current_menu_object = h;
break;
}
}
- }
+ }*/
/* store the menu characteristics */
current_menu = menu;
@@ -1571,11 +1453,11 @@
return false;
browser_window_stop(bw);
return true;
- case BROWSER_NAVIGATE_URL:
+/* case BROWSER_NAVIGATE_URL:
ro_gui_menu_prepare_action(owner, action, true);
ro_gui_dialog_open_persistent(NULL, dialog_openurl,
windows_at_pointer);
- return true;
+ return true;*/
/* browser window/display actions */
case BROWSER_SCALE_VIEW:
@@ -1677,17 +1559,6 @@
case TOOLBAR_EDIT:
assert(t);
ro_toolbar_toggle_edit(t);
- return true;
-
- /* misc actions */
- case APPLICATION_QUIT:
- if (ro_gui_prequit()) {
- LOG(("QUIT in response to user request"));
- netsurf_quit = true;
- }
- return true;
- case CHOICES_SHOW:
- ro_gui_configure_show();
return true;
/* unknown action */
@@ -2087,10 +1958,10 @@
t->toolbar_handle,
ICON_TOOLBAR_STOP, !result);
break;
- case BROWSER_NAVIGATE_URL:
+/* case BROWSER_NAVIGATE_URL:
if (windows)
ro_gui_dialog_prepare_open_url();
- break;
+ break;*/
/* display actions */
case BROWSER_SCALE_VIEW:
Modified: branches/stevef/toolbars/riscos/menus.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/menus.h...
==============================================================================
--- branches/stevef/toolbars/riscos/menus.h (original)
+++ branches/stevef/toolbars/riscos/menus.h Fri Dec 31 12:05:55 2010
@@ -23,13 +23,11 @@
#include "oslib/wimp.h"
#include "riscos/gui.h"
-extern wimp_menu *iconbar_menu, *browser_menu, *hotlist_menu, *cookies_menu,
- *global_history_menu, *image_quality_menu,
- *browser_toolbar_menu, *tree_toolbar_menu, *proxy_type_menu;
+extern wimp_menu *image_quality_menu, *browser_toolbar_menu, *tree_toolbar_menu,
+ *proxy_type_menu;
extern wimp_menu *languages_menu, *url_suggest_menu;
extern wimp_menu *current_menu;
-extern int iconbar_menu_height;
typedef enum {
Modified: branches/stevef/toolbars/riscos/treeview.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/treevie...
==============================================================================
--- branches/stevef/toolbars/riscos/treeview.c (original)
+++ branches/stevef/toolbars/riscos/treeview.c Fri Dec 31 12:05:55 2010
@@ -809,7 +809,8 @@
}
/* We assume that the owning module will have attached a window menu
- * to our parent window. If it hasn't, this call will quietly fail.
+ * to our parent window with the auto flag unset (so that we can fudge
+ * the selection above). If it hasn't, this call will quietly fail.
*/
if (pointer->buttons == wimp_CLICK_MENU)
Modified: branches/stevef/toolbars/riscos/wimp_event.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/wimp_ev...
==============================================================================
--- branches/stevef/toolbars/riscos/wimp_event.c (original)
+++ branches/stevef/toolbars/riscos/wimp_event.c Fri Dec 31 12:05:55 2010
@@ -98,7 +98,8 @@
void (*menu_selection)(wimp_w w, wimp_i i);
wimp_menu *window_menu;
bool window_menu_auto;
- void (*window_menu_prepare)(wimp_w w, wimp_menu *m);
+ bool window_menu_iconbar;
+ void (*window_menu_prepare)(wimp_w w, wimp_menu *m, wimp_pointer *p);
bool (*window_menu_selection)(wimp_w w, wimp_menu *m,
wimp_selection *s, menu_action action);
void (*window_menu_close)(wimp_w w, wimp_menu *m);
@@ -405,7 +406,7 @@
/* Prepare the menu pending a possible Adjust click. */
if (window->window_menu_prepare)
- window->window_menu_prepare(w, menu);
+ window->window_menu_prepare(w, menu, NULL);
return true;
} else {
return false;
@@ -500,7 +501,9 @@
return false;
/* Menu clicks take priority if there is an auto menu defined. */
- if ((window->window_menu) && (window->window_menu_auto)) {
+ if ((pointer->buttons == wimp_CLICK_MENU) &&
+ (window->window_menu != NULL) &&
+ (window->window_menu_auto)) {
ro_gui_wimp_event_process_window_menu_click(pointer);
return true;
}
@@ -975,17 +978,40 @@
bool ro_gui_wimp_event_process_window_menu_click(wimp_pointer *pointer)
{
- struct event_window *window;
+ struct event_window *window;
+ int xpos, ypos, line_height, gap_height, entry;
window = ro_gui_wimp_event_find_window(pointer->w);
if ((window) && (window->window_menu)
&& (pointer->buttons == wimp_CLICK_MENU)) {
if (window->window_menu_prepare)
window->window_menu_prepare(window->w,
- window->window_menu);
-
- ro_gui_menu_create(window->window_menu,
- pointer->pos.x, pointer->pos.y,
+ window->window_menu, pointer);
+
+ if (window->window_menu_iconbar) {
+ xpos = pointer->pos.x;
+ ypos = 96;
+
+ line_height = window->window_menu->height +
+ window->window_menu->gap;
+ gap_height = 24; /* The fixed dotted line height */
+
+ entry = 0;
+ do {
+ ypos += line_height;
+ if ((window->window_menu->
+ entries[entry].menu_flags &
+ wimp_MENU_SEPARATE) != 0)
+ ypos += gap_height;
+ } while ((window->window_menu->
+ entries[entry++].menu_flags &
+ wimp_MENU_LAST) == 0);
+ } else {
+ xpos = pointer->pos.x;
+ ypos = pointer->pos.y;
+ }
+
+ ro_gui_menu_create(window->window_menu, xpos, ypos,
window->w, false);
return true;
}
@@ -1245,11 +1271,26 @@
/**
* Register a set of functions to be called to handle a window menu.
*
- * \param
+ * \param w The window to attach the menu to.
+ * \param *m The menu to be attached.
+ * \param *callback prepare A function to be called beofre the menu is
+ * (re-)opened.
+ * \param *callback_selection A function to be called when a selection is
+ * made.
+ * \param *callback_close A function to be called when the menu is closed.
+ * \param *callback_warning A function to be called whenever a submenu
+ * warning is received for the menu.
+ * \param menu_auto true if the menu should be opened autimatically
+ * on Menu clicks with no task intervention; false
+ * to pass clicks to the window's Mouse Event
+ * handler and leave that to pass the menu click
+ * back to us for handling and menu opening.
+ * \return true if the menu was registed ok; else false.
*/
bool ro_gui_wimp_event_register_window_menu(wimp_w w, wimp_menu *m,
- void (*callback_prepare)(wimp_w w, wimp_menu *m),
+ void (*callback_prepare)(wimp_w w, wimp_menu *m,
+ wimp_pointer *pointer),
bool (*callback_selection)(wimp_w w, wimp_menu *m,
wimp_selection *s, menu_action action),
void (*callback_close)(wimp_w w, wimp_menu *m),
@@ -1268,6 +1309,53 @@
window->window_menu_close = callback_close;
window->window_menu_warning = callback_warning;
window->window_menu_auto = menu_auto;
+ window->window_menu_iconbar = false;
+ return true;
+}
+
+
+/**
+ * Register a set of functions to be called to handle an iconbar menu.
+ *
+ * \param w The window to attach the menu to.
+ * \param *m The menu to be attached.
+ * \param *callback prepare A function to be called beofre the menu is
+ * (re-)opened.
+ * \param *callback_selection A function to be called when a selection is
+ * made.
+ * \param *callback_close A function to be called when the menu is closed.
+ * \param *callback_warning A function to be called whenever a submenu
+ * warning is received for the menu.
+ * \param menu_auto true if the menu should be opened autimatically
+ * on Menu clicks with no task intervention; false
+ * to pass clicks to the window's Mouse Event
+ * handler and leave that to pass the menu click
+ * back to us for handling and menu opening.
+ * \return true if the menu was registed ok; else false.
+ */
+
+bool ro_gui_wimp_event_register_iconbar_menu(wimp_w w, wimp_menu *m,
+ void (*callback_prepare)(wimp_w w, wimp_menu *m,
+ wimp_pointer *pointer),
+ bool (*callback_selection)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ void (*callback_close)(wimp_w w, wimp_menu *m),
+ void (*callback_warning)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ bool menu_auto)
+{
+ struct event_window *window;
+
+ window = ro_gui_wimp_event_get_window(w);
+ if (!window)
+ return false;
+ window->window_menu = m;
+ window->window_menu_prepare = callback_prepare;
+ window->window_menu_selection = callback_selection;
+ window->window_menu_close = callback_close;
+ window->window_menu_warning = callback_warning;
+ window->window_menu_auto = menu_auto;
+ window->window_menu_iconbar = true;
return true;
}
@@ -1421,7 +1509,7 @@
}
return false;
-}
+}
/**
* Handle menus being closed. This is called from ro_gui_menu_closed(), in
Modified: branches/stevef/toolbars/riscos/wimp_event.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/wimp_ev...
==============================================================================
--- branches/stevef/toolbars/riscos/wimp_event.h (original)
+++ branches/stevef/toolbars/riscos/wimp_event.h Fri Dec 31 12:05:55 2010
@@ -1,6 +1,6 @@
/*
* Copyright 2005 Richard Wilson <info(a)tinct.net>
- * Copyright 2010 Stephen Fryatt <stevef(a)netsurf-browser.org>
+ * Copyright 2010 Stephen Fryatt <stevef(a)netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -31,7 +31,7 @@
#include <stdio.h>
#include <string.h>
#include "oslib/os.h"
-#include "oslib/wimp.h"
+#include "oslib/wimp.h"
#include "riscos/menus.h"
#define IS_WIMP_KEY (1u<<31)
@@ -52,8 +52,8 @@
bool ro_gui_wimp_event_keypress(wimp_key *key);
bool ro_gui_wimp_event_open_window(wimp_open *open);
bool ro_gui_wimp_event_close_window(wimp_w w);
-bool ro_gui_wimp_event_redraw_window(wimp_draw *redraw);
-
+bool ro_gui_wimp_event_redraw_window(wimp_draw *redraw);
+
bool ro_gui_wimp_event_process_window_menu_click(wimp_pointer *pointer);
bool ro_gui_wimp_event_register_numeric_field(wimp_w w, wimp_i i, wimp_i up,
@@ -82,16 +82,26 @@
void (*callback)(wimp_draw *redraw));
bool ro_gui_wimp_event_register_menu_selection(wimp_w w,
void (*callback)(wimp_w w, wimp_i i));
-bool ro_gui_wimp_event_register_window_menu(wimp_w w, wimp_menu *m,
- void (*callback_prepare)(wimp_w w, wimp_menu *m),
- bool (*callback_selection)(wimp_w w, wimp_menu *m,
- wimp_selection *s, menu_action action),
- void (*callback_close)(wimp_w w, wimp_menu *m),
- void (*callback_warning)(wimp_w w, wimp_menu *m,
- wimp_selection *s, menu_action action),
- bool menu_auto);
+bool ro_gui_wimp_event_register_window_menu(wimp_w w, wimp_menu *m,
+ void (*callback_prepare)(wimp_w w, wimp_menu *m,
+ wimp_pointer *pointer),
+ bool (*callback_selection)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ void (*callback_close)(wimp_w w, wimp_menu *m),
+ void (*callback_warning)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ bool menu_auto);
+bool ro_gui_wimp_event_register_iconbar_menu(wimp_w w, wimp_menu *m,
+ void (*callback_prepare)(wimp_w w, wimp_menu *m,
+ wimp_pointer *pointer),
+ bool (*callback_selection)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ void (*callback_close)(wimp_w w, wimp_menu *m),
+ void (*callback_warning)(wimp_w w, wimp_menu *m,
+ wimp_selection *s, menu_action action),
+ bool menu_auto);
-bool ro_gui_wimp_event_submenu_warning(wimp_w w, wimp_i i, wimp_menu *menu,
+bool ro_gui_wimp_event_submenu_warning(wimp_w w, wimp_i i, wimp_menu *menu,
wimp_selection *selection, menu_action action);
void ro_gui_wimp_event_menus_closed(wimp_w w, wimp_i i, wimp_menu *menu);
void ro_gui_wimp_event_register_submenu(wimp_w w);
Modified: branches/stevef/toolbars/riscos/window.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/window....
==============================================================================
--- branches/stevef/toolbars/riscos/window.c (original)
+++ branches/stevef/toolbars/riscos/window.c Fri Dec 31 12:05:55 2010
@@ -71,6 +71,7 @@
#include "riscos/wimp.h"
#include "riscos/wimp_event.h"
#include "riscos/wimputils.h"
+#include "riscos/window.h"
#include "utils/log.h"
#include "utils/talloc.h"
#include "utils/url.h"
@@ -156,6 +157,7 @@
static void ro_gui_window_update_theme(void *);
static void ro_gui_window_update_toolbar(void *);
+
struct update_box {
int x0;
int y0;
@@ -174,6 +176,313 @@
ro_gui_window_update_theme,
ro_gui_window_update_toolbar
};
+
+/** The browser window menu handle. */
+static wimp_menu *ro_gui_browser_window_menu = NULL;
+
+/** Object under menu, or 0 if no object. */
+static hlcache_handle *current_menu_object = 0;
+/** URL of link under menu, or 0 if no link. */
+static const char *current_menu_url = 0;
+
+
+/**
+ * Initialise the a browser window menus.
+ */
+
+void ro_gui_window_initialise(void)
+{
+ os_error *error;
+
+ /* Build the browser window menu. */
+
+ static const struct ns_menu browser_definition = {
+ "NetSurf", {
+ { "Page", BROWSER_PAGE, 0 },
+ { "Page.PageInfo",BROWSER_PAGE_INFO, &dialog_pageinfo },
+ { "Page.Save", BROWSER_SAVE, &dialog_saveas },
+ { "Page.SaveComp", BROWSER_SAVE_COMPLETE, &dialog_saveas },
+ { "Page.Export", NO_ACTION, 0 },
+#ifdef WITH_DRAW_EXPORT
+ { "Page.Export.Draw", BROWSER_EXPORT_DRAW, &dialog_saveas },
+#endif
+#ifdef WITH_PDF_EXPORT
+ { "Page.Export.PDF", BROWSER_EXPORT_PDF, &dialog_saveas },
+#endif
+ { "Page.Export.Text", BROWSER_EXPORT_TEXT, &dialog_saveas },
+ { "Page.SaveURL", NO_ACTION, 0 },
+ { "Page.SaveURL.URI", BROWSER_SAVE_URL_URI, &dialog_saveas },
+ { "Page.SaveURL.URL", BROWSER_SAVE_URL_URL, &dialog_saveas },
+ { "Page.SaveURL.LinkText", BROWSER_SAVE_URL_TEXT, &dialog_saveas },
+ { "_Page.Print", BROWSER_PRINT, &dialog_print },
+ { "Page.NewWindow", BROWSER_NEW_WINDOW, 0 },
+ { "Page.FindText", BROWSER_FIND_TEXT, &dialog_search },
+ { "Page.ViewSrc", BROWSER_VIEW_SOURCE, 0 },
+ { "Object", BROWSER_OBJECT, 0 },
+ { "Object.Object", BROWSER_OBJECT_OBJECT, 0 },
+ { "Object.Object.ObjInfo", BROWSER_OBJECT_INFO, &dialog_objinfo },
+ { "Object.Object.ObjSave", BROWSER_OBJECT_SAVE, &dialog_saveas },
+ { "Object.Object.Export", BROWSER_OBJECT_EXPORT, 0 },
+ { "Object.Object.Export.Sprite", BROWSER_OBJECT_EXPORT_SPRITE, &dialog_saveas },
+#ifdef WITH_DRAW_EXPORT
+ { "Object.Object.Export.ObjDraw", BROWSER_OBJECT_EXPORT_DRAW, &dialog_saveas },
+#endif
+ { "Object.Object.SaveURL", NO_ACTION, 0 },
+ { "Object.Object.SaveURL.URI", BROWSER_OBJECT_SAVE_URL_URI, &dialog_saveas },
+ { "Object.Object.SaveURL.URL", BROWSER_OBJECT_SAVE_URL_URL, &dialog_saveas },
+ { "Object.Object.SaveURL.LinkText", BROWSER_OBJECT_SAVE_URL_TEXT, &dialog_saveas },
+ { "Object.Object.ObjPrint", BROWSER_OBJECT_PRINT, 0 },
+ { "Object.Object.ObjReload", BROWSER_OBJECT_RELOAD, 0 },
+ { "Object.Link", BROWSER_OBJECT_LINK, 0 },
+ { "Object.Link.LinkSave", BROWSER_LINK_SAVE, 0 },
+ { "Object.Link.LinkSave.URI", BROWSER_LINK_SAVE_URI, &dialog_saveas },
+ { "Object.Link.LinkSave.URL", BROWSER_LINK_SAVE_URL, &dialog_saveas },
+ { "Object.Link.LinkSave.LinkText", BROWSER_LINK_SAVE_TEXT, &dialog_saveas },
+ { "_Object.Link.LinkDload", BROWSER_LINK_DOWNLOAD, 0 },
+ { "Object.Link.LinkNew", BROWSER_LINK_NEW_WINDOW, 0 },
+ { "Selection", BROWSER_SELECTION, 0 },
+ { "_Selection.SelSave", BROWSER_SELECTION_SAVE, &dialog_saveas },
+ { "Selection.Copy", BROWSER_SELECTION_COPY, 0 },
+ { "Selection.Cut", BROWSER_SELECTION_CUT, 0 },
+ { "_Selection.Paste", BROWSER_SELECTION_PASTE, 0 },
+ { "Selection.Clear", BROWSER_SELECTION_CLEAR, 0 },
+ { "Selection.SelectAll", BROWSER_SELECTION_ALL, 0 },
+ { "Navigate", NO_ACTION, 0 },
+ { "Navigate.Home", BROWSER_NAVIGATE_HOME, 0 },
+ { "Navigate.Back", BROWSER_NAVIGATE_BACK, 0 },
+ { "Navigate.Forward", BROWSER_NAVIGATE_FORWARD, 0 },
+ { "_Navigate.UpLevel", BROWSER_NAVIGATE_UP, 0 },
+ { "Navigate.Reload", BROWSER_NAVIGATE_RELOAD_ALL, 0 },
+ { "Navigate.Stop", BROWSER_NAVIGATE_STOP, 0 },
+ { "View", NO_ACTION, 0 },
+ { "View.ScaleView", BROWSER_SCALE_VIEW, &dialog_zoom },
+ { "View.Images", NO_ACTION, 0 },
+ { "View.Images.ForeImg", BROWSER_IMAGES_FOREGROUND, 0 },
+ { "View.Images.BackImg", BROWSER_IMAGES_BACKGROUND, 0 },
+ { "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.EditToolbar", TOOLBAR_EDIT, 0 },
+ { "_View.Render", NO_ACTION, 0 },
+ { "View.Render.RenderAnims", BROWSER_BUFFER_ANIMS, 0 },
+ { "View.Render.RenderAll", BROWSER_BUFFER_ALL, 0 },
+ { "_View.OptDefault", BROWSER_SAVE_VIEW, 0 },
+ { "View.Window", NO_ACTION, 0 },
+ { "View.Window.WindowSave", BROWSER_WINDOW_DEFAULT, 0 },
+ { "View.Window.WindowStagr", BROWSER_WINDOW_STAGGER, 0 },
+ { "_View.Window.WindowSize", BROWSER_WINDOW_COPY, 0 },
+ { "View.Window.WindowReset", BROWSER_WINDOW_RESET, 0 },
+ { "Utilities", NO_ACTION, 0 },
+ { "Utilities.Hotlist", HOTLIST_SHOW, 0 },
+ { "Utilities.Hotlist.HotlistAdd", HOTLIST_ADD_URL, 0 },
+ { "Utilities.Hotlist.HotlistShow", HOTLIST_SHOW, 0 },
+ { "Utilities.History", HISTORY_SHOW_GLOBAL, 0 },
+ { "Utilities.History.HistLocal", HISTORY_SHOW_LOCAL, 0 },
+ { "Utilities.History.HistGlobal", HISTORY_SHOW_GLOBAL, 0 },
+ { "Utilities.Cookies", COOKIES_SHOW, 0 },
+ { "Utilities.Cookies.ShowCookies", COOKIES_SHOW, 0 },
+ { "Utilities.Cookies.DeleteCookies", COOKIES_DELETE, 0 },
+ { "Help", HELP_OPEN_CONTENTS, 0 },
+ { "Help.HelpContent", HELP_OPEN_CONTENTS, 0 },
+ { "Help.HelpGuide", HELP_OPEN_GUIDE, 0 },
+ { "_Help.HelpInfo", HELP_OPEN_INFORMATION, 0 },
+ { "_Help.HelpAbout", HELP_OPEN_ABOUT, 0 },
+ { "Help.HelpInter", HELP_LAUNCH_INTERACTIVE, 0 },
+ {NULL, 0, 0}
+ }
+ };
+ ro_gui_browser_window_menu =
+ ro_gui_menu_define_menu(&browser_definition);
+
+}
+
+/**
+ * Prepare the browser window menu for opening
+ *
+ * \param window The window owning the menu.
+ * \param *menu The menu about to be opened.
+ * \param *pointer Pointer to the relevant wimp event block, or
+ * NULL for an Adjust click.
+ */
+
+void ro_gui_window_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer)
+{
+ struct gui_window *g;
+ hlcache_handle *h;
+ os_error *error;
+ os_coord pos;
+ int i;
+ menu_action action;
+ struct menu_definition *definition;
+
+ g = (struct gui_window *) ro_gui_wimp_event_get_user_data(window);
+
+ /* If this is a new opening, get details of the object under the
+ * pointer.
+ */
+
+ if (pointer != NULL) {
+
+ ro_gui_url_complete_close(g, pointer->i);
+
+ h = g->bw->current_content;
+
+ if (!ro_gui_window_to_window_pos(g, pointer->pos.x,
+ pointer->pos.y, &pos))
+ return;
+ current_menu_object = NULL;
+ current_menu_url = NULL;
+ if (h) {
+ switch (content_get_type(h)) {
+ case CONTENT_HTML: {
+ struct box *box;
+ box = box_object_at_point(h, pos.x,
+ pos.y);
+ current_menu_object = box ?
+ box->object : NULL;
+ box = box_href_at_point(h, pos.x,
+ pos.y);
+ current_menu_url = box ?
+ box->href : NULL;
+ }
+ break;
+ case CONTENT_TEXTPLAIN:
+ /* no object, no url */
+ break;
+ default:
+ current_menu_object = h;
+ break;
+ }
+ }
+ }
+
+
+/* bool selection;
+
+ if (menu != cookies_window.menu && menu != tree_toolbar_menu)
+ return;
+
+ if (menu == cookies_window.menu) {
+ selection = ro_treeview_has_selection(cookies_window.tv);
+
+ ro_gui_menu_set_entry_shaded(cookies_window.menu,
+ TREE_SELECTION, !selection);
+ ro_gui_menu_set_entry_shaded(cookies_window.menu,
+ TREE_CLEAR_SELECTION, !selection);
+ }
+
+ ro_gui_menu_set_entry_shaded(menu, TOOLBAR_BUTTONS,
+ ro_toolbar_menu_option_shade(cookies_window.toolbar));
+ ro_gui_menu_set_entry_ticked(menu, TOOLBAR_BUTTONS,
+ ro_toolbar_menu_buttons_tick(cookies_window.toolbar));
+
+ ro_gui_menu_set_entry_shaded(menu, TOOLBAR_EDIT,
+ ro_toolbar_menu_edit_shade(cookies_window.toolbar));
+ ro_gui_menu_set_entry_ticked(menu, TOOLBAR_EDIT,
+ ro_toolbar_menu_edit_tick(cookies_window.toolbar));*/
+}
+
+/**
+ * Handle submenu warnings for a browser window menu
+ *
+ * \param window The window owning the menu.
+ * \param *menu The menu to which the warning applies.
+ * \param *selection The wimp menu selection data.
+ * \param action The selected menu action.
+ */
+
+void ro_gui_window_menu_warning(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action)
+{
+/* switch (action) {
+ case BROWSER_NAVIGATE_URL:
+ ro_gui_dialog_prepare_open_url();
+ break;
+ default:
+ break;
+ }*/
+}
+
+/**
+ * Handle selections from a browser window menu
+ *
+ * \param window The window owning the menu.
+ * \param *menu The menu from which the selection was made.
+ * \param *selection The wimp menu selection data.
+ * \param action The selected menu action.
+ * \return true if action accepted; else false.
+ */
+
+bool ro_gui_window_menu_select(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action)
+{
+/* switch (action) {
+ case HELP_OPEN_CONTENTS:
+ ro_gui_open_help_page("documentation/index");
+ return true;
+ case BROWSER_NAVIGATE_URL:
+ ro_gui_dialog_prepare_open_url();
+ ro_gui_dialog_open_persistent(NULL, dialog_openurl, true);
+ return true;
+ case HOTLIST_SHOW:
+ ro_gui_hotlist_open();
+ return true;
+ case HISTORY_SHOW_GLOBAL:
+ ro_gui_global_history_open();
+ return true;
+ case COOKIES_SHOW:
+ ro_gui_cookies_open();
+ return true;
+ case CHOICES_SHOW:
+ ro_gui_configure_show();
+ return true;
+ case APPLICATION_QUIT:
+ if (ro_gui_prequit()) {
+ LOG(("QUIT in response to user request"));
+ netsurf_quit = true;
+ }
+ return true;
+ default:
+ return false;
+ }
+*/
+
+// for the time being, pretend we've handled things!
+ return true;
+
+// return false;
+}
+
+
+/**
+ * Check if a particular menu handle is a browser window menu
+ *
+ * \param *menu The menu in question.
+ * \return true if this menu is a browser window menu
+ */
+
+bool ro_gui_window_check_menu(wimp_menu *menu)
+{
+ return (ro_gui_browser_window_menu == menu) ? true : false;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/**
* Create and open a new browser window.
@@ -386,6 +695,10 @@
ro_gui_wimp_event_register_redraw_window(g->window, ro_gui_window_redraw);
ro_gui_wimp_event_register_keypress(g->window, ro_gui_window_keypress);
ro_gui_wimp_event_register_mouse_click(g->window, ro_gui_window_click);
+ ro_gui_wimp_event_register_window_menu(g->window,
+ ro_gui_browser_window_menu, NULL,
+ ro_gui_window_menu_select, NULL,
+ ro_gui_window_menu_warning, true);
/* Open the window at the top of the stack */
state.w = g->window;
@@ -2279,7 +2592,7 @@
gui_window_place_caret(g, -100, -100, 0);
if (pointer->buttons == wimp_CLICK_MENU) {
- ro_gui_menu_create(browser_menu, pointer->pos.x, pointer->pos.y, pointer->w, true);
+ //ro_gui_menu_create(browser_menu, pointer->pos.x, pointer->pos.y, pointer->w, true);
} else {
if (ro_gui_window_to_window_pos(g, pointer->pos.x, pointer->pos.y, &pos))
browser_window_mouse_click(g->bw,
Added: branches/stevef/toolbars/riscos/window.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/window....
==============================================================================
--- branches/stevef/toolbars/riscos/window.h (added)
+++ branches/stevef/toolbars/riscos/window.h Fri Dec 31 12:05:55 2010
@@ -1,0 +1,40 @@
+/*
+ * Copyright 2010 Stephen Fryatt <stevef(a)netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * Browser window handling (interface).
+ */
+
+#include <stdbool.h>
+
+#ifndef _NETSURF_RISCOS_WINDOW_H_
+#define _NETSURF_RISCOS_WINDOW_H_
+
+void ro_gui_window_initialise(void);
+
+void ro_gui_window_menu_prepare(wimp_w window, wimp_menu *menu,
+ wimp_pointer *pointer);
+bool ro_gui_window_menu_select(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action);
+void ro_gui_window_menu_warning(wimp_w window, wimp_menu *menu,
+ wimp_selection *selection, menu_action action);
+
+bool ro_gui_window_check_menu(wimp_menu *menu);
+
+#endif
+
12 years, 8 months
r11175 jmb - /trunk/tools/buildsystem/makefiles/Makefile.tools
by netsurf@semichrome.net
Author: jmb
Date: Thu Dec 30 15:04:02 2010
New Revision: 11175
URL: http://source.netsurf-browser.org?rev=11175&view=rev
Log:
Default GCCSDK_INSTALL_* to /opt/netsurf/arm-unknown-riscos/... if present.
Fall back to /home/riscos/... if not.
Modified:
trunk/tools/buildsystem/makefiles/Makefile.tools
Modified: trunk/tools/buildsystem/makefiles/Makefile.tools
URL: http://source.netsurf-browser.org/trunk/tools/buildsystem/makefiles/Makef...
==============================================================================
--- trunk/tools/buildsystem/makefiles/Makefile.tools (original)
+++ trunk/tools/buildsystem/makefiles/Makefile.tools Thu Dec 30 15:04:02 2010
@@ -100,8 +100,21 @@
CURDIR := <$(COMPONENT)$$Dir>
else
# Cross compiling for RISC OS
- GCCSDK_INSTALL_ENV ?= /home/riscos/env
- GCCSDK_INSTALL_CROSSBIN ?= /home/riscos/cross/bin
+ ifeq ($(origin GCCSDK_INSTALL_ENV),undefined)
+ ifneq ($(realpath /opt/netsurf/arm-unknown-riscos/env),)
+ GCCSDK_INSTALL_ENV := /opt/netsurf/arm-unknown-riscos/env
+ else
+ GCCSDK_INSTALL_ENV := /home/riscos/env
+ endif
+ endif
+
+ ifeq ($(origin GCCSDK_INSTALL_CROSSBIN),undefined)
+ ifneq ($(realpath /opt/netsurf/arm-unknown-riscos/cross/bin),)
+ GCCSDK_INSTALL_CROSSBIN := /opt/netsurf/arm-unknown-riscos/cross/bin
+ else
+ GCCSDK_INSTALL_CROSSBIN := /home/riscos/cross/bin
+ endif
+ endif
AR__ := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*ar)
CC__ := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*gcc)
12 years, 8 months
r11174 stevef - in /branches/stevef/toolbars/riscos: configure/con_theme.c cookies.c dialog.c global_history.c gui.h hotlist.c menus.c toolbar.c toolbar.h treeview.c url_complete.c window.c
by netsurf@semichrome.net
Author: stevef
Date: Thu Dec 30 11:30:57 2010
New Revision: 11174
URL: http://source.netsurf-browser.org?rev=11174&view=rev
Log:
Begin to hide toolbar implementation behind an interface.
Modified:
branches/stevef/toolbars/riscos/configure/con_theme.c
branches/stevef/toolbars/riscos/cookies.c
branches/stevef/toolbars/riscos/dialog.c
branches/stevef/toolbars/riscos/global_history.c
branches/stevef/toolbars/riscos/gui.h
branches/stevef/toolbars/riscos/hotlist.c
branches/stevef/toolbars/riscos/menus.c
branches/stevef/toolbars/riscos/toolbar.c
branches/stevef/toolbars/riscos/toolbar.h
branches/stevef/toolbars/riscos/treeview.c
branches/stevef/toolbars/riscos/url_complete.c
branches/stevef/toolbars/riscos/window.c
Modified: branches/stevef/toolbars/riscos/configure/con_theme.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/configu...
==============================================================================
--- branches/stevef/toolbars/riscos/configure/con_theme.c (original)
+++ branches/stevef/toolbars/riscos/configure/con_theme.c Thu Dec 30 11:30:57 2010
@@ -312,7 +312,7 @@
/* update the toolbar */
item_height = 44 + 44 + 16;
if (link->next) item_height += 16;
- ro_toolbar_process(link->toolbar, parent_width);
+ ro_toolbar_process(link->toolbar, parent_width, false);
extent.y0 = nested_y - link->toolbar->height - item_height;
if (link->next) extent.y0 -= 16;
if (extent.y0 > min_extent) extent.y0 = min_extent;
Modified: branches/stevef/toolbars/riscos/cookies.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/cookies...
==============================================================================
--- branches/stevef/toolbars/riscos/cookies.c (original)
+++ branches/stevef/toolbars/riscos/cookies.c Thu Dec 30 11:30:57 2010
@@ -159,15 +159,14 @@
bool ro_gui_cookies_toolbar_click(wimp_pointer *pointer)
{
+ int selection;
+
if (pointer->buttons == wimp_CLICK_MENU)
return ro_gui_wimp_event_process_window_menu_click(pointer);
- if (cookies_window.toolbar->editor != NULL) {
- ro_toolbar_editor_click(cookies_window.toolbar, pointer);
- return true;
- }
-
- switch (pointer->i) {
+ selection = ro_toolbar_click(cookies_window.toolbar, pointer);
+
+ switch (selection) {
case ICON_TOOLBAR_DELETE:
if (pointer->buttons == wimp_CLICK_SELECT) {
cookies_delete_selected();
@@ -214,25 +213,21 @@
if (menu == cookies_window.menu) {
selection = ro_treeview_has_selection(cookies_window.tv);
- ro_gui_menu_set_entry_shaded(cookies_window.menu, TREE_SELECTION,
- !selection);
- ro_gui_menu_set_entry_shaded(cookies_window.menu, TREE_CLEAR_SELECTION,
- !selection);
+ ro_gui_menu_set_entry_shaded(cookies_window.menu,
+ TREE_SELECTION, !selection);
+ ro_gui_menu_set_entry_shaded(cookies_window.menu,
+ TREE_CLEAR_SELECTION, !selection);
}
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_BUTTONS,
- (cookies_window.toolbar == NULL ||
- cookies_window.toolbar->editor));
+ ro_toolbar_menu_option_shade(cookies_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_BUTTONS,
- (cookies_window.toolbar != NULL &&
- (cookies_window.toolbar->display_buttons ||
- (cookies_window.toolbar->editor))));
+ ro_toolbar_menu_buttons_tick(cookies_window.toolbar));
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_EDIT,
- cookies_window.toolbar == NULL);
+ ro_toolbar_menu_edit_shade(cookies_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_EDIT,
- (cookies_window.toolbar != NULL &&
- cookies_window.toolbar->editor));
+ ro_toolbar_menu_edit_tick(cookies_window.toolbar));
}
/**
@@ -292,8 +287,9 @@
cookies_clear_selection();
return true;
case TOOLBAR_BUTTONS:
- cookies_window.toolbar->display_buttons =
- !cookies_window.toolbar->display_buttons;
+ ro_toolbar_set_display_buttons(cookies_window.toolbar,
+ !ro_toolbar_get_display_buttons(
+ cookies_window.toolbar));
ro_toolbar_refresh(cookies_window.toolbar);
return true;
case TOOLBAR_EDIT:
Modified: branches/stevef/toolbars/riscos/dialog.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/dialog....
==============================================================================
--- branches/stevef/toolbars/riscos/dialog.c (original)
+++ branches/stevef/toolbars/riscos/dialog.c Thu Dec 30 11:30:57 2010
@@ -426,7 +426,7 @@
open = state.flags & wimp_WINDOW_OPEN;
if (!open) {
/* cancel any editing */
- if ((toolbar) && (toolbar->editor))
+ if (ro_toolbar_get_editing(toolbar))
ro_toolbar_toggle_edit(toolbar);
/* move to the centre */
Modified: branches/stevef/toolbars/riscos/global_history.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/global_...
==============================================================================
--- branches/stevef/toolbars/riscos/global_history.c (original)
+++ branches/stevef/toolbars/riscos/global_history.c Thu Dec 30 11:30:57 2010
@@ -165,15 +165,14 @@
bool ro_gui_global_history_toolbar_click(wimp_pointer *pointer)
{
+ int selection;
+
if (pointer->buttons == wimp_CLICK_MENU)
return ro_gui_wimp_event_process_window_menu_click(pointer);
- if (global_history_window.toolbar->editor != NULL) {
- ro_toolbar_editor_click(global_history_window.toolbar, pointer);
- return true;
- }
-
- switch (pointer->i) {
+ selection = ro_toolbar_click(global_history_window.toolbar, pointer);
+
+ switch (selection) {
case ICON_TOOLBAR_DELETE:
if (pointer->buttons == wimp_CLICK_SELECT) {
history_global_delete_selected();
@@ -237,18 +236,14 @@
}
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_BUTTONS,
- (global_history_window.toolbar == NULL ||
- global_history_window.toolbar->editor));
+ ro_toolbar_menu_option_shade(global_history_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_BUTTONS,
- (global_history_window.toolbar != NULL &&
- (global_history_window.toolbar->display_buttons ||
- (global_history_window.toolbar->editor))));
+ ro_toolbar_menu_buttons_tick(global_history_window.toolbar));
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_EDIT,
- global_history_window.toolbar == NULL);
+ ro_toolbar_menu_edit_shade(global_history_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_EDIT,
- (global_history_window.toolbar != NULL &&
- global_history_window.toolbar->editor));
+ ro_toolbar_menu_edit_tick(global_history_window.toolbar));
}
/**
@@ -314,8 +309,9 @@
history_global_clear_selection();
return true;
case TOOLBAR_BUTTONS:
- global_history_window.toolbar->display_buttons =
- !global_history_window.toolbar->display_buttons;
+ ro_toolbar_set_display_buttons(global_history_window.toolbar,
+ !ro_toolbar_get_display_buttons(
+ global_history_window.toolbar));
ro_toolbar_refresh(global_history_window.toolbar);
return true;
case TOOLBAR_EDIT:
Modified: branches/stevef/toolbars/riscos/gui.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/gui.h?r...
==============================================================================
--- branches/stevef/toolbars/riscos/gui.h (original)
+++ branches/stevef/toolbars/riscos/gui.h Thu Dec 30 11:30:57 2010
@@ -137,6 +137,7 @@
/* void ro_gui_window_close_all(void); */
#define ro_gui_window_close_all ro_gui_window_quit /* no need for a separate fn */
void ro_gui_window_mouse_at(struct gui_window *g, wimp_pointer *pointer);
+bool ro_gui_window_keypress(wimp_key *key);
bool ro_gui_toolbar_click(wimp_pointer *pointer);
void ro_gui_throb(void);
struct gui_window *ro_gui_window_lookup(wimp_w window);
Modified: branches/stevef/toolbars/riscos/hotlist.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/hotlist...
==============================================================================
--- branches/stevef/toolbars/riscos/hotlist.c (original)
+++ branches/stevef/toolbars/riscos/hotlist.c Thu Dec 30 11:30:57 2010
@@ -179,15 +179,14 @@
bool ro_gui_hotlist_toolbar_click(wimp_pointer *pointer)
{
+ int selection;
+
if (pointer->buttons == wimp_CLICK_MENU)
return ro_gui_wimp_event_process_window_menu_click(pointer);
- if (hotlist_window.toolbar->editor != NULL) {
- ro_toolbar_editor_click(hotlist_window.toolbar, pointer);
- return true;
- }
-
- switch (pointer->i) {
+ selection = ro_toolbar_click(hotlist_window.toolbar, pointer);
+
+ switch (selection) {
case ICON_TOOLBAR_DELETE:
if (pointer->buttons == wimp_CLICK_SELECT) {
hotlist_delete_selected();
@@ -257,18 +256,14 @@
}
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_BUTTONS,
- (hotlist_window.toolbar == NULL ||
- hotlist_window.toolbar->editor != NULL));
+ ro_toolbar_menu_option_shade(hotlist_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_BUTTONS,
- (hotlist_window.toolbar != NULL &&
- (hotlist_window.toolbar->display_buttons ||
- (hotlist_window.toolbar->editor != NULL))));
+ ro_toolbar_menu_buttons_tick(hotlist_window.toolbar));
ro_gui_menu_set_entry_shaded(menu, TOOLBAR_EDIT,
- hotlist_window.toolbar == NULL);
+ ro_toolbar_menu_edit_shade(hotlist_window.toolbar));
ro_gui_menu_set_entry_ticked(menu, TOOLBAR_EDIT,
- (hotlist_window.toolbar != NULL &&
- hotlist_window.toolbar->editor != NULL));
+ ro_toolbar_menu_edit_tick(hotlist_window.toolbar));
}
@@ -344,8 +339,9 @@
hotlist_clear_selection();
return true;
case TOOLBAR_BUTTONS:
- hotlist_window.toolbar->display_buttons =
- !hotlist_window.toolbar->display_buttons;
+ ro_toolbar_set_display_buttons(hotlist_window.toolbar,
+ !ro_toolbar_get_display_buttons(
+ hotlist_window.toolbar));
ro_toolbar_refresh(hotlist_window.toolbar);
return true;
case TOOLBAR_EDIT:
Modified: branches/stevef/toolbars/riscos/menus.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/menus.c...
==============================================================================
--- branches/stevef/toolbars/riscos/menus.c (original)
+++ branches/stevef/toolbars/riscos/menus.c Thu Dec 30 11:30:57 2010
@@ -1656,19 +1656,22 @@
/* toolbar actions */
case TOOLBAR_BUTTONS:
assert(t);
- t->display_buttons = !t->display_buttons;
+ ro_toolbar_set_display_buttons(t,
+ ro_toolbar_get_display_buttons(t));
ro_toolbar_refresh(t);
return true;
case TOOLBAR_ADDRESS_BAR:
assert(t);
- t->display_url = !t->display_url;
+ ro_toolbar_set_display_url(t,
+ ro_toolbar_get_display_url(t));
ro_toolbar_refresh(t);
- if (t->display_url)
- ro_gui_set_caret_first(t->toolbar_handle);
+ if (ro_toolbar_get_display_url(t))
+ ro_toolbar_take_caret(t);
return true;
case TOOLBAR_THROBBER:
assert(t);
- t->display_throbber = !t->display_throbber;
+ ro_toolbar_set_display_throbber(t,
+ ro_toolbar_get_display_throbber(t));
ro_toolbar_refresh(t);
return true;
case TOOLBAR_EDIT:
@@ -2163,29 +2166,28 @@
/* toolbar actions */
case TOOLBAR_BUTTONS:
- ro_gui_menu_set_entry_shaded(current_menu,
- action, (!t || (t->editor)));
- ro_gui_menu_set_entry_ticked(current_menu,
- action, (t &&
- ((t->display_buttons) || (t->editor))));
+ ro_gui_menu_set_entry_shaded(current_menu, action,
+ ro_toolbar_menu_option_shade(t));
+ ro_gui_menu_set_entry_ticked(current_menu, action,
+ ro_toolbar_menu_buttons_tick(t));
break;
case TOOLBAR_ADDRESS_BAR:
- ro_gui_menu_set_entry_shaded(current_menu,
- action, !t);
+ ro_gui_menu_set_entry_shaded(current_menu, action,
+ ro_toolbar_menu_edit_shade(t));
ro_gui_menu_set_entry_ticked(current_menu, action,
- (t && t->display_url));
+ ro_toolbar_menu_url_tick(t));
break;
case TOOLBAR_THROBBER:
- ro_gui_menu_set_entry_shaded(current_menu,
- action, !t);
+ ro_gui_menu_set_entry_shaded(current_menu, action,
+ ro_toolbar_menu_edit_shade(t));
ro_gui_menu_set_entry_ticked(current_menu, action,
- (t && t->display_throbber));
+ ro_toolbar_menu_throbber_tick(t));
break;
case TOOLBAR_EDIT:
- ro_gui_menu_set_entry_shaded(current_menu,
- action, !t);
+ ro_gui_menu_set_entry_shaded(current_menu, action,
+ ro_toolbar_menu_edit_shade(t));
ro_gui_menu_set_entry_ticked(current_menu, action,
- (t && t->editor));
+ ro_toolbar_menu_edit_tick(t));
break;
/* unknown action */
Modified: branches/stevef/toolbars/riscos/toolbar.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/toolbar...
==============================================================================
--- branches/stevef/toolbars/riscos/toolbar.c (original)
+++ branches/stevef/toolbars/riscos/toolbar.c Thu Dec 30 11:30:57 2010
@@ -157,8 +157,15 @@
}
toolbar->type = type;
- toolbar->next = ro_toolbar_bars;
- ro_toolbar_bars = toolbar;
+ /* If this isn't an editor, add it to the list of bars. */
+
+ if (type == TOOLBAR_BROWSER_TOOLBAR ||
+ type == TOOLBAR_HOTLIST_TOOLBAR ||
+ type == TOOLBAR_HISTORY_TOOLBAR ||
+ type == TOOLBAR_COOKIES_TOOLBAR) {
+ toolbar->next = ro_toolbar_bars;
+ ro_toolbar_bars = toolbar;
+ }
/* Store the theme
*/
@@ -176,8 +183,7 @@
ro_toolbar_add_icons(toolbar,
ro_toolbar_browser_icons,
option_toolbar_browser);
- toolbar->suggest = ro_toolbar_add_icon(NULL,
- "gright",
+ toolbar->suggest = ro_toolbar_add_icon(NULL, "gright",
ICON_TOOLBAR_SUGGEST);
break;
case TOOLBAR_HOTLIST_TOOLBAR:
@@ -339,6 +345,8 @@
case TOOLBAR_BROWSER_EDIT_TOOLBAR:
ro_gui_wimp_event_register_mouse_click(toolbar->toolbar_handle,
ro_gui_toolbar_click);
+ ro_gui_wimp_event_register_keypress(toolbar->toolbar_handle,
+ ro_gui_window_keypress);
break;
case TOOLBAR_HOTLIST_TOOLBAR:
case TOOLBAR_HOTLIST_EDIT_TOOLBAR:
@@ -530,9 +538,8 @@
/* Force a re-processing of the toolbar
*/
width = toolbar->toolbar_current;
- toolbar->reformat_buttons = true;
toolbar->toolbar_current = -1;
- ro_toolbar_process(toolbar, width);
+ ro_toolbar_process(toolbar, width, true);
/* Keep menus up to date etc
*/
@@ -652,11 +659,12 @@
* Updates the toolbar to reflect changes to the icon flags and any reformatting
* required due to the change in parent window size.
*
- * \param toolbar the toolbar to update
- * \param width a specific width to resize to, or -1 to use parent width
- * \return whether the operation was successful
- */
-bool ro_toolbar_process(struct toolbar *toolbar, int width)
+ * \param *toolbar the toolbar to update
+ * \param width a specific width to resize to, or -1 to use parent width
+ * \param reformat true if a button reformat should be forced; else false
+ * \return whether the operation was successful
+ */
+bool ro_toolbar_process(struct toolbar *toolbar, int width, bool reformat)
{
wimp_caret caret;
os_box extent = { 0, 0, 0, 0 };
@@ -677,6 +685,9 @@
if (!toolbar)
return false;
+
+ if (reformat)
+ toolbar->reformat_buttons = true;
old_height = toolbar->height;
old_width = toolbar->toolbar_current;
@@ -1006,8 +1017,9 @@
}
ro_toolbar_destroy_icon(toolbar->suggest);
- /* Remove bar from the list and free the memory.
- */
+ /* Remove bar from the list and free the memory. Editor bars
+ * won't be in the list, so there may not be a match.
+ */
if (ro_toolbar_bars == toolbar) {
ro_toolbar_bars = toolbar->next;
@@ -1015,8 +1027,8 @@
for (bar = ro_toolbar_bars; bar != NULL && bar->next != toolbar;
bar = bar->next);
- assert(bar->next == toolbar);
- bar->next = toolbar->next;
+ if (bar->next == toolbar)
+ bar->next = toolbar->next;
}
free(toolbar);
@@ -1032,8 +1044,7 @@
{
assert(toolbar != NULL);
- toolbar->reformat_buttons = true;
- ro_toolbar_process(toolbar, -1);
+ ro_toolbar_process(toolbar, -1, true);
if (toolbar->callbacks != NULL &&
toolbar->callbacks->change_size != NULL)
toolbar->callbacks->change_size(toolbar->client_data);
@@ -1050,6 +1061,10 @@
bar = ro_toolbar_bars;
while (bar != NULL) {
+ if (bar->editor != NULL)
+ if (!ro_toolbar_update(NULL, bar->editor))
+ bar->editor = NULL;
+
if (bar->callbacks != NULL &&
bar->callbacks->theme_update != NULL)
bar->callbacks->theme_update(bar->client_data);
@@ -1177,6 +1192,41 @@
/**
+ * Find the toolbar using a given RO window handle for its pane. A toolbar
+ * is matched if either its main pane or its editor pane match the handle.
+ *
+ * \param w the window (pane) handle to look up.
+ * \return the toolbar handle, or NULL if a match wasn't found.
+ */
+
+struct toolbar *ro_toolbar_window_lookup(wimp_w w)
+{
+ struct toolbar *bar;
+
+ bar = ro_toolbar_bars;
+ while (bar != NULL && bar->toolbar_handle != w &&
+ (bar->editor == NULL ||
+ bar->editor->toolbar_handle != w))
+ bar = bar->next;
+
+ return bar;
+}
+
+
+/**
+ * Return the RO window handle of the parent window for a toolbar.
+ *
+ * \param *toolbar the toolbar to look up.
+ * \return the RO window handle of the parent.
+ */
+
+wimp_w ro_toolbar_get_parent_window(struct toolbar *toolbar)
+{
+ return (toolbar != NULL) ? toolbar->parent_handle : 0;
+}
+
+
+/**
* Starts a toolbar throbber, if there is one active.
*
* \param *toolbar the toolbar to start throbbing.
@@ -1248,6 +1298,252 @@
if (toolbar->descriptor->throbber_redraw)
ro_gui_force_redraw_icon(toolbar->toolbar_handle,
ICON_TOOLBAR_THROBBER);
+}
+
+
+/**
+ * Give a toolbar input focus, placing the caret into the URL bar if one is
+ * present.
+ *
+ * \param *toolbar the toolbar to take the caret.
+ * \return true if the caret was taken; else false.
+ */
+
+bool ro_toolbar_take_caret(struct toolbar *toolbar)
+{
+ os_error *error;
+
+ if (toolbar == NULL ||
+ toolbar->type != TOOLBAR_BROWSER_TOOLBAR ||
+ toolbar->display_url != true)
+ return false;
+
+ error = xwimp_set_caret_position(toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL, -1, -1, -1, 0);
+ if (error) {
+ LOG(("xwimp_set_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+
+ return false;
+ }
+
+ return true;
+}
+
+
+
+/**
+ * Set the content of a toolbar's URL field.
+ *
+ * \param *toolbar the toolbar to update.
+ * \param *url the new url to insert.
+ * \param is_utf8 true if the string is in utf8 encoding; false
+ * if it is in local encoding.
+ * \param set_caret true if the caret should be placed in the field;
+ * else false.
+ */
+
+void ro_toolbar_set_url(struct toolbar *toolbar, const char *url,
+ bool is_utf8, bool set_caret)
+{
+ wimp_caret caret;
+ os_error *error;
+ const char *set_url;
+
+ if (toolbar == NULL || toolbar->type != TOOLBAR_BROWSER_TOOLBAR)
+ return;
+
+ ro_gui_set_icon_string(toolbar->toolbar_handle, ICON_TOOLBAR_URL,
+ url, is_utf8);
+
+ error = xwimp_get_caret_position(&caret);
+ if (error) {
+ LOG(("xwimp_get_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ return;
+ }
+
+ if (set_caret || (caret.w == toolbar-> toolbar_handle &&
+ caret.i == ICON_TOOLBAR_URL)) {
+ set_url = ro_gui_get_icon_string(toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL);
+
+ error = xwimp_set_caret_position(toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL, 0, 0, -1, strlen(set_url));
+ if (error) {
+ LOG(("xwimp_set_caret_position: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ }
+ }
+}
+
+
+/**
+ * Return a pointer to the URL contained in a browser toolbar. If the toolbar
+ * doesn't have a URL field, then NULL is returned instead.
+ *
+ * \param *toolbar the toolbar to look up the URL from.
+ * \return pointer to the URL, or NULL.
+ */
+
+const char *ro_toolbar_get_url(struct toolbar *toolbar)
+{
+ if (toolbar == NULL || toolbar->type != TOOLBAR_BROWSER_TOOLBAR)
+ return NULL;
+
+ return ro_gui_get_icon_string(toolbar->toolbar_handle,
+ ICON_TOOLBAR_URL);
+}
+
+
+/**
+ * Set the display buttons state for a toolbar.
+ *
+ * \param *toolbar the toolbar to update.
+ * \param display true to display the buttons; else false.
+ */
+
+void ro_toolbar_set_display_buttons(struct toolbar *toolbar, bool display)
+{
+ if (toolbar != NULL)
+ toolbar->display_buttons = display;
+}
+
+
+/**
+ * Set the display URL bar state for a browser toolbar.
+ *
+ * \param *toolbar the toolbar to update.
+ * \param display true to display the URL bar; else false.
+ */
+
+void ro_toolbar_set_display_url(struct toolbar *toolbar, bool display)
+{
+ if (toolbar != NULL && toolbar->type == TOOLBAR_BROWSER_TOOLBAR)
+ toolbar->display_url = display;
+}
+
+
+/**
+ * Set the display throbber state for a browser toolbar.
+ *
+ * \param *toolbar the toolbar to update.
+ * \param display true to display the throbber; else false.
+ */
+
+void ro_toolbar_set_display_throbber(struct toolbar *toolbar, bool display)
+{
+ if (toolbar != NULL && toolbar->type == TOOLBAR_BROWSER_TOOLBAR)
+ toolbar->display_throbber = display;
+}
+
+
+/**
+ * Return true or false depending on whether the given toolbar is set to
+ * display the button bar.
+ *
+ * \param *toolbar the toolbar of interest.
+ * \return true if the toolbar exists and the button bar is
+ * shown; else false.
+ */
+
+bool ro_toolbar_get_display_buttons(struct toolbar *toolbar)
+{
+ return (toolbar == NULL) ? false : toolbar->display_buttons;
+}
+
+
+/**
+ * Return true or false depending on whether the given toolbar is set to
+ * display the URL bar.
+ *
+ * \param *toolbar the toolbar of interest.
+ * \return true if the toolbar exists and the URL bar is
+ * shown; else false.
+ */
+
+bool ro_toolbar_get_display_url(struct toolbar *toolbar)
+{
+ return (toolbar == NULL) ? false : toolbar->display_url;
+}
+
+
+/**
+ * Return true or false depending on whether the given toolbar is set to
+ * display the throbber.
+ *
+ * \param *toolbar the toolbar of interest.
+ * \return true if the toolbar exists and the throbber is
+ * shown; else false.
+ */
+
+bool ro_toolbar_get_display_throbber(struct toolbar *toolbar)
+{
+ return (toolbar == NULL) ? false : toolbar->display_throbber;
+}
+
+
+/**
+ * Return true or false depending on whether the given toolbar is currently
+ * being edited.
+ *
+ * \param *toolbar the toolbar of interest.
+ * \return true if the toolbar exists and is beng edited;
+ * else false.
+ */
+
+bool ro_toolbar_get_editing(struct toolbar *toolbar)
+{
+ return (toolbar == NULL) ? false : (toolbar->editor != NULL);
+}
+
+
+/**
+ * Process clicks on a toolbar, returning selection details to the parent task.
+ *
+ * \TODO -- At present this just checks that the toolbar is valid, then passes
+ * the click on to an active editor if there is one. If there isn't, then
+ * the icon is validated and the Wimp handle returned again -- URL and Suggest
+ * icons in the Browser toolbar have to be special-cased. This should be
+ * fixed if the internal implementation is overhauled.
+ *
+ * \param *toolbar The toolbar receiving the click.
+ * \param *pointer The wimp mouse click event.
+ * \return The selected icon, or ICON_TOOLBAR_NONE.
+ */
+
+int ro_toolbar_click(struct toolbar *toolbar, wimp_pointer *pointer)
+{
+ struct toolbar_icon *icon;
+
+ if (toolbar == NULL)
+ return ICON_TOOLBAR_NONE;
+
+ if (toolbar->editor != NULL) {
+ ro_toolbar_editor_click(toolbar, pointer);
+ return ICON_TOOLBAR_NONE;
+ }
+
+ /* Validate the clicked icon handle, and return that if the icon is
+ * an 'active' button. The Browser toolbar sees special treatment.
+ */
+
+ if (toolbar->type == TOOLBAR_BROWSER_TOOLBAR &&
+ (pointer->i == ICON_TOOLBAR_URL ||
+ pointer->i == ICON_TOOLBAR_SUGGEST))
+ return pointer->i;
+
+ icon = toolbar->icon;
+ while (icon != NULL && icon->icon_number != pointer->i)
+ icon = icon->next;
+
+ if (icon == NULL || !icon->display)
+ return ICON_TOOLBAR_NONE;
+
+ return icon->icon_number;
}
@@ -1390,7 +1686,7 @@
}
break;
}
- ro_toolbar_process(toolbar, -1);
+ ro_toolbar_process(toolbar, -1, false);
ro_toolbar_editor_sync(toolbar);
}
ro_toolbar_set_help_prefix(toolbar);
@@ -1580,8 +1876,7 @@
ro_toolbar_icon_drag->display = false;
}
}
- ro_toolbar_drag->reformat_buttons = true;
- ro_toolbar_process(ro_toolbar_drag, -1);
+ ro_toolbar_process(ro_toolbar_drag, -1, true);
ro_toolbar_editor_sync(ro_toolbar_drag);
}
Modified: branches/stevef/toolbars/riscos/toolbar.h
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/toolbar...
==============================================================================
--- branches/stevef/toolbars/riscos/toolbar.h (original)
+++ branches/stevef/toolbars/riscos/toolbar.h Thu Dec 30 11:30:57 2010
@@ -25,6 +25,8 @@
#ifndef _NETSURF_RISCOS_TOOLBAR_H_
#define _NETSURF_RISCOS_TOOLBAR_H_
+
+#define ICON_TOOLBAR_NONE (-1)
/* icon numbers for browser toolbars */
#define ICON_TOOLBAR_BACK 0
@@ -117,18 +119,36 @@
struct toolbar *next; /**< the next bar in the toolbar list */
};
-struct toolbar *ro_toolbar_create(struct theme_descriptor *descriptor, toolbar_type type, const struct toolbar_callbacks *callbacks, void *client_data);
-bool ro_toolbar_update(struct theme_descriptor *descriptor, struct toolbar *toolbar);
+struct toolbar *ro_toolbar_create(struct theme_descriptor *descriptor,
+ toolbar_type type,
+ const struct toolbar_callbacks *callbacks, void *client_data);
+bool ro_toolbar_update(struct theme_descriptor *descriptor,
+ struct toolbar *toolbar);
bool ro_toolbar_attach(struct toolbar *toolbar, wimp_w parent);
-bool ro_toolbar_process(struct toolbar *toolbar, int width);
+bool ro_toolbar_process(struct toolbar *toolbar, int width, bool reformat);
void ro_toolbar_destroy(struct toolbar *toolbar);
void ro_toolbar_refresh(struct toolbar *toolbar);
void ro_toolbar_update_client_data(struct toolbar *toolbar, void *client_data);
void ro_toolbar_theme_update(void);
struct toolbar *ro_toolbar_parent_window_lookup(wimp_w w);
+struct toolbar *ro_toolbar_window_lookup(wimp_w w);
+wimp_w ro_toolbar_get_parent_window(struct toolbar *toolbar);
void ro_toolbar_start_throbbing(struct toolbar *toolbar);
void ro_toolbar_stop_throbbing(struct toolbar *toolbar);
void ro_toolbar_throb(struct toolbar *toolbar);
+bool ro_toolbar_take_caret(struct toolbar *toolbar);
+void ro_toolbar_set_url(struct toolbar *toolbar, const char *url,
+ bool is_utf8, bool set_caret);
+const char *ro_toolbar_get_url(struct toolbar *toolbar);
+void ro_toolbar_set_display_buttons(struct toolbar *toolbar, bool display);
+void ro_toolbar_set_display_url(struct toolbar *toolbar, bool display);
+void ro_toolbar_set_display_throbber(struct toolbar *toolbar, bool display);
+bool ro_toolbar_get_display_buttons(struct toolbar *toolbar);
+bool ro_toolbar_get_display_url(struct toolbar *toolbar);
+bool ro_toolbar_get_display_throbber(struct toolbar *toolbar);
+bool ro_toolbar_get_editing(struct toolbar *toolbar);
+
+int ro_toolbar_click(struct toolbar *toolbar, wimp_pointer *pointer);
void ro_toolbar_toggle_edit(struct toolbar *toolbar);
void ro_toolbar_editor_sync(struct toolbar *toolbar);
@@ -136,6 +156,23 @@
void ro_toolbar_editor_drag_end(wimp_dragged *drag);
int ro_toolbar_height_change(struct toolbar *toolbar);
+
+#define ro_toolbar_menu_option_shade(toolbar) \
+ (((toolbar) == NULL) || ro_toolbar_get_editing(toolbar))
+
+#define ro_toolbar_menu_buttons_tick(toolbar) \
+ (ro_toolbar_get_display_buttons(toolbar) || \
+ ro_toolbar_get_editing(toolbar))
+
+#define ro_toolbar_menu_url_tick(toolbar) \
+ (ro_toolbar_get_display_url(toolbar))
+
+#define ro_toolbar_menu_throbber_tick(toolbar) \
+ (ro_toolbar_get_display_throbber(toolbar))
+
+#define ro_toolbar_menu_edit_shade(toolbar) ((toolbar) == NULL)
+
+#define ro_toolbar_menu_edit_tick(toolbar) (ro_toolbar_get_editing(toolbar))
#define ro_toolbar_height(toolbar) (toolbar->height + \
(toolbar->editor ? toolbar->editor->height : 0) > toolbar->max_height ? \
Modified: branches/stevef/toolbars/riscos/treeview.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/treevie...
==============================================================================
--- branches/stevef/toolbars/riscos/treeview.c (original)
+++ branches/stevef/toolbars/riscos/treeview.c Thu Dec 30 11:30:57 2010
@@ -722,7 +722,7 @@
}
if (tv->tb)
- ro_toolbar_process(tv->tb, -1);
+ ro_toolbar_process(tv->tb, -1, false);
}
@@ -1077,10 +1077,6 @@
ro_treeview *tv = (ro_treeview *) data;
if (tv != NULL && tv->tb != NULL){
- if (tv->tb->editor != NULL)
- if (!ro_toolbar_update(NULL, tv->tb->editor))
- tv->tb->editor = NULL;
-
if (!ro_toolbar_update(NULL, tv->tb)) {
ro_toolbar_destroy(tv->tb);
tv->tb = NULL;
@@ -1111,21 +1107,6 @@
}
}
-#if 0
- if ((tree) && (tree->toolbar)) {
- if (tree->toolbar->editor)
- if (!ro_toolbar_update(NULL, tree->toolbar->editor))
- tree->toolbar->editor = NULL;
- if (!ro_toolbar_update(NULL, tree->toolbar)) {
- ro_toolbar_destroy(tree->toolbar);
- tree->toolbar = NULL;
- }
- ro_toolbar_editor_sync(tree->toolbar);
- ro_toolbar_attach(tree->toolbar, (wimp_w)tree->handle);
- tree_resized(tree);
- xwimp_force_redraw((wimp_w)tree->handle, 0, -16384, 16384, 16384);
- }
-#endif
/**
* Return a token identifying the interactive help message for a given cursor
Modified: branches/stevef/toolbars/riscos/url_complete.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/url_com...
==============================================================================
--- branches/stevef/toolbars/riscos/url_complete.c (original)
+++ branches/stevef/toolbars/riscos/url_complete.c Thu Dec 30 11:30:57 2010
@@ -71,13 +71,12 @@
{
const char *url;
- if ((!g->toolbar) || (!g->toolbar->display_url) ||
+ if (!ro_toolbar_get_display_url(g->toolbar) ||
(g->window == url_complete_parent))
return;
ro_gui_url_complete_close(NULL, 0);
- url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL);
+ url = ro_toolbar_get_url(g->toolbar);
url_complete_matched_string = strdup(url);
if (url_complete_matched_string)
@@ -104,7 +103,7 @@
bool currently_open;
/* we must have a toolbar/url bar */
- if ((!g->toolbar) || (!g->toolbar->display_url) ||
+ if (!ro_toolbar_get_display_url(g->toolbar) ||
(!option_url_suggestion)) {
ro_gui_url_complete_close(NULL, 0);
return false;
@@ -130,10 +129,9 @@
/* get the text to match */
url_complete_parent = g->window;
- url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL);
- match_url = strdup(url);
- if (!match_url) {
+ url = ro_toolbar_get_url(g->toolbar);
+ match_url = (url != NULL) ? strdup(url) : NULL;
+ if (match_url == NULL) {
ro_gui_url_complete_close(NULL, 0);
return false;
}
@@ -300,14 +298,13 @@
}
if (url_complete_matches_selection == -1) {
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL,
- url_complete_original_url, true);
+ ro_toolbar_set_url(g->toolbar,
+ url_complete_original_url, true, false);
} else {
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL,
+ ro_toolbar_set_url(g->toolbar,
url_complete_matches[
- url_complete_matches_selection], true);
+ url_complete_matches_selection],
+ true, false);
free(url_complete_matched_string);
url_complete_matched_string = strdup(url_complete_matches[
url_complete_matches_selection]);
@@ -401,7 +398,7 @@
/* if there is no toolbar, or there is no URL bar shown,
* or there are no URL matches, close it */
- if ((!g->toolbar) || (!g->toolbar->display_url) ||
+ if (!ro_toolbar_get_display_url(g->toolbar) ||
(!url_complete_matches) ||
(url_complete_matches_available == 0)) {
ro_gui_url_complete_close(NULL, 0);
@@ -685,9 +682,7 @@
g = ro_gui_window_lookup(url_complete_parent);
if (!g)
return false;
- url = ro_gui_get_icon_string(
- g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL);
+ url = ro_toolbar_get_url(g->toolbar);
free(url_complete_original_url);
url_complete_original_url = strdup(url);
if (!url_complete_original_url)
@@ -722,10 +717,10 @@
/* Select sets the text and launches */
if (pointer->buttons == wimp_CLICK_SELECT) {
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL,
+ ro_toolbar_set_url(g->toolbar,
url_complete_matches[
- url_complete_matches_selection], true);
+ url_complete_matches_selection],
+ true, false);
/** \todo The interaction of components here is hideous */
/* Do NOT make any attempt to use any of the global url
@@ -744,10 +739,10 @@
/* Adjust just sets the text */
} else if (pointer->buttons == wimp_CLICK_ADJUST) {
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL,
+ ro_toolbar_set_url(g->toolbar,
url_complete_matches[
- url_complete_matches_selection], true);
+ url_complete_matches_selection],
+ true, false);
ro_gui_url_complete_keypress(g, 0);
}
return true;
Modified: branches/stevef/toolbars/riscos/window.c
URL: http://source.netsurf-browser.org/branches/stevef/toolbars/riscos/window....
==============================================================================
--- branches/stevef/toolbars/riscos/window.c (original)
+++ branches/stevef/toolbars/riscos/window.c Thu Dec 30 11:30:57 2010
@@ -148,7 +148,6 @@
static void ro_gui_window_close(wimp_w w);
static void ro_gui_window_redraw(wimp_draw *redraw);
static bool ro_gui_window_click(wimp_pointer *mouse);
-static bool ro_gui_window_keypress(wimp_key *key);
static void ro_gui_window_launch_url(struct gui_window *g, const char *url);
static void ro_gui_window_clone_options(struct browser_window *new_bw,
struct browser_window *old_bw);
@@ -386,9 +385,6 @@
ro_gui_wimp_event_register_close_window(g->window, ro_gui_window_close);
ro_gui_wimp_event_register_redraw_window(g->window, ro_gui_window_redraw);
ro_gui_wimp_event_register_keypress(g->window, ro_gui_window_keypress);
- if (g->toolbar)
- ro_gui_wimp_event_register_keypress(g->toolbar->toolbar_handle,
- ro_gui_window_keypress);
ro_gui_wimp_event_register_mouse_click(g->window, ro_gui_window_click);
/* Open the window at the top of the stack */
@@ -421,17 +417,9 @@
/* Claim the caret for top-level windows */
if (bw->browser_window_type == BROWSER_WINDOW_NORMAL) {
- if (g->toolbar && g->toolbar->display_url) {
- error = xwimp_set_caret_position(
- g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL, -1, -1, -1, 0);
+ if (ro_toolbar_take_caret(g->toolbar))
ro_gui_url_complete_start(g);
- if (error) {
- LOG(("xwimp_set_caret_position: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
- } else
+ else
gui_window_place_caret(g, -100, -100, 0);
}
return g;
@@ -1037,40 +1025,14 @@
void gui_window_set_url(struct gui_window *g, const char *url)
{
- wimp_caret caret;
- os_error *error;
- const char *toolbar_url;
-
if (!g->toolbar)
return;
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL, url, true);
+ ro_toolbar_set_url(g->toolbar, url, true, false);
+
ro_gui_force_redraw_icon(g->toolbar->toolbar_handle,
ICON_TOOLBAR_FAVICON);
- /* if the caret is in the address bar, move it to the end */
- error = xwimp_get_caret_position(&caret);
- if (error) {
- LOG(("xwimp_get_caret_position: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- return;
- }
-
- if (!(caret.w == g->toolbar->toolbar_handle &&
- caret.i == ICON_TOOLBAR_URL))
- return;
-
- toolbar_url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL);
- error = xwimp_set_caret_position(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL, 0, 0, -1, (int)strlen(toolbar_url));
- if (error) {
- LOG(("xwimp_set_caret_position: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
- }
ro_gui_url_complete_start(g);
}
@@ -1692,16 +1654,16 @@
/**
- * Forces all windows to be set to the current theme
+ * Update a window and its toolbar to reflect a new theme: used as a callback
+ * by the toolbar module when a theme change affects a toolbar.
+ *
+ * \param *data void pointer to the window's gui_window struct
*/
void ro_gui_window_update_theme(void *data)
{
struct gui_window *g = (struct gui_window *) data;
if (g != NULL && g->toolbar != NULL) {
- if (g->toolbar->editor != NULL)
- if (!ro_toolbar_update(NULL, g->toolbar->editor))
- g->toolbar->editor = NULL;
if (!ro_toolbar_update(NULL, g->toolbar)) {
ro_toolbar_destroy(g->toolbar);
g->toolbar = NULL;
@@ -1710,6 +1672,14 @@
gui_window_update_extent(g);
}
}
+
+
+/**
+ * Update a window to reflect a change in toolbar size: used as a callback by
+ * the toolbar module when a toolbar height changes.
+ *
+ * \param *data void pointer the window's gui_window struct
+ */
void ro_gui_window_update_toolbar(void *data)
{
@@ -1945,7 +1915,7 @@
if (g->status_bar)
ro_gui_status_bar_resize(g->status_bar);
if (g->toolbar) {
- ro_toolbar_process(g->toolbar, -1);
+ ro_toolbar_process(g->toolbar, -1, false);
/* second resize updates to the new URL bar width */
ro_gui_url_complete_resize(g, open);
}
@@ -2081,20 +2051,24 @@
/**
* Convert a toolbar RISC OS window handle to a gui_window.
*
- * \param w RISC OS window handle of a toolbar
- * \return pointer to a structure if found, 0 otherwise
+ * \param w RISC OS window handle of a toolbar
+ * \return pointer to a structure if found, 0 otherwise
*/
struct gui_window *ro_gui_toolbar_lookup(wimp_w window)
{
- struct gui_window *g;
- for (g = window_list; g; g = g->next) {
- if ((g->toolbar) && ((g->toolbar->toolbar_handle == window) ||
- ((g->toolbar->editor) &&
- (g->toolbar->editor->toolbar_handle == window))))
- return g;
- }
- return 0;
+ struct gui_window *g = NULL;
+ struct toolbar *toolbar;
+ wimp_w parent;
+
+ toolbar = ro_toolbar_window_lookup(window);
+
+ if (toolbar != NULL) {
+ parent = ro_toolbar_get_parent_window(toolbar);
+ g = ro_gui_window_lookup(parent);
+ }
+
+ return g;
}
@@ -2119,12 +2093,16 @@
/**
* Process Mouse_Click events in a toolbar.
+ *
+ * \param *pointer The Wimp mouse click event block to process.
+ * \return true if the click was handled; else false.
*/
bool ro_gui_toolbar_click(wimp_pointer *pointer)
{
- struct gui_window *g = ro_gui_toolbar_lookup(pointer->w);
- struct browser_window *new_bw;
+ struct gui_window *g = ro_gui_toolbar_lookup(pointer->w);
+ struct browser_window *new_bw;
+ int selection;
/* toolbars in the options window have no gui_window */
if (!g)
@@ -2140,14 +2118,10 @@
return true;
}
- /* Handle toolbar edits */
- if ((g->toolbar->editor) && (pointer->i < ICON_TOOLBAR_URL)) {
- ro_toolbar_editor_click(g->toolbar, pointer);
- return true;
- }
+ selection = ro_toolbar_click(g->toolbar, pointer);
/* Handle the buttons appropriately */
- switch (pointer->i) {
+ switch (selection) {
case ICON_TOOLBAR_BACK:
if (pointer->buttons == wimp_CLICK_ADJUST) {
new_bw = browser_window_create(NULL,
@@ -2427,10 +2401,7 @@
if (!g->toolbar)
return false;
ro_gui_url_complete_close(NULL, 0);
- ro_gui_set_icon_string(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL, "www.", true);
- xwimp_set_caret_position(g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL, 0, 0, -1, 4);
+ ro_toolbar_set_url(g->toolbar, "www.", true, true);
ro_gui_url_complete_start(g);
ro_gui_url_complete_keypress(g, wimp_KEY_DOWN);
return true;
@@ -2518,10 +2489,9 @@
case wimp_KEY_RETURN:
if (!toolbar)
break;
- toolbar_url = ro_gui_get_icon_string(
- g->toolbar->toolbar_handle,
- ICON_TOOLBAR_URL);
- ro_gui_window_launch_url(g, toolbar_url);
+ toolbar_url = ro_toolbar_get_url(g->toolbar);
+ if (toolbar_url != NULL)
+ ro_gui_window_launch_url(g, toolbar_url);
return true;
case wimp_KEY_ESCAPE:
@@ -3015,15 +2985,23 @@
/* 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;
+ ro_toolbar_set_display_buttons(new_gui->toolbar,
+ option_toolbar_show_buttons);
+ ro_toolbar_set_display_url(new_gui->toolbar,
+ option_toolbar_show_address);
+ ro_toolbar_set_display_throbber(new_gui->toolbar,
+ option_toolbar_show_throbber);
if ((old_gui) && (old_gui->toolbar)) {
- 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;
- new_gui->toolbar->reformat_buttons = true;
- ro_toolbar_process(new_gui->toolbar, -1);
+ ro_toolbar_set_display_buttons(new_gui->toolbar,
+ ro_toolbar_get_display_buttons(
+ old_gui->toolbar));
+ ro_toolbar_set_display_url(new_gui->toolbar,
+ ro_toolbar_get_display_url(
+ old_gui->toolbar));
+ ro_toolbar_set_display_throbber(new_gui->toolbar,
+ ro_toolbar_get_display_throbber(
+ old_gui->toolbar));
+ ro_toolbar_process(new_gui->toolbar, -1, true);
}
}
}
@@ -3053,13 +3031,17 @@
/* Set up the toolbar
*/
- if (gui->toolbar) {
- 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);
+ if (gui->toolbar != NULL) {
+ option_toolbar_show_buttons =
+ ro_toolbar_get_display_buttons(gui->toolbar);
+ option_toolbar_show_address =
+ ro_toolbar_get_display_url(gui->toolbar);
+ option_toolbar_show_throbber =
+ ro_toolbar_get_display_throbber(gui->toolbar);
+ }
+ if (gui->status_bar != NULL)
+ option_toolbar_status_width =
+ ro_gui_status_bar_get_width(gui->status_bar);
}
12 years, 8 months
r11173 tlsa - /trunk/libcss/test/data/select/tests1.dat
by netsurf@semichrome.net
Author: tlsa
Date: Thu Dec 30 08:56:19 2010
New Revision: 11173
URL: http://source.netsurf-browser.org?rev=11173&view=rev
Log:
Slightly more selection test coverage.
Modified:
trunk/libcss/test/data/select/tests1.dat
Modified: trunk/libcss/test/data/select/tests1.dat
URL: http://source.netsurf-browser.org/trunk/libcss/test/data/select/tests1.da...
==============================================================================
--- trunk/libcss/test/data/select/tests1.dat (original)
+++ trunk/libcss/test/data/select/tests1.dat Thu Dec 30 08:56:19 2010
@@ -10,6 +10,7 @@
#author
div#foo { background-color: #bbc; }
.green { color: #0f0; }
+div#foo { float: right; }
#errors
#expected
background-attachment: scroll
@@ -60,6 +61,81 @@
padding-bottom: 0px
padding-left: 0px
position: static
+right: auto
+table-layout: auto
+text-decoration: none
+top: auto
+unicode-bidi: normal
+vertical-align: baseline
+width: auto
+word-spacing: normal
+z-index: auto
+#reset
+
+#tree
+| div
+| id=foo
+| p*
+| class=green
+#ua
+div, p { display: none; float: right; position: absolute; }
+#user
+p { display: inherit; float: none; }
+.green { color: #f00 !important; }
+#author
+div#foo { background-color: #bbc; }
+.green { color: #0f0; display: table-row-group; display: table-cell !important; }
+div p.green { float: left !important; }
+#errors
+#expected
+background-attachment: scroll
+background-color: transparent
+background-image: none
+background-position: 0% 0%
+background-repeat: repeat
+border-spacing: 0px 0px
+border-top-color: initial
+border-right-color: initial
+border-bottom-color: initial
+border-left-color: initial
+border-top-style: none
+border-right-style: none
+border-bottom-style: none
+border-left-style: none
+border-top-width: medium
+border-right-width: medium
+border-bottom-width: medium
+border-left-width: medium
+bottom: auto
+clear: none
+clip: auto
+color: #ffff0000
+content: normal
+counter-increment: none
+counter-reset: none
+cursor: auto
+display: table-cell
+float: none
+height: auto
+left: auto
+letter-spacing: normal
+margin-top: 0px
+margin-right: 0px
+margin-bottom: 0px
+margin-left: 0px
+max-height: none
+max-width: none
+min-height: 0px
+min-width: 0px
+outline-color: invert
+outline-style: none
+outline-width: 2px
+overflow: visible
+padding-top: 0px
+padding-right: 0px
+padding-bottom: 0px
+padding-left: 0px
+position: absolute
right: auto
table-layout: auto
text-decoration: none
12 years, 8 months
r11172 tlsa - /trunk/hubbub/examples/libxml.c
by netsurf@semichrome.net
Author: tlsa
Date: Thu Dec 30 07:48:26 2010
New Revision: 11172
URL: http://source.netsurf-browser.org?rev=11172&view=rev
Log:
Fix example.
Modified:
trunk/hubbub/examples/libxml.c
Modified: trunk/hubbub/examples/libxml.c
URL: http://source.netsurf-browser.org/trunk/hubbub/examples/libxml.c?rev=1117...
==============================================================================
--- trunk/hubbub/examples/libxml.c (original)
+++ trunk/hubbub/examples/libxml.c Thu Dec 30 07:48:26 2010
@@ -163,21 +163,17 @@
uint8_t *buf;
size_t len;
- if (argc != 3) {
- fprintf(stderr, "Usage: %s <Aliases> <input>\n", argv[0]);
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <input>\n", argv[0]);
return 1;
}
-
- /* Initialise hubbub */
- assert(hubbub_initialise(argv[1], myrealloc, NULL) == HUBBUB_OK);
/* Read input file into memory. If we wanted to, we could read into
* a fixed-size buffer and pass each chunk to the parser sequentially.
*/
- input = fopen(argv[2], "r");
+ input = fopen(argv[1], "r");
if (input == NULL) {
- hubbub_finalise(myrealloc, NULL);
- fprintf(stderr, "Failed opening %s\n", argv[2]);
+ fprintf(stderr, "Failed opening %s\n", argv[1]);
return 1;
}
@@ -188,7 +184,6 @@
buf = malloc(len);
if (buf == NULL) {
fclose(input);
- hubbub_finalise(myrealloc, NULL);
fprintf(stderr, "No memory for buf\n");
return 1;
}
@@ -200,7 +195,6 @@
if (error != OK) {
free(buf);
fclose(input);
- hubbub_finalise(myrealloc, NULL);
fprintf(stderr, "Failed creating parsing context\n");
return 1;
}
@@ -226,7 +220,6 @@
destroy_context(c);
free(buf);
fclose(input);
- hubbub_finalise(myrealloc, NULL);
fprintf(stderr, "Failed recreating parser\n");
return 1;
}
@@ -242,7 +235,6 @@
destroy_context(c);
free(buf);
fclose(input);
- hubbub_finalise(myrealloc, NULL);
fprintf(stderr, "Failed parsing document\n");
return 1;
}
@@ -254,7 +246,6 @@
destroy_context(c);
free(buf);
fclose(input);
- hubbub_finalise(myrealloc, NULL);
fprintf(stderr, "Failed parsing document\n");
return 1;
}
@@ -273,8 +264,6 @@
destroy_context(c);
fclose(input);
-
- hubbub_finalise(myrealloc, NULL);
return 0;
}
12 years, 8 months
r11171 jmb - in /toolchains/sdk: Makefile recipes/patches/openssl/Configure.p
by netsurf@semichrome.net
Author: jmb
Date: Thu Dec 30 06:04:57 2010
New Revision: 11171
URL: http://source.netsurf-browser.org?rev=11171&view=rev
Log:
Build runes for RISC OS SDK.
libxml2 must not depend on libiconv.d, as we may not want libiconv in the SDK (e.g. if iconv is provided by the runtime)
Change the way we provide environment to subprocesses -- some buildsystems (i.e. OSLib's) dislike CC being overridden with the target compiler
Modified:
toolchains/sdk/Makefile
toolchains/sdk/recipes/patches/openssl/Configure.p
Modified: toolchains/sdk/Makefile
URL: http://source.netsurf-browser.org/toolchains/sdk/Makefile?rev=11171&r1=11...
==============================================================================
--- toolchains/sdk/Makefile (original)
+++ toolchains/sdk/Makefile Thu Dec 30 06:04:57 2010
@@ -23,25 +23,28 @@
VERSION_LIBMNG := 1.0.10
VERSION_LIBCARES := 1.7.4
VERSION_LIBCURL := 7.21.3
+VERSION_RISCOS_OSLIB := 402
# Path
-export PATH := $(GCCSDK_INSTALL_CROSSBIN):$(PATH)
+path__ := $(GCCSDK_INSTALL_CROSSBIN):$(PATH)
# Tools
-export CC := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*gcc)
-export CXX := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*g++)
-export AR := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*ar)
+cc__ := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*gcc)
+cxx__ := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*g++)
+ar__ := $(wildcard $(GCCSDK_INSTALL_CROSSBIN)/*ar)
# Flags
-export CFLAGS := -I$(GCCSDK_INSTALL_ENV)/include
-export CPPFLAGS := -I$(GCCSDK_INSTALL_ENV)/include
-export LDFLAGS := -L$(GCCSDK_INSTALL_ENV)/lib
-export PKG_CONFIG_LIBDIR := $(GCCSDK_INSTALL_ENV)/lib/pkgconfig
+cflags__ := -I$(GCCSDK_INSTALL_ENV)/include
+cppflags__ := -I$(GCCSDK_INSTALL_ENV)/include
+ldflags__ := -L$(GCCSDK_INSTALL_ENV)/lib
+pkg_config_libdir__ := $(GCCSDK_INSTALL_ENV)/lib/pkgconfig
# Target
-TARGET := $(shell $(CC) -dumpmachine)
+TARGET := $(shell $(cc__) -dumpmachine)
# Environment
+env := PATH="$(path__)" CC="$(cc__)" CXX="$(cxx__)" AR="$(ar__)" CFLAGS="$(cflags__)" CPPFLAGS="$(cppflags__)" LDFLAGS="$(ldflags__)" PKG_CONFIG_LIBDIR="$(pkg_config_libdir__)"
+
RECIPES := $(CURDIR)/recipes
SOURCEDIR := $(CURDIR)/sources
BUILDDIR := $(CURDIR)/builddir-$(TARGET)
@@ -58,9 +61,9 @@
SDK_ITEMS := $(BUILDSTEPS)/libiconv.d $(BUILDSTEPS)/libtre.d $(COMMON_SDK_ITEMS)
endif
-#ifeq ($(TARGET),arm-unknown-riscos)
-# SDK_ITEMS := $(COMMON_SDK_ITEMS)
-#endif
+ifeq ($(TARGET),arm-unknown-riscos)
+ SDK_ITEMS := $(BUILDSTEPS)/riscos-oslib.d $(COMMON_SDK_ITEMS)
+endif
ifeq ($(SDK_ITEMS),)
$(error Unable to compute SDK components for target $(TARGET))
@@ -90,8 +93,8 @@
mkdir -p $(BUILDDIR)/zlib
cd $(BUILDDIR)/zlib && tar xjf $(SOURCEDIR)/zlib-$(VERSION_ZLIB).tar.bz2
for p in `ls $(RECIPES)/patches/zlib/*.p` ; do patch -d $(BUILDDIR)/zlib/zlib-$(VERSION_ZLIB) -p0 <$$p ; done
- cd $(BUILDDIR)/zlib/zlib-$(VERSION_ZLIB) && ./configure --prefix=$(GCCSDK_INSTALL_ENV)
- cd $(BUILDDIR)/zlib/zlib-$(VERSION_ZLIB) && make install
+ cd $(BUILDDIR)/zlib/zlib-$(VERSION_ZLIB) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV)
+ cd $(BUILDDIR)/zlib/zlib-$(VERSION_ZLIB) && $(env) make install
touch $@
$(BUILDSTEPS)/zlib-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/zlib-$(VERSION_ZLIB).tar.bz2
@@ -105,8 +108,8 @@
mkdir -p $(BUILDDIR)/libiconv
cd $(BUILDDIR)/libiconv && tar xzf $(SOURCEDIR)/libiconv-$(VERSION_LIBICONV).tar.gz
for p in `ls $(RECIPES)/patches/libiconv/*.p` ; do patch -d $(BUILDDIR)/libiconv/libiconv-$(VERSION_LIBICONV) -p0 <$$p ; done
- cd $(BUILDDIR)/libiconv/libiconv-$(VERSION_LIBICONV) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libiconv/libiconv-$(VERSION_LIBICONV) && make install
+ cd $(BUILDDIR)/libiconv/libiconv-$(VERSION_LIBICONV) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libiconv/libiconv-$(VERSION_LIBICONV) && $(env) make install
touch $@
$(BUILDSTEPS)/libiconv-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/libiconv-$(VERSION_LIBICONV).tar.gz
@@ -119,8 +122,8 @@
$(BUILDSTEPS)/libtre.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libtre-src.d
mkdir -p $(BUILDDIR)/libtre
cd $(BUILDDIR)/libtre && tar xjf $(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.bz2
- cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && make install
+ cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) make install
cp $(RECIPES)/files/libtre/regex.h $(GCCSDK_INSTALL_ENV)/include/regex.h
touch $@
@@ -131,11 +134,11 @@
wget -q -O $@ http://laurikari.net/tre/$(subst $(SOURCEDIR)/,,$@)
# libXML2
-$(BUILDSTEPS)/libxml2.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d $(BUILDSTEPS)/libiconv.d $(BUILDSTEPS)/libxml2-src.d
+$(BUILDSTEPS)/libxml2.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d $(BUILDSTEPS)/libxml2-src.d
mkdir -p $(BUILDDIR)/libxml2
cd $(BUILDDIR)/libxml2 && tar xzf $(SOURCEDIR)/libxml2-$(VERSION_LIBXML).tar.gz
- cd $(BUILDDIR)/libxml2/libxml2-$(VERSION_LIBXML) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libxml2/libxml2-$(VERSION_LIBXML) && make install
+ cd $(BUILDDIR)/libxml2/libxml2-$(VERSION_LIBXML) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libxml2/libxml2-$(VERSION_LIBXML) && $(env) make install
touch $@
$(BUILDSTEPS)/libxml2-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/libxml2-$(VERSION_LIBXML).tar.gz
@@ -149,8 +152,8 @@
mkdir -p $(BUILDDIR)/openssl
cd $(BUILDDIR)/openssl && tar xzf $(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
for p in `ls $(RECIPES)/patches/openssl/*.p` ; do patch -d $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) -p0 <$$p ; done
- cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET) no-shared no-asm no-threads
- cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && make install
+ cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET) no-shared no-asm no-threads
+ cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) make install
touch $@
$(BUILDSTEPS)/openssl-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
@@ -163,8 +166,8 @@
$(BUILDSTEPS)/libpng.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d $(BUILDSTEPS)/libpng-src.d
mkdir -p $(BUILDDIR)/libpng
cd $(BUILDDIR)/libpng && tar xzf $(SOURCEDIR)/libpng-$(VERSION_LIBPNG).tar.gz
- cd $(BUILDDIR)/libpng/libpng-$(VERSION_LIBPNG) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libpng/libpng-$(VERSION_LIBPNG) && make install
+ cd $(BUILDDIR)/libpng/libpng-$(VERSION_LIBPNG) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libpng/libpng-$(VERSION_LIBPNG) && $(env) make install
touch $@
$(BUILDSTEPS)/libpng-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/libpng-$(VERSION_LIBPNG).tar.gz
@@ -178,8 +181,8 @@
$(BUILDSTEPS)/libjpeg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libjpeg-src.d
mkdir -p $(BUILDDIR)/libjpeg
cd $(BUILDDIR)/libjpeg && tar xzf $(SOURCEDIR)/jpegsrc.v$(VERSION_LIBJPEG).tar.gz
- cd $(BUILDDIR)/libjpeg/jpeg-$(VERSION_LIBJPEG) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libjpeg/jpeg-$(VERSION_LIBJPEG) && make install
+ cd $(BUILDDIR)/libjpeg/jpeg-$(VERSION_LIBJPEG) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libjpeg/jpeg-$(VERSION_LIBJPEG) && $(env) make install
touch $@
$(BUILDSTEPS)/libjpeg-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/jpegsrc.v$(VERSION_LIBJPEG).tar.gz
@@ -192,8 +195,8 @@
$(BUILDSTEPS)/liblcms.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d $(BUILDSTEPS)/libjpeg.d $(BUILDSTEPS)/liblcms-src.d
mkdir -p $(BUILDDIR)/liblcms
cd $(BUILDDIR)/liblcms && tar xzf $(SOURCEDIR)/lcms2-$(VERSION_LIBLCMS).tar.gz
- cd $(BUILDDIR)/liblcms/lcms2-$(VERSION_LIBLCMS) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/liblcms/lcms2-$(VERSION_LIBLCMS) && make install
+ cd $(BUILDDIR)/liblcms/lcms2-$(VERSION_LIBLCMS) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/liblcms/lcms2-$(VERSION_LIBLCMS) && $(env) make install
touch $@
$(BUILDSTEPS)/liblcms-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/lcms2-$(VERSION_LIBLCMS).tar.gz
@@ -208,7 +211,7 @@
cd $(BUILDDIR)/libmng && tar xzf $(SOURCEDIR)/libmng-$(VERSION_LIBMNG).tar.gz
for p in `ls $(RECIPES)/patches/libmng/*.p` ; do patch -d $(BUILDDIR)/libmng/libmng-$(VERSION_LIBMNG) -p0 <$$p ; done
cp $(BUILDDIR)/libmng/libmng-$(VERSION_LIBMNG)/makefiles/makefile.unix $(BUILDDIR)/libmng/libmng-$(VERSION_LIBMNG)/Makefile
- cd $(BUILDDIR)/libmng/libmng-$(VERSION_LIBMNG) && make install
+ cd $(BUILDDIR)/libmng/libmng-$(VERSION_LIBMNG) && $(env) make install
touch $@
$(BUILDSTEPS)/libmng-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/libmng-$(VERSION_LIBMNG).tar.gz
@@ -221,8 +224,8 @@
$(BUILDSTEPS)/libcares.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libcares-src.d
mkdir -p $(BUILDDIR)/libcares
cd $(BUILDDIR)/libcares && tar xzf $(SOURCEDIR)/c-ares-$(VERSION_LIBCARES).tar.gz
- cd $(BUILDDIR)/libcares/c-ares-$(VERSION_LIBCARES) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
- cd $(BUILDDIR)/libcares/c-ares-$(VERSION_LIBCARES) && make install
+ cd $(BUILDDIR)/libcares/c-ares-$(VERSION_LIBCARES) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared
+ cd $(BUILDDIR)/libcares/c-ares-$(VERSION_LIBCARES) && $(env) make install
touch $@
$(BUILDSTEPS)/libcares-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/c-ares-$(VERSION_LIBCARES).tar.gz
@@ -236,8 +239,8 @@
mkdir -p $(BUILDDIR)/libcurl
cd $(BUILDDIR)/libcurl && tar xjf $(SOURCEDIR)/curl-$(VERSION_LIBCURL).tar.bz2
for p in `ls $(RECIPES)/patches/libcurl/*.p` ; do patch -d $(BUILDDIR)/libcurl/curl-$(VERSION_LIBCURL) -p0 <$$p ; done
- cd $(BUILDDIR)/libcurl/curl-$(VERSION_LIBCURL) && ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared --without-libidn --enable-nonblocking --enable-ares=$(GCCSDK_INSTALL_ENV)/lib --without-random
- cd $(BUILDDIR)/libcurl/curl-$(VERSION_LIBCURL) && make install
+ cd $(BUILDDIR)/libcurl/curl-$(VERSION_LIBCURL) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) --disable-shared --without-libidn --enable-nonblocking --enable-ares=$(GCCSDK_INSTALL_ENV)/lib --without-random
+ cd $(BUILDDIR)/libcurl/curl-$(VERSION_LIBCURL) && $(env) make install
touch $@
$(BUILDSTEPS)/libcurl-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/curl-$(VERSION_LIBCURL).tar.bz2
@@ -246,3 +249,16 @@
$(SOURCEDIR)/curl-$(VERSION_LIBCURL).tar.bz2:
wget -q -O $@ http://curl.haxx.se/download/$(subst $(SOURCEDIR)/,,$@)
+# RISC OS OSLib
+$(BUILDSTEPS)/riscos-oslib.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/riscos-oslib-src.d
+ mkdir -p $(BUILDDIR)/riscos-oslib
+ cp -r $(SOURCEDIR)/riscos-oslib-$(VERSION_RISCOS_OSLIB) $(BUILDDIR)/riscos-oslib/
+ cd $(BUILDDIR)/riscos-oslib/riscos-oslib-$(VERSION_RISCOS_OSLIB) && GCCSDK_INSTALL_ENV=$(GCCSDK_INSTALL_ENV) GCCSDK_INSTALL_CROSSBIN=$(GCCSDK_INSTALL_CROSSBIN) make install
+ touch $@
+
+$(BUILDSTEPS)/riscos-oslib-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/riscos-oslib-$(VERSION_RISCOS_OSLIB)
+ touch $@
+
+$(SOURCEDIR)/riscos-oslib-$(VERSION_RISCOS_OSLIB):
+ svn co https://ro-oslib.svn.sourceforge.net/svnroot/ro-oslib/trunk/!OSLib@$(VERS... $@
+
Modified: toolchains/sdk/recipes/patches/openssl/Configure.p
URL: http://source.netsurf-browser.org/toolchains/sdk/recipes/patches/openssl/...
==============================================================================
--- toolchains/sdk/recipes/patches/openssl/Configure.p (original)
+++ toolchains/sdk/recipes/patches/openssl/Configure.p Thu Dec 30 06:04:57 2010
@@ -1,11 +1,20 @@
--- Configure.old 2010-12-29 02:43:14.000000000 +0000
+++ Configure 2010-12-29 02:45:29.000000000 +0000
-@@ -412,6 +412,8 @@
+@@ -412,6 +412,9 @@
"beos-x86-r5", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
"beos-x86-bone", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lbind -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC:-shared:.so",
++"arm-unknown-riscos","arm-unknown-riscos-gcc:-DL_ENDIAN -DTERMIOS -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::echo",
+"m68k-unknown-amigaos","m68k-unknown-amigaos-gcc:-DB_ENDIAN -DTERMIOS -DNO_SYSLOG -DHAVE_FORK=0 -DNO_SYS_PARAM_H -DNO_SYS_UN_H -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:::BN_LLONG DES_RISC1::::::::::::::::::::m68k-unknown-amigaos-ranlib",
+
#### SCO/Caldera targets.
#
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
+@@ -1039,6 +1042,7 @@
+ my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
+
+ $exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
++$exe_ext=",e1f" if ($target eq "arm-unknown-riscos");
+ $exe_ext=".nlm" if ($target =~ /netware/);
+ $exe_ext=".pm" if ($target =~ /vos/);
+ $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
12 years, 8 months
r11170 jmb - in /toolchains/arm-unknown-riscos: ./ Makefile recipes/ recipes/files/ recipes/files/gcc4/ recipes/files/gcc4/gccsdk-params
by netsurf@semichrome.net
Author: jmb
Date: Thu Dec 30 05:02:20 2010
New Revision: 11170
URL: http://source.netsurf-browser.org?rev=11170&view=rev
Log:
Build runes for the RISC OS toolchain
Added:
toolchains/arm-unknown-riscos/
toolchains/arm-unknown-riscos/Makefile
toolchains/arm-unknown-riscos/recipes/
toolchains/arm-unknown-riscos/recipes/files/
toolchains/arm-unknown-riscos/recipes/files/gcc4/
toolchains/arm-unknown-riscos/recipes/files/gcc4/gccsdk-params
Added: toolchains/arm-unknown-riscos/Makefile
URL: http://source.netsurf-browser.org/toolchains/arm-unknown-riscos/Makefile?...
==============================================================================
--- toolchains/arm-unknown-riscos/Makefile (added)
+++ toolchains/arm-unknown-riscos/Makefile Thu Dec 30 05:02:20 2010
@@ -1,0 +1,31 @@
+# Going to use a known revision of trunk, until there's a release version that suits
+UPSTREAM_GCCSDK_VERSION := 4957
+UPSTREAM_GCCSDK_TARBALL := gcc4
+UPSTREAM_GCCSDK_URI := svn://svn.riscos.info/gccsdk/trunk/gcc4@$(UPSTREAM_GCCSDK_VERSION)
+
+TOP := $(CURDIR)
+RECIPES := $(TOP)/recipes
+
+TARGET_NAME := arm-unknown-riscos
+
+PREFIX ?= /opt/netsurf/$(TARGET_NAME)
+
+.PHONY: all clean distclean
+all: $(UPSTREAM_GCCSDK_TARBALL)
+ cp -p $(RECIPES)/files/gcc4/gccsdk-params gcc4/gccsdk-params
+ sed -i 's#{PREFIX}#$(PREFIX)#' gcc4/gccsdk-params
+ cd gcc4 && make
+
+clean:
+ cd gcc4 && make clean
+
+distclean: clean
+ rm -fr gcc4
+
+###
+# Rules to fetch upstream sources
+###
+
+$(UPSTREAM_GCCSDK_TARBALL):
+ svn co $(UPSTREAM_GCCSDK_URI) $@
+
Added: toolchains/arm-unknown-riscos/recipes/files/gcc4/gccsdk-params
URL: http://source.netsurf-browser.org/toolchains/arm-unknown-riscos/recipes/f...
==============================================================================
--- toolchains/arm-unknown-riscos/recipes/files/gcc4/gccsdk-params (added)
+++ toolchains/arm-unknown-riscos/recipes/files/gcc4/gccsdk-params Thu Dec 30 05:02:20 2010
@@ -1,0 +1,10 @@
+# -- Following section is user configurable:
+# This is where the cross compiler will be installed. It needs to end in 'bin'.
+export GCCSDK_INSTALL_CROSSBIN={PREFIX}/cross/bin
+# This is where the porting tools and any libraries you build will be installed.
+export GCCSDK_INSTALL_ENV={PREFIX}/env
+
+# -- Do not change following section:
+# Required by the build.
+export LTCONFIG_VERSION=1.4a-GCC3.0
+
12 years, 8 months
r11169 jmb - /toolchains/m68k-unknown-amigaos/Makefile
by netsurf@semichrome.net
Author: jmb
Date: Thu Dec 30 04:11:48 2010
New Revision: 11169
URL: http://source.netsurf-browser.org?rev=11169&view=rev
Log:
Something approximating versioning for clib2
Modified:
toolchains/m68k-unknown-amigaos/Makefile
Modified: toolchains/m68k-unknown-amigaos/Makefile
URL: http://source.netsurf-browser.org/toolchains/m68k-unknown-amigaos/Makefil...
==============================================================================
--- toolchains/m68k-unknown-amigaos/Makefile (original)
+++ toolchains/m68k-unknown-amigaos/Makefile Thu Dec 30 04:11:48 2010
@@ -20,6 +20,7 @@
UPSTREAM_MPC_TARBALL := mpc-$(UPSTREAM_MPC_VERSION).tar.gz
UPSTREAM_MPC_URI := http://www.multiprecision.org/mpc/download/$(UPSTREAM_MPC_TARBALL)
+UPSTREAM_CLIB2_VERSION := 2010-12-30
UPSTREAM_CLIB2_TARBALL := clib2
UPSTREAM_CLIB2_URI := anonymous@clib2.cvs.sourceforge.net:/cvsroot/clib2
@@ -163,7 +164,7 @@
$(SOURCESDIR)/$(UPSTREAM_CLIB2_TARBALL):
cvs -Q -d:pserver:$(UPSTREAM_CLIB2_URI) login
- cvs -z9 -d:pserver:$(UPSTREAM_CLIB2_URI) co library
+ cvs -z9 -d:pserver:$(UPSTREAM_CLIB2_URI) checkout -D $(UPSTREAM_CLIB2_VERSION) library
mv library $@
$(SOURCESDIR)/$(UPSTREAM_NDK_TARBALL):
12 years, 8 months
r11168 jmb - /toolchains/m68k-unknown-amigaos/
by netsurf@semichrome.net
Author: jmb
Date: Wed Dec 29 21:38:21 2010
New Revision: 11168
URL: http://source.netsurf-browser.org?rev=11168&view=rev
Log:
Ignore sources and builddir
Modified:
toolchains/m68k-unknown-amigaos/ (props changed)
Propchange: toolchains/m68k-unknown-amigaos/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Dec 29 21:38:21 2010
@@ -1,0 +1,2 @@
+sources
+builddir
12 years, 8 months
r11167 jmb - /toolchains/m68k-unknown-amigaos/Makefile
by netsurf@semichrome.net
Author: jmb
Date: Wed Dec 29 21:37:47 2010
New Revision: 11167
URL: http://source.netsurf-browser.org?rev=11167&view=rev
Log:
Tidy up filesystem usage.
Add clean and distclean targets
Modified:
toolchains/m68k-unknown-amigaos/Makefile
Modified: toolchains/m68k-unknown-amigaos/Makefile
URL: http://source.netsurf-browser.org/toolchains/m68k-unknown-amigaos/Makefil...
==============================================================================
--- toolchains/m68k-unknown-amigaos/Makefile (original)
+++ toolchains/m68k-unknown-amigaos/Makefile Wed Dec 29 21:37:47 2010
@@ -28,17 +28,25 @@
TOP := $(CURDIR)
RECIPES := $(TOP)/recipes
-BUILDSTEPS := $(TOP)/build-steps
-SRCDIR := $(TOP)/srcdir
-BINUTILS_SRCDIR := $(TOP)/binutils-srcdir
+SOURCESDIR := $(TOP)/sources
BUILDDIR := $(TOP)/builddir
+BUILDSTEPS := $(BUILDDIR)/build-steps
+SRCDIR := $(BUILDDIR)/srcdir
+GCC_SRCDIR := $(SRCDIR)/gcc
+BINUTILS_SRCDIR := $(SRCDIR)/binutils
TARGET_NAME := m68k-unknown-amigaos
PREFIX ?= /opt/netsurf/$(TARGET_NAME)/cross
-.PHONY: all
+.PHONY: all clean distclean
all: $(BUILDSTEPS)/stage2.d
+
+clean:
+ rm -fr $(BUILDDIR)
+
+distclean: clean
+ rm -fr $(SOURCESDIR)
###
# Rules to build the full compiler
@@ -53,8 +61,8 @@
# Rules to build and install Clib2
###
-$(BUILDSTEPS)/clib2.d: $(BUILDSTEPS)/bootstrap-compiler.d $(BUILDSTEPS)/ndk.d $(UPSTREAM_CLIB2_TARBALL)
- cp -r $(UPSTREAM_CLIB2_TARBALL) $(BUILDDIR)/clib2
+$(BUILDSTEPS)/clib2.d: $(BUILDSTEPS)/bootstrap-compiler.d $(BUILDSTEPS)/ndk.d $(SOURCESDIR)/$(UPSTREAM_CLIB2_TARBALL)
+ cp -r $(SOURCESDIR)/$(UPSTREAM_CLIB2_TARBALL) $(BUILDDIR)/clib2
for p in `ls $(RECIPES)/patches/clib2/*.p` ; do patch -d $(BUILDDIR)/clib2 -p0 <$$p ; done
for dir in `find $(RECIPES)/files/clib2/ -type d | grep -v '\.svn' | sed 's#$(RECIPES)/files/clib2##'` ; do mkdir -p $(BUILDDIR)/clib2$$dir ; done
for file in `find $(RECIPES)/files/clib2/ -type f | grep -v '\.svn' | sed 's#$(RECIPES)/files/clib2##'` ; do cp -p $(RECIPES)/files/clib2$$file $(BUILDDIR)/clib2$$file ; done
@@ -67,9 +75,9 @@
# Rules to install the NDK
###
-$(BUILDSTEPS)/ndk.d: $(UPSTREAM_NDK_TARBALL)
+$(BUILDSTEPS)/ndk.d: $(SOURCESDIR)/$(UPSTREAM_NDK_TARBALL)
mkdir -p $(PREFIX)/$(TARGET_NAME)
- tar -C $(PREFIX)/$(TARGET_NAME) --strip-components=2 -xjf $(UPSTREAM_NDK_TARBALL)
+ tar -C $(PREFIX)/$(TARGET_NAME) --strip-components=2 -xjf $(SOURCESDIR)/$(UPSTREAM_NDK_TARBALL)
for p in `ls $(RECIPES)/patches/ndk/*.p` ; do patch -d $(PREFIX)/$(TARGET_NAME) -p0 <$$p ; done
for dir in `find $(RECIPES)/files/ndk/ -type d | grep -v '\.svn' | sed 's#$(RECIPES)/files/ndk##'` ; do mkdir -p $(PREFIX)/$(TARGET_NAME)$$dir ; done
for file in `find $(RECIPES)/files/ndk/ -type f | grep -v '\.svn' | sed 's#$(RECIPES)/files/ndk##'` ; do cp -p $(RECIPES)/files/ndk$$file $(PREFIX)/$(TARGET_NAME)$$file ; done
@@ -80,7 +88,7 @@
###
$(BUILDSTEPS)/bootstrap-compiler.d: $(BUILDSTEPS)/srcdir-step3.d $(BUILDSTEPS)/binutils.d
- cd $(BUILDDIR) && PATH="$(PREFIX)/bin:$(PATH)" $(SRCDIR)/configure --prefix=$(PREFIX) --target=$(TARGET_NAME) \
+ cd $(BUILDDIR) && PATH="$(PREFIX)/bin:$(PATH)" $(GCC_SRCDIR)/configure --prefix=$(PREFIX) --target=$(TARGET_NAME) \
--with-cpu=m68040 --disable-threads --disable-nls --disable-c-mbchar \
--enable-languages=c --enable-checking=no --enable-c99 --with-cross-host \
--disable-multilib --without-x --enable-maintainer-mode --disable-shared \
@@ -94,26 +102,26 @@
###
$(BUILDSTEPS)/srcdir-step3.d: $(BUILDSTEPS)/srcdir-step2.d
- for p in `ls $(RECIPES)/patches/gcc/*.p` ; do patch -d $(SRCDIR) -p0 <$$p ; done
- for dir in `find $(RECIPES)/files/gcc/ -type d | grep -v '\.svn' | sed 's#$(RECIPES)/files/gcc##'` ; do mkdir -p $(SRCDIR)$$dir ; done
- for file in `find $(RECIPES)/files/gcc/ -type f | grep -v '\.svn' | sed 's#$(RECIPES)/files/gcc##'` ; do cp -p $(RECIPES)/files/gcc$$file $(SRCDIR)$$file ; done
+ for p in `ls $(RECIPES)/patches/gcc/*.p` ; do patch -d $(GCC_SRCDIR) -p0 <$$p ; done
+ for dir in `find $(RECIPES)/files/gcc/ -type d | grep -v '\.svn' | sed 's#$(RECIPES)/files/gcc##'` ; do mkdir -p $(GCC_SRCDIR)$$dir ; done
+ for file in `find $(RECIPES)/files/gcc/ -type f | grep -v '\.svn' | sed 's#$(RECIPES)/files/gcc##'` ; do cp -p $(RECIPES)/files/gcc$$file $(GCC_SRCDIR)$$file ; done
touch $@
-$(BUILDSTEPS)/srcdir-step2.d: $(BUILDSTEPS)/srcdir-step1.d $(UPSTREAM_GMP_TARBALL) $(UPSTREAM_MPFR_TARBALL) $(UPSTREAM_MPC_TARBALL)
- tar xjf $(UPSTREAM_GMP_TARBALL)
- mv gmp-$(UPSTREAM_GMP_VERSION) $(SRCDIR)/gmp
- tar xjf $(UPSTREAM_MPFR_TARBALL)
- mv mpfr-$(UPSTREAM_MPFR_VERSION) $(SRCDIR)/mpfr
- tar xzf $(UPSTREAM_MPC_TARBALL)
- mv mpc-$(UPSTREAM_MPC_VERSION) $(SRCDIR)/mpc
+$(BUILDSTEPS)/srcdir-step2.d: $(BUILDSTEPS)/srcdir-step1.d $(SOURCESDIR)/$(UPSTREAM_GMP_TARBALL) $(SOURCESDIR)/$(UPSTREAM_MPFR_TARBALL) $(SOURCESDIR)/$(UPSTREAM_MPC_TARBALL)
+ tar xjf $(SOURCESDIR)/$(UPSTREAM_GMP_TARBALL)
+ mv gmp-$(UPSTREAM_GMP_VERSION) $(GCC_SRCDIR)/gmp
+ tar xjf $(SOURCESDIR)/$(UPSTREAM_MPFR_TARBALL)
+ mv mpfr-$(UPSTREAM_MPFR_VERSION) $(GCC_SRCDIR)/mpfr
+ tar xzf $(SOURCESDIR)/$(UPSTREAM_MPC_TARBALL)
+ mv mpc-$(UPSTREAM_MPC_VERSION) $(GCC_SRCDIR)/mpc
touch $@
$(BUILDSTEPS)/srcdir-step1.d: $(BUILDSTEPS)/$(UPSTREAM_GCC_TARBALL).d
- tar xjf $(UPSTREAM_GCC_TARBALL)
- mv gcc-$(UPSTREAM_GCC_VERSION) srcdir
+ tar xjf $(SOURCESDIR)/$(UPSTREAM_GCC_TARBALL)
+ mv gcc-$(UPSTREAM_GCC_VERSION) $(GCC_SRCDIR)
touch $@
-$(BUILDSTEPS)/$(UPSTREAM_GCC_TARBALL).d: $(BUILDSTEPS)/buildsteps.d $(UPSTREAM_GCC_TARBALL)
+$(BUILDSTEPS)/$(UPSTREAM_GCC_TARBALL).d: $(BUILDSTEPS)/buildsteps.d $(SOURCESDIR)/$(UPSTREAM_GCC_TARBALL)
touch $@
###
@@ -129,8 +137,8 @@
cd $(BUILDDIR)/binutils && make install
touch $@
-$(BUILDSTEPS)/binutils-srcdir.d: $(UPSTREAM_BINUTILS_TARBALL)
- cp -r $(UPSTREAM_BINUTILS_TARBALL) $(BINUTILS_SRCDIR)
+$(BUILDSTEPS)/binutils-srcdir.d: $(SOURCESDIR)/$(UPSTREAM_BINUTILS_TARBALL)
+ cp -r $(SOURCESDIR)/$(UPSTREAM_BINUTILS_TARBALL) $(BINUTILS_SRCDIR)
for p in `ls $(RECIPES)/patches/binutils/*.p` ; do patch -d $(BINUTILS_SRCDIR) -p0 <$$p ; done
touch $@
@@ -138,33 +146,39 @@
# Rules to fetch upstream sources
###
-$(UPSTREAM_GCC_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_GCC_TARBALL):
wget -q -O $@ $(UPSTREAM_GCC_URI)
-$(UPSTREAM_GMP_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_GMP_TARBALL):
wget -q -O $@ $(UPSTREAM_GMP_URI)
-$(UPSTREAM_MPFR_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_MPFR_TARBALL):
wget -q -O $@ $(UPSTREAM_MPFR_URI)
-$(UPSTREAM_MPC_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_MPC_TARBALL):
wget -q -O $@ $(UPSTREAM_MPC_URI)
-$(UPSTREAM_BINUTILS_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_BINUTILS_TARBALL):
svn co $(UPSTREAM_BINUTILS_URI) $@
-$(UPSTREAM_CLIB2_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_CLIB2_TARBALL):
cvs -Q -d:pserver:$(UPSTREAM_CLIB2_URI) login
cvs -z9 -d:pserver:$(UPSTREAM_CLIB2_URI) co library
mv library $@
-$(UPSTREAM_NDK_TARBALL):
+$(SOURCESDIR)/$(UPSTREAM_NDK_TARBALL):
wget -q -O $@ $(UPSTREAM_NDK_URI)
###
# Rule to create buildsteps dir
###
-$(BUILDSTEPS)/buildsteps.d:
+$(BUILDSTEPS)/buildsteps.d: $(SOURCESDIR) $(SRCDIR)
mkdir -p $(BUILDSTEPS)
touch $@
+
+$(SOURCESDIR):
+ mkdir -p $@
+
+$(SRCDIR):
+ mkdir -p $@
12 years, 8 months