Cependant, la maintenance de ce code n’est pas très aisée (ni même l’adaptation fine de son rendu). Le problème principal est sa conception, assez monolithique mais configurable (on peut choisir les fonctionnalités disponibles à l’utilisateur, même si peu de gens le font, jusqu’aux animations), avec un code spaghetti (mélangeant allègrement la logique et l’état du composant). Tout changement risque donc de créer un grand nombre de régressions.
KDAB a donc décidé de se lancer dans une nouvelle génération de ce composant, pour le moment externe à Qt. KDDockWidgets cherche à simplifier fortement la conception du composant, tout en facilitant son adaptation aux situations particulières. Pour l’utilisateur, le changement principal est l’ajout d’indicateurs précis pour déposer des éléments de l’interface graphique, en plus de la liberté totale en termes de zones d’accrochage. La notion de widget central disparaît, il ne s’agit plus d’un élément spécifique ; aussi, on peut avoir des onglets en combinant plusieurs composants. Les groupes de composants peuvent librement passer d’une fenêtre externe (qui ne contient que ce groupe de composants) à la fenêtre principale (une fonctionnalité partiellement implémentée dans Qt 5.10).
La nouvelle organisation sépare clairement la logique de l’interface graphique, de telle sorte que le moteur d’exécution sous-jacent peut facilement être réutilisé pour des interfaces Qt Quick (ce qui est prévu à terme). Elle facilite aussi la personnalisation de l’interface, l’utilisateur pouvant fournir ses propres widgets pour n’importe quelle partie de l’interface.
Cette bibliothèque est déjà utilisée en interne chez KDAB, mais son interface n’est pas encore fixée. Cela devrait bientôt arriver, avec des garanties de stabilité de l’interface (au niveau des sources et des binaires), en vue d’une version 1.0. Elle n’est disponible que sous la licence GPL (2 ou 3), pas LGPL, ce qui en limitera fortement l’utilisation dans les projets libres ; pour les projets commerciaux, KDAB propose d’autres licences.
Voir le code source de KDDockWidgets.