Gitweb links:

...log 
http://git.netsurf-browser.org/netsurf.git/shortlog/5c9c1a70256dbb4ab14c0b07fc664384b076f87b
...commit 
http://git.netsurf-browser.org/netsurf.git/commit/5c9c1a70256dbb4ab14c0b07fc664384b076f87b
...tree 
http://git.netsurf-browser.org/netsurf.git/tree/5c9c1a70256dbb4ab14c0b07fc664384b076f87b

The branch, master has been updated
       via  5c9c1a70256dbb4ab14c0b07fc664384b076f87b (commit)
       via  8e986ae214fcf373d9d459b72b643ae62ffa054a (commit)
      from  fed47dc35b2d6022e894cc4d387c515b0b391fd6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/netsurf.git/commit/?id=5c9c1a70256dbb4ab14c0b07fc664384b076f87b
commit 5c9c1a70256dbb4ab14c0b07fc664384b076f87b
Author: Vincent Sanders <[email protected]>
Commit: Vincent Sanders <[email protected]>

    update clang format style for version 7
    
    format i sstill not quite right. cannot get function declarations
     to split as we currently have them.

diff --git a/.clang-format b/.clang-format
index 3cee69b..75df82a 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,43 +1,51 @@
 ---
 Language:        Cpp
-# BasedOnStyle:  LLVM
 AccessModifierOffset: -2
 AlignAfterOpenBracket: Align
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
-AlignEscapedNewlinesLeft: false
+AlignEscapedNewlines: Right
 AlignOperands:   true
-AlignTrailingComments: true
-AllowAllParametersOfDeclarationOnNextLine: true
+AlignTrailingComments: false
+AllowAllParametersOfDeclarationOnNextLine: false
 AllowShortBlocksOnASingleLine: false
 AllowShortCaseLabelsOnASingleLine: false
 AllowShortFunctionsOnASingleLine: None
 AllowShortIfStatementsOnASingleLine: false
 AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: All
+AlwaysBreakAfterReturnType: None
 AlwaysBreakBeforeMultilineStrings: false
-AlwaysBreakTemplateDeclarations: false
+AlwaysBreakTemplateDeclarations: MultiLine
 BinPackArguments: false
 BinPackParameters: false
 BraceWrapping:   
-  AfterClass:      false
+  AfterClass:      true
   AfterControlStatement: false
-  AfterEnum:       true
-  AfterFunction:   false
-  AfterNamespace:  false
+  AfterEnum:       false
+  AfterFunction:   true
+  AfterNamespace:  true
   AfterObjCDeclaration: false
   AfterStruct:     false
   AfterUnion:      false
+  AfterExternBlock: false
   BeforeCatch:     false
   BeforeElse:      false
   IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Linux
+BreakBeforeInheritanceComma: false
+BreakInheritanceList: BeforeColon
 BreakBeforeTernaryOperators: true
 BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeColon
+BreakAfterJavaFieldAnnotations: false
+BreakStringLiterals: false
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
 ConstructorInitializerAllOnOneLineOrOnePerLine: false
 ConstructorInitializerIndentWidth: 8
 ContinuationIndentWidth: 8
@@ -45,7 +53,12 @@ Cpp11BracedListStyle: true
 DerivePointerAlignment: false
 DisableFormat:   false
 ExperimentalAutoDetectBinPacking: false
-ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
+FixNamespaceComments: true
+ForEachMacros:   
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IncludeBlocks:   Preserve
 IncludeCategories: 
   - Regex:           '^(<.*/)'
     Priority:        3
@@ -57,29 +70,42 @@ IncludeCategories:
     Priority:        5
   - Regex:           '.*'
     Priority:        6
+IncludeIsMainRegex: '(Test)?$'
 IndentCaseLabels: false
+IndentPPDirectives: None
 IndentWidth:     8
 IndentWrappedFunctionNames: false
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
 KeepEmptyLinesAtTheStartOfBlocks: true
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
-MaxEmptyLinesToKeep: 1
+MaxEmptyLinesToKeep: 2
 NamespaceIndentation: None
+ObjCBinPackProtocolList: Auto
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
-PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakAssignment: 100
+PenaltyBreakBeforeFirstCallParameter: 50
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyReturnTypeOnItsOwnLine: 19
 PointerAlignment: Right
 ReflowComments:  true
 SortIncludes:    false
+SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
+SpaceAfterTemplateKeyword: true
 SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
 SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 1
 SpacesInAngles:  false


commitdiff 
http://git.netsurf-browser.org/netsurf.git/commit/?id=8e986ae214fcf373d9d459b72b643ae62ffa054a
commit 8e986ae214fcf373d9d459b72b643ae62ffa054a
Author: Vincent Sanders <[email protected]>
Commit: Vincent Sanders <[email protected]>

    ensure menu resources are released
    
    this ensures all the menu resources are freed when the containing
     window receives the destroy signal. Previously these resources
     were leaked.

diff --git a/frontends/gtk/menu.c b/frontends/gtk/menu.c
index 08af970..d0a984a 100644
--- a/frontends/gtk/menu.c
+++ b/frontends/gtk/menu.c
@@ -263,8 +263,8 @@ nsgtk_menu_toolbars_submenu(GtkAccelGroup *group)
 * \param group the 'global' in a gtk sense accelerator reference
 */
 
-static struct nsgtk_developer_submenu *nsgtk_menu_developer_submenu(
-               GtkAccelGroup *group)
+static struct nsgtk_developer_submenu *
+nsgtk_menu_developer_submenu(GtkAccelGroup *group)
 {
        struct nsgtk_developer_submenu *dmenu =
                        malloc(sizeof(struct nsgtk_developer_submenu));
@@ -423,7 +423,6 @@ static struct nsgtk_nav_menu 
*nsgtk_menu_nav_submenu(GtkAccelGroup *group)
        ADD_SEP(nav, ret);
        IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group);
 
-
        return ret;
 }
 
@@ -597,3 +596,73 @@ nsgtk_link_menu_create(GtkAccelGroup *group)
 
        return nmenu;
 }
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->bar_menu));
+
+       free(menu->file_submenu->export_submenu);
+       free(menu->file_submenu);
+       free(menu->edit_submenu);
+       free(menu->view_submenu->tabs_submenu);
+       free(menu->view_submenu->toolbars_submenu);
+       free(menu->view_submenu->scaleview_submenu);
+       free(menu->view_submenu);
+       free(menu->nav_submenu);
+       free(menu->tabs_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu->help_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->burger_menu));
+
+       free(menu->file_submenu->export_submenu);
+       free(menu->file_submenu);
+       free(menu->edit_submenu);
+       free(menu->view_submenu->tabs_submenu);
+       free(menu->view_submenu->toolbars_submenu);
+       free(menu->view_submenu->scaleview_submenu);
+       free(menu->view_submenu);
+       free(menu->nav_submenu);
+       free(menu->tabs_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu->help_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->popup_menu));
+
+       free(menu->toolbars_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->link_menu));
+
+       free(menu);
+
+       return NSERROR_OK;
+}
diff --git a/frontends/gtk/menu.h b/frontends/gtk/menu.h
index 822e463..a6f9ea4 100644
--- a/frontends/gtk/menu.h
+++ b/frontends/gtk/menu.h
@@ -210,27 +210,82 @@ struct nsgtk_link_menu {
        GtkWidget *copy_menuitem;
 };
 
+
 /**
  * Create main menubar menu.
  */
 struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, 
GtkAccelGroup *group);
 
+
 /**
  * Generate burger menu.
+ *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_burger_menu *nsgtk_burger_menu_create(GtkAccelGroup *group);
 
+
 /**
  * Generate right click popup menu.
  *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_popup_menu *nsgtk_popup_menu_create(GtkAccelGroup *group);
 
+
 /**
  * Generate context sensitive link popup menu.
  *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_link_menu *nsgtk_link_menu_create(GtkAccelGroup *group);
 
 
+/**
+ * destroy bar menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu);
+
+
+/**
+ * destroy burger menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu);
+
+
+/**
+ * destroy popup menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu);
+
+
+/**
+ * destroy link menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu);
+
+
 #endif
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c
index e4b4c6f..001cb91 100644
--- a/frontends/gtk/scaffolding.c
+++ b/frontends/gtk/scaffolding.c
@@ -87,7 +87,7 @@ struct nsgtk_scaffolding {
        /** link popup menu */
        struct nsgtk_link_menu *link_menu;
 
