Le 2011-11-04 à 23:36:00, Ivica Ico Bukvic a écrit :
Because after studying the code it looked like a difficult thing to pull off. This is because the regular displacefn is used for initial posting of objects which is absolute in nature while displacewithtag is relative, so the two don’t play very nice.
My experience with t_widgetbehavior and reading IEMGUI code is that the API is not designed to match what implementors really need to say about their own GUI objects.
E.g. if each object uses two tags per canvas item, one of which is common to every item in the object, then Pd can tell Tk to delete all items of that object, and then t_deletefn needs not be implemented at all. (Desiredata works like that)
There are other things like that, so that in the end, the number of methods to be implemented is more like 2, rather than 7 or 8.
BTW, IEMGUI code is not a good example, but it's nearly the only one we have (most other GUI externals imitate them in some way). IEMGUI defines its own t_widgetbehavior-like thing using an enum IEM_GUI_DRAW_MODE_stuff and a single function-pointer. It didn't need to work like that. So, when reading that code, you have to imagine what it would have looked like if it had been using t_widgetbehavior in a straightforward way, before you can analyse it as an example of use of t_widgetbehavior.
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC