Scott Lawrence avatar Scott Lawrence committed fcd86fc Merge

pull back changes made in beta prep

Comments (0)

Files changed (20)

 b53a0576eec80614d7767ed72b40ed67aeff27c9 2.5.2-release
 92e58e51776a4f8c29069b1a62ff21454d2085f0 2.6.0-start
 f1827b441e05bf37c68e2c15ebc6d09e9b03f527 2.6.0-start
+f1827b441e05bf37c68e2c15ebc6d09e9b03f527 2.6.0-start
+4e9eec6a347f89b2b3f295beb72f1cf7837dff66 2.6.0-start
 9283d6d1d7eb71dfe4c330e7c9144857e7356bde 2.6.0-beta1
 9283d6d1d7eb71dfe4c330e7c9144857e7356bde DRTVWR-40_2.6.0-beta1
 viewer-pre-release.build_viewer_update_version_manager = true
 #viewer-pre-release.release-viewer.jira = DRTVWR-13
 
-# ========================================
-# aimee
-# ========================================
-
-viewer-development-import.build_debug_release_separately = true
-viewer-development-fixes.build_debug_release_separately = true
-viewer-development-tweaks.build_debug_release_separately = true
-
 # =======================================
 # brad
 # ========================================
 # oz
 # ================
 
-oz_viewer-review1_coverity.coverity_product = viewer
-
-oz_viewer-review1.build_Linux = true
-oz_viewer-review1_debug.build_Linux = false
-oz_viewer-review1_coverity.build_Linux = false
-
-oz_viewer-review1.build_Darwin = true
-oz_viewer-review1_debug.build_Darwin = false
-oz_viewer-review1_coverity.build_Darwin = false
-
-oz_viewer-review1.build_CYGWIN = true
-oz_viewer-review1.build_CYGWIN_Debug = false
-oz_viewer-review1.build_CYGWIN_RelWithDebInfo = false
-oz_viewer-review1.build_CYGWIN_Release = true
-oz_viewer-review1_debug.build_CYGWIN_Debug = true
-oz_viewer-review1_debug.build_CYGWIN_RelWithDebInfo = true
-oz_viewer-review1_debug.build_CYGWIN_Release = false
-oz_viewer-review1_coverity.build_coverity = true
-oz_viewer-review1_coverity.build_CYGWIN_Debug = false
-oz_viewer-review1_coverity.build_CYGWIN_RelWithDebInfo = false
-oz_viewer-review1_coverity.build_CYGWIN_Release = false
-
-oz_viewer-review2_coverity.coverity_product = viewer
-
-oz_viewer-review2.build_Linux = true
-oz_viewer-review2_debug.build_Linux = false
-oz_viewer-review2_coverity.build_Linux = false
-
-oz_viewer-review2.build_Darwin = true
-oz_viewer-review2_debug.build_Darwin = false
-oz_viewer-review2_coverity.build_Darwin = false
-
-oz_viewer-review2.build_CYGWIN = true
-oz_viewer-review2.build_CYGWIN_Debug = false
-oz_viewer-review2.build_CYGWIN_RelWithDebInfo = false
-oz_viewer-review2.build_CYGWIN_Release = true
-oz_viewer-review2_debug.build_CYGWIN_Debug = true
-oz_viewer-review2_debug.build_CYGWIN_RelWithDebInfo = true
-oz_viewer-review2_debug.build_CYGWIN_Release = false
-oz_viewer-review2_coverity.build_coverity = true
-oz_viewer-review2_coverity.build_CYGWIN_Debug = false
-oz_viewer-review2_coverity.build_CYGWIN_RelWithDebInfo = false
-oz_viewer-review2_coverity.build_CYGWIN_Release = false
-
-# ========================================
-# tofu
-# ========================================
-
-tofu_viewer-development-staging.email = tofu.linden@lindenlab.com
+oz_viewer-devreview.build_debug_release_separately = true
 
 # ========================================
 # enus

doc/contributions.txt

 	STORM-975
 	STORM-990
 	STORM-1020
+	STORM-1064
 Kage Pixel
 	VWR-11
 Ken March

indra/llcommon/llversionviewer.h

 
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 6;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";

