use g_clear_pointer with gtk_widget_destroy
brief, clear, idiomatic and grep friendly
This commit is contained in:
		@ -109,8 +109,7 @@ on_notify_keyboard (GObject    *object,
 | 
			
		||||
    if (context->window) {
 | 
			
		||||
        if (keyboard == NULL) {
 | 
			
		||||
            gtk_widget_hide (context->window);
 | 
			
		||||
            gtk_widget_destroy (context->widget);
 | 
			
		||||
            context->widget = NULL;
 | 
			
		||||
            g_clear_pointer (&context->widget, gtk_widget_destroy);
 | 
			
		||||
        } else {
 | 
			
		||||
            gboolean was_visible = gtk_widget_get_visible (context->window);
 | 
			
		||||
            /* avoid to send KeyboardVisibilityChanged */
 | 
			
		||||
@ -323,8 +322,9 @@ make_window (ServerContextService *context) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
destroy_window (ServerContextService *context) {
 | 
			
		||||
    context->window = NULL;
 | 
			
		||||
destroy_window (ServerContextService *context)
 | 
			
		||||
{
 | 
			
		||||
    context->window = NULL; // FIXME: doesn't destroy much
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@ -335,10 +335,7 @@ update_widget (ServerContextService *context)
 | 
			
		||||
    gchar *theme_path;
 | 
			
		||||
    EekTheme *theme;
 | 
			
		||||
    
 | 
			
		||||
    if (context->widget) {
 | 
			
		||||
        gtk_widget_destroy (context->widget);
 | 
			
		||||
        context->widget = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    g_clear_pointer (&context->widget, gtk_widget_destroy);
 | 
			
		||||
 | 
			
		||||
    theme_path = g_build_filename (THEMESDIR, "default.css", NULL);
 | 
			
		||||
 | 
			
		||||
@ -374,9 +371,9 @@ server_context_service_real_hide_keyboard (EekboardContextService *_context)
 | 
			
		||||
    ServerContextService *context = SERVER_CONTEXT_SERVICE(_context);
 | 
			
		||||
 | 
			
		||||
    gtk_widget_hide (context->window);
 | 
			
		||||
    gtk_container_remove(GTK_CONTAINER(context->window), context->widget);
 | 
			
		||||
    context->widget = NULL; // When GTK removes the widget, it doesn't just unlink it, but also frees it
 | 
			
		||||
    destroy_window (context);
 | 
			
		||||
    g_clear_pointer (&context->widget, gtk_widget_destroy);
 | 
			
		||||
 | 
			
		||||
    destroy_window (context); // <--- FIXME: looks suspect
 | 
			
		||||
 | 
			
		||||
    EEKBOARD_CONTEXT_SERVICE_CLASS (server_context_service_parent_class)->
 | 
			
		||||
        hide_keyboard (_context);
 | 
			
		||||
@ -442,10 +439,8 @@ server_context_service_dispose (GObject *object)
 | 
			
		||||
{
 | 
			
		||||
    ServerContextService *context = SERVER_CONTEXT_SERVICE(object);
 | 
			
		||||
 | 
			
		||||
    if (context->window) {
 | 
			
		||||
        gtk_widget_destroy (context->window);
 | 
			
		||||
        context->window = NULL;
 | 
			
		||||
    }
 | 
			
		||||
    g_clear_pointer (&context->window, gtk_widget_destroy);
 | 
			
		||||
    context->widget = NULL;
 | 
			
		||||
 | 
			
		||||
    G_OBJECT_CLASS (server_context_service_parent_class)->dispose (object);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user