diff --git a/Libs/Widgets/ctkProxyStyle.cpp b/Libs/Widgets/ctkProxyStyle.cpp index a1598298c8..c27f2397e0 100644 --- a/Libs/Widgets/ctkProxyStyle.cpp +++ b/Libs/Widgets/ctkProxyStyle.cpp @@ -38,11 +38,13 @@ class ctkProxyStylePrivate private: ctkProxyStylePrivate(ctkProxyStyle& object); mutable QPointer baseStyle; + mutable bool ensureBaseStyleInProgress; }; // ---------------------------------------------------------------------------- ctkProxyStylePrivate::ctkProxyStylePrivate(ctkProxyStyle& object) : q_ptr(&object) + , ensureBaseStyleInProgress(false) { } @@ -102,6 +104,12 @@ ctkProxyStyle::~ctkProxyStyle() void ctkProxyStyle::ensureBaseStyle() const { Q_D(const ctkProxyStyle); + if (d->ensureBaseStyleInProgress) + { + // avoid infinite loop + return; + } + d->ensureBaseStyleInProgress = true; d->baseStyle = this->baseStyle(); // Set the proxy to the entire hierarchy. QProxyStyle* proxyStyle = const_cast(qobject_cast( @@ -115,6 +123,7 @@ void ctkProxyStyle::ensureBaseStyle() const baseStyle = proxy ? proxy->baseStyle() : 0; } d->setBaseStyle(proxyStyle, proxyBaseStyle); + d->ensureBaseStyleInProgress = false; } // ----------------------------------------------------------------------------