indra/llui/lldockcontrol.cpp

-/** 
- * @file lldockcontrol.cpp
- * @brief Creates a panel of a specific kind for a toast
- *
- * $LicenseInfo:firstyear=2000&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- * 
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "lldockcontrol.h"
-#include "lldockablefloater.h"
-
-LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
-		const LLUIImagePtr& dockTongue, DocAt dockAt, get_allowed_rect_callback_t get_allowed_rect_callback) :
-		mDockWidget(dockWidget),
-		mDockableFloater(dockableFloater),
-		mDockTongue(dockTongue),
-		mDockTongueX(0),
-		mDockTongueY(0)
-{
-	mDockAt = dockAt;
-
-	if (dockableFloater->isDocked())
-	{
-		on();
-	}
-	else
-	{
-		off();
-	}
-
-	if (!(get_allowed_rect_callback))
-	{
-		mGetAllowedRectCallback = boost::bind(&LLDockControl::getAllowedRect, this, _1);
-	}
-	else
-	{
-		mGetAllowedRectCallback = get_allowed_rect_callback;
-	}
-
-	if (dockWidget != NULL) 
-	{
-		repositionDockable();
-	}
-
-	if (mDockWidget != NULL)
-	{
-		mDockWidgetVisible = isDockVisible();
-	}
-	else
-	{
-		mDockWidgetVisible = false;
-	}
-}
-
-LLDockControl::~LLDockControl()
-{
-}
-
-void LLDockControl::setDock(LLView* dockWidget)
-{
-	mDockWidget = dockWidget;
-	if (mDockWidget != NULL)
-	{
-		repositionDockable();
-		mDockWidgetVisible = isDockVisible();
-	}
-	else
-	{
-		mDockWidgetVisible = false;
-	}
-}
-
-void LLDockControl::getAllowedRect(LLRect& rect)
-{
-	rect = mDockableFloater->getRootView()->getRect();
-}
-
-void LLDockControl::repositionDockable()
-{
-	LLRect dockRect = mDockWidget->calcScreenRect();
-	LLRect rootRect;
-	mGetAllowedRectCallback(rootRect);
-
-	// recalculate dockable position if dock position changed, dock visibility changed,
-	// root view rect changed or recalculation is forced
-	if (mPrevDockRect != dockRect  || mDockWidgetVisible != isDockVisible()
-			|| mRootRect != rootRect || mRecalculateDocablePosition)
-	{
-		// undock dockable and off() if dock not visible
-		if (!isDockVisible())
-		{
-			mDockableFloater->setDocked(false);
-			// force off() since dockable may not have dockControll at this time
-			off();
-			LLDockableFloater* dockable_floater =
-					dynamic_cast<LLDockableFloater*> (mDockableFloater);
-			if(dockable_floater != NULL)
-			{
-				dockable_floater->onDockHidden();
-			}
-		}
-		else
-		{
-			if(mEnabled)
-			{
-				moveDockable();
-			}
-			LLDockableFloater* dockable_floater =
-					dynamic_cast<LLDockableFloater*> (mDockableFloater);
-			if(dockable_floater != NULL)
-			{
-				dockable_floater->onDockShown();
-			}
-		}
-
-		mPrevDockRect = dockRect;
-		mRootRect = rootRect;
-		mRecalculateDocablePosition = false;
-		mDockWidgetVisible = isDockVisible();
-	}
-}
-
-bool LLDockControl::isDockVisible()
-{
-	bool res = true;
-
-	if (mDockWidget != NULL)
-	{
-		//we should check all hierarchy
-		res = mDockWidget->isInVisibleChain();
-		if (res)
-		{
-			LLRect dockRect = mDockWidget->calcScreenRect();
-
-			switch (mDockAt)
-			{
-			case LEFT: // to keep compiler happy
-				break;
-			case BOTTOM:
-			case TOP:
-			{
-				// check is dock inside parent rect
-				// assume that parent for all dockable flaoters
-				// is the root view
-				LLRect dockParentRect =
-						mDockWidget->getRootView()->calcScreenRect();
-				if (dockRect.mRight <= dockParentRect.mLeft
-						|| dockRect.mLeft >= dockParentRect.mRight)
-				{
-					res = false;
-				}
-				break;
-			}
-			default:
-				break;
-			}
-		}
-	}
-
-	return res;
-}
-
-void LLDockControl::moveDockable()
-{
-	// calculate new dockable position
-	LLRect dockRect = mDockWidget->calcScreenRect();
-	LLRect rootRect;
-	mGetAllowedRectCallback(rootRect);
-
-	bool use_tongue = false;
-	LLDockableFloater* dockable_floater =
-			dynamic_cast<LLDockableFloater*> (mDockableFloater);
-	if (dockable_floater != NULL)
-	{
-		use_tongue = dockable_floater->getUseTongue();
-	}
-
-	LLRect dockableRect = mDockableFloater->calcScreenRect();
-	S32 x = 0;
-	S32 y = 0;
-	LLRect dockParentRect;
-	switch (mDockAt)
-	{
-	case LEFT:
-		x = dockRect.mLeft;
-		y = dockRect.mTop + mDockTongue->getHeight() + dockableRect.getHeight();
-		// check is dockable inside root view rect
-		if (x < rootRect.mLeft)
-		{
-			x = rootRect.mLeft;
-		}
-		if (x + dockableRect.getWidth() > rootRect.mRight)
-		{
-			x = rootRect.mRight - dockableRect.getWidth();
-		}
-		
-		mDockTongueX = x + dockableRect.getWidth()/2 - mDockTongue->getWidth() / 2;
-		
-		mDockTongueY = dockRect.mTop;
-		break;
-
-	case TOP:
-		x = dockRect.getCenterX() - dockableRect.getWidth() / 2;
-		y = dockRect.mTop + dockableRect.getHeight();
-		// unique docking used with dock tongue, so add tongue height to the Y coordinate
-		if (use_tongue)
-		{
-			y += mDockTongue->getHeight();
-
-			if ( y > rootRect.mTop)
-			{
-				y = rootRect.mTop;
-			}
-		}
-
-		// check is dockable inside root view rect
-		if (x < rootRect.mLeft)
-		{
-			x = rootRect.mLeft;
-		}
-		if (x + dockableRect.getWidth() > rootRect.mRight)
-		{
-			x = rootRect.mRight - dockableRect.getWidth();
-		}
-
-
-		// calculate dock tongue position
-		dockParentRect = mDockWidget->getParent()->calcScreenRect();
-		if (dockRect.getCenterX() < dockParentRect.mLeft)
-		{
-			mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
-		}
-		else if (dockRect.getCenterX() > dockParentRect.mRight)
-		{
-			mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;;
-		}
-		else
-		{
-			mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2;
-		}
-		mDockTongueY = dockRect.mTop;
-
-		break;
-	case BOTTOM:
-		x = dockRect.getCenterX() - dockableRect.getWidth() / 2;
-		y = dockRect.mBottom;
-		// unique docking used with dock tongue, so add tongue height to the Y coordinate
-		if (use_tongue)
-		{
-			y -= mDockTongue->getHeight();
-		}
-
-		// check is dockable inside root view rect
-		if (x < rootRect.mLeft)
-		{
-			x = rootRect.mLeft;
-		}
-		if (x + dockableRect.getWidth() > rootRect.mRight)
-		{
-			x = rootRect.mRight - dockableRect.getWidth();
-		}
-
-		// calculate dock tongue position
-		dockParentRect = mDockWidget->getParent()->calcScreenRect();
-		if (dockRect.getCenterX() < dockParentRect.mLeft)
-		{
-			mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
-		}
-		else if (dockRect.getCenterX() > dockParentRect.mRight)
-		{
-			mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;;
-		}
-		else
-		{
-			mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2;
-		}
-		mDockTongueY = dockRect.mBottom - mDockTongue->getHeight();
-
-		break;
-	}
-
-	S32 max_available_height = rootRect.getHeight() - (rootRect.mBottom -  mDockTongueY) - mDockTongue->getHeight();
-
-	// A floater should be shrunk so it doesn't cover a part of its docking tongue and
-	// there is a space between a dockable floater and a control to which it is docked.
-	if (use_tongue && dockableRect.getHeight() >= max_available_height)
-	{
-		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), max_available_height);
-		mDockableFloater->reshape(dockableRect.getWidth(), dockableRect.getHeight());
-	}
-	else
-	{
-		// move dockable
-		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(),
-				dockableRect.getHeight());
-	}
-	LLRect localDocableParentRect;
-	mDockableFloater->getParent()->screenRectToLocal(dockableRect,
-			&localDocableParentRect);
-	mDockableFloater->setRect(localDocableParentRect);
-
-	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY,
-			&mDockTongueX, &mDockTongueY);
-
-}
-
-void LLDockControl::on()
-{
-	 if (isDockVisible())
-	{
-		mEnabled = true;
-		mRecalculateDocablePosition = true;
-	}
-}
-
-void LLDockControl::off()
-{
-	mEnabled = false;
-}
-
-void LLDockControl::forceRecalculatePosition()
-{
-	mRecalculateDocablePosition = true;
-}
-
-void LLDockControl::drawToungue()
-{
-	bool use_tongue = false;
-	LLDockableFloater* dockable_floater =
-			dynamic_cast<LLDockableFloater*> (mDockableFloater);
-	if (dockable_floater != NULL)
-	{
-		use_tongue = dockable_floater->getUseTongue();
-	}
-
-	if (mEnabled && use_tongue)
-	{
-		mDockTongue->draw(mDockTongueX, mDockTongueY);
-	}
-}
-
+/** 
+ * @file lldockcontrol.cpp
+ * @brief Creates a panel of a specific kind for a toast
+ *
+ * $LicenseInfo:firstyear=2000&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "lldockcontrol.h"
+#include "lldockablefloater.h"
+
+LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
+		const LLUIImagePtr& dockTongue, DocAt dockAt, get_allowed_rect_callback_t get_allowed_rect_callback) :
+		mDockWidget(dockWidget),
+		mDockableFloater(dockableFloater),
+		mDockTongue(dockTongue),
+		mDockTongueX(0),
+		mDockTongueY(0)
+{
+	mDockAt = dockAt;
+
+	if (dockableFloater->isDocked())
+	{
+		on();
+	}
+	else
+	{
+		off();
+	}
+
+	if (!(get_allowed_rect_callback))
+	{
+		mGetAllowedRectCallback = boost::bind(&LLDockControl::getAllowedRect, this, _1);
+	}
+	else
+	{
+		mGetAllowedRectCallback = get_allowed_rect_callback;
+	}
+
+	if (dockWidget != NULL) 
+	{
+		repositionDockable();
+	}
+
+	if (mDockWidget != NULL)
+	{
+		mDockWidgetVisible = isDockVisible();
+	}
+	else
+	{
+		mDockWidgetVisible = false;
+	}
+}
+
+LLDockControl::~LLDockControl()
+{
+}
+
+void LLDockControl::setDock(LLView* dockWidget)
+{
+	mDockWidget = dockWidget;
+	if (mDockWidget != NULL)
+	{
+		repositionDockable();
+		mDockWidgetVisible = isDockVisible();
+	}
+	else
+	{
+		mDockWidgetVisible = false;
+	}
+}
+
+void LLDockControl::getAllowedRect(LLRect& rect)
+{
+	rect = mDockableFloater->getRootView()->getRect();
+}
+
+void LLDockControl::repositionDockable()
+{
+	LLRect dockRect = mDockWidget->calcScreenRect();
+	LLRect rootRect;
+	mGetAllowedRectCallback(rootRect);
+
+	// recalculate dockable position if dock position changed, dock visibility changed,
+	// root view rect changed or recalculation is forced
+	if (mPrevDockRect != dockRect  || mDockWidgetVisible != isDockVisible()
+			|| mRootRect != rootRect || mRecalculateDocablePosition)
+	{
+		// undock dockable and off() if dock not visible
+		if (!isDockVisible())
+		{
+			mDockableFloater->setDocked(false);
+			// force off() since dockable may not have dockControll at this time
+			off();
+			LLDockableFloater* dockable_floater =
+					dynamic_cast<LLDockableFloater*> (mDockableFloater);
+			if(dockable_floater != NULL)
+			{
+				dockable_floater->onDockHidden();
+			}
+		}
+		else
+		{
+			if(mEnabled)
+			{
+				moveDockable();
+			}
+			LLDockableFloater* dockable_floater =
+					dynamic_cast<LLDockableFloater*> (mDockableFloater);
+			if(dockable_floater != NULL)
+			{
+				dockable_floater->onDockShown();
+			}
+		}
+
+		mPrevDockRect = dockRect;
+		mRootRect = rootRect;
+		mRecalculateDocablePosition = false;
+		mDockWidgetVisible = isDockVisible();
+	}
+}
+
+bool LLDockControl::isDockVisible()
+{
+	bool res = true;
+
+	if (mDockWidget != NULL)
+	{
+		//we should check all hierarchy
+		res = mDockWidget->isInVisibleChain();
+		if (res)
+		{
+			LLRect dockRect = mDockWidget->calcScreenRect();
+
+			switch (mDockAt)
+			{
+			case LEFT: // to keep compiler happy
+				break;
+			case BOTTOM:
+			case TOP:
+			{
+				// check is dock inside parent rect
+				// assume that parent for all dockable flaoters
+				// is the root view
+				LLRect dockParentRect =
+						mDockWidget->getRootView()->calcScreenRect();
+				if (dockRect.mRight <= dockParentRect.mLeft
+						|| dockRect.mLeft >= dockParentRect.mRight)
+				{
+					res = false;
+				}
+				break;
+			}
+			default:
+				break;
+			}
+		}
+	}
+
+	return res;
+}
+
+void LLDockControl::moveDockable()
+{
+	// calculate new dockable position
+	LLRect dockRect = mDockWidget->calcScreenRect();
+	LLRect rootRect;
+	mGetAllowedRectCallback(rootRect);
+
+	bool use_tongue = false;
+	LLDockableFloater* dockable_floater =
+			dynamic_cast<LLDockableFloater*> (mDockableFloater);
+	if (dockable_floater != NULL)
+	{
+		use_tongue = dockable_floater->getUseTongue();
+	}
+
+	LLRect dockableRect = mDockableFloater->calcScreenRect();
+	S32 x = 0;
+	S32 y = 0;
+	LLRect dockParentRect;
+	switch (mDockAt)
+	{
+	case LEFT:
+		x = dockRect.mLeft;
+		y = dockRect.mTop + mDockTongue->getHeight() + dockableRect.getHeight();
+		// check is dockable inside root view rect
+		if (x < rootRect.mLeft)
+		{
+			x = rootRect.mLeft;
+		}
+		if (x + dockableRect.getWidth() > rootRect.mRight)
+		{
+			x = rootRect.mRight - dockableRect.getWidth();
+		}
+		
+		mDockTongueX = x + dockableRect.getWidth()/2 - mDockTongue->getWidth() / 2;
+		
+		mDockTongueY = dockRect.mTop;
+		break;
+
+	case TOP:
+		x = dockRect.getCenterX() - dockableRect.getWidth() / 2;
+		y = dockRect.mTop + dockableRect.getHeight();
+		// unique docking used with dock tongue, so add tongue height to the Y coordinate
+		if (use_tongue)
+		{
+			y += mDockTongue->getHeight();
+
+			if ( y > rootRect.mTop)
+			{
+				y = rootRect.mTop;
+			}
+		}
+
+		// check is dockable inside root view rect
+		if (x < rootRect.mLeft)
+		{
+			x = rootRect.mLeft;
+		}
+		if (x + dockableRect.getWidth() > rootRect.mRight)
+		{
+			x = rootRect.mRight - dockableRect.getWidth();
+		}
+
+
+		// calculate dock tongue position
+		dockParentRect = mDockWidget->getParent()->calcScreenRect();
+		if (dockRect.getCenterX() < dockParentRect.mLeft)
+		{
+			mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
+		}
+		else if (dockRect.getCenterX() > dockParentRect.mRight)
+		{
+			mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;;
+		}
+		else
+		{
+			mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2;
+		}
+		mDockTongueY = dockRect.mTop;
+
+		break;
+	case BOTTOM:
+		x = dockRect.getCenterX() - dockableRect.getWidth() / 2;
+		y = dockRect.mBottom;
+		// unique docking used with dock tongue, so add tongue height to the Y coordinate
+		if (use_tongue)
+		{
+			y -= mDockTongue->getHeight();
+		}
+
+		// check is dockable inside root view rect
+		if (x < rootRect.mLeft)
+		{
+			x = rootRect.mLeft;
+		}
+		if (x + dockableRect.getWidth() > rootRect.mRight)
+		{
+			x = rootRect.mRight - dockableRect.getWidth();
+		}
+
+		// calculate dock tongue position
+		dockParentRect = mDockWidget->getParent()->calcScreenRect();
+		if (dockRect.getCenterX() < dockParentRect.mLeft)
+		{
+			mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
+		}
+		else if (dockRect.getCenterX() > dockParentRect.mRight)
+		{
+			mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;;
+		}
+		else
+		{
+			mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2;
+		}
+		mDockTongueY = dockRect.mBottom - mDockTongue->getHeight();
+
+		break;
+	}
+
+	S32 max_available_height = rootRect.getHeight() - (rootRect.mBottom -  mDockTongueY) - mDockTongue->getHeight();
+
+	// A floater should be shrunk so it doesn't cover a part of its docking tongue and
+	// there is a space between a dockable floater and a control to which it is docked.
+	if (use_tongue && dockableRect.getHeight() >= max_available_height)
+	{
+		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), max_available_height);
+		mDockableFloater->reshape(dockableRect.getWidth(), dockableRect.getHeight());
+	}
+	else
+	{
+		// move dockable
+		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(),
+				dockableRect.getHeight());
+	}
+	LLRect localDocableParentRect;
+	mDockableFloater->getParent()->screenRectToLocal(dockableRect,
+			&localDocableParentRect);
+	mDockableFloater->setRect(localDocableParentRect);
+
+	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY,
+			&mDockTongueX, &mDockTongueY);
+
+}
+
+void LLDockControl::on()
+{
+	 if (isDockVisible())
+	{
+		mEnabled = true;
+		mRecalculateDocablePosition = true;
+	}
+}
+
+void LLDockControl::off()
+{
+	mEnabled = false;
+}
+
+void LLDockControl::forceRecalculatePosition()
+{
+	mRecalculateDocablePosition = true;
+}
+
+void LLDockControl::drawToungue()
+{
+	bool use_tongue = false;
+	LLDockableFloater* dockable_floater =
+			dynamic_cast<LLDockableFloater*> (mDockableFloater);
+	if (dockable_floater != NULL)
+	{
+		use_tongue = dockable_floater->getUseTongue();
+	}
+
+	if (mEnabled && use_tongue)
+	{
+		mDockTongue->draw(mDockTongueX, mDockTongueY);
+	}
+}
+

indra/llui/llfloater.cpp

 	// close callback 
 	if (p.close_callback.isProvided())
 	{
-		mCloseSignal.connect(initCommitCallback(p.close_callback));
+		setCloseCallback(initCommitCallback(p.close_callback));
 	}
 }
 
 	return mMinimizeSignal->connect(cb); 
 }
 
+boost::signals2::connection LLFloater::setCloseCallback( const commit_signal_t::slot_type& cb )
+{
+	return mCloseSignal.connect(cb);
+}
+
 LLFastTimer::DeclareTimer POST_BUILD("Floater Post Build");
 
 bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node)

indra/llui/llfloater.h

 	bool buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL);
 
 	boost::signals2::connection setMinimizeCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setCloseCallback( const commit_signal_t::slot_type& cb );
 
 	void initFromParams(const LLFloater::Params& p);
 	bool initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node = NULL);

indra/media_plugins/winmmshim/CMakeLists.txt

 project(winmm_shim)
 
 ### winmm_shim
-# *HACK - override msvcrt implementation (intialized on 00-Common) to be
-# statically linked for winmm.dll this relies on vc taking the last flag on
-# the command line
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
+# *HACK - override msvcrt implementation (intialized on 00-Common) to be
+# statically linked for winmm.dll this relies on vc taking the last flag on
+# the command line
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
 
 set(winmm_shim_SOURCE_FILES
     forwarding_api.cpp
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.