Quote:
jacadcaps wrote:
That's called the "know how" ;) From a MUI application programmer's POV you really don't need to know how those internals work, do you?
The MUI app coder can and will fiddle and shuffle around his code until it does what he wants. May work and be perfectly fine/bug free on his system but he may still have created illegal code if he does not know some of this internal stuff. Will only ever show up with different version of MUI and/or external MUI classes.
For example he may do:
Code:
struct TagItem tags[] = {MUIA_Something, bla, TAG_DONE};
SetAttrsA(extclassobj, tags);
SetAttrsA(extclassobj2, tags);
Some time later a new version 2 of extclass is released which changed mSet method to do
Code:
if (val != oldval)
{
...
}
else
{
tag->ti_Tag = TAG_IGNORE;
}
(which it did not do in version 1) and with this the app all of the sudden becomes buggy.
MUI contains far too few info on what things apps/classes may do and may not do. If doing certain things or settings certain attributes in methods is allowed or not. Resulted in some weird stuff out there. For example texteditor mcc to be able to draw inside handleevent code does some trickery by calling MUI_Redraw() and flag'ing itself that what it really want to do in the following MUIM_Draw is to do the handleevent stuff. What then happens is that you have code during/inside MUIM_Draw which normally isn't there. Like OM_SETs. Those may trigger notifications. Which may trigger rerendering of other objects. But what if the texteditor obj is inside a virtual group and MUI set up a clip region to restrict rendering to visible parts of virtual group. And that other notified object is outside that clip region. Depending on MUI version or MUI clone maybe behaviour differs. One version may do some optimization and drop clipping of the texteditor obj to virtgroup, if texteditor obj is fully visible within virtgroup. Another maybe future version may decide that it would make sense to always clip every drawing to object's boundaries (even if they are no virtgroups involved), because most GUI toolkits on other systems do so, too?