[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: CVS update: i_callbacks.c



  User: cnieves 
  Date: 06/10/22 16:03:58

  Modified:    .        Tag: glist_dev i_callbacks.c
  Log:
  * src/i_callbacks.c: When cancelling the copy movement, the
  
  complex place list has to be freed before calling o_undo_callback.
  
  
  
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.69.2.6  +22 -22    eda/geda/gaf/gschem/src/i_callbacks.c
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: i_callbacks.c
  ===================================================================
  RCS file: /home/cvspsrv/cvsroot/eda/geda/gaf/gschem/src/i_callbacks.c,v
  retrieving revision 1.69.2.5
  retrieving revision 1.69.2.6
  diff -u -b -r1.69.2.5 -r1.69.2.6
  --- i_callbacks.c	22 Oct 2006 11:29:30 -0000	1.69.2.5
  +++ i_callbacks.c	22 Oct 2006 20:03:58 -0000	1.69.2.6
  @@ -3542,6 +3542,28 @@
   
     exit_if_null(w_current);
   
  +  /* it is possible to cancel in the middle of a complex place
  +   * so lets be sure to clean up the complex_place_head
  +   * structure and also clean up the attrib_place_head.
  +   * remember these don't remove the head structure */
  +
  +  /* If it is a move command, then free the complex place list WITHOUT
  +     freeing the individual objects. */
  +  if ( (w_current->inside_action) && 
  +       ((w_current->event_state == ENDCOPY) ||
  +	(w_current->event_state == ENDMCOPY)) ) {
  +	  s_delete_object_glist(w_current,
  +				w_current->page_current->complex_place_list);  
  +	  w_current->page_current->complex_place_list = NULL;
  +	}
  +  else {
  +    g_list_free(w_current->page_current->complex_place_list);
  +  }
  +  w_current->page_current->complex_place_list = NULL;
  +
  +  o_list_delete_rest(w_current,
  +                     w_current->page_current->attrib_place_head);
  +
     if (w_current->inside_action) {
       o_undo_callback(w_current, UNDO_ACTION);	 
       w_current->rotated_inside = 0;
  @@ -3565,28 +3587,6 @@
        o_redraw_all(w_current); 
     }
   
  -  /* it is possible to cancel in the middle of a complex place
  -   * so lets be sure to clean up the complex_place_head
  -   * structure and also clean up the attrib_place_head.
  -   * remember these don't remove the head structure */
  -
  -  /* If it is a move command, then free the complex place list WITHOUT
  -     freeing the individual objects. */
  -  if ( (w_current->inside_action) && 
  -       ((w_current->event_state == ENDCOPY) ||
  -	(w_current->event_state == ENDMCOPY)) ) {
  -	  s_delete_object_glist(w_current,
  -				w_current->page_current->complex_place_list);  
  -	  w_current->page_current->complex_place_list = NULL;
  -	}
  -  else {
  -    g_list_free(w_current->page_current->complex_place_list);
  -  }
  -  w_current->page_current->complex_place_list = NULL;
  -
  -  o_list_delete_rest(w_current,
  -                     w_current->page_current->attrib_place_head);
  -
     /* also free internal current_attribute */
     o_attrib_free_current(w_current);
   
  
  
  


_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs