Bug Summary

File:frontends/gtk/menu.c
Warning:line 386, column 2
The left operand of '!=' is a garbage value

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name menu.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/var/lib/jenkins/workspace/scan-build-netsurf -resource-dir /usr/lib/llvm-14/lib/clang/14.0.6 -I . -I include -I build/Linux-gtk2 -I frontends -I content/handlers -D WITH_JPEG -U WITH_PDF_EXPORT -D LIBICONV_PLUG -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -I /usr/include/x86_64-linux-gnu -D WITH_CURL -D WITH_OPENSSL -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D UTF8PROC_EXPORTS -D WITH_UTF8PROC -D WITH_WEBP -I /usr/include/libpng16 -D WITH_PNG -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include/ -D WITH_BMP -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D WITH_GIF -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D WITH_NS_SVG -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D WITH_NSSPRITE -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D WITH_NSPSL -I /var/lib/jenkins/artifacts-x86_64-linux-gnu/include -D WITH_NSLOG -D NETSURF_UA_FORMAT_STRING="Mozilla/5.0 (%s) NetSurf/%d.%d" -D NETSURF_HOMEPAGE="about:welcome" -D NETSURF_LOG_LEVEL=VERBOSE -D NETSURF_BUILTIN_LOG_FILTER="(level:WARNING || cat:jserrors)" -D NETSURF_BUILTIN_VERBOSE_FILTER="(level:VERBOSE || cat:jserrors)" -D STMTEXPR=1 -I /usr/include/librsvg-2.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/libpng16 -I /usr/include/x86_64-linux-gnu -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/freetype2 -D WITH_RSVG -I /usr/include/gtk-2.0 -I /usr/lib/x86_64-linux-gnu/gtk-2.0/include -I /usr/include/pango-1.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/libpng16 -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/x86_64-linux-gnu -I /usr/include/atk-1.0 -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -D gtk -D nsgtk -D G_DISABLE_SINGLE_INCLUDES -D G_DISABLE_DEPRECATED -D GTK_DISABLE_SINGLE_INCLUDES -D GTK_MULTIHEAD_SAFE -D PANGO_DISABLE_DEPRECATED -D GTK_DISABLE_DEPRECATED -D _XOPEN_SOURCE=700 -D _POSIX_C_SOURCE=200809L -D _BSD_SOURCE -D _DEFAULT_SOURCE -D _NETBSD_SOURCE -D GTK_RESPATH="/var/lib/jenkins/artifacts-x86_64-linux-gnu/share/netsurf/:./frontends/gtk/res/" -D WITH_GRESOURCE -D DUK_OPT_HAVE_CUSTOM_H -internal-isystem /usr/lib/llvm-14/lib/clang/14.0.6/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wwrite-strings -Wno-unused-parameter -Wno-unused-but-set-variable -std=c99 -fconst-strings -fdebug-compilation-dir=/var/lib/jenkins/workspace/scan-build-netsurf -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-display-progress -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /var/lib/jenkins/workspace/scan-build-netsurf/clangScanBuildReports/2024-09-17-091555-2535225-1 -x c frontends/gtk/menu.c
1/*
2 * Copyright 2009 Mark Benjamin <netsurf-browser.org.MarkBenjamin@dfgh.net>
3 *
4 * This file is part of NetSurf, http://www.netsurf-browser.org/
5 *
6 * NetSurf is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * NetSurf is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#include <stdlib.h>
20#include <stdbool.h>
21
22#include <gdk/gdkkeysyms.h>
23#include <gtk1/gtk1.h>
24
25#include "utils/messages.h"
26
27#include "gtk/compat.h"
28#include "gtk/menu.h"
29#include "gtk/warn.h"
30#include "gtk/accelerator.h"
31
32/**
33 * Adds image menu item to a menu.
34 *
35 * \param menu the menu to add the item to
36 * \param item_out a pointer to the item's location in the menu struct
37 * \param message the menu item I18n lookup value
38 * \param group the 'global' in a gtk sense accelerator group
39 * \return true if sucessful and \a item_out updated else false.
40 */
41
42static bool_Bool
43nsgtk_menu_add_image_item(GtkMenu *menu,
44 GtkWidget **item_out,
45 const char *message,
46 GtkAccelGroup *group)
47{
48 unsigned int key;
49 GdkModifierType mod;
50 GtkWidget *item;
51 const char *accelerator_desc; /* accelerator key description */
52
53 item = nsgtk_image_menu_item_new_with_mnemonic(messages_get(message));
54 if (item == NULL((void*)0)) {
16
Assuming 'item' is equal to NULL
17
Taking true branch
55 return false0;
18
Returning without writing to '*item_out'
56 }
57
58 accelerator_desc = nsgtk_accelerator_get_desc(message);
59 if (accelerator_desc != NULL((void*)0)) {
60 gtk_accelerator_parse(accelerator_desc, &key, &mod);
61 if (key > 0) {
62 gtk_widget_add_accelerator(item,
63 "activate",
64 group,
65 key,
66 mod,
67 GTK_ACCEL_VISIBLE);
68 }
69 }
70 gtk_menu_shell_append(GTK_MENU_SHELL(menu)((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menu)), ((gtk_menu_shell_get_type ()))))))
, item);
71 gtk_widget_show(item);
72
73 *item_out = item;
74
75 return true1;
76}
77
78#define NEW_MENU(n, m)n = malloc(sizeof(*n)); if (n == ((void*)0)) { return ((void*
)0); } n->m_menu = ((((GtkMenu*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((gtk_menu_new())), ((gtk_menu_get_type ()
))))))
\
79 n = malloc(sizeof(*n)); \
80 if (n == NULL((void*)0)) { \
81 return NULL((void*)0); \
82 } \
83 n->m##_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
84
85#define IMAGE_ITEM(p, q, r, s, t)nsgtk_menu_add_image_item(s->p_menu, &(s->q_menuitem
), "r", t)
\
86 nsgtk_menu_add_image_item(s->p##_menu, &(s->q##_menuitem), #r, t)
87
88#define CHECK_ITEM(p, q, r, s)do { s->q_menuitem = ((((GtkCheckMenuItem*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic( messages_get
("r")))), ((gtk_check_menu_item_get_type ())))))); if ((s->
q_menuitem != ((void*)0)) && (s->p_menu != ((void*
)0))) { gtk_menu_shell_append(((((GtkMenuShell*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((s->p_menu)), ((gtk_menu_shell_get_type
())))))), ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((s->q_menuitem)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((s->q_menuitem)), ((gtk_widget_get_type
()))))))); } } while(0)
\
89 do { \
90 s->q##_menuitem = GTK_CHECK_MENU_ITEM( \((((GtkCheckMenuItem*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic( messages_get
(#r)))), ((gtk_check_menu_item_get_type ()))))))
91 gtk_check_menu_item_new_with_mnemonic(\((((GtkCheckMenuItem*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic( messages_get
(#r)))), ((gtk_check_menu_item_get_type ()))))))
92 messages_get(#r)))((((GtkCheckMenuItem*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic( messages_get
(#r)))), ((gtk_check_menu_item_get_type ()))))))
;\
93 if ((s->q##_menuitem != NULL((void*)0)) && (s->p##_menu != NULL((void*)0))) { \
94 gtk_menu_shell_append(GTK_MENU_SHELL(s->p##_menu)((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((s->p##_menu)), ((gtk_menu_shell_get_type ()))))))
, \
95 GTK_WIDGET(s->q##_menuitem)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((s->q##_menuitem)), ((gtk_widget_get_type ()))))))
); \
96 gtk_widget_show(GTK_WIDGET(s->q##_menuitem)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((s->q##_menuitem)), ((gtk_widget_get_type ()))))))
); \
97 } \
98 } while(0)
99
100#define SET_SUBMENU(q, r)do { r->q_submenu = nsgtk_menu_q_submenu(group); if ((r->
q_submenu != ((void*)0)) && (r->q_submenu->q_menu
!= ((void*)0)) && (r->q_menuitem != ((void*)0))) {
gtk_menu_item_set_submenu(((((GtkMenuItem*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((r->q_menuitem)), ((gtk_menu_item_get_type
())))))), ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((r->q_submenu->q_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
\
101 do { \
102 r->q##_submenu = nsgtk_menu_##q##_submenu(group); \
103 if ((r->q##_submenu != NULL((void*)0)) && \
104 (r->q##_submenu->q##_menu != NULL((void*)0)) && \
105 (r->q##_menuitem != NULL((void*)0))) { \
106 gtk_menu_item_set_submenu(GTK_MENU_ITEM(r->q##_menuitem)((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((r->q##_menuitem)), ((gtk_menu_item_get_type ()))))))
, \
107 GTK_WIDGET(r->q##_submenu->q##_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((r->q##_submenu->q##_menu)), ((gtk_widget_get_type (
)))))))
); \
108 } \
109 } while(0)
110
111#define ADD_NAMED_SEP(q, r, s)do { s->r_separator = gtk_separator_menu_item_new(); if ((
s->r_separator != ((void*)0)) && (s->q_menu != (
(void*)0))) { gtk_menu_shell_append(((((GtkMenuShell*) (void *
) g_type_check_instance_cast ((GTypeInstance*) ((s->q_menu
)), ((gtk_menu_shell_get_type ())))))), s->r_separator); gtk_widget_show
(s->r_separator); } } while(0)
\
112 do { \
113 s->r##_separator = gtk_separator_menu_item_new(); \
114 if ((s->r##_separator != NULL((void*)0)) && (s->q##_menu != NULL((void*)0))) { \
115 gtk_menu_shell_append(GTK_MENU_SHELL(s->q##_menu)((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((s->q##_menu)), ((gtk_menu_shell_get_type ()))))))
, s->r##_separator); \
116 gtk_widget_show(s->r##_separator); \
117 } \
118 } while(0)
119
120#define ADD_SEP(q, r)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (r->q_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((r->q_menu)), ((gtk_menu_shell_get_type ())))))), w); gtk_widget_show
(w); } } while(0)
\
121 do { \
122 GtkWidget *w = gtk_separator_menu_item_new(); \
123 if ((w != NULL((void*)0)) && (r->q##_menu != NULL((void*)0))) { \
124 gtk_menu_shell_append(GTK_MENU_SHELL(r->q##_menu)((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((r->q##_menu)), ((gtk_menu_shell_get_type ()))))))
, w); \
125 gtk_widget_show(w); \
126 } \
127 } while(0)
128
129#define ATTACH_PARENT(parent, msgname, menuv, group)do { menuv = ((((GtkMenuItem*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic(messages_get
("msgname")))), ((gtk_menu_item_get_type ())))))); gtk_menu_shell_append
(parent, ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((menuv)), ((gtk_widget_get_type ()))))))); gtk_widget_show
(((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menuv)), ((gtk_widget_get_type ()))))))); gtk_menu_item_set_submenu
(menuv, ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((menuv_menu)), ((gtk_widget_get_type ()))))
))); gtk_menu_set_accel_group(menuv_menu, group); } while(0)
\
130 do { \
131 /* create top level menu entry and attach to parent */ \
132 menuv = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic(messages_get(#msgname)))((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_item_new_with_mnemonic(messages_get(#msgname)))
), ((gtk_menu_item_get_type ()))))))
; \
133 gtk_menu_shell_append(parent, GTK_WIDGET(menuv)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menuv)), ((gtk_widget_get_type ()))))))
); \
134 gtk_widget_show(GTK_WIDGET(menuv)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menuv)), ((gtk_widget_get_type ()))))))
); \
135 /* attach submenu to parent */ \
136 gtk_menu_item_set_submenu(menuv, GTK_WIDGET(menuv##_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menuv##_menu)), ((gtk_widget_get_type ()))))))
); \
137 gtk_menu_set_accel_group(menuv##_menu, group); \
138 } while(0)
139
140/**
141* creates an export submenu
142* \param group the 'global' in a gtk sense accelerator reference
143*/
144static struct nsgtk_export_submenu *
145nsgtk_menu_export_submenu(GtkAccelGroup *group)
146{
147 struct nsgtk_export_submenu *ret;
148 ret = malloc(sizeof(struct nsgtk_export_submenu));
149
150 if (ret == NULL((void*)0)) {
151 nsgtk_warning(messages_get("NoMemory"), 0);
152 return NULL((void*)0);
153 }
154
155 ret->export_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
156 if (ret->export_menu == NULL((void*)0)) {
157 nsgtk_warning(messages_get("NoMemory"), 0);
158 free(ret);
159 return NULL((void*)0);
160 }
161
162 IMAGE_ITEM(export, savepage, gtkSavePage, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret->
savepage_menuitem), "gtkSavePage", group)
;
163 IMAGE_ITEM(export, plaintext, gtkPlainText, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret->
plaintext_menuitem), "gtkPlainText", group)
;
164 IMAGE_ITEM(export, pdf, gtkPDF, ret, group)nsgtk_menu_add_image_item(ret->export_menu, &(ret->
pdf_menuitem), "gtkPDF", group)
;
165 return ret;
166}
167
168/**
169* creates a scaleview submenu
170* \param group the 'global' in a gtk sense accelerator reference
171*/
172
173static struct nsgtk_scaleview_submenu *
174nsgtk_menu_scaleview_submenu(GtkAccelGroup *group)
175{
176 struct nsgtk_scaleview_submenu *ret =
177 malloc(sizeof(struct nsgtk_scaleview_submenu));
178 if (ret == NULL((void*)0)) {
179 nsgtk_warning(messages_get("NoMemory"), 0);
180 return NULL((void*)0);
181 }
182 ret->scaleview_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
183 if (ret->scaleview_menu == NULL((void*)0)) {
184 nsgtk_warning(messages_get("NoMemory"), 0);
185 free(ret);
186 return NULL((void*)0);
187 }
188 IMAGE_ITEM(scaleview, zoomplus, gtkZoomPlus, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret->
zoomplus_menuitem), "gtkZoomPlus", group)
;
189 IMAGE_ITEM(scaleview, zoomnormal, gtkZoomNormal, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret->
zoomnormal_menuitem), "gtkZoomNormal", group)
;
190 IMAGE_ITEM(scaleview, zoomminus, gtkZoomMinus, ret, group)nsgtk_menu_add_image_item(ret->scaleview_menu, &(ret->
zoomminus_menuitem), "gtkZoomMinus", group)
;
191 return ret;
192}
193
194/**
195* creates a tab navigation submenu
196* \param group the 'global' in a gtk sense accelerator reference
197*/
198
199static struct nsgtk_tabs_submenu *nsgtk_menu_tabs_submenu(GtkAccelGroup *group)
200{
201 struct nsgtk_tabs_submenu *ret;
202 ret = malloc(sizeof(struct nsgtk_tabs_submenu));
203 if (ret == NULL((void*)0)) {
204 nsgtk_warning(messages_get("NoMemory"), 0);
205 return NULL((void*)0);
206 }
207 ret->tabs_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
208 if (ret->tabs_menu == NULL((void*)0)) {
209 nsgtk_warning(messages_get("NoMemory"), 0);
210 free(ret);
211 return NULL((void*)0);
212 }
213 IMAGE_ITEM(tabs, nexttab, gtkNextTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->nexttab_menuitem
), "gtkNextTab", group)
;
214 IMAGE_ITEM(tabs, prevtab, gtkPrevTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->prevtab_menuitem
), "gtkPrevTab", group)
;
215 IMAGE_ITEM(tabs, closetab, gtkCloseTab, ret, group)nsgtk_menu_add_image_item(ret->tabs_menu, &(ret->closetab_menuitem
), "gtkCloseTab", group)
;
216
217 return ret;
218}
219
220
221/**
222 * creates a toolbars submenu
223 *
224 * \param group the 'global' in a gtk sense accelerator reference
225 */
226static struct nsgtk_toolbars_submenu *
227nsgtk_menu_toolbars_submenu(GtkAccelGroup *group)
228{
229 struct nsgtk_toolbars_submenu *tmenu;
230
231 tmenu = malloc(sizeof(struct nsgtk_toolbars_submenu));
232 if (tmenu == NULL((void*)0)) {
233 nsgtk_warning(messages_get("NoMemory"), 0);
234 return NULL((void*)0);
235 }
236
237 tmenu->toolbars_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
238 if (tmenu->toolbars_menu == NULL((void*)0)) {
239 nsgtk_warning(messages_get("NoMemory"), 0);
240 free(tmenu);
241 return NULL((void*)0);
242 }
243
244 CHECK_ITEM(toolbars, menubar, gtkMenuBar, tmenu)do { tmenu->menubar_menuitem = ((((GtkCheckMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic
( messages_get("gtkMenuBar")))), ((gtk_check_menu_item_get_type
())))))); if ((tmenu->menubar_menuitem != ((void*)0)) &&
(tmenu->toolbars_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((tmenu->toolbars_menu)), ((gtk_menu_shell_get_type ())
))))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((tmenu->menubar_menuitem)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((tmenu->menubar_menuitem)), ((gtk_widget_get_type
()))))))); } } while(0)
;
245 if (tmenu->menubar_menuitem != NULL((void*)0)) {
246 gtk_check_menu_item_set_active(tmenu->menubar_menuitem, TRUE(!(0)));
247 }
248
249 CHECK_ITEM(toolbars, toolbar, gtkToolBar, tmenu)do { tmenu->toolbar_menuitem = ((((GtkCheckMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_check_menu_item_new_with_mnemonic
( messages_get("gtkToolBar")))), ((gtk_check_menu_item_get_type
())))))); if ((tmenu->toolbar_menuitem != ((void*)0)) &&
(tmenu->toolbars_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((tmenu->toolbars_menu)), ((gtk_menu_shell_get_type ())
))))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((tmenu->toolbar_menuitem)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((tmenu->toolbar_menuitem)), ((gtk_widget_get_type
()))))))); } } while(0)
;
250 if (tmenu->toolbar_menuitem != NULL((void*)0)) {
251 gtk_check_menu_item_set_active(tmenu->toolbar_menuitem, TRUE(!(0)));
252 }
253
254 ADD_SEP(toolbars, tmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (tmenu->toolbars_menu != ((void*)0))
) { gtk_menu_shell_append(((((GtkMenuShell*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((tmenu->toolbars_menu)), ((gtk_menu_shell_get_type
())))))), w); gtk_widget_show(w); } } while(0)
;
255
256 IMAGE_ITEM(toolbars, customize, gtkCustomize, tmenu, group)nsgtk_menu_add_image_item(tmenu->toolbars_menu, &(tmenu
->customize_menuitem), "gtkCustomize", group)
;
257
258 return tmenu;
259}
260
261/**
262* creates a debugging submenu
263* \param group the 'global' in a gtk sense accelerator reference
264*/
265
266static struct nsgtk_developer_submenu *
267nsgtk_menu_developer_submenu(GtkAccelGroup *group)
268{
269 struct nsgtk_developer_submenu *dmenu =
270 malloc(sizeof(struct nsgtk_developer_submenu));
271 if (dmenu == NULL((void*)0)) {
272 nsgtk_warning(messages_get("NoMemory"), 0);
273 return NULL((void*)0);
274 }
275 dmenu->developer_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
276 if (dmenu->developer_menu == NULL((void*)0)) {
277 nsgtk_warning(messages_get("NoMemory"), 0);
278 free(dmenu);
279 return NULL((void*)0);
280 }
281
282 IMAGE_ITEM(developer, viewsource, gtkPageSource, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu
->viewsource_menuitem), "gtkPageSource", group)
;
283 IMAGE_ITEM(developer, toggledebugging, gtkToggleDebugging, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu
->toggledebugging_menuitem), "gtkToggleDebugging", group)
;
284 IMAGE_ITEM(developer, debugboxtree, gtkDebugBoxTree, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu
->debugboxtree_menuitem), "gtkDebugBoxTree", group)
;
285 IMAGE_ITEM(developer, debugdomtree, gtkDebugDomTree, dmenu, group)nsgtk_menu_add_image_item(dmenu->developer_menu, &(dmenu
->debugdomtree_menuitem), "gtkDebugDomTree", group)
;
286
287 return dmenu;
288}
289
290/**
291 * creates the file menu
292 *
293 * \param group The gtk 'global' accelerator reference
294 * \return The new file menu or NULL on error
295 */
296static struct nsgtk_file_menu *nsgtk_menu_file_submenu(GtkAccelGroup *group)
297{
298 struct nsgtk_file_menu *fmenu;
299
300 fmenu = malloc(sizeof(struct nsgtk_file_menu));
301 if (fmenu == NULL((void*)0)) {
302 nsgtk_warning(messages_get("NoMemory"), 0);
303 return NULL((void*)0);
304 }
305
306 fmenu->file_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
307 if (fmenu->file_menu == NULL((void*)0)) {
308 nsgtk_warning(messages_get("NoMemory"), 0);
309 free(fmenu);
310 return NULL((void*)0);
311 }
312
313 IMAGE_ITEM(file, newwindow, gtkNewWindow, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
newwindow_menuitem), "gtkNewWindow", group)
;
314 IMAGE_ITEM(file, newtab, gtkNewTab, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
newtab_menuitem), "gtkNewTab", group)
;
315 IMAGE_ITEM(file, openfile, gtkOpenFile, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
openfile_menuitem), "gtkOpenFile", group)
;
316 IMAGE_ITEM(file, closewindow, gtkCloseWindow, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
closewindow_menuitem), "gtkCloseWindow", group)
;
317 ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((fmenu->file_menu)), ((gtk_menu_shell_get_type ())))))
), w); gtk_widget_show(w); } } while(0)
;
318 IMAGE_ITEM(file, export, gtkExport, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
export_menuitem), "gtkExport", group)
;
319 ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((fmenu->file_menu)), ((gtk_menu_shell_get_type ())))))
), w); gtk_widget_show(w); } } while(0)
;
320 IMAGE_ITEM(file, printpreview, gtkPrintPreview, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
printpreview_menuitem), "gtkPrintPreview", group)
;
321 IMAGE_ITEM(file, print, gtkPrint, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
print_menuitem), "gtkPrint", group)
;
322 ADD_SEP(file, fmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (fmenu->file_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((fmenu->file_menu)), ((gtk_menu_shell_get_type ())))))
), w); gtk_widget_show(w); } } while(0)
;
323 IMAGE_ITEM(file, quit, gtkQuitMenu, fmenu, group)nsgtk_menu_add_image_item(fmenu->file_menu, &(fmenu->
quit_menuitem), "gtkQuitMenu", group)
;
324 SET_SUBMENU(export, fmenu)do { fmenu->export_submenu = nsgtk_menu_export_submenu(group
); if ((fmenu->export_submenu != ((void*)0)) && (fmenu
->export_submenu->export_menu != ((void*)0)) &&
(fmenu->export_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((fmenu->export_menuitem)), ((gtk_menu_item_get_type ()
)))))), ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((fmenu->export_submenu->export_menu))
, ((gtk_widget_get_type ()))))))); } } while(0)
;
325
326 return fmenu;
327}
328
329/**
330* creates an edit menu
331* \param group the 'global' in a gtk sense accelerator reference
332*/
333
334static struct nsgtk_edit_menu *nsgtk_menu_edit_submenu(GtkAccelGroup *group)
335{
336 struct nsgtk_edit_menu *ret = malloc(sizeof(struct nsgtk_edit_menu));
337 if (ret == NULL((void*)0)) {
338 nsgtk_warning(messages_get("NoMemory"), 0);
339 return NULL((void*)0);
340 }
341 ret->edit_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
342 if (ret->edit_menu == NULL((void*)0)) {
343 nsgtk_warning(messages_get("NoMemory"), 0);
344 free(ret);
345 return NULL((void*)0);
346 }
347 IMAGE_ITEM(edit, cut, gtkCut, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->cut_menuitem
), "gtkCut", group)
;
348 IMAGE_ITEM(edit, copy, gtkCopy, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->copy_menuitem
), "gtkCopy", group)
;
349 IMAGE_ITEM(edit, paste, gtkPaste, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->paste_menuitem
), "gtkPaste", group)
;
350 IMAGE_ITEM(edit, delete, gtkDelete, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->delete_menuitem
), "gtkDelete", group)
;
351 ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->edit_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
352 IMAGE_ITEM(edit, selectall, gtkSelectAll, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->selectall_menuitem
), "gtkSelectAll", group)
;
353 ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->edit_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
354 IMAGE_ITEM(edit, find, gtkFind, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->find_menuitem
), "gtkFind", group)
;
355 ADD_SEP(edit, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->edit_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->edit_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
356 IMAGE_ITEM(edit, preferences, gtkPreferences, ret, group)nsgtk_menu_add_image_item(ret->edit_menu, &(ret->preferences_menuitem
), "gtkPreferences", group)
;
357
358 return ret;
359}
360
361/**
362* creates a view menu
363* \param group the 'global' in a gtk sense accelerator reference
364*/
365
366static struct nsgtk_view_menu *nsgtk_menu_view_submenu(GtkAccelGroup *group)
367{
368 struct nsgtk_view_menu *ret = malloc(sizeof(struct nsgtk_view_menu));
4
Uninitialized value stored to field 'tabs_menuitem'
369 if (ret == NULL((void*)0)) {
5
Assuming 'ret' is not equal to NULL
6
Taking false branch
370 nsgtk_warning(messages_get("NoMemory"), 0);
371 return NULL((void*)0);
372 }
373 ret->view_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
374 if (ret->view_menu == NULL((void*)0)) {
7
Assuming field 'view_menu' is not equal to NULL
8
Taking false branch
375 nsgtk_warning(messages_get("NoMemory"), 0);
376 free(ret);
377 return NULL((void*)0);
378 }
379 IMAGE_ITEM(view, scaleview, gtkScaleView, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->scaleview_menuitem
), "gtkScaleView", group)
;
380 SET_SUBMENU(scaleview, ret)do { ret->scaleview_submenu = nsgtk_menu_scaleview_submenu
(group); if ((ret->scaleview_submenu != ((void*)0)) &&
(ret->scaleview_submenu->scaleview_menu != ((void*)0))
&& (ret->scaleview_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->scaleview_menuitem)), ((gtk_menu_item_get_type (
))))))), ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((ret->scaleview_submenu->scaleview_menu
)), ((gtk_widget_get_type ()))))))); } } while(0)
;
9
Taking true branch
10
Loop condition is false. Exiting loop
381 IMAGE_ITEM(view, fullscreen, gtkFullScreen, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->fullscreen_menuitem
), "gtkFullScreen", group)
;
382 ADD_SEP(view, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->view_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->view_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
11
Assuming 'w' is equal to null
12
Loop condition is false. Exiting loop
383 IMAGE_ITEM(view, toolbars, gtkToolbars, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->toolbars_menuitem
), "gtkToolbars", group)
;
384 SET_SUBMENU(toolbars, ret)do { ret->toolbars_submenu = nsgtk_menu_toolbars_submenu(group
); if ((ret->toolbars_submenu != ((void*)0)) && (ret
->toolbars_submenu->toolbars_menu != ((void*)0)) &&
(ret->toolbars_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->toolbars_menuitem)), ((gtk_menu_item_get_type ()
)))))), ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((ret->toolbars_submenu->toolbars_menu
)), ((gtk_widget_get_type ()))))))); } } while(0)
;
13
Assuming field 'toolbars_submenu' is equal to null
14
Loop condition is false. Exiting loop
385 IMAGE_ITEM(view, tabs, gtkTabs, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->tabs_menuitem
), "gtkTabs", group)
;
15
Calling 'nsgtk_menu_add_image_item'
19
Returning from 'nsgtk_menu_add_image_item'
386 SET_SUBMENU(tabs, ret)do { ret->tabs_submenu = nsgtk_menu_tabs_submenu(group); if
((ret->tabs_submenu != ((void*)0)) && (ret->tabs_submenu
->tabs_menu != ((void*)0)) && (ret->tabs_menuitem
!= ((void*)0))) { gtk_menu_item_set_submenu(((((GtkMenuItem*
) (void *) g_type_check_instance_cast ((GTypeInstance*) ((ret
->tabs_menuitem)), ((gtk_menu_item_get_type ())))))), ((((
GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->tabs_submenu->tabs_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
20
The left operand of '!=' is a garbage value
387 ADD_SEP(view, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->view_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->view_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
388 IMAGE_ITEM(view, savewindowsize, gtkSaveWindowSize, ret, group)nsgtk_menu_add_image_item(ret->view_menu, &(ret->savewindowsize_menuitem
), "gtkSaveWindowSize", group)
;
389
390 return ret;
391}
392
393/**
394* creates a nav menu
395* \param group the 'global' in a gtk sense accelerator reference
396*/
397
398static struct nsgtk_nav_menu *nsgtk_menu_nav_submenu(GtkAccelGroup *group)
399{
400 struct nsgtk_nav_menu *ret = malloc(sizeof(struct nsgtk_nav_menu));
401 if (ret == NULL((void*)0)) {
402 nsgtk_warning(messages_get("NoMemory"), 0);
403 return NULL((void*)0);
404 }
405 ret->nav_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
406 if (ret->nav_menu == NULL((void*)0)) {
407 nsgtk_warning(messages_get("NoMemory"), 0);
408 free(ret);
409 return NULL((void*)0);
410 }
411
412 IMAGE_ITEM(nav, back, gtkBack, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->back_menuitem
), "gtkBack", group)
;
413 IMAGE_ITEM(nav, forward, gtkForward, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->forward_menuitem
), "gtkForward", group)
;
414 IMAGE_ITEM(nav, stop, gtkStop, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->stop_menuitem
), "gtkStop", group)
;
415 IMAGE_ITEM(nav, reload, gtkReload, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->reload_menuitem
), "gtkReload", group)
;
416 IMAGE_ITEM(nav, home, gtkHome, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->home_menuitem
), "gtkHome", group)
;
417 ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->nav_menu)), ((gtk_menu_shell_get_type ())))))), w
); gtk_widget_show(w); } } while(0)
;
418 IMAGE_ITEM(nav, localhistory, gtkLocalHistory, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->localhistory_menuitem
), "gtkLocalHistory", group)
;
419 IMAGE_ITEM(nav, globalhistory, gtkGlobalHistory, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->globalhistory_menuitem
), "gtkGlobalHistory", group)
;
420 ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->nav_menu)), ((gtk_menu_shell_get_type ())))))), w
); gtk_widget_show(w); } } while(0)
;
421 IMAGE_ITEM(nav, addbookmarks, gtkAddBookMarks, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->addbookmarks_menuitem
), "gtkAddBookMarks", group)
;
422 IMAGE_ITEM(nav, showbookmarks, gtkShowBookMarks, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->showbookmarks_menuitem
), "gtkShowBookMarks", group)
;
423 ADD_SEP(nav, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->nav_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->nav_menu)), ((gtk_menu_shell_get_type ())))))), w
); gtk_widget_show(w); } } while(0)
;
424 IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group)nsgtk_menu_add_image_item(ret->nav_menu, &(ret->openlocation_menuitem
), "gtkOpenLocation", group)
;
425
426 return ret;
427}
428
429/**
430 * creates the tools menu
431 * \param group the 'global' in a gtk sense accelerator reference
432 */
433static struct nsgtk_tools_menu *nsgtk_menu_tools_submenu(GtkAccelGroup *group)
434{
435 struct nsgtk_tools_menu *ret = malloc(sizeof(struct nsgtk_tools_menu));
436 if (ret == NULL((void*)0)) {
437 nsgtk_warning(messages_get("NoMemory"), 0);
438 return NULL((void*)0);
439 }
440 ret->tools_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
441 if (ret->tools_menu == NULL((void*)0)) {
442 nsgtk_warning(messages_get("NoMemory"), 0);
443 free(ret);
444 return NULL((void*)0);
445 }
446
447 IMAGE_ITEM(tools, downloads, gtkDownloads, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->downloads_menuitem
), "gtkDownloads", group)
;
448 IMAGE_ITEM(tools, showcookies, gtkShowCookies, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->showcookies_menuitem
), "gtkShowCookies", group)
;
449 IMAGE_ITEM(tools, developer, gtkDeveloper, ret, group)nsgtk_menu_add_image_item(ret->tools_menu, &(ret->developer_menuitem
), "gtkDeveloper", group)
;
450 SET_SUBMENU(developer, ret)do { ret->developer_submenu = nsgtk_menu_developer_submenu
(group); if ((ret->developer_submenu != ((void*)0)) &&
(ret->developer_submenu->developer_menu != ((void*)0))
&& (ret->developer_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->developer_menuitem)), ((gtk_menu_item_get_type (
))))))), ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((ret->developer_submenu->developer_menu
)), ((gtk_widget_get_type ()))))))); } } while(0)
;
451
452 return ret;
453}
454
455/**
456 * creates a help menu
457 * \param group the 'global' in a gtk sense accelerator reference
458 */
459static struct nsgtk_help_menu *nsgtk_menu_help_submenu(GtkAccelGroup *group)
460{
461 struct nsgtk_help_menu *ret = malloc(sizeof(struct nsgtk_help_menu));
462 if (ret == NULL((void*)0)) {
463 nsgtk_warning(messages_get("NoMemory"), 0);
464 return NULL((void*)0);
465 }
466 ret->help_menu = GTK_MENU(gtk_menu_new())((((GtkMenu*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((gtk_menu_new())), ((gtk_menu_get_type ()))))))
;
467 if (ret->help_menu == NULL((void*)0)) {
468 nsgtk_warning(messages_get("NoMemory"), 0);
469 free(ret);
470 return NULL((void*)0);
471 }
472 IMAGE_ITEM(help, contents, gtkContents, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->contents_menuitem
), "gtkContents", group)
;
473 IMAGE_ITEM(help, guide, gtkGuide, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->guide_menuitem
), "gtkGuide", group)
;
474 IMAGE_ITEM(help, info, gtkUserInformation, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->info_menuitem
), "gtkUserInformation", group)
;
475 ADD_SEP(help, ret)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (ret->help_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ret->help_menu)), ((gtk_menu_shell_get_type ())))))),
w); gtk_widget_show(w); } } while(0)
;
476 IMAGE_ITEM(help, about, gtkAbout, ret, group)nsgtk_menu_add_image_item(ret->help_menu, &(ret->about_menuitem
), "gtkAbout", group)
;
477
478 return ret;
479}
480
481
482/**
483 * Generate menubar menus.
484 *
485 * Generate the main menu structure and attach it to a menubar widget.
486 */
487struct nsgtk_bar_submenu *
488nsgtk_menu_bar_create(GtkMenuShell *menubar, GtkAccelGroup *group)
489{
490 struct nsgtk_bar_submenu *nmenu;
491
492 nmenu = calloc(1, sizeof(struct nsgtk_bar_submenu));
493 if (nmenu == NULL((void*)0)) {
1
Assuming 'nmenu' is not equal to NULL
2
Taking false branch
494 return NULL((void*)0);
495 }
496
497 /* create sub menus */
498 nmenu->file_submenu = nsgtk_menu_file_submenu(group);
499 nmenu->edit_submenu = nsgtk_menu_edit_submenu(group);
500 nmenu->view_submenu = nsgtk_menu_view_submenu(group);
3
Calling 'nsgtk_menu_view_submenu'
501 nmenu->nav_submenu = nsgtk_menu_nav_submenu(group);
502 nmenu->tools_submenu = nsgtk_menu_tools_submenu(group);
503 nmenu->help_submenu = nsgtk_menu_help_submenu(group);
504
505 if (menubar != NULL((void*)0)) {
506 nmenu->bar_menu = GTK_MENU_BAR(menubar)((((GtkMenuBar*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menubar)), ((gtk_menu_bar_get_type ()))))))
;
507
508 /* attach menus to menubar */
509 ATTACH_PARENT(menubar, gtkFile, nmenu->file_submenu->file, group)do { nmenu->file_submenu->file = ((((GtkMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkFile")))), ((gtk_menu_item_get_type ())))))
); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->file_submenu->file)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->file_submenu->file)), ((gtk_widget_get_type
()))))))); gtk_menu_item_set_submenu(nmenu->file_submenu->
file, ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->file_submenu->file_menu)), ((gtk_widget_get_type
()))))))); gtk_menu_set_accel_group(nmenu->file_submenu->
file_menu, group); } while(0)
;
510 ATTACH_PARENT(menubar, gtkEdit, nmenu->edit_submenu->edit, group)do { nmenu->edit_submenu->edit = ((((GtkMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkEdit")))), ((gtk_menu_item_get_type ())))))
); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->edit_submenu->edit)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->edit_submenu->edit)), ((gtk_widget_get_type
()))))))); gtk_menu_item_set_submenu(nmenu->edit_submenu->
edit, ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->edit_submenu->edit_menu)), ((gtk_widget_get_type
()))))))); gtk_menu_set_accel_group(nmenu->edit_submenu->
edit_menu, group); } while(0)
;
511 ATTACH_PARENT(menubar, gtkView, nmenu->view_submenu->view, group)do { nmenu->view_submenu->view = ((((GtkMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkView")))), ((gtk_menu_item_get_type ())))))
); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->view_submenu->view)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->view_submenu->view)), ((gtk_widget_get_type
()))))))); gtk_menu_item_set_submenu(nmenu->view_submenu->
view, ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->view_submenu->view_menu)), ((gtk_widget_get_type
()))))))); gtk_menu_set_accel_group(nmenu->view_submenu->
view_menu, group); } while(0)
;
512 ATTACH_PARENT(menubar, gtkNavigate, nmenu->nav_submenu->nav, group)do { nmenu->nav_submenu->nav = ((((GtkMenuItem*) (void *
) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkNavigate")))), ((gtk_menu_item_get_type ())
))))); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *
) g_type_check_instance_cast ((GTypeInstance*) ((nmenu->nav_submenu
->nav)), ((gtk_widget_get_type ()))))))); gtk_widget_show(
((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->nav_submenu->nav)), ((gtk_widget_get_type (
)))))))); gtk_menu_item_set_submenu(nmenu->nav_submenu->
nav, ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->nav_submenu->nav_menu)), ((gtk_widget_get_type
()))))))); gtk_menu_set_accel_group(nmenu->nav_submenu->
nav_menu, group); } while(0)
;
513 ATTACH_PARENT(menubar, gtkTools, nmenu->tools_submenu->tools, group)do { nmenu->tools_submenu->tools = ((((GtkMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkTools")))), ((gtk_menu_item_get_type ()))))
)); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->tools_submenu->tools)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->tools_submenu->tools)), ((gtk_widget_get_type
()))))))); gtk_menu_item_set_submenu(nmenu->tools_submenu
->tools, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->tools_submenu->tools_menu))
, ((gtk_widget_get_type ()))))))); gtk_menu_set_accel_group(nmenu
->tools_submenu->tools_menu, group); } while(0)
;
514 ATTACH_PARENT(menubar, gtkHelp, nmenu->help_submenu->help, group)do { nmenu->help_submenu->help = ((((GtkMenuItem*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_item_new_with_mnemonic
(messages_get("gtkHelp")))), ((gtk_menu_item_get_type ())))))
); gtk_menu_shell_append(menubar, ((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->help_submenu->help)), ((gtk_widget_get_type
()))))))); gtk_widget_show(((((GtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((nmenu->help_submenu->help)), ((gtk_widget_get_type
()))))))); gtk_menu_item_set_submenu(nmenu->help_submenu->
help, ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->help_submenu->help_menu)), ((gtk_widget_get_type
()))))))); gtk_menu_set_accel_group(nmenu->help_submenu->
help_menu, group); } while(0)
;
515 }
516
517 return nmenu;
518}
519
520
521/* exported function documented in gtk/menu.h */
522struct nsgtk_burger_menu *nsgtk_burger_menu_create(GtkAccelGroup *group)
523{
524 struct nsgtk_burger_menu *nmenu;
525
526 NEW_MENU(nmenu, burger)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return
((void*)0); } nmenu->burger_menu = ((((GtkMenu*) (void *)
g_type_check_instance_cast ((GTypeInstance*) ((gtk_menu_new(
))), ((gtk_menu_get_type ()))))))
;
527
528 IMAGE_ITEM(burger, file, gtkFile, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
file_menuitem), "gtkFile", group)
;
529 SET_SUBMENU(file, nmenu)do { nmenu->file_submenu = nsgtk_menu_file_submenu(group);
if ((nmenu->file_submenu != ((void*)0)) && (nmenu
->file_submenu->file_menu != ((void*)0)) && (nmenu
->file_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->file_menuitem)), ((gtk_menu_item_get_type ()))
)))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->file_submenu->file_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
530
531 IMAGE_ITEM(burger, edit, gtkEdit, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
edit_menuitem), "gtkEdit", group)
;
532 SET_SUBMENU(edit, nmenu)do { nmenu->edit_submenu = nsgtk_menu_edit_submenu(group);
if ((nmenu->edit_submenu != ((void*)0)) && (nmenu
->edit_submenu->edit_menu != ((void*)0)) && (nmenu
->edit_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->edit_menuitem)), ((gtk_menu_item_get_type ()))
)))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->edit_submenu->edit_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
533
534 IMAGE_ITEM(burger, view, gtkView, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
view_menuitem), "gtkView", group)
;
535 SET_SUBMENU(view, nmenu)do { nmenu->view_submenu = nsgtk_menu_view_submenu(group);
if ((nmenu->view_submenu != ((void*)0)) && (nmenu
->view_submenu->view_menu != ((void*)0)) && (nmenu
->view_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->view_menuitem)), ((gtk_menu_item_get_type ()))
)))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->view_submenu->view_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
536
537 IMAGE_ITEM(burger, nav, gtkNavigate, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
nav_menuitem), "gtkNavigate", group)
;
538 SET_SUBMENU(nav, nmenu)do { nmenu->nav_submenu = nsgtk_menu_nav_submenu(group); if
((nmenu->nav_submenu != ((void*)0)) && (nmenu->
nav_submenu->nav_menu != ((void*)0)) && (nmenu->
nav_menuitem != ((void*)0))) { gtk_menu_item_set_submenu(((((
GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->nav_menuitem)), ((gtk_menu_item_get_type ())))
))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->nav_submenu->nav_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
539
540 IMAGE_ITEM(burger, tools, gtkTools, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
tools_menuitem), "gtkTools", group)
;
541 SET_SUBMENU(tools, nmenu)do { nmenu->tools_submenu = nsgtk_menu_tools_submenu(group
); if ((nmenu->tools_submenu != ((void*)0)) && (nmenu
->tools_submenu->tools_menu != ((void*)0)) && (
nmenu->tools_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->tools_menuitem)), ((gtk_menu_item_get_type ())
))))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((nmenu->tools_submenu->tools_menu)), (
(gtk_widget_get_type ()))))))); } } while(0)
;
542
543 IMAGE_ITEM(burger, help, gtkHelp, nmenu, group)nsgtk_menu_add_image_item(nmenu->burger_menu, &(nmenu->
help_menuitem), "gtkHelp", group)
;
544 SET_SUBMENU(help, nmenu)do { nmenu->help_submenu = nsgtk_menu_help_submenu(group);
if ((nmenu->help_submenu != ((void*)0)) && (nmenu
->help_submenu->help_menu != ((void*)0)) && (nmenu
->help_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->help_menuitem)), ((gtk_menu_item_get_type ()))
)))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->help_submenu->help_menu)), ((gtk_widget_get_type
()))))))); } } while(0)
;
545
546 return nmenu;
547}
548
549
550/* exported function documented in gtk/menu.h */
551struct nsgtk_popup_menu *nsgtk_popup_menu_create(GtkAccelGroup *group)
552{
553 struct nsgtk_popup_menu *nmenu;
554
555 NEW_MENU(nmenu, popup)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return
((void*)0); } nmenu->popup_menu = ((((GtkMenu*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((gtk_menu_new())), ((gtk_menu_get_type ()
))))))
;
556
557 IMAGE_ITEM(popup, back, gtkBack, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
back_menuitem), "gtkBack", group)
;
558 IMAGE_ITEM(popup, forward, gtkForward, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
forward_menuitem), "gtkForward", group)
;
559 IMAGE_ITEM(popup, stop, gtkStop, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
stop_menuitem), "gtkStop", group)
;
560 IMAGE_ITEM(popup, reload, gtkReload, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
reload_menuitem), "gtkReload", group)
;
561
562 ADD_NAMED_SEP(popup, first, nmenu)do { nmenu->first_separator = gtk_separator_menu_item_new(
); if ((nmenu->first_separator != ((void*)0)) && (
nmenu->popup_menu != ((void*)0))) { gtk_menu_shell_append(
((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->popup_menu)), ((gtk_menu_shell_get_type ()))))
)), nmenu->first_separator); gtk_widget_show(nmenu->first_separator
); } } while(0)
;
563
564 IMAGE_ITEM(popup, cut, gtkCut, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
cut_menuitem), "gtkCut", group)
;
565 IMAGE_ITEM(popup, copy, gtkCopy, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
copy_menuitem), "gtkCopy", group)
;
566 IMAGE_ITEM(popup, paste, gtkPaste, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
paste_menuitem), "gtkPaste", group)
;
567
568 ADD_NAMED_SEP(popup, second, nmenu)do { nmenu->second_separator = gtk_separator_menu_item_new
(); if ((nmenu->second_separator != ((void*)0)) &&
(nmenu->popup_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->popup_menu)), ((gtk_menu_shell_get_type ()))))
)), nmenu->second_separator); gtk_widget_show(nmenu->second_separator
); } } while(0)
;
569
570 IMAGE_ITEM(popup, toolbars, gtkToolbars, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
toolbars_menuitem), "gtkToolbars", group)
;
571 SET_SUBMENU(toolbars, nmenu)do { nmenu->toolbars_submenu = nsgtk_menu_toolbars_submenu
(group); if ((nmenu->toolbars_submenu != ((void*)0)) &&
(nmenu->toolbars_submenu->toolbars_menu != ((void*)0))
&& (nmenu->toolbars_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->toolbars_menuitem)), ((gtk_menu_item_get_type (
))))))), ((((GtkWidget*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((nmenu->toolbars_submenu->toolbars_menu
)), ((gtk_widget_get_type ()))))))); } } while(0)
;
572
573 IMAGE_ITEM(popup, tools, gtkTools, nmenu, group)nsgtk_menu_add_image_item(nmenu->popup_menu, &(nmenu->
tools_menuitem), "gtkTools", group)
;
574 SET_SUBMENU(tools, nmenu)do { nmenu->tools_submenu = nsgtk_menu_tools_submenu(group
); if ((nmenu->tools_submenu != ((void*)0)) && (nmenu
->tools_submenu->tools_menu != ((void*)0)) && (
nmenu->tools_menuitem != ((void*)0))) { gtk_menu_item_set_submenu
(((((GtkMenuItem*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->tools_menuitem)), ((gtk_menu_item_get_type ())
))))), ((((GtkWidget*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((nmenu->tools_submenu->tools_menu)), (
(gtk_widget_get_type ()))))))); } } while(0)
;
575
576 return nmenu;
577}
578
579
580/* exported function documented in gtk/menu.h */
581struct nsgtk_link_menu *
582nsgtk_link_menu_create(GtkAccelGroup *group)
583{
584 struct nsgtk_link_menu *nmenu;
585
586 NEW_MENU(nmenu, link)nmenu = malloc(sizeof(*nmenu)); if (nmenu == ((void*)0)) { return
((void*)0); } nmenu->link_menu = ((((GtkMenu*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((gtk_menu_new())), ((gtk_menu_get_type ()
))))))
;
587
588 IMAGE_ITEM(link, opentab, gtkOpentab, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu->
opentab_menuitem), "gtkOpentab", group)
;
589 IMAGE_ITEM(link, openwin, gtkOpenwin, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu->
openwin_menuitem), "gtkOpenwin", group)
;
590
591 ADD_SEP(link, nmenu)do { GtkWidget *w = gtk_separator_menu_item_new(); if ((w != (
(void*)0)) && (nmenu->link_menu != ((void*)0))) { gtk_menu_shell_append
(((((GtkMenuShell*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((nmenu->link_menu)), ((gtk_menu_shell_get_type ())))))
), w); gtk_widget_show(w); } } while(0)
;
592
593 IMAGE_ITEM(link, save, gtkSavelink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu->
save_menuitem), "gtkSavelink", group)
;
594 IMAGE_ITEM(link, bookmark, gtkBookmarklink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu->
bookmark_menuitem), "gtkBookmarklink", group)
;
595 IMAGE_ITEM(link, copy, gtkCopylink, nmenu, group)nsgtk_menu_add_image_item(nmenu->link_menu, &(nmenu->
copy_menuitem), "gtkCopylink", group)
;
596
597 return nmenu;
598}
599
600
601/* exported function documented in gtk/menu.h */
602nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu)
603{
604 gtk_widget_destroy(GTK_WIDGET(menu->bar_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menu->bar_menu)), ((gtk_widget_get_type ()))))))
);
605
606 free(menu->file_submenu->export_submenu);
607 free(menu->file_submenu);
608 free(menu->edit_submenu);
609 free(menu->view_submenu->tabs_submenu);
610 free(menu->view_submenu->toolbars_submenu);
611 free(menu->view_submenu->scaleview_submenu);
612 free(menu->view_submenu);
613 free(menu->nav_submenu);
614 free(menu->tools_submenu->developer_submenu);
615 free(menu->tools_submenu);
616 free(menu->help_submenu);
617 free(menu);
618
619 return NSERROR_OK;
620}
621
622/* exported function documented in gtk/menu.h */
623nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu)
624{
625 gtk_widget_destroy(GTK_WIDGET(menu->burger_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menu->burger_menu)), ((gtk_widget_get_type ()))))))
);
626
627 free(menu->file_submenu->export_submenu);
628 free(menu->file_submenu);
629 free(menu->edit_submenu);
630 free(menu->view_submenu->tabs_submenu);
631 free(menu->view_submenu->toolbars_submenu);
632 free(menu->view_submenu->scaleview_submenu);
633 free(menu->view_submenu);
634 free(menu->nav_submenu);
635 free(menu->tools_submenu->developer_submenu);
636 free(menu->tools_submenu);
637 free(menu->help_submenu);
638 free(menu);
639
640 return NSERROR_OK;
641}
642
643
644/* exported function documented in gtk/menu.h */
645nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu)
646{
647 gtk_widget_destroy(GTK_WIDGET(menu->popup_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menu->popup_menu)), ((gtk_widget_get_type ()))))))
);
648
649 free(menu->toolbars_submenu);
650 free(menu->tools_submenu->developer_submenu);
651 free(menu->tools_submenu);
652 free(menu);
653
654 return NSERROR_OK;
655}
656
657
658/* exported function documented in gtk/menu.h */
659nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu)
660{
661 gtk_widget_destroy(GTK_WIDGET(menu->link_menu)((((GtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((menu->link_menu)), ((gtk_widget_get_type ()))))))
);
662
663 free(menu);
664
665 return NSERROR_OK;
666}