Update of /cvsroot/pure-data/externals/tkwidgets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26134
Modified Files: checkbutton.c text.c Log Message: cleaned up code and made it nice and organized :D
Index: checkbutton.c =================================================================== RCS file: /cvsroot/pure-data/externals/tkwidgets/checkbutton.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** checkbutton.c 24 Nov 2007 04:07:23 -0000 1.6 --- checkbutton.c 24 Nov 2007 04:51:33 -0000 1.7 *************** *** 114,118 **** }
! static void checkbutton_drawme(t_checkbutton *x, t_glist *glist) { set_tkwidgets_ids(x,glist_getcanvas(glist)); --- 114,118 ---- }
! static void drawme(t_checkbutton *x, t_glist *glist) { set_tkwidgets_ids(x,glist_getcanvas(glist)); *************** *** 133,137 ****
! static void checkbutton_erase(t_checkbutton* x) { sys_vgui("destroy %s\n", x->widget_id->s_name); --- 133,137 ----
! static void eraseme(t_checkbutton* x) { sys_vgui("destroy %s\n", x->widget_id->s_name); *************** *** 203,212 **** t_checkbutton* s = (t_checkbutton*)z; if (vis) ! checkbutton_drawme(s, glist); else ! checkbutton_erase(s); }
! /* --------------------------- methods -------------------------------------- */
static void checkbutton_size(t_checkbutton *x, t_float width, t_float height) --- 203,223 ---- t_checkbutton* s = (t_checkbutton*)z; if (vis) ! drawme(s, glist); else ! eraseme(s); }
! static void checkbutton_save(t_gobj *z, t_binbuf *b) ! { ! t_checkbutton *x = (t_checkbutton *)z; ! binbuf_addv(b, "ssiisii", &s__X, gensym("obj"), ! x->x_obj.te_xpix, x->x_obj.te_ypix, ! atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), ! x->width, x->height); ! // TODO binbuf_addbinbuf(b, x->options_binbuf); ! binbuf_addv(b, ";"); ! } ! ! /* --------------------------- methods for pd space ------------------------- */
static void checkbutton_size(t_checkbutton *x, t_float width, t_float height) *************** *** 250,258 **** t_checkbutton *x = (t_checkbutton *)pd_new(checkbutton_class);
! x->x_glist = (t_glist*) canvas_getcurrent();
x->width = 15; x->height = 15;
x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s); x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace); --- 261,273 ---- t_checkbutton *x = (t_checkbutton *)pd_new(checkbutton_class);
! x->options_binbuf = binbuf_new();
x->width = 15; x->height = 15;
+ if(argc > 0) x->width = atom_getint(argv); + if(argc > 1) x->height = atom_getint(argv + 1); + if(argc > 2) binbuf_add(x->options_binbuf, argc - 2, argv + 2); + x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s); x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace); *************** *** 271,278 **** void checkbutton_setup(void) { ! checkbutton_class = class_new(gensym("checkbutton"), (t_newmethod)checkbutton_new, ! (t_method)checkbutton_free, ! sizeof(t_checkbutton), 0, A_GIMME,0); ! class_addmethod(checkbutton_class, (t_method)checkbutton_query, gensym("query"), A_DEFSYMBOL, 0); --- 286,295 ---- void checkbutton_setup(void) { ! checkbutton_class = class_new(gensym("checkbutton"), ! (t_newmethod)checkbutton_new, ! (t_method)checkbutton_free, ! sizeof(t_checkbutton), 0, A_GIMME,0); ! ! /* methods for pd space */ class_addmethod(checkbutton_class, (t_method)checkbutton_query, gensym("query"), A_DEFSYMBOL, 0); *************** *** 284,287 **** --- 301,305 ---- gensym("query_callback"), A_GIMME, 0);
+ /* widget behavior */ checkbutton_widgetbehavior.w_getrectfn = checkbutton_getrect; checkbutton_widgetbehavior.w_displacefn = checkbutton_displace; *************** *** 292,295 **** --- 310,314 ---- checkbutton_widgetbehavior.w_clickfn = NULL; class_setwidget(checkbutton_class, &checkbutton_widgetbehavior); + class_setsavefn(checkbutton_class, &checkbutton_save); }
Index: text.c =================================================================== RCS file: /cvsroot/pure-data/externals/tkwidgets/text.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** text.c 24 Nov 2007 04:07:23 -0000 1.13 --- text.c 24 Nov 2007 04:51:33 -0000 1.14 *************** *** 132,135 **** --- 132,152 ---- /* -------------------- widget helper functions ----------------------------- */
+ static void query_scrollbars(t_textwidget *x) + { + t_atom state[2]; + SETSYMBOL(state, scrollbars_symbol); + SETFLOAT(state + 1, (t_float)x->have_scrollbars); + textwidget_query_callback(x, gensym("query_callback"), 2, state); + } + + static void query_size(t_textwidget *x) + { + t_atom coords[3]; + SETSYMBOL(coords, size_symbol); + SETFLOAT(coords + 1, (t_float)x->width); + SETFLOAT(coords + 2, (t_float)x->height); + textwidget_query_callback(x, gensym("query_callback"), 3, coords); + } + static void set_tkwidgets_ids(t_textwidget *x, t_canvas *canvas) { *************** *** 180,186 **** }
! static void textwidget_drawme(t_textwidget *x, t_glist *glist) { ! DEBUG(post("textwidget_drawme: firsttime %d canvas %lx glist %lx", x->x_canvas, glist);); set_tkwidgets_ids(x,glist_getcanvas(glist)); create_widget(x); --- 197,203 ---- }
! static void drawme(t_textwidget *x, t_glist *glist) { ! DEBUG(post("drawme: firsttime %d canvas %lx glist %lx", x->x_canvas, glist);); set_tkwidgets_ids(x,glist_getcanvas(glist)); create_widget(x); *************** *** 197,203 **** }
! static void textwidget_erase(t_textwidget* x) { ! DEBUG(post("textwidget_erase: canvas %lx", x->x_canvas);); tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); sys_vgui("destroy %s\n", x->frame_id->s_name); --- 214,220 ---- }
! static void eraseme(t_textwidget* x) { ! DEBUG(post("eraseme: canvas %lx", x->x_canvas);); tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); sys_vgui("destroy %s\n", x->frame_id->s_name); *************** *** 303,328 **** t_textwidget *x = (t_textwidget*)z; DEBUG(post("textwidget_vis: vis %d canvas %lx glist %lx", vis, x->x_canvas, glist);); ! t_rtext *y; ! if (vis) { ! y = (t_rtext *) rtext_new(glist, (t_text *)z); ! textwidget_drawme(x, glist); ! } ! else { ! y = glist_findrtext(glist, (t_text *)z); ! textwidget_erase(x); ! rtext_free(y); ! } }
! /* the clickfn is only called in run mode static int textwidget_click(t_gobj *z, t_glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_textwidget *x = (t_textwidget *)z; ! DEBUG(post("textwidget_click x:%d y:%d edit: %d", xpix, ypix, x->x_canvas->gl_edit);); return 0; } */
static void textwidget_append(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) { --- 320,392 ---- t_textwidget *x = (t_textwidget*)z; DEBUG(post("textwidget_vis: vis %d canvas %lx glist %lx", vis, x->x_canvas, glist);); ! if (vis) ! drawme(x, glist); ! else ! eraseme(x); }
! /* the clickfn is only called in run mode and is therefore not useful AFAIK ! * for this text widget, unless there is something like click to output words ! * implemented, which is what Max/MSP's textedit does */ ! /* static int textwidget_click(t_gobj *z, t_glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_textwidget *x = (t_textwidget *)z; ! DEBUG(post("textwidget_click x:%d y:%d edit: %d", xpix, ypix, x->x_canvas->gl_edit);); return 0; } */
+ static void textwidget_save(t_gobj *z, t_binbuf *b) + { + t_textwidget *x = (t_textwidget *)z; + + binbuf_addv(b, "ssiisiii", &s__X, gensym("obj"), + x->x_obj.te_xpix, x->x_obj.te_ypix, + atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), + x->width, x->height, x->have_scrollbars); + binbuf_addbinbuf(b, x->options_binbuf); + binbuf_addv(b, ";"); + } + + + /* -------------------- methods for atoms ----------------------------------- */ + + /* this function uses the selector as the Tk option and applies the whole + * message directly to the Tk widget itself using Tk's "configure". This + * function is called when "anything" is received. */ + static void textwidget_set_option(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) + { + if(s != &s_list) + { + t_binbuf *argument_binbuf = binbuf_new(); + char *argument_buffer; + int buffer_length; + + binbuf_add(argument_binbuf, argc, argv); + binbuf_gettext(argument_binbuf, &argument_buffer, &buffer_length); + binbuf_free(argument_binbuf); + argument_buffer[buffer_length] = 0; + sys_vgui("%s configure -%s {%s} \n", + x->widget_id->s_name, s->s_name, argument_buffer); + tkwidgets_store_options(x->receive_name, x->tcl_namespace, x->widget_id, + sizeof(textwidget_tk_options)/sizeof(char *), + (char **)&textwidget_tk_options); + } + } + + /* Pass the contents of the text widget onto the textwidget_output_callback + * fuction above */ + static void textwidget_bang_output(t_textwidget* x) + { + /* With "," and ";" escaping thanks to JMZ */ + sys_vgui("pd [concat %s output [string map {"," "\\," ";" "\\;"} \ + [%s get 0.0 end]] \;]\n", + x->receive_name->s_name, x->widget_id->s_name); + } + + /* -------------------- methods for pd space -------------------------------- */ + static void textwidget_append(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) { *************** *** 351,354 **** --- 415,424 ---- }
+ /* Clear the contents of the text widget */ + static void textwidget_clear(t_textwidget* x) + { + sys_vgui("%s delete 0.0 end \n", x->widget_id->s_name); + } + static void textwidget_key(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) { *************** *** 381,390 **** }
- /* Clear the contents of the text widget */ - static void textwidget_clear(t_textwidget* x) - { - sys_vgui("%s delete 0.0 end \n", x->widget_id->s_name); - } - /* Function to reset the contents of the textwidget box */ static void textwidget_set(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) --- 451,454 ---- *************** *** 396,411 **** }
! /* Pass the contents of the text widget onto the textwidget_output_callback fuction above */ ! static void textwidget_bang_output(t_textwidget* x) { ! /* With "," and ";" escaping thanks to JMZ */ ! sys_vgui("pd [concat %s output [string map {"," "\\," ";" "\\;"} \ ! [%s get 0.0 end]] \;]\n", ! x->receive_name->s_name, x->widget_id->s_name); }
! static void textwidget_output_callback(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) { ! outlet_list(x->x_data_outlet, s, argc, argv ); }
--- 460,523 ---- }
! static void textwidget_options(t_textwidget *x) { ! tkwidgets_list_options(x->x_status_outlet, ! sizeof(textwidget_tk_options)/sizeof(char *), ! (char **)&textwidget_tk_options); }
! static void textwidget_query(t_textwidget *x, t_symbol *s) { ! post("textwidget_query %s", s->s_name); ! if(s == &s_) ! { ! tkwidgets_query_options(x->receive_name, x->widget_id, ! sizeof(textwidget_tk_options)/sizeof(char *), ! textwidget_tk_options); ! query_scrollbars(x); ! query_size(x); ! } ! else if(s == scrollbars_symbol) ! query_scrollbars(x); ! else if(s == size_symbol) ! query_size(x); ! else ! tkwidgets_query_options(x->receive_name, x->widget_id, 1, &(s->s_name)); ! } ! ! static void textwidget_scrollbars(t_textwidget *x, t_float f) ! { ! int value = (int) f; ! if(value > 0) ! draw_scrollbar(x); ! else ! erase_scrollbar(x); ! } ! ! static void textwidget_size(t_textwidget *x, t_float width, t_float height) ! { ! DEBUG(post("textwidget_size");); ! x->height = height; ! x->width = width; ! if(glist_isvisible(x->x_glist)) ! { ! sys_vgui("%s itemconfigure %s -width %d -height %d\n", ! x->canvas_id->s_name, x->window_tag->s_name, x->width, x->height); ! tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); ! tkwidgets_draw_iolets((t_object*)x, x->x_glist, ! x->canvas_id, x->iolets_tag, x->all_tag, ! x->width, x->height); ! canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet ! } ! } ! ! /* -------------------- callback functions ---------------------------------- */ ! ! static void textwidget_click_callback(t_textwidget *x, t_floatarg f) ! { ! if( (x->x_glist->gl_edit) && (x->x_glist == x->x_canvas) ) ! { ! textwidget_select((t_gobj *)x, x->x_glist, f); ! } }
*************** *** 422,426 **** output_symbol = gensym(buf); } else ! switch(keycode) { case 32: /* space */ --- 534,538 ---- output_symbol = gensym(buf); } else ! switch(keycode) /* TODO find a way to make this work with all keysyms */ { case 32: /* space */ *************** *** 459,567 **** }
! static void textwidget_save(t_gobj *z, t_binbuf *b) ! { ! t_textwidget *x = (t_textwidget *)z; ! ! binbuf_addv(b, "ssiisiii", &s__X, gensym("obj"), ! x->x_obj.te_xpix, x->x_obj.te_ypix, ! atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), ! x->width, x->height, x->have_scrollbars); ! binbuf_addbinbuf(b, x->options_binbuf); ! binbuf_addv(b, ";"); ! } ! ! /* this function uses the selector as the Tk option and applies the whole ! * message directly to the Tk widget itself using Tk's "configure" */ ! static void textwidget_set_option(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(s != &s_list) ! { ! t_binbuf *argument_binbuf = binbuf_new(); ! char *argument_buffer; ! int buffer_length; ! ! binbuf_add(argument_binbuf, argc, argv); ! binbuf_gettext(argument_binbuf, &argument_buffer, &buffer_length); ! binbuf_free(argument_binbuf); ! argument_buffer[buffer_length] = 0; ! sys_vgui("%s configure -%s {%s} \n", ! x->widget_id->s_name, s->s_name, argument_buffer); ! tkwidgets_store_options(x->receive_name, x->tcl_namespace, x->widget_id, ! sizeof(textwidget_tk_options)/sizeof(char *), ! (char **)&textwidget_tk_options); ! } ! } ! ! static void textwidget_options(t_textwidget *x) ! { ! tkwidgets_list_options(x->x_status_outlet, ! sizeof(textwidget_tk_options)/sizeof(char *), ! (char **)&textwidget_tk_options); ! } ! ! static void query_scrollbars(t_textwidget *x) ! { ! t_atom state[2]; ! SETSYMBOL(state, scrollbars_symbol); ! SETFLOAT(state + 1, (t_float)x->have_scrollbars); ! textwidget_query_callback(x, gensym("query_callback"), 2, state); ! } ! ! static void query_size(t_textwidget *x) ! { ! t_atom coords[3]; ! SETSYMBOL(coords, size_symbol); ! SETFLOAT(coords + 1, (t_float)x->width); ! SETFLOAT(coords + 2, (t_float)x->height); ! textwidget_query_callback(x, gensym("query_callback"), 3, coords); ! } ! ! static void textwidget_query(t_textwidget *x, t_symbol *s) { ! post("textwidget_query %s", s->s_name); ! if(s == &s_) ! { ! tkwidgets_query_options(x->receive_name, x->widget_id, ! sizeof(textwidget_tk_options)/sizeof(char *), ! textwidget_tk_options); ! query_scrollbars(x); ! query_size(x); ! } ! else if(s == scrollbars_symbol) ! query_scrollbars(x); ! else if(s == size_symbol) ! query_size(x); ! else ! tkwidgets_query_options(x->receive_name, x->widget_id, 1, &(s->s_name)); }
! static void textwidget_scrollbars(t_textwidget *x, t_float f) { ! int value = (int) f; ! if(value > 0) ! draw_scrollbar(x); else ! erase_scrollbar(x); ! } ! ! static void textwidget_size(t_textwidget *x, t_float width, t_float height) ! { ! DEBUG(post("textwidget_size");); ! x->height = height; ! x->width = width; ! if(glist_isvisible(x->x_glist)) ! { ! sys_vgui("%s itemconfigure %s -width %d -height %d\n", ! x->canvas_id->s_name, x->window_tag->s_name, x->width, x->height); ! tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); ! tkwidgets_draw_iolets((t_object*)x, x->x_glist, ! x->canvas_id, x->iolets_tag, x->all_tag, ! x->width, x->height); ! canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet ! } }
- /* -------------------- callback functions ---------------------------------- */ - static void textwidget_store_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) { --- 571,588 ---- }
! static void textwidget_output_callback(t_textwidget* x, t_symbol *s, int argc, t_atom *argv) { ! outlet_list(x->x_data_outlet, s, argc, argv ); }
! static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) { ! t_symbol *tmp_symbol = atom_getsymbolarg(0, argc, argv); ! if(tmp_symbol != &s_) ! outlet_anything(x->x_status_outlet, tmp_symbol, argc - 1, argv + 1); else ! post("ERROR: textwidget_query_callback %s %d", s->s_name, argc); }
static void textwidget_store_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) { *************** *** 575,605 **** }
- static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv) - { - t_symbol *tmp_symbol = atom_getsymbolarg(0, argc, argv); - if(tmp_symbol != &s_) - { - post("tmp_symbol %s argc %d", tmp_symbol->s_name, argc); - outlet_anything(x->x_status_outlet, tmp_symbol, argc - 1, argv + 1); - } - else - { - post("ERROR: textwidget_query_callback %s %d", s->s_name, argc); - } - } - - static void textwidget_click_callback(t_textwidget *x, t_floatarg f) - { - if( (x->x_glist->gl_edit) && (x->x_glist == x->x_canvas) ) - { - textwidget_select((t_gobj *)x, x->x_glist, f); - } - } - static void textwidget_resize_click_callback(t_textwidget *x, t_floatarg f) { t_canvas *canvas = (glist_isvisible(x->x_glist) ? x->x_canvas : 0); int button_state = (int)f; ! if (x->x_resizing && !button_state && canvas) { tkwidgets_draw_iolets((t_object*)x, canvas, --- 596,604 ---- }
static void textwidget_resize_click_callback(t_textwidget *x, t_floatarg f) { t_canvas *canvas = (glist_isvisible(x->x_glist) ? x->x_canvas : 0); int button_state = (int)f; ! if(x->x_resizing && !button_state && canvas) { tkwidgets_draw_iolets((t_object*)x, canvas, *************** *** 608,612 **** canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet } ! if (!x->x_resizing && button_state) { tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); --- 607,611 ---- canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet } ! else if(!x->x_resizing && button_state) { tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag); *************** *** 651,671 **** x->x_selected = 0; x->x_resizing = 0; ! ! if (argc < 3) ! { ! post("[text]: less than 3 arguments entered, default values used."); ! x->width = TEXT_DEFAULT_WIDTH; ! x->height = TEXT_DEFAULT_HEIGHT; ! x->have_scrollbars = 0; ! } ! else ! { ! x->width = atom_getint(argv); ! x->height = atom_getint(argv + 1); ! x->have_scrollbars = atom_getint(argv + 2); ! if(argc > 3) ! binbuf_add(x->options_binbuf, argc - 3, argv + 3); ! }
x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s); x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace); --- 650,662 ---- x->x_selected = 0; x->x_resizing = 0; ! x->width = TEXT_DEFAULT_WIDTH; ! x->height = TEXT_DEFAULT_HEIGHT; ! x->have_scrollbars = 0;
+ if(argc > 0) x->width = atom_getint(argv); + if(argc > 1) x->height = atom_getint(argv + 1); + if(argc > 2) x->have_scrollbars = atom_getint(argv + 2); + if(argc > 3) binbuf_add(x->options_binbuf, argc - 3, argv + 3); + x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s); x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace); *************** *** 687,694 **** (t_method)textwidget_free,sizeof(t_textwidget), 0, A_GIMME, 0); ! class_addbang(textwidget_class, (t_method)textwidget_bang_output); class_addanything(textwidget_class, (t_method)textwidget_set_option);
class_addmethod(textwidget_class, (t_method)textwidget_append, gensym("append"), A_GIMME, 0); --- 678,687 ---- (t_method)textwidget_free,sizeof(t_textwidget), 0, A_GIMME, 0); ! ! /* methods for atoms */ class_addbang(textwidget_class, (t_method)textwidget_bang_output); class_addanything(textwidget_class, (t_method)textwidget_set_option);
+ /* methods for pd space */ class_addmethod(textwidget_class, (t_method)textwidget_append, gensym("append"), A_GIMME, 0); *************** *** 709,722 ****
/* callbacks */ - class_addmethod(textwidget_class, (t_method)textwidget_store_callback, - gensym("store_callback"), A_GIMME, 0); - class_addmethod(textwidget_class, (t_method)textwidget_query_callback, - gensym("query_callback"), A_GIMME, 0); - class_addmethod(textwidget_class, (t_method)textwidget_output_callback, - gensym("output"), A_GIMME, 0); - class_addmethod(textwidget_class, (t_method)textwidget_keyup_callback, - gensym("keyup"), A_DEFFLOAT, 0); class_addmethod(textwidget_class, (t_method)textwidget_click_callback, gensym("click"), A_FLOAT, 0); class_addmethod(textwidget_class, (t_method)textwidget_resize_click_callback, gensym("resize_click"), A_FLOAT, 0); --- 702,715 ----
/* callbacks */ class_addmethod(textwidget_class, (t_method)textwidget_click_callback, gensym("click"), A_FLOAT, 0); + class_addmethod(textwidget_class, (t_method)textwidget_keyup_callback, + gensym("keyup"), A_DEFFLOAT, 0); + class_addmethod(textwidget_class, (t_method)textwidget_output_callback, + gensym("output"), A_GIMME, 0); + class_addmethod(textwidget_class, (t_method)textwidget_query_callback, + gensym("query_callback"), A_GIMME, 0); + class_addmethod(textwidget_class, (t_method)textwidget_store_callback, + gensym("store_callback"), A_GIMME, 0); class_addmethod(textwidget_class, (t_method)textwidget_resize_click_callback, gensym("resize_click"), A_FLOAT, 0); *************** *** 724,727 **** --- 717,721 ---- gensym("resize_motion"), A_FLOAT, A_FLOAT, 0);
+ /* widget behavior */ textwidget_widgetbehavior.w_getrectfn = textwidget_getrect; textwidget_widgetbehavior.w_displacefn = textwidget_displace; *************** *** 731,736 **** textwidget_widgetbehavior.w_visfn = textwidget_vis; textwidget_widgetbehavior.w_clickfn = NULL; ! class_setwidget(textwidget_class,&textwidget_widgetbehavior); ! class_setsavefn(textwidget_class,&textwidget_save);
/* commonly used symbols */ --- 725,730 ---- textwidget_widgetbehavior.w_visfn = textwidget_vis; textwidget_widgetbehavior.w_clickfn = NULL; ! class_setwidget(textwidget_class, &textwidget_widgetbehavior); ! class_setsavefn(textwidget_class, &textwidget_save);
/* commonly used symbols */ *************** *** 747,750 **** down_symbol = gensym("down"); } - - --- 741,742 ----