diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2003-08-15 02:32:46 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2003-08-15 02:32:46 +0000 |
commit | 185d9a6b38a94150edb98a9a0d3c90fe9a3bd68d (patch) | |
tree | 26c4ea60d8d2832f33c57db91bd4403e61d23353 /externals/grill/flext/source/flattr.cpp | |
parent | 21e2f111c461725446457f0d768a95b71c17c847 (diff) |
""
svn path=/trunk/; revision=848
Diffstat (limited to 'externals/grill/flext/source/flattr.cpp')
-rw-r--r-- | externals/grill/flext/source/flattr.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/externals/grill/flext/source/flattr.cpp b/externals/grill/flext/source/flattr.cpp index 6a8dafeb..10c46af0 100644 --- a/externals/grill/flext/source/flattr.cpp +++ b/externals/grill/flext/source/flattr.cpp @@ -14,6 +14,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. #include "flext.h" #include <string.h> +#include <ctype.h> #include <set> @@ -223,7 +224,6 @@ bool flext_base::SetAttrib(AttrItem *a,int argc,const t_atom *argv) if(a->fun) { bool ok = true; - AtomList la; t_any any; switch(a->argtp) { case a_float: @@ -242,7 +242,7 @@ bool flext_base::SetAttrib(AttrItem *a,int argc,const t_atom *argv) break; case a_symbol: if(argc == 1 && IsSymbol(argv[0])) { - any.st = GetSymbol(argv[0]); + any.st = const_cast<t_symbol *>(GetParamSym(GetSymbol(argv[0]),thisCanvas())); ((methfun_1)a->fun)(this,any); } else ok = false; @@ -254,10 +254,18 @@ bool flext_base::SetAttrib(AttrItem *a,int argc,const t_atom *argv) } else ok = false; break; - case a_LIST: - any.vt = &(la(argc,argv)); + case a_LIST: { + AtomList la(argc); + for(int i = 0; i < argc; ++i) + if(IsSymbol(argv[i])) + SetSymbol(la[i],GetParamSym(GetSymbol(argv[i]),thisCanvas())); + else + la[i] = argv[i]; + + any.vt = &la; ((methfun_1)a->fun)(this,any); break; + } default: ERRINTERNAL(); } |