Following recent discussions with Vladislav about virtual inheritance in the context of rP22596 / D2136,
a measurement that showed that dynamic_cast is 80 times slower than static_cast to determine the child class from the virtually inherited class, and following the Coding_Conventions recommending that too,
this patch removes the virtual inheritance by contiuing to inherit all base classes (but not virtually), passing the IGUIObject& *this reference to the base classes, and registering the GetTextSize function in the leaf class (CText).
Hence the patch removes the forced workaround for the dynamic_cast and allows future code like D1346 to be introduced without virtual inheritance.
Cheesy graphics:
Before the patch, virtual inheritance solved the "Diamond Problem" https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem
With this patch applied the dependency graph looks like this (gray = pointer):