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

gEDA-cvs: CVS update: o_basic.c



  User: cnieves 
  Date: 06/10/22 15:14:40

  Modified:    .        Tag: glist_dev o_basic.c o_copy.c x_event.c
  Log:
  * src/o_basic.c, src/o_copy.c, src/x_event.c:
  
  Make the copy action use the complex_place_list.
  
  
  
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.21.2.6  +10 -11    eda/geda/gaf/gschem/src/o_basic.c
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: o_basic.c
  ===================================================================
  RCS file: /home/cvspsrv/cvsroot/eda/geda/gaf/gschem/src/o_basic.c,v
  retrieving revision 1.21.2.5
  retrieving revision 1.21.2.6
  diff -u -b -r1.21.2.5 -r1.21.2.6
  --- o_basic.c	22 Oct 2006 15:30:38 -0000	1.21.2.5
  +++ o_basic.c	22 Oct 2006 19:14:40 -0000	1.21.2.6
  @@ -59,15 +59,12 @@
         case(MOVE):
         case(ENDMOVE):
   	o_erase_selected(w_current);	
  -	/* continue */
  -      case(ENDCOPY):
  -      case(ENDMCOPY):
   	o_drawbounding(w_current, NULL,
  -                       w_current->page_current->selection_list,
  +		      w_current->page_current->complex_place_list,
                          x_get_darkcolor(w_current->bb_color), FALSE);
  -
           break;
  -
  +      case(ENDCOPY):
  +      case(ENDMCOPY):
         case(DRAWCOMP):
         case(ENDCOMP):
   	/* Call the o_draw_list without redrawing, so the components */
  @@ -114,8 +111,10 @@
     }
   
     o_recalc_object_list(w_current, w_current->page_current->object_head);
  -  /* Uncomment this when using the complex_place_list for moving and copying */
  -  /*  o_recalc_object_glist(w_current, w_current->page_current->complex_place_list); */
  +  o_recalc_object_glist(w_current, 
  +			w_current->page_current->selection_list);
  +  o_recalc_object_glist(w_current, 
  +			w_current->page_current->complex_place_list);
   
     draw_selected = !(w_current->inside_action &&
   		    ((w_current->event_state == MOVE) ||
  
  
  
  1.26.2.2  +247 -250  eda/geda/gaf/gschem/src/o_copy.c
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: o_copy.c
  ===================================================================
  RCS file: /home/cvspsrv/cvsroot/eda/geda/gaf/gschem/src/o_copy.c,v
  retrieving revision 1.26.2.1
  retrieving revision 1.26.2.2
  diff -u -b -r1.26.2.1 -r1.26.2.2
  --- o_copy.c	21 Oct 2006 22:20:47 -0000	1.26.2.1
  +++ o_copy.c	22 Oct 2006 19:14:40 -0000	1.26.2.2
  @@ -37,79 +37,36 @@
    */
   void o_copy_start(TOPLEVEL *w_current, int x, int y)
   {
  -  if (w_current->page_current->selection_list != NULL) {
  -
  -  /* This is commented out since it breaks the copy of objects.  See below. */
  -#if 0
  -    /* Save the current state. When rotating the selection when copying,
  -       we have to come back to here */
  -    o_undo_savestate(w_current, UNDO_ALL);
  -#endif
  -
  -    w_current->last_drawb_mode = -1;
  -    /* Shouldn't this set by the caller ? */
  -    /*    w_current->event_state = COPY; */
  -
  -    w_current->last_x = w_current->start_x = fix_x(w_current, x);
  -    w_current->last_y = w_current->start_y = fix_y(w_current, y);
  -    o_drawbounding(w_current, NULL,
  -                   w_current->page_current->selection_list,
  -                   x_get_darkcolor(w_current->bb_color), TRUE);
  -    w_current->inside_action = 1;
  -  }
  -}
  -
  -/*! \todo Finish function documentation!!!
  - *  \brief
  - *  \par Function Description
  - *
  - */
  -void o_copy_end(TOPLEVEL *w_current)
  -{
  -  GList *temp_list = NULL;
     GList *s_current = NULL;
     GList *new_objects = NULL;
  -  GList *connected_objects=NULL;
  +  OBJECT *object = NULL;
     OBJECT *new_object = NULL;
     OBJECT *complex_object = NULL;
     OBJECT *new_objects_head = NULL;
  -  OBJECT *object;
  -  int diff_x, diff_y;
  -  int screen_diff_x, screen_diff_y;
  -  int lx, ly;
  -  int sx, sy;
     int color;
     /* int redraw_state;  not needed for now */
   
  +  if (w_current->page_current->selection_list == NULL) {
  +    w_current->inside_action = 0;
  +    i_set_state(w_current, SELECT);
  +    return;
  +  }
  +
  +  w_current->last_drawb_mode = -1;
  +  
     object = o_select_return_first_object(w_current);
   
     if (object == NULL) {
  -    /*! \todo error condition */
  +    /* TODO: error condition */
       w_current->inside_action = 0;
       i_set_state(w_current, SELECT);
       return;
     }
   
  -  screen_diff_x = w_current->last_x - w_current->start_x;
  -  screen_diff_y = w_current->last_y - w_current->start_y;
  +  w_current->start_x = w_current->last_x = fix_x(w_current, (int) mouse_x);
  +  w_current->start_y = w_current->last_y = fix_x(w_current, (int) mouse_y);
   
  -  SCREENtoWORLD(w_current,
  -                w_current->last_x,
  -                w_current->last_y,
  -                &lx,
  -                &ly);
  -  SCREENtoWORLD(w_current,
  -                w_current->start_x,
  -                w_current->start_y,
  -                &sx,
  -                &sy);
  -
  -  diff_x = lx - sx;
  -  diff_y = ly - sy;
  -
  -  /* skip over head node */
     s_current = w_current->page_current->selection_list;
  -  temp_list = NULL;
     new_objects_head = s_basic_init_object("object_head");
   
     while(s_current != NULL) {
  @@ -117,10 +74,12 @@
       object = (OBJECT *) s_current->data;
   
       if (object == NULL) {
  -      fprintf(stderr, _("ERROR: NULL object in o_copy_end!\n"));
  +      fprintf(stderr, _("ERROR: NULL object in o_copy_start!\n"));
         exit(-1);
       }
   
  +    o_selection_unselect(object);
  +
       switch(object->type) {
   
         case(OBJ_NET):
  @@ -134,24 +93,11 @@
                                              object);
           w_current->ADDING_SEL=0; 
   
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_net_draw_xor(w_current,
  -                         screen_diff_x, screen_diff_y,
  -                         object);
  -        }
  -
  -        o_net_translate_world(w_current,
  -                              diff_x, diff_y,
  -                              new_object);
  -
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_net_draw(w_current, new_object);
  +        new_object->color = object->color;
   
           s_conn_update_object(w_current, new_object);
  -        new_objects = g_list_append(new_objects, new_object);
  -        connected_objects = s_conn_return_others(connected_objects,
  -                                                 new_object);
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
           
         case(OBJ_PIN):
  @@ -163,26 +109,11 @@
                                              return_tail(new_objects_head), 
                                              object);
           w_current->ADDING_SEL=0; 
  -
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_pin_draw_xor(w_current,
  -                         screen_diff_x,
  -                         screen_diff_y,
  -                         object);
  -        }
  -
  -        o_pin_translate_world(w_current,
  -                              diff_x, diff_y,
  -                              new_object);
  -        
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_pin_draw(w_current, new_object);
  +        new_object->color = object->color;
           
           s_conn_update_object(w_current, new_object);
  -        new_objects = g_list_append(new_objects, new_object);
  -        connected_objects = s_conn_return_others(connected_objects,
  -                                                 new_object);
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
   
         case(OBJ_BUS):
  @@ -194,25 +125,11 @@
                                              return_tail(new_objects_head),
                                              object);
           w_current->ADDING_SEL=0; 
  -
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_bus_draw_xor(w_current,
  -                         screen_diff_x, screen_diff_y,
  -                         object);
  -        }
  -
  -        o_bus_translate_world(w_current,
  -                              diff_x, diff_y,
  -                              new_object);
  -        
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_bus_draw(w_current, new_object);
  +        new_object->color = object->color;
           
           s_conn_update_object(w_current, new_object);
  -        new_objects = g_list_append(new_objects, new_object);
  -        connected_objects = s_conn_return_others(connected_objects,
  -                                                 new_object);
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
           
         case(OBJ_COMPLEX):
  @@ -233,74 +150,35 @@
           }
           w_current->ADDING_SEL=0; 
   				
  -        complex_object = new_object;
  -
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_complex_draw_xor(w_current, screen_diff_x, screen_diff_y,
  -                             object->complex->prim_objs);
  -        }
  -
  -        o_complex_world_translate_toplevel(w_current,
  -                                           diff_x,
  -                                           diff_y,
  -                                           new_object);
  -
  -        temp_list = o_selection_add(temp_list, new_object);
  +        new_object->saved_color = object->saved_color;
  +        new_object->color = object->color;
   
  +        complex_object = new_object;
   	/* NEWSEL: this needs to be fixed too */
   	/* this may not be needed anymore? */
           o_attrib_slot_copy(w_current, object, 
                              new_object);
  -        new_object->saved_color = object->saved_color;
  -        o_redraw_single(w_current, new_object);
   
           s_conn_update_complex(w_current, new_object->complex->prim_objs);
  -        new_objects = g_list_append(new_objects, new_object);
  -        connected_objects = s_conn_return_complex_others(connected_objects,
  -                                                         new_object);
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
   
         case(OBJ_LINE):
           new_object = (OBJECT *) o_line_copy(w_current,
                                               return_tail(new_objects_head),
                                               object);
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_line_draw_xor(w_current,
  -                          screen_diff_x, screen_diff_y,
  -                          object);
  -        }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_line_translate_world(w_current,
  -                               diff_x, diff_y,
  -                               new_object);
  -        w_current->ADDING_SEL=0; 
  -
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_line_draw(w_current, new_object);
  +        new_object->color = object->color;
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
   
         case(OBJ_BOX):
           new_object = (OBJECT *) o_box_copy(w_current,
                                              return_tail(new_objects_head),
                                              object);
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_box_draw_xor(w_current,
  -                         screen_diff_x,
  -                         screen_diff_y,
  -                         object);
  -        }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_box_translate_world(w_current,
  -                              diff_x, diff_y,
  -                              new_object);
  -        w_current->ADDING_SEL=0; 
  -        
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_box_draw(w_current, new_object);
  +        new_object->color = object->color;
  +        new_objects = o_selection_add(new_objects, new_object);
           
           break;
   
  @@ -308,22 +186,9 @@
           new_object = (OBJECT *) o_picture_copy(w_current,
   					       return_tail(new_objects_head),
   					       object);
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_picture_draw_xor(w_current,
  -			     screen_diff_x,
  -			     screen_diff_y,
  -			     object);
  -        }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_picture_translate_world(w_current,
  -				  diff_x, diff_y,
  -				  new_object);
  -        w_current->ADDING_SEL=0; 
  -        
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_picture_draw(w_current, new_object);
  +        new_object->color = object->color;
  +        new_objects = o_selection_add(new_objects, new_object);
           
           break;
   
  @@ -331,50 +196,24 @@
           new_object = (OBJECT *) o_circle_copy(w_current,
                                                 return_tail(new_objects_head),
                                                 object);
  -
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_circle_draw_xor(w_current,
  -                            screen_diff_x,
  -                            screen_diff_y,
  -                            object);
  -        }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_circle_translate_world(w_current,
  -                                 diff_x, diff_y,
  -                                 new_object);
  -        w_current->ADDING_SEL=0; 
  -
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_circle_draw(w_current, new_object);
  +        new_object->color = object->color;
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
   
         case(OBJ_ARC):
           new_object = (OBJECT *) o_arc_copy(w_current,
   					   return_tail(new_objects_head), 
                                              object);
  -
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_arc_draw_xor(w_current,
  -                         screen_diff_x,
  -                         screen_diff_y,
  -                         object);
  -        }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_arc_translate_world(w_current,
  -                              diff_x, diff_y,
  -                              new_object);
  -        w_current->ADDING_SEL=0; 
  -        
  -        temp_list = o_selection_add(temp_list, new_object);
           new_object->saved_color = object->saved_color;
  -        o_arc_draw(w_current, new_object);
  +        new_object->color = object->color;
  +        new_objects = o_selection_add(new_objects, new_object);
           break;
   
       }
   
  +    o_selection_select(object, SELECT_COLOR);
  +
       w_current->page_current->object_tail =
         (OBJECT *) return_tail(w_current->page_current->
                                object_head);
  @@ -388,7 +227,7 @@
       object = (OBJECT *) s_current->data;
   
       if (object == NULL) {
  -      fprintf(stderr, _("ERROR: NULL object in o_copy_end!\n"));
  +      fprintf(stderr, _("ERROR: NULL object in o_copy_start!\n"));
         exit(-1);
       }
   
  @@ -400,6 +239,7 @@
                                               return_tail(new_objects_head),
                                               object);
           w_current->ADDING_SEL=0; 
  +        new_object->color = object->color;
   
   	/* this is also okay NEWSEL new_obj is single */
           if (object->attached_to) {
  @@ -407,7 +247,7 @@
               o_attrib_attach(w_current, new_objects_head,
                               new_object, object->attached_to-> copied_to);
   	    	    
  -            /*! \todo I have no idea if this is
  +            /* TODO: I have no idea if this is
                  really needed.... ? */
   #if 0
               o_attrib_slot_update(
  @@ -419,37 +259,23 @@
               object->attached_to->copied_to = NULL;
             }
           }
  -	
  -        if (w_current->actionfeedback_mode == OUTLINE) {
  -          o_text_draw_xor(w_current,
  -                          screen_diff_x,
  -                          screen_diff_y,
  -                          object);
  -			  }
  -
  -        w_current->ADDING_SEL=1; 
  -        o_text_translate_world(w_current, diff_x, diff_y, new_object);
  -        w_current->ADDING_SEL=0; 
  -
   				/* old object was attr */
           if (!new_object->attribute && 
               object->attribute) {
  -          new_object->color = w_current-> detachedattr_color;
             o_complex_set_color(new_object, new_object->color);
             new_object->visibility = VISIBLE;
             color = new_object->color;
           } else {
  -          color = object->saved_color;
  +	  /*          color = object->saved_color;*/
  +	  color = object->color;
           }
   
  -        temp_list = o_selection_add(temp_list, new_object);
  -        new_object->saved_color = color;
  +        new_objects = o_selection_add(new_objects, new_object);
           
   	/* signify that object is no longer an attribute */
  -	o_text_draw(w_current, new_object);
  +	/*	o_text_draw(w_current, new_object);*/
   
  -        o_complex_set_saved_color_only(
  -                                       new_object->text->prim_objs, 
  +        o_complex_set_saved_color_only(new_object->text->prim_objs, 
                                          color);
           break;
       }
  @@ -460,22 +286,199 @@
       s_current = s_current->next;
     }
   
  -  /* This is commented out since it breaks the copy of objects.  */
  -  /* Required connection information is thrown away for some reason */
  -  /* Of course, commenting this out, will probably break the rotation */
  -  /* that this supported. */
  -#if 0 
  -  /* Go back to the state before copying, to restore possible rotations
  -     of the selection */
  -  redraw_state = w_current->DONT_REDRAW;
  -  w_current->DONT_REDRAW = 0;
  -  o_undo_callback(w_current, UNDO_ACTION);
  -  w_current->DONT_REDRAW = redraw_state;
  -#endif
  +  w_current->page_current->complex_place_list = new_objects;
  +  o_drawbounding(w_current, NULL, w_current->page_current->complex_place_list,
  +		 x_get_darkcolor(w_current->bb_color), TRUE);
  +  w_current->inside_action = 1;
  +}
  +
  +
  +void
  +o_copy_end(TOPLEVEL *w_current)
  +{
  +  OBJECT *object, *new_objects_head;
  +  GList *list_ptr;
  +  GList *connected_objects=NULL;
  +  int diff_x, diff_y;
  +  int screen_diff_x, screen_diff_y;
  +  int lx, ly;
  +  int sx, sy;
  +
  +  w_current->last_drawb_mode = -1;
  +
  +  screen_diff_x = w_current->last_x - w_current->start_x;
  +  screen_diff_y = w_current->last_y - w_current->start_y;
  +
  +  SCREENtoWORLD(w_current,
  +                w_current->last_x,
  +                w_current->last_y,
  +                &lx,
  +                &ly);
  +  SCREENtoWORLD(w_current,
  +                w_current->start_x,
  +                w_current->start_y,
  +                &sx,
  +                &sy);
  +
  +  diff_x = lx - sx;
  +  diff_y = ly - sy;
  +
  +  list_ptr = w_current->page_current->complex_place_list;
  +  while (list_ptr) {
  +    object = (OBJECT *) list_ptr->data;
  +
  +    switch(object->type) {
  +      case(OBJ_NET):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_net_draw_xor(w_current,
  +                         screen_diff_x, screen_diff_y,
  +                         object);
  +        }
  +
  +        o_net_translate_world(w_current,
  +                              diff_x, diff_y,
  +                              object);
  +        connected_objects = s_conn_return_others(connected_objects,
  +                                                 object);
  +	break;
  +      case(OBJ_PIN):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_pin_draw_xor(w_current,
  +                         screen_diff_x,
  +                         screen_diff_y,
  +                         object);
  +        }
  +
  +        o_pin_translate_world(w_current,
  +                              diff_x, diff_y,
  +                              object);
  +        connected_objects = s_conn_return_others(connected_objects,
  +                                                 object);
  +        break;
  +
  +      case(OBJ_BUS):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_bus_draw_xor(w_current,
  +                         screen_diff_x, screen_diff_y,
  +                         object);
  +        }
  +
  +        o_bus_translate_world(w_current,
  +                              diff_x, diff_y,
  +                              object);
  +        connected_objects = s_conn_return_others(connected_objects,
  +                                                 object);
  +        break;
  +      case(OBJ_COMPLEX):
  +      case(OBJ_PLACEHOLDER):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_complex_draw_xor(w_current, screen_diff_x, screen_diff_y,
  +                             object->complex->prim_objs);
  +        }
  +
  +        o_complex_world_translate_toplevel(w_current,
  +                                           diff_x,
  +                                           diff_y,
  +                                           object);
  +        connected_objects = s_conn_return_complex_others(connected_objects,
  +                                                         object);
  +	break;
  +
  +      case(OBJ_LINE):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_line_draw_xor(w_current,
  +                          screen_diff_x, screen_diff_y,
  +                          object);
  +        }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_line_translate_world(w_current,
  +                               diff_x, diff_y,
  +                               object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +      case(OBJ_BOX):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_box_draw_xor(w_current,
  +                         screen_diff_x,
  +                         screen_diff_y,
  +                         object);
  +        }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_box_translate_world(w_current,
  +                              diff_x, diff_y,
  +                              object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +
  +      case(OBJ_PICTURE):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_picture_draw_xor(w_current,
  +			     screen_diff_x,
  +			     screen_diff_y,
  +			     object);
  +        }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_picture_translate_world(w_current,
  +				  diff_x, diff_y,
  +				  object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +      case(OBJ_CIRCLE):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_circle_draw_xor(w_current,
  +                            screen_diff_x,
  +                            screen_diff_y,
  +                            object);
  +        }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_circle_translate_world(w_current,
  +                                 diff_x, diff_y,
  +                                 object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +      case(OBJ_ARC):
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_arc_draw_xor(w_current,
  +                         screen_diff_x,
  +                         screen_diff_y,
  +                         object);
  +        }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_arc_translate_world(w_current,
  +                              diff_x, diff_y,
  +                              object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +      case(OBJ_TEXT):
  +	
  +        if (w_current->actionfeedback_mode == OUTLINE) {
  +          o_text_draw_xor(w_current,
  +                          screen_diff_x,
  +                          screen_diff_y,
  +                          object);
  +			  }
  +
  +        w_current->ADDING_SEL=1; 
  +        o_text_translate_world(w_current, diff_x, diff_y, object);
  +        w_current->ADDING_SEL=0; 
  +	break;
  +    }
  +    list_ptr = list_ptr->next;
  +  }
  +
   
     /* Add the new objects */
  -  w_current->page_current->object_tail = (OBJECT *)
  -  return_tail(w_current->page_current->object_head);
  +  list_ptr = g_list_first(w_current->page_current->complex_place_list);
  +  if (list_ptr == NULL) {
  +    fprintf(stderr, "o_copy_end: Something went wrong. Selection list is empty!\n");
  +    return;
  +  }
  +  new_objects_head = (OBJECT *) (list_ptr->data);
   
     s_basic_link_object(new_objects_head, w_current->page_current->object_tail);
   
  @@ -498,25 +501,21 @@
       object=object->next;
     }
     
  -  /* Delete the new object head */
  -  /*  new_objects_head->next = NULL;
  -      s_delete_list_fromstart(w_current, new_objects_head); */
  -
     w_current->page_current->object_tail = (OBJECT *)
     return_tail(w_current->page_current->object_head);
   
     /* erase the bounding box */
     if (w_current->actionfeedback_mode == BOUNDINGBOX) {
       o_drawbounding(w_current, NULL,
  -                   w_current->page_current->selection_list,
  +                   w_current->page_current->complex_place_list,
                      x_get_darkcolor(w_current->bb_color), TRUE);
     }
   
     o_select_run_hooks(w_current, NULL, 2); 
     o_selection_unselect_list(w_current, 
   			    &(w_current->page_current->selection_list));
  -  w_current->page_current->selection_list = NULL;
  -  w_current->page_current->selection_list = temp_list;
  +  w_current->page_current->selection_list = w_current->page_current->complex_place_list;
  +
   #if DEBUG
     o_selection_print_all(w_current->page_current->selection_list);
   #endif
  @@ -524,14 +523,12 @@
     w_current->page_current->CHANGED = 1;
   
     /* not needed o_redraw(w_current, w_current->page_current->object_head); */
  -  o_cue_draw_list(w_current, new_objects);
  +  o_cue_draw_list(w_current, w_current->page_current->complex_place_list);
     o_cue_undraw_list(w_current, connected_objects);
     o_cue_draw_list(w_current, connected_objects);
     
  -  g_list_free(new_objects);
  +  o_undo_savestate(w_current, UNDO_ALL);
     g_list_free(connected_objects);
  -  new_objects = NULL;
  -  connected_objects = NULL;
     
  -  o_undo_savestate(w_current, UNDO_ALL);
  +  w_current->page_current->complex_place_list = NULL;
   }
  
  
  
  1.41.2.2  +6 -10     eda/geda/gaf/gschem/src/x_event.c
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: x_event.c
  ===================================================================
  RCS file: /home/cvspsrv/cvsroot/eda/geda/gaf/gschem/src/x_event.c,v
  retrieving revision 1.41.2.1
  retrieving revision 1.41.2.2
  diff -u -b -r1.41.2.1 -r1.41.2.2
  --- x_event.c	21 Oct 2006 22:20:50 -0000	1.41.2.1
  +++ x_event.c	22 Oct 2006 19:14:40 -0000	1.41.2.2
  @@ -87,10 +87,6 @@
         case(COPY): 
         case(ENDCOPY):
         case(ENDMCOPY):
  -        o_drawbounding(w_current, NULL,
  -                       w_current->page_current->selection_list,
  -                       x_get_darkcolor(w_current->bb_color), FALSE);
  -        break;
         case(DRAWCOMP):
         case(ENDCOMP):
         case(ENDPASTE):
  @@ -1088,12 +1084,12 @@
       case(MCOPY):
       if (w_current->inside_action) {
         o_drawbounding(w_current, NULL,
  -                     w_current->page_current->selection_list,
  +                     w_current->page_current->complex_place_list,
                        x_get_darkcolor(w_current->bb_color), FALSE);
         w_current->last_x = fix_x(w_current,  (int) event->x);
         w_current->last_y = fix_y(w_current,  (int) event->y);
         o_drawbounding(w_current, NULL,
  -                     w_current->page_current->selection_list,
  +                     w_current->page_current->complex_place_list,
                        x_get_darkcolor(w_current->bb_color), FALSE);
       }
       break;
  
  
  


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