r10796 vince - in /trunk/netsurf: !NetSurf/Resources/en/Messages gtk/gtk_menu.c gtk/gtk_menu.h gtk/gtk_scaffolding.c gtk/res/netsurf.glade
by netsurf@semichrome.net
Author: vince
Date: Sat Sep 18 13:14:09 2010
New Revision: 10796
URL: http://source.netsurf-browser.org?rev=10796&view=rev
Log:
Make the gtk menus fully translatable
clean up the macro madness a bit in gtk_menu.c
Modified:
trunk/netsurf/!NetSurf/Resources/en/Messages
trunk/netsurf/gtk/gtk_menu.c
trunk/netsurf/gtk/gtk_menu.h
trunk/netsurf/gtk/gtk_scaffolding.c
trunk/netsurf/gtk/res/netsurf.glade
Modified: trunk/netsurf/!NetSurf/Resources/en/Messages
URL: http://source.netsurf-browser.org/trunk/netsurf/%21NetSurf/Resources/en/M...
==============================================================================
--- trunk/netsurf/!NetSurf/Resources/en/Messages (original)
+++ trunk/netsurf/!NetSurf/Resources/en/Messages Sat Sep 18 13:14:09 2010
@@ -448,6 +448,13 @@
# gtk Menu / Button labels
#
+
+gtkFile:_File
+gtkEdit:_Edit
+gtkView:_View
+gtkNavigate:_Navigate
+gtkTabs:_Tabs
+gtkHelp:_Help
gtkNewTab:New _Tab
gtkNewTabAccel:<ctrl>t
Modified: trunk/netsurf/gtk/gtk_menu.c
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_menu.c?rev=10796&...
==============================================================================
--- trunk/netsurf/gtk/gtk_menu.c (original)
+++ trunk/netsurf/gtk/gtk_menu.c Sat Sep 18 13:14:09 2010
@@ -56,7 +56,7 @@
#define IMAGE_ITEM(p, q, r, s, t)\
nsgtk_menu_add_image_item(s->p##_menu, &(s->q##_menuitem), #r,\
- #r "Accel", t);
+ #r "Accel", t)
#define CHECK_ITEM(p, q, r, s)\
s->q##_menuitem = GTK_CHECK_MENU_ITEM(\
@@ -68,20 +68,38 @@
gtk_widget_show(GTK_WIDGET(s->q##_menuitem));\
}
-#define SET_SUBMENU(q, r)\
- r->q##_submenu = nsgtk_menu_##q##_submenu(group);\
- if ((r->q##_submenu != NULL) && (r->q##_submenu->q##_menu != NULL) && \
- (r->q##_menuitem != NULL)) {\
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(r->q##_menuitem),\
- GTK_WIDGET(r->q##_submenu->q##_menu));\
- }
-
-#define ADD_SEP(q, r)\
- w = gtk_separator_menu_item_new();\
- if ((w != NULL) && (r->q##_menu != NULL)) {\
- gtk_menu_shell_append(GTK_MENU_SHELL(r->q##_menu), w);\
- gtk_widget_show(w);\
- }
+#define SET_SUBMENU(q, r) \
+ do { \
+ r->q##_submenu = nsgtk_menu_##q##_submenu(group); \
+ if ((r->q##_submenu != NULL) && \
+ (r->q##_submenu->q##_menu != NULL) && \
+ (r->q##_menuitem != NULL)) { \
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(r->q##_menuitem), \
+ GTK_WIDGET(r->q##_submenu->q##_menu)); \
+ } \
+ } while(0)
+
+#define ADD_SEP(q, r) \
+ do { \
+ GtkWidget *w = gtk_separator_menu_item_new(); \
+ if ((w != NULL) && (r->q##_menu != NULL)) { \
+ gtk_menu_shell_append(GTK_MENU_SHELL(r->q##_menu), w); \
+ gtk_widget_show(w); \
+ } \
+ } while(0)
+
+#define ATTACH_PARENT(parent, msgname, menuv, group) \
+ do { \
+ if (parent != NULL) { \
+ /* create top level menu entry and attach to parent */ \
+ menuv = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic(messages_get(#msgname))); \
+ gtk_menu_shell_append(parent, GTK_WIDGET(menuv)); \
+ gtk_widget_show(GTK_WIDGET(menuv)); \
+ /* attach submenu to parent */ \
+ gtk_menu_item_set_submenu(menuv, GTK_WIDGET(menuv##_menu)); \
+ gtk_menu_set_accel_group(menuv##_menu, group); \
+ } \
+ } while(0)
/**
* creates an export submenu
@@ -102,10 +120,10 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group)
- IMAGE_ITEM(export, drawfile, gtkDrawFile, ret, group)
- IMAGE_ITEM(export, postscript, gtkPostScript, ret, group)
- IMAGE_ITEM(export, pdf, gtkPDF, ret, group)
+ IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group);
+ IMAGE_ITEM(export, drawfile, gtkDrawFile, ret, group);
+ IMAGE_ITEM(export, postscript, gtkPostScript, ret, group);
+ IMAGE_ITEM(export, pdf, gtkPDF, ret, group);
return ret;
}
@@ -129,9 +147,9 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group)
- IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group)
- IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group)
+ IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group);
+ IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group);
+ IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group);
return ret;
}
@@ -208,44 +226,52 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(debugging, toggledebugging, gtkToggleDebugging, ret, group)
- IMAGE_ITEM(debugging, saveboxtree, gtkSaveBoxTree, ret, group)
- IMAGE_ITEM(debugging, savedomtree, gtkSaveDomTree, ret, group)
+ IMAGE_ITEM(debugging, toggledebugging, gtkToggleDebugging, ret, group);
+ IMAGE_ITEM(debugging, saveboxtree, gtkSaveBoxTree, ret, group);
+ IMAGE_ITEM(debugging, savedomtree, gtkSaveDomTree, ret, group);
return ret;
}
/**
- * creates the a file menu
- * \param group the 'global' in a gtk sense accelerator reference
+ * creates the file menu
+ * \param group The gtk 'global' accelerator reference
+ * \param parent The parent menu to attach to or NULL
*/
-static struct nsgtk_file_menu *nsgtk_menu_file_menu(GtkAccelGroup *group)
-{
- GtkWidget *w;
- struct nsgtk_file_menu *ret = malloc(sizeof(struct nsgtk_file_menu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->file_menu = GTK_MENU(gtk_menu_new());
- if (ret->file_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- IMAGE_ITEM(file, newwindow, gtkNewWindow, ret, group)
- IMAGE_ITEM(file, newtab, gtkNewTab, ret, group)
- IMAGE_ITEM(file, openfile, gtkOpenFile, ret, group)
- IMAGE_ITEM(file, closewindow, gtkCloseWindow, ret, group)
- ADD_SEP(file, ret)
- IMAGE_ITEM(file, savepage, gtkSavePage, ret, group)
- IMAGE_ITEM(file, export, gtkExport, ret, group)
- ADD_SEP(file, ret)
- IMAGE_ITEM(file, printpreview, gtkPrintPreview, ret, group)
- IMAGE_ITEM(file, print, gtkPrint, ret, group)
- ADD_SEP(file, ret)
- IMAGE_ITEM(file, quit, gtkQuitMenu, ret, group)
- SET_SUBMENU(export, ret)
- return ret;
+static struct nsgtk_file_menu *nsgtk_menu_file_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
+{
+ struct nsgtk_file_menu *fmenu;
+
+ fmenu = malloc(sizeof(struct nsgtk_file_menu));
+ if (fmenu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+
+ fmenu->file_menu = GTK_MENU(gtk_menu_new());
+ if (fmenu->file_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(fmenu);
+ return NULL;
+ }
+
+ IMAGE_ITEM(file, newwindow, gtkNewWindow, fmenu, group);
+ IMAGE_ITEM(file, newtab, gtkNewTab, fmenu, group);
+ IMAGE_ITEM(file, openfile, gtkOpenFile, fmenu, group);
+ IMAGE_ITEM(file, closewindow, gtkCloseWindow, fmenu, group);
+ ADD_SEP(file, fmenu);
+ IMAGE_ITEM(file, savepage, gtkSavePage, fmenu, group);
+ IMAGE_ITEM(file, export, gtkExport, fmenu, group);
+ ADD_SEP(file, fmenu);
+ IMAGE_ITEM(file, printpreview, gtkPrintPreview, fmenu, group);
+ IMAGE_ITEM(file, print, gtkPrint, fmenu, group);
+ ADD_SEP(file, fmenu);
+ IMAGE_ITEM(file, quit, gtkQuitMenu, fmenu, group);
+ SET_SUBMENU(export, fmenu);
+
+ ATTACH_PARENT(parent, gtkFile, fmenu->file, group);
+
+ return fmenu;
}
/**
@@ -253,9 +279,9 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-static struct nsgtk_edit_menu *nsgtk_menu_edit_menu(GtkAccelGroup *group)
-{
- GtkWidget *w;
+static struct nsgtk_edit_menu *nsgtk_menu_edit_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
+{
struct nsgtk_edit_menu *ret = malloc(sizeof(struct nsgtk_edit_menu));
if (ret == NULL) {
warn_user(messages_get("NoMemory"), 0);
@@ -267,16 +293,19 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(edit, cut, gtkCut, ret, group)
- IMAGE_ITEM(edit, copy, gtkCopy, ret, group)
- IMAGE_ITEM(edit, paste, gtkPaste, ret, group)
- IMAGE_ITEM(edit, delete, gtkDelete, ret, group)
- ADD_SEP(edit, ret)
- IMAGE_ITEM(edit, selectall, gtkSelectAll, ret, group)
- ADD_SEP(edit, ret)
- IMAGE_ITEM(edit, find, gtkFind, ret, group)
- ADD_SEP(edit, ret)
- IMAGE_ITEM(edit, preferences, gtkPreferences, ret, group)
+ IMAGE_ITEM(edit, cut, gtkCut, ret, group);
+ IMAGE_ITEM(edit, copy, gtkCopy, ret, group);
+ IMAGE_ITEM(edit, paste, gtkPaste, ret, group);
+ IMAGE_ITEM(edit, delete, gtkDelete, ret, group);
+ ADD_SEP(edit, ret);
+ IMAGE_ITEM(edit, selectall, gtkSelectAll, ret, group);
+ ADD_SEP(edit, ret);
+ IMAGE_ITEM(edit, find, gtkFind, ret, group);
+ ADD_SEP(edit, ret);
+ IMAGE_ITEM(edit, preferences, gtkPreferences, ret, group);
+
+ ATTACH_PARENT(parent, gtkEdit, ret->edit, group);
+
return ret;
}
@@ -285,9 +314,9 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-static struct nsgtk_view_menu *nsgtk_menu_view_menu(GtkAccelGroup *group)
-{
- GtkWidget *w;
+static struct nsgtk_view_menu *nsgtk_menu_view_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
+{
struct nsgtk_view_menu *ret = malloc(sizeof(struct nsgtk_view_menu));
if (ret == NULL) {
warn_user(messages_get("NoMemory"), 0);
@@ -299,23 +328,26 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(view, stop, gtkStop, ret, group)
- IMAGE_ITEM(view, reload, gtkReload, ret, group)
- ADD_SEP(view, ret)
- IMAGE_ITEM(view, scaleview, gtkScaleView, ret, group)
- IMAGE_ITEM(view, fullscreen, gtkFullScreen, ret, group)
- IMAGE_ITEM(view, viewsource, gtkViewSource, ret, group)
- ADD_SEP(view, ret)
- IMAGE_ITEM(view, images, gtkImages, ret, group)
- IMAGE_ITEM(view, toolbars, gtkToolbars, ret, group)
- ADD_SEP(view, ret)
- IMAGE_ITEM(view, downloads, gtkDownloads, ret, group)
- IMAGE_ITEM(view, savewindowsize, gtkSaveWindowSize, ret, group)
- IMAGE_ITEM(view, debugging, gtkDebugging, ret, group)
- SET_SUBMENU(scaleview, ret)
- SET_SUBMENU(images, ret)
- SET_SUBMENU(toolbars, ret)
- SET_SUBMENU(debugging, ret)
+ IMAGE_ITEM(view, stop, gtkStop, ret, group);
+ IMAGE_ITEM(view, reload, gtkReload, ret, group);
+ ADD_SEP(view, ret);
+ IMAGE_ITEM(view, scaleview, gtkScaleView, ret, group);
+ IMAGE_ITEM(view, fullscreen, gtkFullScreen, ret, group);
+ IMAGE_ITEM(view, viewsource, gtkViewSource, ret, group);
+ ADD_SEP(view, ret);
+ IMAGE_ITEM(view, images, gtkImages, ret, group);
+ IMAGE_ITEM(view, toolbars, gtkToolbars, ret, group);
+ ADD_SEP(view, ret);
+ IMAGE_ITEM(view, downloads, gtkDownloads, ret, group);
+ IMAGE_ITEM(view, savewindowsize, gtkSaveWindowSize, ret, group);
+ IMAGE_ITEM(view, debugging, gtkDebugging, ret, group);
+ SET_SUBMENU(scaleview, ret);
+ SET_SUBMENU(images, ret);
+ SET_SUBMENU(toolbars, ret);
+ SET_SUBMENU(debugging, ret);
+
+ ATTACH_PARENT(parent, gtkView, ret->view, group);
+
return ret;
}
@@ -324,9 +356,9 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-static struct nsgtk_nav_menu *nsgtk_menu_nav_menu(GtkAccelGroup *group)
-{
- GtkWidget *w;
+static struct nsgtk_nav_menu *nsgtk_menu_nav_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
+{
struct nsgtk_nav_menu *ret = malloc(sizeof(struct nsgtk_nav_menu));
if (ret == NULL) {
warn_user(messages_get("NoMemory"), 0);
@@ -338,17 +370,20 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(nav, back, gtkBack, ret, group)
- IMAGE_ITEM(nav, forward, gtkForward, ret, group)
- IMAGE_ITEM(nav, home, gtkHome, ret, group)
- ADD_SEP(nav, ret)
- IMAGE_ITEM(nav, localhistory, gtkLocalHistory, ret, group)
- IMAGE_ITEM(nav, globalhistory, gtkGlobalHistory, ret, group)
- ADD_SEP(nav, ret)
- IMAGE_ITEM(nav, addbookmarks, gtkAddBookMarks, ret, group)
- IMAGE_ITEM(nav, showbookmarks, gtkShowBookMarks, ret, group)
- ADD_SEP(nav, ret)
- IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group)
+ IMAGE_ITEM(nav, back, gtkBack, ret, group);
+ IMAGE_ITEM(nav, forward, gtkForward, ret, group);
+ IMAGE_ITEM(nav, home, gtkHome, ret, group);
+ ADD_SEP(nav, ret);
+ IMAGE_ITEM(nav, localhistory, gtkLocalHistory, ret, group);
+ IMAGE_ITEM(nav, globalhistory, gtkGlobalHistory, ret, group);
+ ADD_SEP(nav, ret);
+ IMAGE_ITEM(nav, addbookmarks, gtkAddBookMarks, ret, group);
+ IMAGE_ITEM(nav, showbookmarks, gtkShowBookMarks, ret, group);
+ ADD_SEP(nav, ret);
+ IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group);
+
+ ATTACH_PARENT(parent, gtkNavigate, ret->nav, group);
+
return ret;
}
@@ -357,7 +392,8 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-static struct nsgtk_tabs_menu *nsgtk_menu_tabs_menu(GtkAccelGroup *group)
+static struct nsgtk_tabs_menu *nsgtk_menu_tabs_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
{
struct nsgtk_tabs_menu *ret = malloc(sizeof(struct nsgtk_tabs_menu));
if (ret == NULL) {
@@ -370,9 +406,12 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(tabs, nexttab, gtkNextTab, ret, group)
- IMAGE_ITEM(tabs, prevtab, gtkPrevTab, ret, group)
- IMAGE_ITEM(tabs, closetab, gtkCloseTab, ret, group)
+ IMAGE_ITEM(tabs, nexttab, gtkNextTab, ret, group);
+ IMAGE_ITEM(tabs, prevtab, gtkPrevTab, ret, group);
+ IMAGE_ITEM(tabs, closetab, gtkCloseTab, ret, group);
+
+ ATTACH_PARENT(parent, gtkTabs, ret->tabs, group);
+
return ret;
}
@@ -381,9 +420,9 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-static struct nsgtk_help_menu *nsgtk_menu_help_menu(GtkAccelGroup *group)
-{
- GtkWidget *w;
+static struct nsgtk_help_menu *nsgtk_menu_help_menu(GtkAccelGroup *group,
+ GtkMenuShell *parent)
+{
struct nsgtk_help_menu *ret = malloc(sizeof(struct nsgtk_help_menu));
if (ret == NULL) {
warn_user(messages_get("NoMemory"), 0);
@@ -395,53 +434,44 @@
free(ret);
return NULL;
}
- IMAGE_ITEM(help, contents, gtkContents, ret, group)
- IMAGE_ITEM(help, guide, gtkGuide, ret, group)
- IMAGE_ITEM(help, info, gtkUserInformation, ret, group)
- ADD_SEP(help, ret)
- IMAGE_ITEM(help, about, gtkAbout, ret, group)
- return ret;
-}
-
+ IMAGE_ITEM(help, contents, gtkContents, ret, group);
+ IMAGE_ITEM(help, guide, gtkGuide, ret, group);
+ IMAGE_ITEM(help, info, gtkUserInformation, ret, group);
+ ADD_SEP(help, ret);
+ IMAGE_ITEM(help, about, gtkAbout, ret, group);
+
+ ATTACH_PARENT(parent, gtkHelp, ret->help, group);
+
+ return ret;
+}
+
+#define MENUBAR_MENU(p, q, r) \
+ p->q = nsgtk_menu_##q##_menu(group, GTK_MENU_SHELL(r)); \
+ p->rclick_##q = nsgtk_menu_##q##_menu(group, NULL)
struct nsgtk_menu *nsgtk_menu_create(GladeXML *xml, GtkWindow *window)
{
GtkAccelGroup *group;
- struct nsgtk_menu *g;
-
- g = malloc(sizeof(struct nsgtk_menu));
- if (g == NULL) {
+ struct nsgtk_menu *nmenu;
+ GtkMenuBar *menubar;
+
+ nmenu = malloc(sizeof(struct nsgtk_menu));
+ if (nmenu == NULL) {
warn_user(messages_get("NoMemory"), 0);
return NULL;
}
group = gtk_accel_group_new();
gtk_window_add_accel_group(window, group);
-
-#define MAKE_MENUS(q)\
- g->q##_menu = nsgtk_menu_##q##_menu(group);\
- g->rclick_##q##_menu = nsgtk_menu_##q##_menu(group);\
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(\
- glade_xml_get_widget(xml, "menuitem_" #q)), \
- GTK_WIDGET(g->q##_menu->q##_menu));\
- gtk_menu_set_accel_group(g->q##_menu->q##_menu, group)
- MAKE_MENUS(file);
- MAKE_MENUS(edit);
- MAKE_MENUS(view);
- MAKE_MENUS(nav);
- MAKE_MENUS(tabs);
- MAKE_MENUS(help);
-#undef MAKE_MENUS
- g->edit_menu_item = GTK_MENU_ITEM(glade_xml_get_widget(xml, "menuitem_edit"));
- g->tabs_menu_item = GTK_MENU_ITEM(glade_xml_get_widget(xml, "menuitem_tabs"));
-
- return g;
-}
-
-
-#undef CHECK_ITEM
-#undef IMAGE_ITEM
-#undef SET_SUBMENU
-#undef ADD_SEP
-
+ menubar = GTK_MENU_BAR(glade_xml_get_widget(xml, "menubar"));
+
+ MENUBAR_MENU(nmenu, file, menubar);
+ MENUBAR_MENU(nmenu, edit, menubar);
+ MENUBAR_MENU(nmenu, view, menubar);
+ MENUBAR_MENU(nmenu, nav, menubar);
+ MENUBAR_MENU(nmenu, tabs, menubar);
+ MENUBAR_MENU(nmenu, help, menubar);
+
+ return nmenu;
+}
Modified: trunk/netsurf/gtk/gtk_menu.h
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_menu.h?rev=10796&...
==============================================================================
--- trunk/netsurf/gtk/gtk_menu.h (original)
+++ trunk/netsurf/gtk/gtk_menu.h Sat Sep 18 13:14:09 2010
@@ -21,6 +21,7 @@
#include <gtk/gtk.h>
struct nsgtk_file_menu {
+ GtkMenuItem *file; /* File menu item on menubar */
GtkMenu *file_menu;
GtkImageMenuItem *newwindow_menuitem;
GtkImageMenuItem *newtab_menuitem;
@@ -35,6 +36,7 @@
};
struct nsgtk_edit_menu {
+ GtkMenuItem *edit; /* Edit menu item on menubar */
GtkMenu *edit_menu;
GtkImageMenuItem *cut_menuitem;
GtkImageMenuItem *copy_menuitem;
@@ -46,7 +48,8 @@
};
struct nsgtk_view_menu {
- GtkMenu *view_menu;
+ GtkMenuItem *view; /* View menu item on menubar */
+ GtkMenu *view_menu; /* gtk menu attached to menu item */
GtkImageMenuItem *stop_menuitem;
GtkImageMenuItem *reload_menuitem;
GtkImageMenuItem *scaleview_menuitem;
@@ -64,6 +67,7 @@
};
struct nsgtk_nav_menu {
+ GtkMenuItem *nav; /* Nav menu item on menubar */
GtkMenu *nav_menu;
GtkImageMenuItem *back_menuitem;
GtkImageMenuItem *forward_menuitem;
@@ -76,6 +80,7 @@
};
struct nsgtk_tabs_menu {
+ GtkMenuItem *tabs; /* Tabs menu item on menubar */
GtkMenu *tabs_menu;
GtkImageMenuItem *nexttab_menuitem;
GtkImageMenuItem *prevtab_menuitem;
@@ -83,6 +88,7 @@
};
struct nsgtk_help_menu {
+ GtkMenuItem *help; /* Help menu item on menubar */
GtkMenu *help_menu;
GtkImageMenuItem *contents_menuitem;
GtkImageMenuItem *guide_menuitem;
@@ -126,20 +132,18 @@
struct nsgtk_menu {
- struct nsgtk_file_menu *file_menu;
- struct nsgtk_file_menu *rclick_file_menu;
- struct nsgtk_edit_menu *edit_menu;
- struct nsgtk_edit_menu *rclick_edit_menu;
- struct nsgtk_view_menu *view_menu;
- struct nsgtk_view_menu *rclick_view_menu;
- struct nsgtk_nav_menu *nav_menu;
- struct nsgtk_nav_menu *rclick_nav_menu;
- struct nsgtk_tabs_menu *tabs_menu;
- struct nsgtk_tabs_menu *rclick_tabs_menu;
- struct nsgtk_help_menu *help_menu;
- struct nsgtk_help_menu *rclick_help_menu;
- GtkMenuItem *edit_menu_item;
- GtkMenuItem *tabs_menu_item;
+ struct nsgtk_file_menu *file;
+ struct nsgtk_file_menu *rclick_file;
+ struct nsgtk_edit_menu *edit;
+ struct nsgtk_edit_menu *rclick_edit;
+ struct nsgtk_view_menu *view;
+ struct nsgtk_view_menu *rclick_view;
+ struct nsgtk_nav_menu *nav;
+ struct nsgtk_nav_menu *rclick_nav;
+ struct nsgtk_tabs_menu *tabs;
+ struct nsgtk_tabs_menu *rclick_tabs;
+ struct nsgtk_help_menu *help;
+ struct nsgtk_help_menu *rclick_help;
};
struct nsgtk_menu *nsgtk_menu_create(GladeXML *xml, GtkWindow *window);
Modified: trunk/netsurf/gtk/gtk_scaffolding.c
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_scaffolding.c?rev...
==============================================================================
--- trunk/netsurf/gtk/gtk_scaffolding.c (original)
+++ trunk/netsurf/gtk/gtk_scaffolding.c Sat Sep 18 13:14:09 2010
@@ -178,9 +178,9 @@
}
}
#define CONNECT_CHECK(q)\
- g_signal_connect(g->menus->view_menu->toolbars_submenu->q##_menuitem,\
+ g_signal_connect(g->menus->view->toolbars_submenu->q##_menuitem,\
"toggled", G_CALLBACK(nsgtk_on_##q##_activate), g);\
- g_signal_connect(g->menus->rclick_view_menu->toolbars_submenu->q##_menuitem,\
+ g_signal_connect(g->menus->rclick_view->toolbars_submenu->q##_menuitem,\
"toggled", G_CALLBACK(nsgtk_on_##q##_activate), g)
CONNECT_CHECK(menubar);
CONNECT_CHECK(toolbar);
@@ -365,7 +365,7 @@
guint page_num, struct gtk_scaffolding *g)
{
gboolean visible = gtk_notebook_get_show_tabs(g->notebook);
- g_object_set(g->menus->tabs_menu_item, "visible", visible, NULL);
+ g_object_set(g->menus->tabs->tabs, "visible", visible, NULL);
g->buttons[NEXTTAB_BUTTON]->sensitivity = visible;
g->buttons[PREVTAB_BUTTON]->sensitivity = visible;
g->buttons[CLOSETAB_BUTTON]->sensitivity = visible;
@@ -934,13 +934,13 @@
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
/* need to synchronise menus as gtk grumbles when one menu
* is attached to both headers */
- w = GTK_WIDGET(g->menus->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
TRUE);
- w = GTK_WIDGET(g->menus->view_menu->
+ w = GTK_WIDGET(g->menus->view->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
@@ -958,13 +958,12 @@
gtk_widget_hide(GTK_WIDGET(widgets->data));
} else {
- w = GTK_WIDGET(g->menus->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
FALSE);
- w = GTK_WIDGET(g->menus->view_menu->
- toolbars_submenu->menubar_menuitem);
+ w = GTK_WIDGET(g->menus->view->toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
FALSE);
@@ -987,13 +986,13 @@
struct gtk_scaffolding *g = (struct gtk_scaffolding *)data;
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
- w = GTK_WIDGET(g->menus->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
TRUE);
- w = GTK_WIDGET(g->menus->view_menu->
+ w = GTK_WIDGET(g->menus->view->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
@@ -1001,12 +1000,12 @@
TRUE);
gtk_widget_show(GTK_WIDGET(g->tool_bar));
} else {
- w = GTK_WIDGET(g->menus->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
FALSE);
- w = GTK_WIDGET(g->menus->view_menu->
+ w = GTK_WIDGET(g->menus->view->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
@@ -1623,8 +1622,8 @@
CONNECT(g->window, "delete-event", nsgtk_window_delete_event, g);
/* toolbar URL bar menu bar search bar signal handlers */
- CONNECT(g->menus->edit_menu_item, "show", nsgtk_window_edit_menu_clicked, g);
- CONNECT(g->menus->edit_menu_item, "hide", nsgtk_window_edit_menu_hidden, g);
+ CONNECT(g->menus->edit->edit, "show", nsgtk_window_edit_menu_clicked, g);
+ CONNECT(g->menus->edit->edit, "hide", nsgtk_window_edit_menu_hidden, g);
CONNECT(g->search->buttons[1], "clicked",
nsgtk_search_forward_button_clicked, g);
CONNECT(g->search->buttons[0], "clicked",
@@ -1666,7 +1665,7 @@
#define POPUP_ATTACH(q) gtk_menu_item_set_submenu( \
GTK_MENU_ITEM(glade_xml_get_widget(g->popup_xml,\
- "menupopup_" #q)), GTK_WIDGET(g->menus->rclick_##q##_menu->q##_menu));\
+ "menupopup_" #q)), GTK_WIDGET(g->menus->rclick_##q->q##_menu));\
POPUP_ATTACH(file);
POPUP_ATTACH(edit);
@@ -2143,7 +2142,7 @@
g->buttons[i]->popup),
g->buttons[i]->sensitivity);
}
- gtk_widget_set_sensitive(GTK_WIDGET(g->menus->view_menu->images_menuitem),
+ gtk_widget_set_sensitive(GTK_WIDGET(g->menus->view->images_menuitem),
FALSE);
}
@@ -2333,9 +2332,9 @@
{
#define ITEM_MAIN(p, q, r)\
g->buttons[p##_BUTTON]->main =\
- g->menus->q##_menu->r##_menuitem;\
+ g->menus->q->r##_menuitem;\
g->buttons[p##_BUTTON]->rclick =\
- g->menus->rclick_##q##_menu->r##_menuitem;\
+ g->menus->rclick_##q->r##_menuitem;\
g->buttons[p##_BUTTON]->mhandler =\
nsgtk_on_##r##_activate_menu;\
g->buttons[p##_BUTTON]->bhandler =\
@@ -2346,11 +2345,9 @@
nsgtk_toolbar_##r##_toolbar_button_data
#define ITEM_SUB(p, q, r, s)\
g->buttons[p##_BUTTON]->main =\
- g->menus->q##_menu->\
- r##_submenu->s##_menuitem;\
+ g->menus->q->r##_submenu->s##_menuitem;\
g->buttons[p##_BUTTON]->rclick =\
- g->menus->rclick_##q##_menu->\
- r##_submenu->s##_menuitem;\
+ g->menus->rclick_##q->r##_submenu->s##_menuitem;\
g->buttons[p##_BUTTON]->mhandler =\
nsgtk_on_##s##_activate_menu;\
g->buttons[p##_BUTTON]->bhandler =\
Modified: trunk/netsurf/gtk/res/netsurf.glade
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/res/netsurf.glade?rev...
==============================================================================
--- trunk/netsurf/gtk/res/netsurf.glade (original)
+++ trunk/netsurf/gtk/res/netsurf.glade Sat Sep 18 13:14:09 2010
@@ -11,48 +11,6 @@
<child>
<widget class="GtkMenuBar" id="menubar">
<property name="visible">True</property>
- <child>
- <widget class="GtkMenuItem" id="menuitem_file">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_File</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem_edit">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Edit</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem_view">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_View</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem_nav">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Navigate</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem_tabs">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Tabs</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkMenuItem" id="menuitem_help">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Help</property>
- <property name="use_underline">True</property>
- </widget>
- </child>
</widget>
<packing>
<property name="expand">False</property>
13 years
r10794 vince - in /trunk/netsurf/gtk: gtk_menu.c gtk_menu.h gtk_scaffolding.c
by netsurf@semichrome.net
Author: vince
Date: Fri Sep 17 18:18:01 2010
New Revision: 10794
URL: http://source.netsurf-browser.org?rev=10794&view=rev
Log:
move the gtk menu creation into gtk_menu.c from gtk_scaffolding.c
This causes the menu creation to be concentrated in one place removing the need for numerous external linkages
Modified:
trunk/netsurf/gtk/gtk_menu.c
trunk/netsurf/gtk/gtk_menu.h
trunk/netsurf/gtk/gtk_scaffolding.c
Modified: trunk/netsurf/gtk/gtk_menu.c
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_menu.c?rev=10794&...
==============================================================================
--- trunk/netsurf/gtk/gtk_menu.c (original)
+++ trunk/netsurf/gtk/gtk_menu.c Fri Sep 17 18:18:01 2010
@@ -16,24 +16,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdlib.h>
+
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <stdlib.h>
+#include <glade/glade-xml.h>
+
#include "gtk/gtk_menu.h"
#include "utils/messages.h"
#include "utils/utils.h"
-
-static struct nsgtk_export_submenu *nsgtk_menu_export_submenu(GtkAccelGroup *);
-static struct nsgtk_scaleview_submenu *nsgtk_menu_scaleview_submenu(
- GtkAccelGroup *);
-static struct nsgtk_images_submenu *nsgtk_menu_images_submenu(GtkAccelGroup *);
-static struct nsgtk_toolbars_submenu *nsgtk_menu_toolbars_submenu(
- GtkAccelGroup *);
-static struct nsgtk_debugging_submenu *nsgtk_menu_debugging_submenu(
- GtkAccelGroup *);
-static bool nsgtk_menu_add_image_item(GtkMenu *menu,
- GtkImageMenuItem **item, const char *message,
- const char *messageAccel, GtkAccelGroup *group);
/**
* adds image menu item to specified menu
@@ -44,7 +35,7 @@
* \param group the 'global' in a gtk sense accelerator group
*/
-bool nsgtk_menu_add_image_item(GtkMenu *menu,
+static bool nsgtk_menu_add_image_item(GtkMenu *menu,
GtkImageMenuItem **item, const char *message,
const char *messageAccel, GtkAccelGroup *group)
{
@@ -91,12 +82,143 @@
gtk_menu_shell_append(GTK_MENU_SHELL(r->q##_menu), w);\
gtk_widget_show(w);\
}
+
+/**
+* creates an export submenu
+* \param group the 'global' in a gtk sense accelerator reference
+*/
+
+static struct nsgtk_export_submenu *nsgtk_menu_export_submenu(GtkAccelGroup *group)
+{
+ struct nsgtk_export_submenu *ret = malloc(sizeof(struct
+ nsgtk_export_submenu));
+ if (ret == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+ ret->export_menu = GTK_MENU(gtk_menu_new());
+ if (ret->export_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(ret);
+ return NULL;
+ }
+ IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group)
+ IMAGE_ITEM(export, drawfile, gtkDrawFile, ret, group)
+ IMAGE_ITEM(export, postscript, gtkPostScript, ret, group)
+ IMAGE_ITEM(export, pdf, gtkPDF, ret, group)
+ return ret;
+}
+
+/**
+* creates a scaleview submenu
+* \param group the 'global' in a gtk sense accelerator reference
+*/
+
+static struct nsgtk_scaleview_submenu *nsgtk_menu_scaleview_submenu(
+ GtkAccelGroup *group)
+{
+ struct nsgtk_scaleview_submenu *ret =
+ malloc(sizeof(struct nsgtk_scaleview_submenu));
+ if (ret == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+ ret->scaleview_menu = GTK_MENU(gtk_menu_new());
+ if (ret->scaleview_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(ret);
+ return NULL;
+ }
+ IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group)
+ IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group)
+ IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group)
+ return ret;
+}
+
+/**
+* creates an images submenu
+* \param group the 'global' in a gtk sense accelerator reference
+*/
+
+static struct nsgtk_images_submenu *nsgtk_menu_images_submenu(GtkAccelGroup *group)
+{
+ struct nsgtk_images_submenu *ret =
+ malloc(sizeof(struct nsgtk_images_submenu));
+ if (ret == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+ ret->images_menu = GTK_MENU(gtk_menu_new());
+ if (ret->images_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(ret);
+ return NULL;
+ }
+ CHECK_ITEM(images, foregroundimages, gtkForegroundImages, ret)
+ CHECK_ITEM(images, backgroundimages, gtkBackgroundImages, ret)
+ return ret;
+}
+
+/**
+* creates a toolbars submenu
+* \param group the 'global' in a gtk sense accelerator reference
+*/
+
+static struct nsgtk_toolbars_submenu *nsgtk_menu_toolbars_submenu(
+ GtkAccelGroup *group)
+{
+ struct nsgtk_toolbars_submenu *ret =
+ malloc(sizeof(struct nsgtk_toolbars_submenu));
+ if (ret == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+ ret->toolbars_menu = GTK_MENU(gtk_menu_new());
+ if (ret->toolbars_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(ret);
+ return NULL;
+ }
+ CHECK_ITEM(toolbars, menubar, gtkMenuBar, ret)
+ if (ret->menubar_menuitem != NULL)
+ gtk_check_menu_item_set_active(ret->menubar_menuitem, TRUE);
+ CHECK_ITEM(toolbars, toolbar, gtkToolBar, ret)
+ if (ret->toolbar_menuitem != NULL)
+ gtk_check_menu_item_set_active(ret->toolbar_menuitem, TRUE);
+ return ret;
+}
+
+/**
+* creates a debugging submenu
+* \param group the 'global' in a gtk sense accelerator reference
+*/
+
+static struct nsgtk_debugging_submenu *nsgtk_menu_debugging_submenu(
+ GtkAccelGroup *group)
+{
+ struct nsgtk_debugging_submenu *ret =
+ malloc(sizeof(struct nsgtk_debugging_submenu));
+ if (ret == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+ ret->debugging_menu = GTK_MENU(gtk_menu_new());
+ if (ret->debugging_menu == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ free(ret);
+ return NULL;
+ }
+ IMAGE_ITEM(debugging, toggledebugging, gtkToggleDebugging, ret, group)
+ IMAGE_ITEM(debugging, saveboxtree, gtkSaveBoxTree, ret, group)
+ IMAGE_ITEM(debugging, savedomtree, gtkSaveDomTree, ret, group)
+ return ret;
+}
/**
* creates the a file menu
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_file_menu *nsgtk_menu_file_menu(GtkAccelGroup *group)
+static struct nsgtk_file_menu *nsgtk_menu_file_menu(GtkAccelGroup *group)
{
GtkWidget *w;
struct nsgtk_file_menu *ret = malloc(sizeof(struct nsgtk_file_menu));
@@ -131,7 +253,7 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_edit_menu *nsgtk_menu_edit_menu(GtkAccelGroup *group)
+static struct nsgtk_edit_menu *nsgtk_menu_edit_menu(GtkAccelGroup *group)
{
GtkWidget *w;
struct nsgtk_edit_menu *ret = malloc(sizeof(struct nsgtk_edit_menu));
@@ -163,7 +285,7 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_view_menu *nsgtk_menu_view_menu(GtkAccelGroup *group)
+static struct nsgtk_view_menu *nsgtk_menu_view_menu(GtkAccelGroup *group)
{
GtkWidget *w;
struct nsgtk_view_menu *ret = malloc(sizeof(struct nsgtk_view_menu));
@@ -202,7 +324,7 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_nav_menu *nsgtk_menu_nav_menu(GtkAccelGroup *group)
+static struct nsgtk_nav_menu *nsgtk_menu_nav_menu(GtkAccelGroup *group)
{
GtkWidget *w;
struct nsgtk_nav_menu *ret = malloc(sizeof(struct nsgtk_nav_menu));
@@ -235,7 +357,7 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_tabs_menu *nsgtk_menu_tabs_menu(GtkAccelGroup *group)
+static struct nsgtk_tabs_menu *nsgtk_menu_tabs_menu(GtkAccelGroup *group)
{
struct nsgtk_tabs_menu *ret = malloc(sizeof(struct nsgtk_tabs_menu));
if (ret == NULL) {
@@ -259,7 +381,7 @@
* \param group the 'global' in a gtk sense accelerator reference
*/
-struct nsgtk_help_menu *nsgtk_menu_help_menu(GtkAccelGroup *group)
+static struct nsgtk_help_menu *nsgtk_menu_help_menu(GtkAccelGroup *group)
{
GtkWidget *w;
struct nsgtk_help_menu *ret = malloc(sizeof(struct nsgtk_help_menu));
@@ -281,136 +403,42 @@
return ret;
}
-/**
-* creates an export submenu
-* \param group the 'global' in a gtk sense accelerator reference
-*/
-
-struct nsgtk_export_submenu *nsgtk_menu_export_submenu(GtkAccelGroup *group)
-{
- struct nsgtk_export_submenu *ret = malloc(sizeof(struct
- nsgtk_export_submenu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->export_menu = GTK_MENU(gtk_menu_new());
- if (ret->export_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group)
- IMAGE_ITEM(export, drawfile, gtkDrawFile, ret, group)
- IMAGE_ITEM(export, postscript, gtkPostScript, ret, group)
- IMAGE_ITEM(export, pdf, gtkPDF, ret, group)
- return ret;
-}
-
-/**
-* creates a scaleview submenu
-* \param group the 'global' in a gtk sense accelerator reference
-*/
-
-struct nsgtk_scaleview_submenu *nsgtk_menu_scaleview_submenu(
- GtkAccelGroup *group)
-{
- struct nsgtk_scaleview_submenu *ret =
- malloc(sizeof(struct nsgtk_scaleview_submenu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->scaleview_menu = GTK_MENU(gtk_menu_new());
- if (ret->scaleview_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group)
- IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group)
- IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group)
- return ret;
-}
-
-/**
-* creates an images submenu
-* \param group the 'global' in a gtk sense accelerator reference
-*/
-
-struct nsgtk_images_submenu *nsgtk_menu_images_submenu(GtkAccelGroup *group)
-{
- struct nsgtk_images_submenu *ret =
- malloc(sizeof(struct nsgtk_images_submenu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->images_menu = GTK_MENU(gtk_menu_new());
- if (ret->images_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- CHECK_ITEM(images, foregroundimages, gtkForegroundImages, ret)
- CHECK_ITEM(images, backgroundimages, gtkBackgroundImages, ret)
- return ret;
-}
-
-/**
-* creates a toolbars submenu
-* \param group the 'global' in a gtk sense accelerator reference
-*/
-
-struct nsgtk_toolbars_submenu *nsgtk_menu_toolbars_submenu(
- GtkAccelGroup *group)
-{
- struct nsgtk_toolbars_submenu *ret =
- malloc(sizeof(struct nsgtk_toolbars_submenu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->toolbars_menu = GTK_MENU(gtk_menu_new());
- if (ret->toolbars_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- CHECK_ITEM(toolbars, menubar, gtkMenuBar, ret)
- if (ret->menubar_menuitem != NULL)
- gtk_check_menu_item_set_active(ret->menubar_menuitem, TRUE);
- CHECK_ITEM(toolbars, toolbar, gtkToolBar, ret)
- if (ret->toolbar_menuitem != NULL)
- gtk_check_menu_item_set_active(ret->toolbar_menuitem, TRUE);
- return ret;
-}
-
-/**
-* creates a debugging submenu
-* \param group the 'global' in a gtk sense accelerator reference
-*/
-
-struct nsgtk_debugging_submenu *nsgtk_menu_debugging_submenu(
- GtkAccelGroup *group)
-{
- struct nsgtk_debugging_submenu *ret =
- malloc(sizeof(struct nsgtk_debugging_submenu));
- if (ret == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- return NULL;
- }
- ret->debugging_menu = GTK_MENU(gtk_menu_new());
- if (ret->debugging_menu == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- free(ret);
- return NULL;
- }
- IMAGE_ITEM(debugging, toggledebugging, gtkToggleDebugging, ret, group)
- IMAGE_ITEM(debugging, saveboxtree, gtkSaveBoxTree, ret, group)
- IMAGE_ITEM(debugging, savedomtree, gtkSaveDomTree, ret, group)
- return ret;
-}
+
+
+struct nsgtk_menu *nsgtk_menu_create(GladeXML *xml, GtkWindow *window)
+{
+ GtkAccelGroup *group;
+ struct nsgtk_menu *g;
+
+ g = malloc(sizeof(struct nsgtk_menu));
+ if (g == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ return NULL;
+ }
+
+ group = gtk_accel_group_new();
+ gtk_window_add_accel_group(window, group);
+
+#define MAKE_MENUS(q)\
+ g->q##_menu = nsgtk_menu_##q##_menu(group);\
+ g->rclick_##q##_menu = nsgtk_menu_##q##_menu(group);\
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(\
+ glade_xml_get_widget(xml, "menuitem_" #q)), \
+ GTK_WIDGET(g->q##_menu->q##_menu));\
+ gtk_menu_set_accel_group(g->q##_menu->q##_menu, group)
+ MAKE_MENUS(file);
+ MAKE_MENUS(edit);
+ MAKE_MENUS(view);
+ MAKE_MENUS(nav);
+ MAKE_MENUS(tabs);
+ MAKE_MENUS(help);
+#undef MAKE_MENUS
+ g->edit_menu_item = GTK_MENU_ITEM(glade_xml_get_widget(xml, "menuitem_edit"));
+ g->tabs_menu_item = GTK_MENU_ITEM(glade_xml_get_widget(xml, "menuitem_tabs"));
+
+ return g;
+}
+
#undef CHECK_ITEM
#undef IMAGE_ITEM
Modified: trunk/netsurf/gtk/gtk_menu.h
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_menu.h?rev=10794&...
==============================================================================
--- trunk/netsurf/gtk/gtk_menu.h (original)
+++ trunk/netsurf/gtk/gtk_menu.h Fri Sep 17 18:18:01 2010
@@ -124,11 +124,24 @@
GtkImageMenuItem *savedomtree_menuitem;
};
-struct nsgtk_file_menu *nsgtk_menu_file_menu(GtkAccelGroup *group);
-struct nsgtk_edit_menu *nsgtk_menu_edit_menu(GtkAccelGroup *group);
-struct nsgtk_view_menu *nsgtk_menu_view_menu(GtkAccelGroup *group);
-struct nsgtk_nav_menu *nsgtk_menu_nav_menu(GtkAccelGroup *group);
-struct nsgtk_tabs_menu *nsgtk_menu_tabs_menu(GtkAccelGroup *group);
-struct nsgtk_help_menu *nsgtk_menu_help_menu(GtkAccelGroup *group);
+
+struct nsgtk_menu {
+ struct nsgtk_file_menu *file_menu;
+ struct nsgtk_file_menu *rclick_file_menu;
+ struct nsgtk_edit_menu *edit_menu;
+ struct nsgtk_edit_menu *rclick_edit_menu;
+ struct nsgtk_view_menu *view_menu;
+ struct nsgtk_view_menu *rclick_view_menu;
+ struct nsgtk_nav_menu *nav_menu;
+ struct nsgtk_nav_menu *rclick_nav_menu;
+ struct nsgtk_tabs_menu *tabs_menu;
+ struct nsgtk_tabs_menu *rclick_tabs_menu;
+ struct nsgtk_help_menu *help_menu;
+ struct nsgtk_help_menu *rclick_help_menu;
+ GtkMenuItem *edit_menu_item;
+ GtkMenuItem *tabs_menu_item;
+};
+
+struct nsgtk_menu *nsgtk_menu_create(GladeXML *xml, GtkWindow *window);
#endif
Modified: trunk/netsurf/gtk/gtk_scaffolding.c
URL: http://source.netsurf-browser.org/trunk/netsurf/gtk/gtk_scaffolding.c?rev...
==============================================================================
--- trunk/netsurf/gtk/gtk_scaffolding.c (original)
+++ trunk/netsurf/gtk/gtk_scaffolding.c Fri Sep 17 18:18:01 2010
@@ -86,20 +86,7 @@
GtkNotebook *notebook;
GtkWidget *url_bar;
GtkEntryCompletion *url_bar_completion;
- struct nsgtk_file_menu *file_menu;
- struct nsgtk_file_menu *rclick_file_menu;
- struct nsgtk_edit_menu *edit_menu;
- struct nsgtk_edit_menu *rclick_edit_menu;
- struct nsgtk_view_menu *view_menu;
- struct nsgtk_view_menu *rclick_view_menu;
- struct nsgtk_nav_menu *nav_menu;
- struct nsgtk_nav_menu *rclick_nav_menu;
- struct nsgtk_tabs_menu *tabs_menu;
- struct nsgtk_tabs_menu *rclick_tabs_menu;
- struct nsgtk_help_menu *help_menu;
- struct nsgtk_help_menu *rclick_help_menu;
- GtkMenuItem *edit_menu_item;
- GtkMenuItem *tabs_menu_item;
+ struct nsgtk_menu *menus; /* menu hierarchy */
GtkToolbar *tool_bar;
struct nsgtk_button_connect *buttons[PLACEHOLDER_BUTTON];
GtkMenuBar *menu_bar;
@@ -191,9 +178,9 @@
}
}
#define CONNECT_CHECK(q)\
- g_signal_connect(g->view_menu->toolbars_submenu->q##_menuitem,\
+ g_signal_connect(g->menus->view_menu->toolbars_submenu->q##_menuitem,\
"toggled", G_CALLBACK(nsgtk_on_##q##_activate), g);\
- g_signal_connect(g->rclick_view_menu->toolbars_submenu->q##_menuitem,\
+ g_signal_connect(g->menus->rclick_view_menu->toolbars_submenu->q##_menuitem,\
"toggled", G_CALLBACK(nsgtk_on_##q##_activate), g)
CONNECT_CHECK(menubar);
CONNECT_CHECK(toolbar);
@@ -378,7 +365,7 @@
guint page_num, struct gtk_scaffolding *g)
{
gboolean visible = gtk_notebook_get_show_tabs(g->notebook);
- g_object_set(g->tabs_menu_item, "visible", visible, NULL);
+ g_object_set(g->menus->tabs_menu_item, "visible", visible, NULL);
g->buttons[NEXTTAB_BUTTON]->sensitivity = visible;
g->buttons[PREVTAB_BUTTON]->sensitivity = visible;
g->buttons[CLOSETAB_BUTTON]->sensitivity = visible;
@@ -947,13 +934,13 @@
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
/* need to synchronise menus as gtk grumbles when one menu
* is attached to both headers */
- w = GTK_WIDGET(g->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view_menu->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
TRUE);
- w = GTK_WIDGET(g->view_menu->
+ w = GTK_WIDGET(g->menus->view_menu->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
@@ -971,12 +958,12 @@
gtk_widget_hide(GTK_WIDGET(widgets->data));
} else {
- w = GTK_WIDGET(g->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view_menu->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
FALSE);
- w = GTK_WIDGET(g->view_menu->
+ w = GTK_WIDGET(g->menus->view_menu->
toolbars_submenu->menubar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
@@ -1000,13 +987,13 @@
struct gtk_scaffolding *g = (struct gtk_scaffolding *)data;
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) {
- w = GTK_WIDGET(g->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view_menu->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
TRUE);
- w = GTK_WIDGET(g->view_menu->
+ w = GTK_WIDGET(g->menus->view_menu->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w))
== FALSE)
@@ -1014,12 +1001,12 @@
TRUE);
gtk_widget_show(GTK_WIDGET(g->tool_bar));
} else {
- w = GTK_WIDGET(g->rclick_view_menu->
+ w = GTK_WIDGET(g->menus->rclick_view_menu->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
FALSE);
- w = GTK_WIDGET(g->view_menu->
+ w = GTK_WIDGET(g->menus->view_menu->
toolbars_submenu->toolbar_menuitem);
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(w)))
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w),
@@ -1455,8 +1442,6 @@
g->search->checkAll = GTK_CHECK_BUTTON(GET_WIDGET("checkAllSearch"));
g->search->caseSens = GTK_CHECK_BUTTON(GET_WIDGET("caseSensButton"));
- GtkAccelGroup *group = gtk_accel_group_new();
- gtk_window_add_accel_group(g->window, group);
for (i = BACK_BUTTON; i < PLACEHOLDER_BUTTON; i++) {
@@ -1483,21 +1468,8 @@
g->historybase = 0;
nsgtk_toolbar_customization_load(g);
nsgtk_toolbar_set_physical(g);
-#define MAKE_MENUS(q)\
- g->q##_menu = nsgtk_menu_##q##_menu(group);\
- g->rclick_##q##_menu = nsgtk_menu_##q##_menu(group);\
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(GET_WIDGET("menuitem_" #q)),\
- GTK_WIDGET(g->q##_menu->q##_menu));\
- gtk_menu_set_accel_group(g->q##_menu->q##_menu, group)
- MAKE_MENUS(file);
- MAKE_MENUS(edit);
- MAKE_MENUS(view);
- MAKE_MENUS(nav);
- MAKE_MENUS(tabs);
- MAKE_MENUS(help);
-#undef MAKE_MENUS
- g->edit_menu_item = GTK_MENU_ITEM(GET_WIDGET("menuitem_edit"));
- g->tabs_menu_item = GTK_MENU_ITEM(GET_WIDGET("menuitem_tabs"));
+
+ g->menus = nsgtk_menu_create(g->xml, g->window);
g->preferences_dialog = NULL;
@@ -1651,8 +1623,8 @@
CONNECT(g->window, "delete-event", nsgtk_window_delete_event, g);
/* toolbar URL bar menu bar search bar signal handlers */
- CONNECT(g->edit_menu_item, "show", nsgtk_window_edit_menu_clicked, g);
- CONNECT(g->edit_menu_item, "hide", nsgtk_window_edit_menu_hidden, g);
+ CONNECT(g->menus->edit_menu_item, "show", nsgtk_window_edit_menu_clicked, g);
+ CONNECT(g->menus->edit_menu_item, "hide", nsgtk_window_edit_menu_hidden, g);
CONNECT(g->search->buttons[1], "clicked",
nsgtk_search_forward_button_clicked, g);
CONNECT(g->search->buttons[0], "clicked",
@@ -1694,7 +1666,7 @@
#define POPUP_ATTACH(q) gtk_menu_item_set_submenu( \
GTK_MENU_ITEM(glade_xml_get_widget(g->popup_xml,\
- "menupopup_" #q)), GTK_WIDGET(g->rclick_##q##_menu->q##_menu));\
+ "menupopup_" #q)), GTK_WIDGET(g->menus->rclick_##q##_menu->q##_menu));\
POPUP_ATTACH(file);
POPUP_ATTACH(edit);
@@ -2171,7 +2143,7 @@
g->buttons[i]->popup),
g->buttons[i]->sensitivity);
}
- gtk_widget_set_sensitive(GTK_WIDGET(g->view_menu->images_menuitem),
+ gtk_widget_set_sensitive(GTK_WIDGET(g->menus->view_menu->images_menuitem),
FALSE);
}
@@ -2361,9 +2333,9 @@
{
#define ITEM_MAIN(p, q, r)\
g->buttons[p##_BUTTON]->main =\
- g->q##_menu->r##_menuitem;\
+ g->menus->q##_menu->r##_menuitem;\
g->buttons[p##_BUTTON]->rclick =\
- g->rclick_##q##_menu->r##_menuitem;\
+ g->menus->rclick_##q##_menu->r##_menuitem;\
g->buttons[p##_BUTTON]->mhandler =\
nsgtk_on_##r##_activate_menu;\
g->buttons[p##_BUTTON]->bhandler =\
@@ -2374,10 +2346,10 @@
nsgtk_toolbar_##r##_toolbar_button_data
#define ITEM_SUB(p, q, r, s)\
g->buttons[p##_BUTTON]->main =\
- g->q##_menu->\
+ g->menus->q##_menu->\
r##_submenu->s##_menuitem;\
g->buttons[p##_BUTTON]->rclick =\
- g->rclick_##q##_menu->\
+ g->menus->rclick_##q##_menu->\
r##_submenu->s##_menuitem;\
g->buttons[p##_BUTTON]->mhandler =\
nsgtk_on_##s##_activate_menu;\
13 years
r10792 jmb - /trunk/netsurf/content/llcache.c
by netsurf@semichrome.net
Author: jmb
Date: Thu Sep 16 17:46:40 2010
New Revision: 10792
URL: http://source.netsurf-browser.org?rev=10792&view=rev
Log:
Fix crash on receipt of a 304 response: it turns out that FETCH_HEADER may be called before any decision about how to process the response is made.
Move FETCH_HEADER handler to start of switch statement to reflect this.
Modified:
trunk/netsurf/content/llcache.c
Modified: trunk/netsurf/content/llcache.c
URL: http://source.netsurf-browser.org/trunk/netsurf/content/llcache.c?rev=107...
==============================================================================
--- trunk/netsurf/content/llcache.c (original)
+++ trunk/netsurf/content/llcache.c Thu Sep 16 17:46:40 2010
@@ -1650,6 +1650,13 @@
#endif
switch (msg) {
+ case FETCH_HEADER:
+ /* Received a fetch header */
+ object->fetch.state = LLCACHE_FETCH_HEADERS;
+
+ error = llcache_fetch_process_header(object, data, size);
+ break;
+
/* 3xx responses */
case FETCH_REDIRECT:
/* Request resulted in a redirect */
@@ -1668,18 +1675,6 @@
break;
/* Normal 2xx state machine */
- case FETCH_HEADER:
- /* Received a fetch header */
- object->fetch.state = LLCACHE_FETCH_HEADERS;
-
- /* Release candidate, if any */
- if (object->candidate != NULL) {
- object->candidate->candidate_count--;
- object->candidate = NULL;
- }
-
- error = llcache_fetch_process_header(object, data, size);
- break;
case FETCH_DATA:
/* Received some data */
if (object->fetch.state != LLCACHE_FETCH_DATA) {
@@ -1704,6 +1699,12 @@
/* Invalidate cache control data */
llcache_invalidate_cache_control_data(object);
}
+
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
}
object->fetch.state = LLCACHE_FETCH_DATA;
13 years
r10791 jmb - /trunk/netsurf/content/llcache.c
by netsurf@semichrome.net
Author: jmb
Date: Thu Sep 16 17:04:06 2010
New Revision: 10791
URL: http://source.netsurf-browser.org?rev=10791&view=rev
Log:
Ensure that candidate count is reduced if a conditional request results in a non-304 response
Modified:
trunk/netsurf/content/llcache.c
Modified: trunk/netsurf/content/llcache.c
URL: http://source.netsurf-browser.org/trunk/netsurf/content/llcache.c?rev=107...
==============================================================================
--- trunk/netsurf/content/llcache.c (original)
+++ trunk/netsurf/content/llcache.c Thu Sep 16 17:04:06 2010
@@ -1653,6 +1653,13 @@
/* 3xx responses */
case FETCH_REDIRECT:
/* Request resulted in a redirect */
+
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
+
error = llcache_fetch_redirect(object, data, &object);
break;
case FETCH_NOTMODIFIED:
@@ -1664,6 +1671,12 @@
case FETCH_HEADER:
/* Received a fetch header */
object->fetch.state = LLCACHE_FETCH_HEADERS;
+
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
error = llcache_fetch_process_header(object, data, size);
break;
@@ -1725,6 +1738,12 @@
object->fetch.state = LLCACHE_FETCH_COMPLETE;
object->fetch.fetch = NULL;
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
+
/* Invalidate cache control data */
llcache_invalidate_cache_control_data(object);
@@ -1748,10 +1767,24 @@
/* Events requiring action */
case FETCH_AUTH:
/* Need Authentication */
+
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
+
error = llcache_fetch_auth(object, data);
break;
case FETCH_CERT_ERR:
/* Something went wrong when validating TLS certificates */
+
+ /* Release candidate, if any */
+ if (object->candidate != NULL) {
+ object->candidate->candidate_count--;
+ object->candidate = NULL;
+ }
+
error = llcache_fetch_cert_error(object, data, size);
break;
}
@@ -1930,6 +1963,7 @@
/* Candidate is now our object */
*replacement = object->candidate;
+ object->candidate = NULL;
/* Old object will be flushed from the cache on the next poll */
13 years
r10790 bursa - /trunk/netsurf/render/html.c
by netsurf@semichrome.net
Author: bursa
Date: Thu Sep 16 16:03:16 2010
New Revision: 10790
URL: http://source.netsurf-browser.org?rev=10790&view=rev
Log:
Change back to using tree directly because element navigation functions require libxml2 2.7.3 which is not available everywhere.
Modified:
trunk/netsurf/render/html.c
Modified: trunk/netsurf/render/html.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/html.c?rev=10790&r...
==============================================================================
--- trunk/netsurf/render/html.c (original)
+++ trunk/netsurf/render/html.c Thu Sep 16 16:03:16 2010
@@ -570,8 +570,10 @@
xmlNode *node;
xmlChar *s;
- for (node = xmlFirstElementChild(head); node != 0;
- node = xmlNextElementSibling(node)) {
+ for (node = head->children; node != 0; node = node->next) {
+ if (node->type != XML_ELEMENT_NODE)
+ continue;
+
if (c->title == NULL && strcmp((const char *) node->name,
"title") == 0) {
xmlChar *title = xmlNodeGetContent(node);
13 years
r10789 chris_y - /trunk/netsurf/amiga/gui.c
by netsurf@semichrome.net
Author: chris_y
Date: Thu Sep 16 15:55:25 2010
New Revision: 10789
URL: http://source.netsurf-browser.org?rev=10789&view=rev
Log:
Prevent assert on non-HTML contents
Modified:
trunk/netsurf/amiga/gui.c
Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=10789&r1=...
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Thu Sep 16 15:55:25 2010
@@ -3807,6 +3807,10 @@
hlcache_handle *content;
int box_x=0,box_y=0;
+ content = gwin->bw->current_content;
+
+ if(content_get_type(content) != CONTENT_HTML) return NULL;
+
GetAttr(SPACE_AreaBox, (Object *)gwin->objects[GID_BROWSER],
(ULONG *)&bbox);
@@ -3819,7 +3823,6 @@
width=bbox->Width;
height=bbox->Height;
- content = gwin->bw->current_content;
box = html_get_box_tree(content);
while ((box = box_at_point(box, *x, *y, &box_x, &box_y, &content)))
{
13 years
r10788 bursa - /trunk/netsurf/render/html.c
by netsurf@semichrome.net
Author: bursa
Date: Thu Sep 16 15:46:29 2010
New Revision: 10788
URL: http://source.netsurf-browser.org?rev=10788&view=rev
Log:
Use libxml functions to loop through elements in html_head() instead of checking all nodes. Remove logging.
Modified:
trunk/netsurf/render/html.c
Modified: trunk/netsurf/render/html.c
URL: http://source.netsurf-browser.org/trunk/netsurf/render/html.c?rev=10788&r...
==============================================================================
--- trunk/netsurf/render/html.c (original)
+++ trunk/netsurf/render/html.c Thu Sep 16 15:46:29 2010
@@ -570,11 +570,8 @@
xmlNode *node;
xmlChar *s;
- for (node = head->children; node != 0; node = node->next) {
- if (node->type != XML_ELEMENT_NODE)
- continue;
-
- LOG(("Node: %s", node->name));
+ for (node = xmlFirstElementChild(head); node != 0;
+ node = xmlNextElementSibling(node)) {
if (c->title == NULL && strcmp((const char *) node->name,
"title") == 0) {
xmlChar *title = xmlNodeGetContent(node);
13 years
r10787 vince - /trunk/netsurf/content/llcache.c
by netsurf@semichrome.net
Author: vince
Date: Thu Sep 16 14:47:15 2010
New Revision: 10787
URL: http://source.netsurf-browser.org?rev=10787&view=rev
Log:
perpetrate a neatness to centralise all the low level cache cache control data invalidation
Modified:
trunk/netsurf/content/llcache.c
Modified: trunk/netsurf/content/llcache.c
URL: http://source.netsurf-browser.org/trunk/netsurf/content/llcache.c?rev=107...
==============================================================================
--- trunk/netsurf/content/llcache.c (original)
+++ trunk/netsurf/content/llcache.c Thu Sep 16 14:47:15 2010
@@ -209,6 +209,14 @@
const char *realm);
static nserror llcache_fetch_cert_error(llcache_object *object,
const struct ssl_cert_info *certs, size_t num);
+
+
+/* Invalidate cache control data */
+static inline void llcache_invalidate_cache_control_data(llcache_object *object)
+{
+ free(object->cache.etag);
+ memset(&(object->cache), 0, sizeof(llcache_cache_control));
+}
/******************************************************************************
@@ -421,8 +429,7 @@
object->fetch.state = LLCACHE_FETCH_COMPLETE;
/* Invalidate cache control data */
- free(object->cache.etag);
- memset(&(object->cache), 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
}
return error;
@@ -1609,8 +1616,8 @@
return llcache_object_refetch(object);
/* Invalidate cache-control data */
- free(object->cache.etag);
- memset(&object->cache, 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
+
/* Mark it complete */
object->fetch.state = LLCACHE_FETCH_COMPLETE;
@@ -1682,9 +1689,7 @@
(object->cache.max_age == INVALID_AGE &&
object->cache.expires == 0))) {
/* Invalidate cache control data */
- free(object->cache.etag);
- memset(&(object->cache), 0,
- sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
}
}
@@ -1721,8 +1726,7 @@
object->fetch.fetch = NULL;
/* Invalidate cache control data */
- free(object->cache.etag);
- memset(&(object->cache), 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
/** \todo Consider using errorcode for something */
@@ -1759,9 +1763,8 @@
object->fetch.fetch = NULL;
/* Invalidate cache control data */
- free(object->cache.etag);
- memset(&(object->cache), 0,
- sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
+
object->fetch.state = LLCACHE_FETCH_COMPLETE;
}
return;
@@ -1794,8 +1797,8 @@
object->fetch.fetch = NULL;
/* Invalidate the cache control data */
- free(object->cache.etag);
- memset(&(object->cache), 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
+
/* And mark it complete */
object->fetch.state = LLCACHE_FETCH_COMPLETE;
@@ -1920,8 +1923,8 @@
object->fetch.fetch = NULL;
/* Invalidate our cache-control data */
- free(object->cache.etag);
- memset(&object->cache, 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
+
/* Mark it complete */
object->fetch.state = LLCACHE_FETCH_COMPLETE;
@@ -2190,8 +2193,7 @@
object->fetch.fetch = NULL;
/* Invalidate cache-control data */
- free(object->cache.etag);
- memset(&object->cache, 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
/* Destroy headers */
while (object->num_headers > 0) {
@@ -2264,8 +2266,7 @@
object->fetch.fetch = NULL;
/* Invalidate cache-control data */
- free(object->cache.etag);
- memset(&object->cache, 0, sizeof(llcache_cache_control));
+ llcache_invalidate_cache_control_data(object);
if (query_cb != NULL) {
llcache_query query;
13 years