-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/120572/#review68467
-----------------------------------------------------------


Honestly, I have no idea how stuff got this convoluted in flake. It looks like 
I added those lines, but the git blame is just because of the koffice/calligra 
rename... And I cannot dig far enough back to figure it out. In any case, if 
everything still seems to work for you, go ahead and push.

- Boudewijn Rempt


On Oct. 13, 2014, 5:13 p.m., Friedrich W. H. Kossebau wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/120572/
> -----------------------------------------------------------
> 
> (Updated Oct. 13, 2014, 5:13 p.m.)
> 
> 
> Review request for Calligra, Boudewijn Rempt and Thorsten Zachmann.
> 
> 
> Repository: calligra
> 
> 
> Description
> -------
> 
> If you load a file into Stage from current master, you see a lot of "Unknown 
> shapes" on the screen (possibly mapping to some question marks in your head). 
> Seems the plugins for Text shapes and Vector shapes are not available. I 
> tried to find an answer to those questionmarks, and here is my story:
> 
> In Stage these days the singleton KoToolRegistry is created before the 
> KoShapeRegistry one. So the init() method of it starts to load all "Flake" 
> plugins and create their respective plugin objects, of which the first is 
> (for me) the Formula Shape. Its constructor now has
> ```c++
>    KoToolRegistry::instance()->add( new KoFormulaToolFactory() );
> #ifndef _MSC_VER
>     KoToolRegistry::instance()->add( new KoM2MMLFormulaToolFactory());
> #endif
>     KoShapeRegistry::instance()->add( new KoFormulaShapeFactory() );
> ```
> So first gets the KoToolRegistry instance (where we are still in the 
> constructor code actually, doooh) and adds 1-2 factories there, and then... 
> calls for the singleton of KoShapeRegistry. That one does not yet exist, so 
> one is created and in its constructor, yes, goes to load Flake and Shape 
> plugins. Just, when going for the Flake plugins, KoPluginLoader will no 
> longer deliver any Flake plugins to KoShapeRegistry, because
> ```c++
>     // Don't load the same plugins again
>     if (d->loadedServiceTypes.contains(serviceType)) {
>         return;
>     }
> ```
> and in the still ongoing call from KoToolRegistry to 
> `KoPluginLoader::instance()->load(...)` for Flakes the servicetype was 
> registered as first step.
> 
> So when KoShapeRegistry's init method comes to `insertFactory(factories[i]);` 
> it will miss out all Flake plugins, because none yet could register 
> themselves to KoShapeRegistry, as the first trying to reach the singleton of 
> KoShapeRegistry blocked the loading of Flakes until that singleton was done. 
> And when it is done, it has already tried to learn about the factories.
> 
> Somehow this all calls for a redesign. But for now the attached patch, which 
> only loads Flakes in KoShapeRegistry's init, seems to work for me.
> 
> By the commit log it seems like this duplication to KoShapeRegistry which 
> also loads "Flake"s was there forever. So no idea if that is needed perhaps? 
> But I could not see any problem on a quick testing of all apps.
> 
> 
> Diffs
> -----
> 
>   libs/flake/KoToolRegistry.cpp bbb9681 
> 
> Diff: https://git.reviewboard.kde.org/r/120572/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Friedrich W. H. Kossebau
> 
>

_______________________________________________
calligra-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/calligra-devel

Reply via email to