diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index 9a2f2ab4d319c5a24fb45e59bc342634ce2c8c04..9c69e4f2b66fb75b0f849a27d162ddaf85724ec9 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -206,16 +206,6 @@ void LLDockableFloater::draw()
 	LLFloater::draw();
 }
 
-void LLDockableFloater::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	if (isDocked())
-	{
-		setDocked(false);
-	}
-
-	LLFloater::reshape(width, height, called_from_parent);
-}
-
 void LLDockableFloater::setDockControl(LLDockControl* dockControl)
 {
 	mDockControl.reset(dockControl);
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index e5f94dca91e9219edaf2e5185aaac3e15a1b9bd0..46491d8a29e9743bca40046254a26f217e7c070d 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -65,7 +65,6 @@ class LLDockableFloater : public LLFloater
 	/* virtula */BOOL postBuild();
 	/* virtual */void setDocked(bool docked, bool pop_on_undock = true);
 	/* virtual */void draw();
-	/* virtual */void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
 	/**
 	 *  If descendant class overrides setVisible() then it must still invoke its
diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp
index 7449c339a0dfacdd5deed2ab1d2c0dfa4295a325..6239a8f7214ddc093d16348b6ef0101338d08804 100644
--- a/indra/llui/llresizehandle.cpp
+++ b/indra/llui/llresizehandle.cpp
@@ -135,6 +135,12 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)
 		LLView* resizing_view = getParent();
 		if( resizing_view )
 		{
+			// undock floater when user resize it
+			if (((LLFloater*)getParent())->isDocked())
+			{
+				((LLFloater*)getParent())->setDocked(false, false);
+			}
+
 			// Resize the parent
 			LLRect orig_rect = resizing_view->getRect();
 			LLRect scaled_rect = orig_rect;