Changeset 7eaf2d172909418013d8e9cf19812bc6906cc2ad

Show
Ignore:
Timestamp:
09/05/10 02:58:22 (3 years ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
86b174b97aaa58086f66be2873ac2201fdf559cf
Parents:
ef9e54e3fdea5f50be28da38b8c9801828bedec2
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2010-09-05T02:58:22Z+0300
Message:

gui: properly cleanup on graph view creation failure

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • gui/graph_view.c

    rb812ccc r7eaf2d1  
    8484} 
    8585 
     86static void detach_canvas(struct graph_view * view_ptr) 
     87{ 
     88  GtkWidget * child; 
     89 
     90  child = gtk_bin_get_child(GTK_BIN(g_main_scrolledwin)); 
     91  if (child == view_ptr->canvas_widget) 
     92  { 
     93    gtk_container_remove(GTK_CONTAINER(g_main_scrolledwin), view_ptr->canvas_widget); 
     94    g_current_view = NULL; 
     95    gtk_widget_show(g_view_label); 
     96    gtk_scrolled_window_add_with_viewport(g_main_scrolledwin, g_view_label); 
     97  } 
     98} 
     99 
    86100#define view_ptr ((struct graph_view *)context) 
    87101 
     
    221235    if (!ladish_app_supervisor_proxy_create(service, object, view_ptr, app_added, app_state_changed, app_removed, &view_ptr->app_supervisor)) 
    222236    { 
    223       goto detach_graph_canvas; 
     237      goto remove_from_world_tree; 
    224238    } 
    225239  } 
     
    252266    ladish_app_supervisor_proxy_destroy(view_ptr->app_supervisor); 
    253267  } 
    254 detach_graph_canvas: 
    255   graph_canvas_detach(view_ptr->graph_canvas); 
     268remove_from_world_tree: 
     269  list_del(&view_ptr->siblings); 
     270  if (!list_empty(&g_views)) 
     271  { 
     272    world_tree_activate((graph_view_handle)list_entry(g_views.next, struct graph_view, siblings)); 
     273  } 
     274  else 
     275  { 
     276    set_main_window_title(NULL); 
     277  } 
     278 
     279  detach_canvas(view_ptr); 
     280 
     281  world_tree_remove((graph_view_handle)view_ptr); 
    256282destroy_graph_canvas: 
    257283  graph_canvas_destroy(view_ptr->graph_canvas); 
     
    297323} 
    298324 
    299 static void detach_canvas(struct graph_view * view_ptr) 
    300 { 
    301   GtkWidget * child; 
    302  
    303   child = gtk_bin_get_child(GTK_BIN(g_main_scrolledwin)); 
    304   if (child == view_ptr->canvas_widget) 
    305   { 
    306     gtk_container_remove(GTK_CONTAINER(g_main_scrolledwin), view_ptr->canvas_widget); 
    307     g_current_view = NULL; 
    308     gtk_widget_show(g_view_label); 
    309     gtk_scrolled_window_add_with_viewport(g_main_scrolledwin, g_view_label); 
    310   } 
    311 } 
    312  
    313325#define view_ptr ((struct graph_view *)view) 
    314326