[PD-cvs] pd/src desire.c,1.1.2.132,1.1.2.133

Mathieu Bouchard matju at users.sourceforge.net
Sat Sep 2 09:11:35 CEST 2006


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15811

Modified Files:
      Tag: devel_0_39
	desire.c 
Log Message:
cleanup.


Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.132
retrieving revision 1.1.2.133
diff -C2 -d -r1.1.2.132 -r1.1.2.133
*** desire.c	2 Sep 2006 06:36:41 -0000	1.1.2.132
--- desire.c	2 Sep 2006 07:11:32 -0000	1.1.2.133
***************
*** 692,696 ****
  	    t_gobj *y;
              if (!x->gl_havewindow) {bug("canvas_map"); canvas_vis(x,1);}
!             glist_each(y,x) {gobj_changed(y,0); gobj_vis(y, x, 1);}
              /*for (sel = x->gl_editor->e_selection; sel; sel = sel->sel_next)
                  gobj_select(sel->sel_what, x, 1);*/
--- 692,696 ----
  	    t_gobj *y;
              if (!x->gl_havewindow) {bug("canvas_map"); canvas_vis(x,1);}
!             glist_each(y,x) gobj_changed(y,0);
              /*for (sel = x->gl_editor->e_selection; sel; sel = sel->sel_next)
                  gobj_select(sel->sel_what, x, 1);*/
***************
*** 798,807 ****
  	   and is visible, show ourselves on parent. */
          if (glist_isgraph(x) && x->gl_owner) {
-             t_glist *gl2 = x->gl_owner;
              canvas_create_editor(x, 1);
-             if (glist_isvisible(gl2)) gobj_vis(&x->gl_gobj, gl2, 0);
              x->gl_havewindow = 0;
  	    gobj_unsubscribe((t_gobj *)x,(t_gobj *)manager);
-             if (glist_isvisible(gl2)) gobj_vis(&x->gl_gobj, gl2, 1);
          } else {
  	    x->gl_havewindow = 0;
--- 798,804 ----
***************
*** 811,832 ****
  }
  
!     /* we call this on a non-toplevel glist to "open" it into its
!     own window. */
! static void glist_menu_open(t_glist *x)
! {
!     if (glist_isvisible(x) && !glist_istoplevel(x))
!     {
          t_glist *gl2 = x->gl_owner;
!         if (!gl2) 
!             bug("canvas_vis");  /* shouldn't happen but don't get too upset. */
!         else
!         {
!                 /* erase ourself in parent window */
!             gobj_vis(&x->gl_gobj, gl2, 0);
!                     /* get rid of our editor (and subeditors) */
!             canvas_create_editor(x, 0);
              x->gl_havewindow = 1;
!                     /* redraw ourself in parent window (blanked out this time) */
!             gobj_vis(&x->gl_gobj, gl2, 1);
          }
      }
--- 808,820 ----
  }
  
! /* we call this on a non-toplevel glist to "open" it into its own window. */
! static void glist_menu_open(t_glist *x) {
!     if (glist_isvisible(x) && !glist_istoplevel(x)) {
          t_glist *gl2 = x->gl_owner;
!         if (!gl2) bug("canvas_vis");  /* shouldn't happen but don't get too upset. */
!         else {
!             canvas_create_editor(x,0);
              x->gl_havewindow = 1;
!             gobj_changed(x,0);
          }
      }
***************
*** 890,894 ****
      t_outconnect *oc;
      linetraverser_start(&t, x);
!     while (oc = linetraverser_next(&t))
          if (t.tr_ob == text || t.tr_ob2 == text)
              obj_disconnect(t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno);
--- 878,882 ----
      t_outconnect *oc;
      linetraverser_start(&t, x);
!     while ((oc = linetraverser_next(&t)))
          if (t.tr_ob == text || t.tr_ob2 == text)
              obj_disconnect(t.tr_ob, t.tr_outno, t.tr_ob2, t.tr_inno);
***************
*** 1379,1392 ****
  }
  
