From b10346c77cb5de040a23da4d94f3fae29f01f459 Mon Sep 17 00:00:00 2001 From: mescalinum Date: Wed, 2 Sep 2009 20:56:35 +0000 Subject: tidy up svn path=/trunk/externals/tclpd/; revision=12192 --- tcl_widgetbehavior.cxx | 102 ++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/tcl_widgetbehavior.cxx b/tcl_widgetbehavior.cxx index 4715ba0..55634d5 100644 --- a/tcl_widgetbehavior.cxx +++ b/tcl_widgetbehavior.cxx @@ -1,6 +1,56 @@ #include "tcl_extras.h" #include +int tclpd_guiclass_click(t_gobj* z, t_glist* glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { + Tcl_Obj* av[9], *o = NULL; + int i = 0; + t_tcl* x = (t_tcl*)z; + av[0] = x->self; + av[1] = Tcl_NewStringObj("widgetbehavior", -1); + Tcl_IncrRefCount(av[1]); + av[2] = Tcl_NewStringObj("click", -1); + Tcl_IncrRefCount(av[2]); + av[3] = Tcl_NewIntObj(xpix); + Tcl_IncrRefCount(av[3]); + av[4] = Tcl_NewIntObj(ypix); + Tcl_IncrRefCount(av[4]); + av[5] = Tcl_NewIntObj(shift); + Tcl_IncrRefCount(av[5]); + av[6] = Tcl_NewIntObj(alt); + Tcl_IncrRefCount(av[6]); + av[7] = Tcl_NewIntObj(dbl); + Tcl_IncrRefCount(av[7]); + av[8] = Tcl_NewIntObj(doit); + Tcl_IncrRefCount(av[8]); + int result = Tcl_EvalObjv(tcl_for_pd, 9, av, 0); + if(result != TCL_OK) { + tclpd_interp_error(result); + goto error; + } + o = Tcl_GetObjResult(tcl_for_pd); + Tcl_IncrRefCount(o); + if(strlen(Tcl_GetStringFromObj(o, NULL)) > 0) { + result = Tcl_GetIntFromObj(tcl_for_pd, o, &i); + if(result != TCL_OK) { + tclpd_interp_error(result); + goto error; + } + } + goto cleanup; +error: +cleanup: + if(o) Tcl_DecrRefCount(o); + Tcl_DecrRefCount(av[1]); + Tcl_DecrRefCount(av[2]); + Tcl_DecrRefCount(av[3]); + Tcl_DecrRefCount(av[4]); + Tcl_DecrRefCount(av[5]); + Tcl_DecrRefCount(av[6]); + Tcl_DecrRefCount(av[7]); + Tcl_DecrRefCount(av[8]); + return i; +} + void tclpd_guiclass_getrect(t_gobj* z, t_glist* owner, int* xp1, int* yp1, int* xp2, int* yp2) { Tcl_Obj* av[5], *o, *theList = NULL; int tmp[4], i, length; @@ -197,55 +247,3 @@ cleanup: Tcl_DecrRefCount(av[5]); Tcl_DecrRefCount(av[6]); } - -int tclpd_guiclass_click(t_gobj* z, t_glist* glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { - Tcl_Obj* av[9], *o = NULL; - int i = 0; - t_tcl* x = (t_tcl*)z; - av[0] = x->self; - av[1] = Tcl_NewStringObj("widgetbehavior", -1); - Tcl_IncrRefCount(av[1]); - av[2] = Tcl_NewStringObj("click", -1); - Tcl_IncrRefCount(av[2]); - av[3] = Tcl_NewIntObj(xpix); - Tcl_IncrRefCount(av[3]); - av[4] = Tcl_NewIntObj(ypix); - Tcl_IncrRefCount(av[4]); - av[5] = Tcl_NewIntObj(shift); - Tcl_IncrRefCount(av[5]); - av[6] = Tcl_NewIntObj(alt); - Tcl_IncrRefCount(av[6]); - av[7] = Tcl_NewIntObj(dbl); - Tcl_IncrRefCount(av[7]); - av[8] = Tcl_NewIntObj(doit); - Tcl_IncrRefCount(av[8]); - fprintf(stderr, "C: puttan madonna"); - int result = Tcl_EvalObjv(tcl_for_pd, 9, av, 0); - fprintf(stderr, "C: cristo pinocchio"); - if(result != TCL_OK) { - tclpd_interp_error(result); - goto error; - } - o = Tcl_GetObjResult(tcl_for_pd); - Tcl_IncrRefCount(o); - if(strlen(Tcl_GetStringFromObj(o, NULL)) > 0) { - result = Tcl_GetIntFromObj(tcl_for_pd, o, &i); - if(result != TCL_OK) { - tclpd_interp_error(result); - goto error; - } - } - goto cleanup; -error: -cleanup: - if(o) Tcl_DecrRefCount(o); - Tcl_DecrRefCount(av[1]); - Tcl_DecrRefCount(av[2]); - Tcl_DecrRefCount(av[3]); - Tcl_DecrRefCount(av[4]); - Tcl_DecrRefCount(av[5]); - Tcl_DecrRefCount(av[6]); - Tcl_DecrRefCount(av[7]); - Tcl_DecrRefCount(av[8]); - return i; -} -- cgit v1.2.1