-       /** menu entries widgets for sensativity adjustment */
+       /** menu entries widgets for sensitivity adjustment */
        struct nsgtk_menu menus[PLACEHOLDER_BUTTON];
 };
 
@@ -201,6 +201,14 @@ static void scaffolding_window_destroy(GtkWidget *widget, 
gpointer data)
 
        NSLOG(netsurf, INFO, "scaffold list head: %p", scaf_list);
 
+       /* ensure menu resources are freed */
+       nsgtk_menu_bar_destroy(gs->menu_bar);
+       nsgtk_burger_menu_destroy(gs->burger_menu);
+       nsgtk_popup_menu_destroy(gs->popup_menu);
+       nsgtk_link_menu_destroy(gs->link_menu);
+
+       free(gs);
+
        if (scaf_list == NULL) {
                /* no more open windows - stop the browser */
                nsgtk_complete = true;
@@ -1008,7 +1016,7 @@ create_scaffolding_link_menu(struct nsgtk_scaffolding *g, 
GtkAccelGroup *group)
  */
 static nserror nsgtk_menu_initialise(struct nsgtk_scaffolding *g)
 {
-#define TOOLBAR_ITEM_p(identifier, name, iconame)                              
\
+#define TOOLBAR_ITEM_p(identifier, name, iconame)                      \
        g->menus[identifier].mhandler = nsgtk_on_##name##_activate_menu; \
        g->menus[identifier].iconname = iconame;
 #define TOOLBAR_ITEM_y(identifier, name, iconame)                      \
@@ -1393,6 +1401,7 @@ nserror nsgtk_scaffolding_toolbar_context_menu(struct 
nsgtk_scaffolding *gs)
        return NSERROR_OK;
 }
 
+
 /* exported interface documented in gtk/scaffolding.h */
 nserror nsgtk_scaffolding_burger_menu(struct nsgtk_scaffolding *gs)
 {


-----------------------------------------------------------------------

Summary of changes:
 .clang-format               |   56 +++++++++++++++++++++++---------
 frontends/gtk/menu.c        |   75 +++++++++++++++++++++++++++++++++++++++++--
 frontends/gtk/menu.h        |   55 +++++++++++++++++++++++++++++++
 frontends/gtk/scaffolding.c |   13 ++++++--
 4 files changed, 179 insertions(+), 20 deletions(-)

diff --git a/.clang-format b/.clang-format
index 3cee69b..75df82a 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,43 +1,51 @@
 ---
 Language:        Cpp
-# BasedOnStyle:  LLVM
 AccessModifierOffset: -2
 AlignAfterOpenBracket: Align
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
-AlignEscapedNewlinesLeft: false
+AlignEscapedNewlines: Right
 AlignOperands:   true
-AlignTrailingComments: true
-AllowAllParametersOfDeclarationOnNextLine: true
+AlignTrailingComments: false
+AllowAllParametersOfDeclarationOnNextLine: false
 AllowShortBlocksOnASingleLine: false
 AllowShortCaseLabelsOnASingleLine: false
 AllowShortFunctionsOnASingleLine: None
 AllowShortIfStatementsOnASingleLine: false
 AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: All
+AlwaysBreakAfterReturnType: None
 AlwaysBreakBeforeMultilineStrings: false
-AlwaysBreakTemplateDeclarations: false
+AlwaysBreakTemplateDeclarations: MultiLine
 BinPackArguments: false
 BinPackParameters: false
 BraceWrapping:   
-  AfterClass:      false
+  AfterClass:      true
   AfterControlStatement: false
-  AfterEnum:       true
-  AfterFunction:   false
-  AfterNamespace:  false
+  AfterEnum:       false
+  AfterFunction:   true
+  AfterNamespace:  true
   AfterObjCDeclaration: false
   AfterStruct:     false
   AfterUnion:      false
+  AfterExternBlock: false
   BeforeCatch:     false
   BeforeElse:      false
   IndentBraces:    false
+  SplitEmptyFunction: true
+  SplitEmptyRecord: true
+  SplitEmptyNamespace: true
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Linux
+BreakBeforeInheritanceComma: false
+BreakInheritanceList: BeforeColon
 BreakBeforeTernaryOperators: true
 BreakConstructorInitializersBeforeComma: false
+BreakConstructorInitializers: BeforeColon
+BreakAfterJavaFieldAnnotations: false
+BreakStringLiterals: false
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
 ConstructorInitializerAllOnOneLineOrOnePerLine: false
 ConstructorInitializerIndentWidth: 8
 ContinuationIndentWidth: 8
@@ -45,7 +53,12 @@ Cpp11BracedListStyle: true
 DerivePointerAlignment: false
 DisableFormat:   false
 ExperimentalAutoDetectBinPacking: false
-ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
+FixNamespaceComments: true
+ForEachMacros:   
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IncludeBlocks:   Preserve
 IncludeCategories: 
   - Regex:           '^(<.*/)'
     Priority:        3
@@ -57,29 +70,42 @@ IncludeCategories:
     Priority:        5
   - Regex:           '.*'
     Priority:        6
+IncludeIsMainRegex: '(Test)?$'
 IndentCaseLabels: false
+IndentPPDirectives: None
 IndentWidth:     8
 IndentWrappedFunctionNames: false
+JavaScriptQuotes: Leave
+JavaScriptWrapImports: true
 KeepEmptyLinesAtTheStartOfBlocks: true
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
-MaxEmptyLinesToKeep: 1
+MaxEmptyLinesToKeep: 2
 NamespaceIndentation: None
+ObjCBinPackProtocolList: Auto
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
-PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakAssignment: 100
+PenaltyBreakBeforeFirstCallParameter: 50
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyReturnTypeOnItsOwnLine: 19
 PointerAlignment: Right
 ReflowComments:  true
 SortIncludes:    false
+SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
+SpaceAfterTemplateKeyword: true
 SpaceBeforeAssignmentOperators: true
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
 SpaceBeforeParens: ControlStatements
+SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 1
 SpacesInAngles:  false
diff --git a/frontends/gtk/menu.c b/frontends/gtk/menu.c
index 08af970..d0a984a 100644
--- a/frontends/gtk/menu.c
+++ b/frontends/gtk/menu.c
@@ -263,8 +263,8 @@ nsgtk_menu_toolbars_submenu(GtkAccelGroup *group)
 * \param group the 'global' in a gtk sense accelerator reference
 */
 
-static struct nsgtk_developer_submenu *nsgtk_menu_developer_submenu(
-               GtkAccelGroup *group)
+static struct nsgtk_developer_submenu *
+nsgtk_menu_developer_submenu(GtkAccelGroup *group)
 {
        struct nsgtk_developer_submenu *dmenu =
                        malloc(sizeof(struct nsgtk_developer_submenu));
@@ -423,7 +423,6 @@ static struct nsgtk_nav_menu 
*nsgtk_menu_nav_submenu(GtkAccelGroup *group)
        ADD_SEP(nav, ret);
        IMAGE_ITEM(nav, openlocation, gtkOpenLocation, ret, group);
 
-
        return ret;
 }
 
@@ -597,3 +596,73 @@ nsgtk_link_menu_create(GtkAccelGroup *group)
 
        return nmenu;
 }
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->bar_menu));
+
+       free(menu->file_submenu->export_submenu);
+       free(menu->file_submenu);
+       free(menu->edit_submenu);
+       free(menu->view_submenu->tabs_submenu);
+       free(menu->view_submenu->toolbars_submenu);
+       free(menu->view_submenu->scaleview_submenu);
+       free(menu->view_submenu);
+       free(menu->nav_submenu);
+       free(menu->tabs_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu->help_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->burger_menu));
+
+       free(menu->file_submenu->export_submenu);
+       free(menu->file_submenu);
+       free(menu->edit_submenu);
+       free(menu->view_submenu->tabs_submenu);
+       free(menu->view_submenu->toolbars_submenu);
+       free(menu->view_submenu->scaleview_submenu);
+       free(menu->view_submenu);
+       free(menu->nav_submenu);
+       free(menu->tabs_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu->help_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->popup_menu));
+
+       free(menu->toolbars_submenu);
+       free(menu->tools_submenu->developer_submenu);
+       free(menu->tools_submenu);
+       free(menu);
+
+       return NSERROR_OK;
+}
+
+
+/* exported function documented in gtk/menu.h */
+nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu)
+{
+       gtk_widget_destroy(GTK_WIDGET(menu->link_menu));
+
+       free(menu);
+
+       return NSERROR_OK;
+}
diff --git a/frontends/gtk/menu.h b/frontends/gtk/menu.h
index 822e463..a6f9ea4 100644
--- a/frontends/gtk/menu.h
+++ b/frontends/gtk/menu.h
@@ -210,27 +210,82 @@ struct nsgtk_link_menu {
        GtkWidget *copy_menuitem;
 };
 
