mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-24 04:56:50 +03:00
fix resource release and stopping throbber on toolbar widget destruction
This commit is contained in:
parent
12cca32059
commit
2bed178a33
@ -1353,19 +1353,14 @@ customisation_reset_clicked_cb(GtkWidget *widget, gpointer data)
|
||||
|
||||
|
||||
/**
|
||||
* customisation container delete handler
|
||||
* customisation container destroy handler
|
||||
*/
|
||||
static gboolean
|
||||
customisation_container_delete_cb(GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer data)
|
||||
static void customisation_container_destroy_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
struct nsgtk_toolbar_customisation *tbc;
|
||||
tbc = (struct nsgtk_toolbar_customisation *)data;
|
||||
|
||||
free(tbc);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1487,8 +1482,8 @@ static gboolean cutomize_button_clicked_cb(GtkWidget *widget, gpointer data)
|
||||
|
||||
/* close and cleanup on delete signal */
|
||||
g_signal_connect(tbc->container,
|
||||
"delete-event",
|
||||
G_CALLBACK(customisation_container_delete_cb),
|
||||
"destroy",
|
||||
G_CALLBACK(customisation_container_destroy_cb),
|
||||
tbc);
|
||||
|
||||
|
||||
@ -3175,6 +3170,22 @@ toolbar_popup_context_menu_cb(GtkToolbar *toolbar,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* toolbar delete signal handler
|
||||
*/
|
||||
static void toolbar_destroy_cb(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
struct nsgtk_toolbar *tb;
|
||||
tb = (struct nsgtk_toolbar *)data;
|
||||
|
||||
/* ensure any throbber scheduled is stopped */
|
||||
nsgtk_schedule(-1, next_throbber_frame, tb);
|
||||
|
||||
free(tb);
|
||||
}
|
||||
|
||||
|
||||
/* exported interface documented in toolbar.h */
|
||||
nserror
|
||||
nsgtk_toolbar_create(GtkBuilder *builder,
|
||||
@ -3204,18 +3215,22 @@ nsgtk_toolbar_create(GtkBuilder *builder,
|
||||
G_CALLBACK(toolbar_popup_context_menu_cb),
|
||||
tb);
|
||||
|
||||
/* close and cleanup on delete signal */
|
||||
g_signal_connect(tb->widget,
|
||||
"destroy",
|
||||
G_CALLBACK(toolbar_destroy_cb),
|
||||
tb);
|
||||
|
||||
/* allocate button contexts */
|
||||
for (bidx = BACK_BUTTON; bidx < PLACEHOLDER_BUTTON; bidx++) {
|
||||
res = toolbar_item_create(bidx, &tb->items[bidx]);
|
||||
if (res != NSERROR_OK) {
|
||||
free(tb);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
res = nsgtk_toolbar_update(tb);
|
||||
if (res != NSERROR_OK) {
|
||||
free(tb);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -3224,14 +3239,6 @@ nsgtk_toolbar_create(GtkBuilder *builder,
|
||||
}
|
||||
|
||||
|
||||
/* exported interface documented in toolbar.h */
|
||||
nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *tb)
|
||||
{
|
||||
/** \todo free buttons and destroy toolbar container (and widgets) */
|
||||
free(tb);
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
||||
/* exported interface documented in toolbar.h */
|
||||
nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb)
|
||||
{
|
||||
@ -3283,8 +3290,6 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active)
|
||||
nserror res;
|
||||
struct browser_window *bw;
|
||||
|
||||
bw = tb->get_bw(tb->get_ctx);
|
||||
|
||||
/* when activating the throbber simply schedule the next frame update */
|
||||
if (active) {
|
||||
nsgtk_schedule(THROBBER_FRAME_TIME, next_throbber_frame, tb);
|
||||
@ -3301,6 +3306,8 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active)
|
||||
res = set_throbber_frame(tb->items[THROBBER_ITEM].button,
|
||||
tb->throb_frame);
|
||||
|
||||
bw = tb->get_bw(tb->get_ctx);
|
||||
|
||||
/* adjust sensitivity of other items */
|
||||
set_item_sensitivity(&tb->items[STOP_BUTTON], false);
|
||||
set_item_sensitivity(&tb->items[RELOAD_BUTTON], true);
|
||||
|
@ -35,15 +35,6 @@ struct nsgtk_scaffolding;
|
||||
nserror nsgtk_toolbar_create(GtkBuilder *builder, struct browser_window *(*get_bw)(void *ctx), void *get_bw_ctx,struct nsgtk_toolbar **toolbar);
|
||||
|
||||
|
||||
/**
|
||||
* Destroy toolbar previously created
|
||||
*
|
||||
* \param toolbar A toolbar returned from a creation
|
||||
* \return NSERROR_OK on success
|
||||
*/
|
||||
nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *toolbar);
|
||||
|
||||
|
||||
/**
|
||||
* Update the toolbar items being shown based on current settings
|
||||
*
|
||||
|
@ -1479,13 +1479,6 @@ struct nsgtk_scaffolding *nsgtk_get_scaffold(struct gui_window *g)
|
||||
}
|
||||
|
||||
|
||||
/* exported interface documented in window.h */
|
||||
struct gtk_search *nsgtk_window_get_search(struct gui_window *gw)
|
||||
{
|
||||
return gw->search;
|
||||
}
|
||||
|
||||
|
||||
/* exported interface documented in window.h */
|
||||
struct browser_window *nsgtk_get_browser_window(struct gui_window *g)
|
||||
{
|
||||
|
@ -101,11 +101,6 @@ nserror nsgtk_window_search_toggle(struct gui_window *gw);
|
||||
GtkLayout *nsgtk_window_get_layout(struct gui_window *gw);
|
||||
|
||||
|
||||
/**
|
||||
* get search from window handle
|
||||
*/
|
||||
struct gtk_search *nsgtk_window_get_search(struct gui_window *gw);
|
||||
|
||||
/**
|
||||
* activate the handler for a item in a toolbar of a gui window
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user