Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/6e31dcaec4a88ec1da3ae60e114fa256b77e5597
...commit
http://git.netsurf-browser.org/netsurf.git/commit/6e31dcaec4a88ec1da3ae60e114fa256b77e5597
...tree
http://git.netsurf-browser.org/netsurf.git/tree/6e31dcaec4a88ec1da3ae60e114fa256b77e5597
The branch, master has been updated
via 6e31dcaec4a88ec1da3ae60e114fa256b77e5597 (commit)
from c82049eb84250330b28b29fc327d12a4b5f8a77f (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=6e31dcaec4a88ec1da3ae60e114fa256b77e5597
commit 6e31dcaec4a88ec1da3ae60e114fa256b77e5597
Author: Vincent Sanders <[email protected]>
Commit: Vincent Sanders <[email protected]>
ensure gtk scaffolding destruction does not create memory errors
diff --git a/frontends/gtk/menu.c b/frontends/gtk/menu.c
index d0a984a..03056d2 100644
--- a/frontends/gtk/menu.c
+++ b/frontends/gtk/menu.c
@@ -611,7 +611,6 @@ nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu
*menu)
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);
@@ -633,7 +632,6 @@ nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu
*menu)
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);
diff --git a/frontends/gtk/menu.h b/frontends/gtk/menu.h
index a6f9ea4..cf63b33 100644
--- a/frontends/gtk/menu.h
+++ b/frontends/gtk/menu.h
@@ -145,7 +145,6 @@ struct nsgtk_bar_submenu {
struct nsgtk_edit_menu *edit_submenu;
struct nsgtk_view_menu *view_submenu;
struct nsgtk_nav_menu *nav_submenu;
- struct nsgtk_tabs_submenu *tabs_submenu;
struct nsgtk_tools_menu *tools_submenu;
struct nsgtk_help_menu *help_submenu;
};
@@ -165,9 +164,6 @@ struct nsgtk_burger_menu {
GtkWidget *nav_menuitem;
struct nsgtk_nav_menu *nav_submenu;
- GtkWidget *tabs_menuitem;
- struct nsgtk_tabs_submenu *tabs_submenu;
-
GtkWidget *tools_menuitem;
struct nsgtk_tools_menu *tools_submenu;
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c
index 001cb91..ccf3fcb 100644
--- a/frontends/gtk/scaffolding.c
+++ b/frontends/gtk/scaffolding.c
@@ -75,6 +75,9 @@ struct nsgtk_scaffolding {
/** tab widget holding displayed pages */
GtkNotebook *notebook;
+ /** handler id for tabs remove callback */
+ gulong tabs_remove_handler_id;
+
/** menu bar hierarchy */
struct nsgtk_bar_submenu *menu_bar;
@@ -171,8 +174,6 @@ popup_menu_show(struct nsgtk_popup_menu *menu, bool nav,
bool cnp)
}
-/* event handlers and support functions for them */
-
/**
* resource cleanup function for window destruction.
*
@@ -207,6 +208,8 @@ static void scaffolding_window_destroy(GtkWidget *widget,
gpointer data)
nsgtk_popup_menu_destroy(gs->popup_menu);
nsgtk_link_menu_destroy(gs->link_menu);
+ g_signal_handler_disconnect(gs->notebook, gs->tabs_remove_handler_id);
+
free(gs);
if (scaf_list == NULL) {
@@ -425,6 +428,8 @@ nsgtk_window_tabs_remove(GtkNotebook *notebook,
guint page_num,
struct nsgtk_scaffolding *gs)
{
+ gboolean visible;
+
/* if the scaffold is being destroyed it is not useful to
* update the state, further many of the widgets may have
* already been destroyed.
@@ -439,7 +444,7 @@ nsgtk_window_tabs_remove(GtkNotebook *notebook,
return;
}
- gboolean visible = gtk_notebook_get_show_tabs(gs->notebook);
+ visible = gtk_notebook_get_show_tabs(gs->notebook);
g_object_set(gs->menu_bar->view_submenu->tabs_menuitem,
"visible", visible, NULL);
g_object_set(gs->burger_menu->view_submenu->tabs_menuitem,
@@ -1548,7 +1553,7 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct
gui_window *toplevel)
"page-added",
G_CALLBACK(nsgtk_window_tabs_add),
gs);
- g_signal_connect_after(gs->notebook,
+ gs->tabs_remove_handler_id = g_signal_connect_after(gs->notebook,
"page-removed",
G_CALLBACK(nsgtk_window_tabs_remove),
gs);
diff --git a/frontends/gtk/tabs.c b/frontends/gtk/tabs.c
index 54aa5fa..76fd02f 100644
--- a/frontends/gtk/tabs.c
+++ b/frontends/gtk/tabs.c
@@ -312,14 +312,19 @@ nsgtk_tab_add_newtab(GtkNotebook *notebook)
static void
nsgtk_tab_visibility_update(GtkNotebook *notebook, GtkWidget *child, guint
page)
{
- gint pagec = gtk_notebook_get_n_pages(notebook);
- GtkWidget *addpage = g_object_get_data(G_OBJECT(notebook), "addtab");
-
- if (addpage != NULL) {
- pagec--; /* skip the add tab */
- if ((gint)page == pagec) {
- /* ensure the add new tab cannot be current */
- gtk_notebook_set_current_page(notebook, page - 1);
+ gint pagec;
+ GtkWidget *addpage;
+
+ pagec = gtk_notebook_get_n_pages(notebook);
+ if (pagec > 1) {
+ addpage = g_object_get_data(G_OBJECT(notebook), "addtab");
+ if (addpage != NULL) {
+ pagec--; /* skip the add tab */
+ if ((gint)page == pagec) {
+ /* ensure the add new tab cannot be current */
+ gtk_notebook_set_current_page(notebook,
+ page - 1);
+ }
}
}
-----------------------------------------------------------------------
Summary of changes:
frontends/gtk/menu.c | 2 --
frontends/gtk/menu.h | 4 ----
frontends/gtk/scaffolding.c | 13 +++++++++----
frontends/gtk/tabs.c | 21 +++++++++++++--------
4 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/frontends/gtk/menu.c b/frontends/gtk/menu.c
index d0a984a..03056d2 100644
--- a/frontends/gtk/menu.c
+++ b/frontends/gtk/menu.c
@@ -611,7 +611,6 @@ nserror nsgtk_menu_bar_destroy(struct nsgtk_bar_submenu
*menu)
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);
@@ -633,7 +632,6 @@ nserror nsgtk_burger_menu_destroy(struct nsgtk_burger_menu
*menu)
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);
diff --git a/frontends/gtk/menu.h b/frontends/gtk/menu.h
index a6f9ea4..cf63b33 100644
--- a/frontends/gtk/menu.h
+++ b/frontends/gtk/menu.h
@@ -145,7 +145,6 @@ struct nsgtk_bar_submenu {
struct nsgtk_edit_menu *edit_submenu;
struct nsgtk_view_menu *view_submenu;
struct nsgtk_nav_menu *nav_submenu;
- struct nsgtk_tabs_submenu *tabs_submenu;
struct nsgtk_tools_menu *tools_submenu;
struct nsgtk_help_menu *help_submenu;
};
@@ -165,9 +164,6 @@ struct nsgtk_burger_menu {
GtkWidget *nav_menuitem;
struct nsgtk_nav_menu *nav_submenu;
- GtkWidget *tabs_menuitem;
- struct nsgtk_tabs_submenu *tabs_submenu;
-
GtkWidget *tools_menuitem;
struct nsgtk_tools_menu *tools_submenu;
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c
index 001cb91..ccf3fcb 100644
--- a/frontends/gtk/scaffolding.c
+++ b/frontends/gtk/scaffolding.c
@@ -75,6 +75,9 @@ struct nsgtk_scaffolding {
/** tab widget holding displayed pages */
GtkNotebook *notebook;
+ /** handler id for tabs remove callback */
+ gulong tabs_remove_handler_id;
+
/** menu bar hierarchy */
struct nsgtk_bar_submenu *menu_bar;
@@ -171,8 +174,6 @@ popup_menu_show(struct nsgtk_popup_menu *menu, bool nav,
bool cnp)
}
-/* event handlers and support functions for them */
-
/**
* resource cleanup function for window destruction.
*
@@ -207,6 +208,8 @@ static void scaffolding_window_destroy(GtkWidget *widget,
gpointer data)
nsgtk_popup_menu_destroy(gs->popup_menu);
nsgtk_link_menu_destroy(gs->link_menu);
+ g_signal_handler_disconnect(gs->notebook, gs->tabs_remove_handler_id);
+
free(gs);
if (scaf_list == NULL) {
@@ -425,6 +428,8 @@ nsgtk_window_tabs_remove(GtkNotebook *notebook,
guint page_num,
struct nsgtk_scaffolding *gs)
{
+ gboolean visible;
+
/* if the scaffold is being destroyed it is not useful to
* update the state, further many of the widgets may have
* already been destroyed.
@@ -439,7 +444,7 @@ nsgtk_window_tabs_remove(GtkNotebook *notebook,
return;
}
- gboolean visible = gtk_notebook_get_show_tabs(gs->notebook);
+ visible = gtk_notebook_get_show_tabs(gs->notebook);
g_object_set(gs->menu_bar->view_submenu->tabs_menuitem,
"visible", visible, NULL);
g_object_set(gs->burger_menu->view_submenu->tabs_menuitem,
@@ -1548,7 +1553,7 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct
gui_window *toplevel)
"page-added",
G_CALLBACK(nsgtk_window_tabs_add),
gs);
- g_signal_connect_after(gs->notebook,
+ gs->tabs_remove_handler_id = g_signal_connect_after(gs->notebook,
"page-removed",
G_CALLBACK(nsgtk_window_tabs_remove),
gs);
diff --git a/frontends/gtk/tabs.c b/frontends/gtk/tabs.c
index 54aa5fa..76fd02f 100644
--- a/frontends/gtk/tabs.c
+++ b/frontends/gtk/tabs.c
@@ -312,14 +312,19 @@ nsgtk_tab_add_newtab(GtkNotebook *notebook)
static void
nsgtk_tab_visibility_update(GtkNotebook *notebook, GtkWidget *child, guint
page)
{
- gint pagec = gtk_notebook_get_n_pages(notebook);
- GtkWidget *addpage = g_object_get_data(G_OBJECT(notebook), "addtab");
-
- if (addpage != NULL) {
- pagec--; /* skip the add tab */
- if ((gint)page == pagec) {
- /* ensure the add new tab cannot be current */
- gtk_notebook_set_current_page(notebook, page - 1);
+ gint pagec;
+ GtkWidget *addpage;
+
+ pagec = gtk_notebook_get_n_pages(notebook);
+ if (pagec > 1) {
+ addpage = g_object_get_data(G_OBJECT(notebook), "addtab");
+ if (addpage != NULL) {
+ pagec--; /* skip the add tab */
+ if ((gint)page == pagec) {
+ /* ensure the add new tab cannot be current */
+ gtk_notebook_set_current_page(notebook,
+ page - 1);
+ }
}
}
--
NetSurf Browser
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org