+
 /**
  * Create main menubar menu.
  */
 struct nsgtk_bar_submenu *nsgtk_menu_bar_create(GtkMenuShell *menubar, 
GtkAccelGroup *group);
 
+
 /**
  * Generate burger menu.
+ *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_burger_menu *nsgtk_burger_menu_create(GtkAccelGroup *group);
 
+
 /**
  * Generate right click popup menu.
  *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_popup_menu *nsgtk_popup_menu_create(GtkAccelGroup *group);
 
+
 /**
  * Generate context sensitive link popup menu.
  *
+ * \param accelerator group to use with menu
+ * \return new menu structure or NULL on error
  */
 struct nsgtk_link_menu *nsgtk_link_menu_create(GtkAccelGroup *group);
 
 
+/**
+ * destroy bar menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu *menu);
+
+
+/**
+ * destroy burger menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu *menu);
+
+
+/**
+ * destroy popup menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_popup_menu_destroy(struct nsgtk_popup_menu *menu);
+
+
+/**
+ * destroy link menu
+ *
+ * destroys the gtk widgets associated with menu and frees all storage.
+ *
+ * \param menu menu to destroy
+ * \return NSERROR_OK and menu destroyed on success else error code
+ */
+nserror nsgtk_link_menu_destroy(struct nsgtk_link_menu *menu);
+
+
 #endif
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c
index e4b4c6f..001cb91 100644
--- a/frontends/gtk/scaffolding.c
+++ b/frontends/gtk/scaffolding.c
@@ -87,7 +87,7 @@ struct nsgtk_scaffolding {
        /** link popup menu */
        struct nsgtk_link_menu *link_menu;
 
-       /** menu entries widgets for sensativity adjustment */
+       /** menu entries widgets for sensitivity adjustment */
        struct nsgtk_menu menus[PLACEHOLDER_BUTTON];
 };
 
