aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flattr.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-08-15 02:32:46 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-08-15 02:32:46 +0000
commit185d9a6b38a94150edb98a9a0d3c90fe9a3bd68d (patch)
tree26c4ea60d8d2832f33c57db91bd4403e61d23353 /externals/grill/flext/source/flattr.cpp
parent21e2f111c461725446457f0d768a95b71c17c847 (diff)
""
svn path=/trunk/; revision=848
Diffstat (limited to 'externals/grill/flext/source/flattr.cpp')
-rw-r--r--externals/grill/flext/source/flattr.cpp16
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();
}