C# class generation problem:
Classes generated in C# do not automatically get called when the same method gets called through Eo.
So, when the generator generates a class efl.ui.Button, and EFL itself calls a move method on the Button, the move method in C# do not get this call. Which means that C# never gets to know that this method was ever called and so if a class inherits from Button, that class's move override do not get called too.
The class is a one-way communication between C# -> C.
The way to allow a bidirectional communication is for the C# side to create a new class and override all Ops of the overridden class, and when that gets called try to call the most override of that class, with a base default that calls with efl_super, by passing the overridden Eo class.
This means that for each call made to the object, a C# method gets called, independently if that method was overridden or not. And if it was not, calls back through Eo to the implementation from parent class.
This is what is currently the class efl.ui.ButtonInherit for the efl.ui.Button in C#.
My proposal is to have just one concrete, implemented class, that when is overridden creates a new class and does the intermediary to allow override from C#, and if it is not inherited from, does just normal calls.
This, OTH, requires that multiple inheritance from classes is not possible from Eolian. The classes would generate just one single class (and no interface) that would work both ways and interfaces and mixins would generate a class and an interface. The class is necessary because when a method returns an interface, the C# binding must return a class that implements said interface and routes the calls through Eo.
This also restricts creating classes in C# that interoperate with Eolian that do not inherit from a proper Eolian class. All C# classes that will be passed to EFL code will have to inherit from a class, they can't inherit just from interfaces. This follows the idea that all EFL classes inherit, directly or indirectly, from Efl.Object. But this rule is not mandatory for other languages.
Let me know if you have any questions about this proposal.