!     /* recursively check for abstractions to reload as result of a save. 
!     Don't reload the one we just saved ("except") though. */
!     /*  LATER try to do the same trick for externs. */
! static void glist_doreload(t_glist *gl, t_symbol *name, t_symbol *dir,
!     t_gobj *except)
! {
      t_gobj *g;
      int i, nobj = glist_getindex(gl, 0);  /* number of objects */
!     for (g = gl->gl_list, i = 0; g && i < nobj; i++)
!     {
          if (g != except && pd_class(&g->g_pd) == canvas_class &&
              canvas_isabstraction((t_canvas *)g) &&
--- 1367,1377 ----
  }
  
! /* recursively check for abstractions to reload as result of a save. 
!    Don't reload the one we just saved ("except") though. */
! /*  LATER try to do the same trick for externs. */
! static void glist_doreload(t_glist *gl, t_symbol *name, t_symbol *dir, t_gobj *except) {
      t_gobj *g;
      int i, nobj = glist_getindex(gl, 0);  /* number of objects */
!     for (g = gl->gl_list, i = 0; g && i < nobj; i++) {
          if (g != except && pd_class(&g->g_pd) == canvas_class &&
              canvas_isabstraction((t_canvas *)g) &&
***************
*** 1404,1410 ****
              if (!hadwindow)
                  canvas_vis(glist_getcanvas(gl), 0);
!         }
!         else
!         {
              if (g != except && pd_class(&g->g_pd) == canvas_class)
                  glist_doreload((t_canvas *)g, name, dir, except);
--- 1389,1393 ----
              if (!hadwindow)
                  canvas_vis(glist_getcanvas(gl), 0);
!         } else {
              if (g != except && pd_class(&g->g_pd) == canvas_class)
                  glist_doreload((t_canvas *)g, name, dir, except);
***************
*** 1415,1424 ****
  
      /* call canvas_doreload on everyone */
! void canvas_reload(t_symbol *name, t_symbol *dir, t_gobj *except)
! {
      t_canvas *x;
!         /* find all root canvases */
!     for (x = canvas_list; x; x = x->gl_next)
!         glist_doreload(x, name, dir, except);
  }
  
--- 1398,1405 ----
  
      /* call canvas_doreload on everyone */
! void canvas_reload(t_symbol *name, t_symbol *dir, t_gobj *except) {
      t_canvas *x;
!     /* find all root canvases */
!     for (x = canvas_list; x; x = x->gl_next) glist_doreload(x, name, dir, except);
  }
  
***************
*** 1444,1468 ****
  }
  
- /* check if a point lies in a gobj.  */
- int canvas_hitbox(t_canvas *x, t_gobj *y, int xpos, int ypos,
-     int *x1p, int *y1p, int *x2p, int *y2p)
- {
-     int x1, y1, x2, y2;
-     t_text *ob;
-     if ((ob = pd_checkobject(&y->g_pd)) && 
-         !text_shouldvis(ob, x))
-             return (0);
-     gobj_getrect(y, x, &x1, &y1, &x2, &y2);
-     if (xpos >= x1 && xpos <= x2 && ypos >= y1 && ypos <= y2)
-     {
-         *x1p = x1;
-         *y1p = y1;
-         *x2p = x2;
-         *y2p = y2;
-         return (1);
-     }
-     else return (0);
- }
- 
      /* set a canvas up as a graph-on-parent.  Set reasonable defaults for
      any missing paramters and redraw things if necessary. */
--- 1425,1428 ----
***************
*** 1588,1638 ****
  }
  
-     /* put up a dialog which may call canvas_font back to do the work */
- static void canvas_menufont(t_canvas *x)
- {
-     char buf[80];
-     t_canvas *x2 = canvas_getrootfor(x);
-     gfxstub_deleteforkey(x2);
-     sprintf(buf, "pdtk_canvas_dofont %%s %d\n", x2->gl_font);
-     gfxstub_new(&x2->gl_pd, &x2->gl_pd, buf);
- }
- 
  static int canvas_find_index1, canvas_find_index2;
  static t_binbuf *canvas_findbuf;
  int binbuf_match(t_binbuf *inbuf, t_binbuf *searchbuf);
  
!     /* find an atom or string of atoms */
! static int canvas_dofind(t_canvas *x, int *myindex1p)
! {
      t_gobj *y;
      int myindex1 = *myindex1p, myindex2;
!     if (myindex1 >= canvas_find_index1)
!     {
!         for (y=x->gl_list, myindex2=0; y; y=y->g_next, myindex2++)
!         {
              t_object *ob = pd_checkobject(&y->g_pd);
  	    if (ob && binbuf_match(ob->ob_binbuf, canvas_findbuf)) {
                      if (myindex1 > canvas_find_index1 ||
!                         (myindex1 == canvas_find_index1 && myindex2 > canvas_find_index2))
!                     {
                          canvas_find_index1 = myindex1;
                          canvas_find_index2 = myindex2;
                          vmess(&x->gl_pd, gensym("menu-open"), "");
                          canvas_editmode(x, 1.);
!                         return (1);
                      }
              }
          }
      }
!     for (y = x->gl_list, myindex2 = 0; y; y = y->g_next, myindex2++)
!     {
!         if (pd_class(&y->g_pd) == canvas_class)
!         {
              (*myindex1p)++;
!             if (canvas_dofind((t_canvas *)y, myindex1p))
!                 return (1);
          }
      }
!     return (0);
  }
  
--- 1548,1581 ----
  }
  
  static int canvas_find_index1, canvas_find_index2;
  static t_binbuf *canvas_findbuf;
  int binbuf_match(t_binbuf *inbuf, t_binbuf *searchbuf);
  
! /* find an atom or string of atoms */
! static int canvas_dofind(t_canvas *x, int *myindex1p) {
      t_gobj *y;
      int myindex1 = *myindex1p, myindex2;
!     if (myindex1 >= canvas_find_index1) {
!         for (y=x->gl_list, myindex2=0; y; y=y->g_next, myindex2++) {
              t_object *ob = pd_checkobject(&y->g_pd);
  	    if (ob && binbuf_match(ob->ob_binbuf, canvas_findbuf)) {
                      if (myindex1 > canvas_find_index1 ||
!                         (myindex1 == canvas_find_index1 && myindex2 > canvas_find_index2)) {
                          canvas_find_index1 = myindex1;
                          canvas_find_index2 = myindex2;
                          vmess(&x->gl_pd, gensym("menu-open"), "");
                          canvas_editmode(x, 1.);
!                         return 1;
                      }
              }
          }
      }
!     for (y = x->gl_list, myindex2 = 0; y; y = y->g_next, myindex2++) {
!         if (pd_class(&y->g_pd) == canvas_class) {
              (*myindex1p)++;
!             if (canvas_dofind((t_canvas *)y, myindex1p)) return 1;
          }
      }
!     return 0;
  }
  
***************
*** 1827,1874 ****
  }
  
-     /* called by canvas_font below */
- static void canvas_dofont(t_canvas *x, t_floatarg font, t_floatarg xresize,
-     t_floatarg yresize)
- {
-     t_gobj *y;
-     x->gl_font = font;
-     if (xresize != 1 || yresize != 1)
-     {
-         for (y = x->gl_list; y; y = y->g_next)
-         {
-             int x1, x2, y1, y2, nx1, ny1;
-             gobj_getrect(y, x, &x1, &y1, &x2, &y2);
-             nx1 = x1 * xresize + 0.5;
-             ny1 = y1 * yresize + 0.5;
-             gobj_displace(y, x, nx1-x1, ny1-y1);
-         }
-     }
-     if (glist_isvisible(x))
-         glist_redraw(x);
-     for (y = x->gl_list; y; y = y->g_next)
-         if (pd_class(&y->g_pd) == canvas_class
-             && !canvas_isabstraction((t_canvas *)y))
-                 canvas_dofont((t_canvas *)y, font, xresize, yresize);
- }
- 
-     /* canvas_menufont calls up a TK dialog which calls this back */
- static void canvas_font(t_canvas *x, t_floatarg font, t_floatarg resize,
-     t_floatarg whichresize)
- {
-     float realresize, realresx = 1, realresy = 1;
-     t_canvas *x2 = canvas_getrootfor(x);
-     if (!resize) realresize = 1;
-     else
-     {
-         if (resize < 20) resize = 20;
-         if (resize > 500) resize = 500;
-         realresize = resize * 0.01;
-     }
-     if (whichresize != 3) realresx = realresize;
-     if (whichresize != 2) realresy = realresize;
-     canvas_dofont(x2, font, realresx, realresy);
-     sys_defaultfont = font;
- }
- 
  static t_glist *canvas_last_glist;
  static int canvas_last_glist_x, canvas_last_glist_y;
--- 1770,1773 ----
***************
*** 3148,3152 ****
          canvas_redrawallfortemplate(template_findbyname(canvas_makebindsym(glist_getcanvas(x)->gl_name)), 2);
  
!     canvas_deletelinesfor(x,y);
      gobj_delete(y, x);
  
--- 3047,3051 ----
          canvas_redrawallfortemplate(template_findbyname(canvas_makebindsym(glist_getcanvas(x)->gl_name)), 2);
  
!     canvas_deletelinesfor(x,(t_text *)y);
      gobj_delete(y, x);
  
***************
*** 3192,3196 ****
  t_canvas *glist_getcanvas(t_glist *x) {
      while (x->gl_owner && !x->gl_havewindow && x->gl_isgraph) x = x->gl_owner;
!     return (t_canvas *)x;
  }
  
--- 3091,3095 ----
  t_canvas *glist_getcanvas(t_glist *x) {
      while (x->gl_owner && !x->gl_havewindow && x->gl_isgraph) x = x->gl_owner;
!     return x;
  }
  
***************
*** 3797,3806 ****
          for (y = x->gl_list; y; y = y->g_next)
          {
!             int x1, y1, x2, y2;
                  /* check if the object wants to be clicked */
!             if (canvas_hitbox(x, y, xpix, ypix, &x1, &y1, &x2, &y2)
                  &&  (clickreturned = gobj_click(y, x, xpix, ypix,
                      shift, alt, 0, doit)))
!                         break;
          }
          return clickreturned;
--- 3696,3705 ----
          for (y = x->gl_list; y; y = y->g_next)
          {
!             /*int x1, y1, x2, y2;*/
                  /* check if the object wants to be clicked */
!             /*if (canvas_hitbox(x, y, xpix, ypix, &x1, &y1, &x2, &y2)
                  &&  (clickreturned = gobj_click(y, x, xpix, ypix,
                      shift, alt, 0, doit)))
!                         break;*/
          }
          return clickreturned;
***************
*** 8578,8591 ****
  typedef struct _gatom {
      t_text a_text;
!     t_atom a_atom;  	    /* this holds the value and the type */
!     t_glist *a_glist;	    /* owning glist */
!     t_float a_toggle;	    /* value to toggle to */
!     t_float a_draghi;	    /* high end of drag range */
!     t_float a_draglo;	    /* low end of drag range */
!     t_symbol *a_label;	    /* symbol to show as label next to box */
!     t_symbol *a_symfrom;    /* "receive" name -- bind ourselvs to this */
!     t_symbol *a_symto;	    /* "send" name -- send to this on output */
!     char a_shift;   	    /* was shift key down when dragging started? */
!     char a_wherelabel;	    /* 0-3 for left, right, above, below */
      t_symbol *a_expanded_to; /* a_symto after $0, $1, ...  expansion */
  } t_gatom;
--- 8477,8490 ----
  typedef struct _gatom {
      t_text a_text;
!     t_atom a_atom;      /* this holds the value and the type */
!     t_glist *a_glist;   /* owning glist */
!     t_float a_toggle;   /* value to toggle to */
!     t_float a_draghi;   /* high end of drag range */
!     t_float a_draglo;   /* low end of drag range */
!     t_symbol *a_label;  /* symbol to show as label next to box */
!     t_symbol *a_symfrom;/* "receive" name -- bind ourselvs to this */
!     t_symbol *a_symto;  /* "send" name -- send to this on output */
!     char a_shift;       /* was shift key down when dragging started? */
!     char a_wherelabel;  /* 0-3 for left, right, above, below */
      t_symbol *a_expanded_to; /* a_symto after $0, $1, ...  expansion */
  } t_gatom;
***************
*** 8614,8643 ****
  }
  
! static void gatom_retext(t_gatom *x, int senditup) {
!     binbuf_clear(x->a_text.te_binbuf);
!     binbuf_add(x->a_text.te_binbuf, 1, &x->a_atom);
!     if (senditup) glist_retext(x->a_glist, &x->a_text);
! }
! 
! static void gatom_set(t_gatom *x, t_symbol *s, int argc, t_atom *argv)
! {
      t_atom oldatom = x->a_atom;
      int senditup = 0;
      if (!argc) return;
!     if (x->a_atom.a_type == A_FLOAT)
!     	x->a_atom.a_w.w_float = atom_getfloat(argv),
! 	    senditup = (x->a_atom.a_w.w_float != oldatom.a_w.w_float);
!     else if (x->a_atom.a_type == A_SYMBOL)
!     	x->a_atom.a_w.w_symbol = atom_getsymbol(argv),
! 	    senditup = (x->a_atom.a_w.w_symbol != oldatom.a_w.w_symbol);
!     gatom_retext(x, senditup);
! //    x->a_buf[0] = 0;
  }
  
  static void gatom_bang(t_gatom *x) {
      t_symbol *s = x->a_expanded_to;
      if (x->a_atom.a_type == A_FLOAT) {
!     	if (x->a_text.te_outlet)
! 	    outlet_float(x->a_text.te_outlet, x->a_atom.a_w.w_float);
  	if (*s->s_name && s->s_thing) {
  	    if (x->a_symto == x->a_symfrom) goto err;
--- 8513,8535 ----
  }
  
! static void gatom_set(t_gatom *x, t_symbol *s, int argc, t_atom *argv) {
      t_atom oldatom = x->a_atom;
      int senditup = 0;
      if (!argc) return;
!     if (x->a_atom.a_type == A_FLOAT) {
! 	x->a_atom.a_w.w_float = atom_getfloat(argv);
! 	senditup = x->a_atom.a_w.w_float != oldatom.a_w.w_float;
!     } else if (x->a_atom.a_type == A_SYMBOL) {
! 	x->a_atom.a_w.w_symbol = atom_getsymbol(argv);
! 	senditup = x->a_atom.a_w.w_symbol != oldatom.a_w.w_symbol;
!     }
!     if (senditup) gobj_changed(x,0);
  }
  
  static void gatom_bang(t_gatom *x) {
      t_symbol *s = x->a_expanded_to;
+     t_outlet *o = x->a_text.te_outlet;
      if (x->a_atom.a_type == A_FLOAT) {
!     	if (o) outlet_float(o, x->a_atom.a_w.w_float);
  	if (*s->s_name && s->s_thing) {
  	    if (x->a_symto == x->a_symfrom) goto err;
***************
*** 8645,8650 ****
      	}
      } else if (x->a_atom.a_type == A_SYMBOL) {
!     	if (x->a_text.te_outlet)
!     	    outlet_symbol(x->a_text.te_outlet, x->a_atom.a_w.w_symbol);
  	if (*x->a_symto->s_name && s->s_thing) {
  	    if (x->a_symto == x->a_symfrom) goto err;
--- 8537,8541 ----
      	}
      } else if (x->a_atom.a_type == A_SYMBOL) {
!     	if (o) outlet_symbol(o, x->a_atom.a_w.w_symbol);
  	if (*x->a_symto->s_name && s->s_thing) {
  	    if (x->a_symto == x->a_symfrom) goto err;
***************
*** 8664,8669 ****
  
  /* message back from dialog window */
! static void gatom_param(t_gatom *x, t_symbol *sel, int argc, t_atom *argv)
! {
      t_float width = atom_getfloatarg(0, argc, argv);
      t_float draglo = atom_getfloatarg(1, argc, argv);
--- 8555,8559 ----
  
  /* message back from dialog window */
! static void gatom_param(t_gatom *x, t_symbol *sel, int argc, t_atom *argv) {
      t_float width = atom_getfloatarg(0, argc, argv);
      t_float draglo = atom_getfloatarg(1, argc, argv);
***************
*** 8673,8687 ****
      t_symbol *symfrom = gatom_unescapit(atom_getsymbolarg(5, argc, argv));
      t_symbol *symto = gatom_unescapit(atom_getsymbolarg(6, argc, argv));
  
!     gobj_vis(&x->a_text.te_g, x->a_glist, 0);
!     if (!*symfrom->s_name && *x->a_symfrom->s_name) inlet_new(&x->a_text, &x->a_text.te_pd, 0, 0);
!     else if (*symfrom->s_name && !*x->a_symfrom->s_name && x->a_text.te_inlet) {
!     	canvas_deletelinesforio(x->a_glist, &x->a_text, x->a_text.te_inlet, 0);
! 	inlet_free(x->a_text.te_inlet);
      }
      if (!*symto->s_name && *x->a_symto->s_name) outlet_new(&x->a_text, 0);
!     else if (*symto->s_name && !*x->a_symto->s_name && x->a_text.te_outlet) {
!     	canvas_deletelinesforio(x->a_glist, &x->a_text, 0, x->a_text.te_outlet);
! 	outlet_free(x->a_text.te_outlet);
      }
      if (draglo >= draghi) draglo = draghi = 0;
--- 8563,8577 ----
      t_symbol *symfrom = gatom_unescapit(atom_getsymbolarg(5, argc, argv));
      t_symbol *symto = gatom_unescapit(atom_getsymbolarg(6, argc, argv));
+     t_text *t = (t_text *)x;
  
!     if (!*symfrom->s_name && *x->a_symfrom->s_name) inlet_new(t, (t_pd *)t, 0, 0);
!     else if (*symfrom->s_name && !*x->a_symfrom->s_name && t->te_inlet) {
!     	canvas_deletelinesforio(x->a_glist, t, t->te_inlet, 0);
! 	inlet_free(t->te_inlet);
      }
      if (!*symto->s_name && *x->a_symto->s_name) outlet_new(&x->a_text, 0);
!     else if (*symto->s_name && !*x->a_symto->s_name && t->te_outlet) {
!     	canvas_deletelinesforio(x->a_glist, t, 0, t->te_outlet);
! 	outlet_free(t->te_outlet);
      }
      if (draglo >= draghi) draglo = draghi = 0;
***************
*** 8703,8707 ****
      t_gatom *x = (t_gatom *)pd_new(gatom_class);
      t_atom at;
!     x->a_text.te_width = 0;	    	    	   /* don't know it yet. */
      x->a_text.te_type = T_ATOM;
      x->a_text.te_binbuf = binbuf_new();
--- 8593,8597 ----
      t_gatom *x = (t_gatom *)pd_new(gatom_class);
      t_atom at;
!     x->a_text.te_width = 0; /* don't know it yet. */
      x->a_text.te_type = T_ATOM;
      x->a_text.te_binbuf = binbuf_new();
***************
*** 8727,8738 ****
      if (argc > 1) {
  	/* create from file. x, y, width, low-range, high-range, flags,
! 	    label, receive-name, send-name */
      	x->a_text.te_xpix = atom_getfloatarg(0, argc, argv);
      	x->a_text.te_ypix = atom_getfloatarg(1, argc, argv);
      	x->a_text.te_width = atom_getintarg(2, argc, argv);
! 	    /* sanity check because some very old patches have trash in this
! 	    field... remove this in 2003 or so: */
! 	if (x->a_text.te_width < 0 || x->a_text.te_width > 500)
! 	    x->a_text.te_width = 4;
      	x->a_draglo = atom_getfloatarg(3, argc, argv);
      	x->a_draghi = atom_getfloatarg(4, argc, argv);
--- 8617,8627 ----
      if (argc > 1) {
  	/* create from file. x, y, width, low-range, high-range, flags,
! 	   label, receive-name, send-name */
      	x->a_text.te_xpix = atom_getfloatarg(0, argc, argv);
      	x->a_text.te_ypix = atom_getfloatarg(1, argc, argv);
      	x->a_text.te_width = atom_getintarg(2, argc, argv);
! 	/* sanity check because some very old patches have trash in this
! 	   field... remove this in 2003 or so: */
! 	if (x->a_text.te_width < 0 || x->a_text.te_width > 500) x->a_text.te_width = 4;
      	x->a_draglo = atom_getfloatarg(3, argc, argv);
      	x->a_draghi = atom_getfloatarg(4, argc, argv);
***************
*** 8741,8759 ****
  	x->a_symfrom = gatom_unescapit(atom_getsymbolarg(7, argc, argv));
  	if (*x->a_symfrom->s_name)
!     	    pd_bind(&x->a_text.te_pd,
! 	    	canvas_realizedollar(x->a_glist, x->a_symfrom));
  
  	x->a_symto = gatom_unescapit(atom_getsymbolarg(8, argc, argv));
  	x->a_expanded_to = canvas_realizedollar(x->a_glist, x->a_symto);
! 	if (x->a_symto == &s_)
! 	    outlet_new(&x->a_text,
! 		x->a_atom.a_type == A_FLOAT ? &s_float: &s_symbol);
! 	if (x->a_symfrom == &s_)
! 	    inlet_new(&x->a_text, &x->a_text.te_pd, 0, 0);
      	glist_add(gl, &x->a_text.te_g);
      } else {
      	int xpix, ypix;
! 	outlet_new(&x->a_text,
! 	    x->a_atom.a_type == A_FLOAT ? &s_float: &s_symbol);
  	inlet_new(&x->a_text, &x->a_text.te_pd, 0, 0);
  	pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1);
--- 8630,8643 ----
  	x->a_symfrom = gatom_unescapit(atom_getsymbolarg(7, argc, argv));
  	if (*x->a_symfrom->s_name)
!     	    pd_bind(&x->a_text.te_pd, canvas_realizedollar(x->a_glist, x->a_symfrom));
  
  	x->a_symto = gatom_unescapit(atom_getsymbolarg(8, argc, argv));
  	x->a_expanded_to = canvas_realizedollar(x->a_glist, x->a_symto);
! 	if (x->a_symto == &s_) outlet_new(&x->a_text, x->a_atom.a_type == A_FLOAT ? &s_float: &s_symbol);
! 	if (x->a_symfrom == &s_) inlet_new(&x->a_text, &x->a_text.te_pd, 0, 0);
      	glist_add(gl, &x->a_text.te_g);
      } else {
      	int xpix, ypix;
! 	outlet_new(&x->a_text, x->a_atom.a_type == A_FLOAT ? &s_float: &s_symbol);
  	inlet_new(&x->a_text, &x->a_text.te_pd, 0, 0);
  	pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1);
***************
*** 8772,8777 ****
  
  static void gatom_free(t_gatom *x) {
!     if (*x->a_symfrom->s_name)
!     	pd_unbind((t_pd *)x, canvas_realizedollar(x->a_glist, x->a_symfrom));
      gfxstub_deleteforkey(x);
  }
--- 8656,8660 ----
  
  static void gatom_free(t_gatom *x) {
!     if (*x->a_symfrom->s_name) pd_unbind((t_pd *)x, canvas_realizedollar(x->a_glist, x->a_symfrom));
      gfxstub_deleteforkey(x);
  }
***************
*** 8780,8783 ****
--- 8663,8667 ----
      *xp1 = *yp1 = *xp2 = *yp2 = 42; /* desire */
  }
+ 
  static void text_displace(t_gobj *z, t_glist *glist, int dx, int dy) {
      t_text *x = (t_text *)z;
***************
*** 8963,8967 ****
      class_addanything(c, mresp_anything);
  
- 
      c = message_class = class_new(gensym("message"), 0,0,
      	sizeof(t_message), CLASS_PATCHABLE, 0);
--- 8847,8850 ----
***************
*** 10287,10292 ****
  
      class_addmethod3(c,canvas_print,    "print","s");
-     class_addmethod3(c,canvas_menufont, "menufont","");
-     class_addmethod3(c,canvas_font,     "font","fff");
      class_addmethod3(c,canvas_find,     "find","*");
      class_addmethod3(c,canvas_find_again, "findagain","");
--- 10170,10173 ----





More information about the Pd-cvs mailing list