@@ -201,6 +201,14 @@ static void scaffolding_window_destroy(GtkWidget *widget, 
gpointer data)
 
        NSLOG(netsurf, INFO, "scaffold list head: %p", scaf_list);
 
+       /* ensure menu resources are freed */
+       nsgtk_menu_bar_destroy(gs->menu_bar);
+       nsgtk_burger_menu_destroy(gs->burger_menu);
+       nsgtk_popup_menu_destroy(gs->popup_menu);
+       nsgtk_link_menu_destroy(gs->link_menu);
+
+       free(gs);
+
        if (scaf_list == NULL) {
                /* no more open windows - stop the browser */
                nsgtk_complete = true;
@@ -1008,7 +1016,7 @@ create_scaffolding_link_menu(struct nsgtk_scaffolding *g, 
GtkAccelGroup *group)
  */
 static nserror nsgtk_menu_initialise(struct nsgtk_scaffolding *g)
 {
-#define TOOLBAR_ITEM_p(identifier, name, iconame)                              
\
+#define TOOLBAR_ITEM_p(identifier, name, iconame)                      \
        g->menus[identifier].mhandler = nsgtk_on_##name##_activate_menu; \
        g->menus[identifier].iconname = iconame;
 #define TOOLBAR_ITEM_y(identifier, name, iconame)                      \
@@ -1393,6 +1401,7 @@ nserror nsgtk_scaffolding_toolbar_context_menu(struct 
nsgtk_scaffolding *gs)
        return NSERROR_OK;
 }
 
+
 /* exported interface documented in gtk/scaffolding.h */
 nserror nsgtk_scaffolding_burger_menu(struct nsgtk_scaffolding *gs)
 {


-- 
NetSurf Browser

_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to