diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp
index b830498cb0b5db280e2cad0105412d48899c6307..c9bfe178ce430a3e417e0feaa32541dc3cd05011 100644
--- a/indra/newview/lltransientdockablefloater.cpp
+++ b/indra/newview/lltransientdockablefloater.cpp
@@ -39,9 +39,10 @@
 
 LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockControl, bool uniqueDocking,
 		const LLSD& key, const Params& params) :
-		LLDockableFloater(dockControl, uniqueDocking, key, params), LLTransientFloater(this)
+		LLDockableFloater(dockControl, uniqueDocking, key, params)
 {
 	LLTransientFloaterMgr::getInstance()->registerTransientFloater(this);
+	LLTransientFloater::init(this);
 }
 
 LLTransientDockableFloater::~LLTransientDockableFloater()
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
index f474f47eb799d3cec479177043b614870bb661f5..8f1a738453f996e81bbe71b1a53248ecb4ff1402 100644
--- a/indra/newview/lltransientfloatermgr.cpp
+++ b/indra/newview/lltransientfloatermgr.cpp
@@ -139,3 +139,9 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
 	}
 }
 
+void LLTransientFloater::init(LLFloater* thiz)
+{
+	// used since LLTransientFloater(this) can't be used in descendant constructor parameter initialization.
+	mFloater = thiz;
+}
+
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 95eba666a035a4c7c849f1c98d7c882fc8ff4187..aecc5a505d566ad0cd48e48d4a68d4244bb8905d 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -75,8 +75,13 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
  */
 class LLTransientFloater
 {
+protected:
+	/**
+	 * Class initialization method.
+	 * Should be called from descendant constructor.
+	 */
+	void init(LLFloater* thiz);
 public:
-	LLTransientFloater(LLFloater* floater) : mFloater(floater) {}
 	virtual LLTransientFloaterMgr::ETransientGroup getGroup() = 0;
 	bool isTransientDocked() { return mFloater->isDocked(); };
 	void setTransientVisible(BOOL visible) {mFloater->setVisible(visible); }