summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llfloater.cpp84
-rw-r--r--indra/llui/llfloater.h23
-rw-r--r--indra/llui/llfloaterreg.cpp73
-rw-r--r--indra/llui/llfloaterreg.h2
-rw-r--r--indra/llui/lltoolbar.cpp93
-rw-r--r--indra/llui/lltoolbar.h10
-rw-r--r--indra/newview/app_settings/settings.xml4
-rw-r--r--indra/newview/llnearbychatbar.cpp9
-rw-r--r--indra/newview/llnearbychatbar.h2
-rw-r--r--indra/newview/lltoolbarview.cpp15
-rw-r--r--indra/newview/lltoolbarview.h2
-rw-r--r--indra/newview/skins/default/textures/textures.xml6
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_bottom.pngbin169 -> 195 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_left.pngbin913 -> 948 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/caret_right.pngbin911 -> 949 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_chat_bar.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_destinations.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_moveview.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_toolbar_view.xml12
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
22 files changed, 257 insertions, 97 deletions
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 1e6c8b4a71..81b14aac17 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -175,6 +175,8 @@ LLFloater::Params::Params()
save_visibility("save_visibility", false),
can_dock("can_dock", false),
open_positioning("open_positioning", LLFloaterEnums::OPEN_POSITIONING_NONE),
+ specified_left("specified_left"),
+ specified_bottom("specified_bottom"),
header_height("header_height", 0),
legacy_header_height("legacy_header_height", 0),
close_image("close_image"),
@@ -242,6 +244,9 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
mCanClose(p.can_close),
mDragOnLeft(p.can_drag_on_left),
mResizable(p.can_resize),
+ mOpenPositioning(p.open_positioning),
+ mSpecifiedLeft(p.specified_left),
+ mSpecifiedBottom(p.specified_bottom),
mMinWidth(p.min_width),
mMinHeight(p.min_height),
mHeaderHeight(p.header_height),
@@ -679,6 +684,7 @@ void LLFloater::openFloater(const LLSD& key)
}
else
{
+ applyControlsAndPosition(LLFloaterReg::getLastFloaterCascading());
setMinimized(FALSE);
setVisibleAndFrontmost(mAutoFocus);
}
@@ -841,39 +847,54 @@ LLMultiFloater* LLFloater::getHost()
return (LLMultiFloater*)mHostHandle.get();
}
-void LLFloater::applySavedVariables()
+void LLFloater::applyControlsAndPosition(LLFloater* other)
{
- applyRectControl();
- applyDockState();
+ if (!applyDockState())
+ {
+ if (!applyRectControl())
+ {
+ applyPositioning(other);
+ }
+ }
}
-void LLFloater::applyRectControl()
+bool LLFloater::applyRectControl()
{
+ bool saved_rect = false;
+
// If we have a saved rect, use it
if (mRectControl.size() > 1)
{
const LLRect& rect = getControlGroup()->getRect(mRectControl);
- if (rect.notEmpty())
+ saved_rect = rect.notEmpty();
+ if (saved_rect)
{
setOrigin(rect.mLeft, rect.mBottom);
+
if (mResizable)
{
reshape(llmax(mMinWidth, rect.getWidth()), llmax(mMinHeight, rect.getHeight()));
}
}
}
+
+ return saved_rect;
}
-void LLFloater::applyDockState()
+bool LLFloater::applyDockState()
{
+ bool docked = false;
+
if (mDocStateControl.size() > 1)
{
- bool dockState = getControlGroup()->getBOOL(mDocStateControl);
- setDocked(dockState);
+ docked = getControlGroup()->getBOOL(mDocStateControl);
+ setDocked(docked);
}
+
+ return docked;
}
-void LLFloater::applyPositioning()
+void LLFloater::applyPositioning(LLFloater* other)
{
// Otherwise position according to the positioning code
switch (mOpenPositioning)
@@ -885,28 +906,33 @@ void LLFloater::applyPositioning()
case LLFloaterEnums::OPEN_POSITIONING_SPECIFIED:
{
// Translate relative to snap rect
- LLRect r = getRect();
- r.mBottom = getSnapRect().getHeight() - r.getHeight() - r.mBottom;
- setOrigin(r.mLeft, r.mBottom);
- translateIntoRect(getSnapRect(), FALSE);
+ setOrigin(mSpecifiedLeft, mSpecifiedBottom);
+ const LLRect& snap_rect = gFloaterView->getSnapRect();
+ translate(snap_rect.mLeft, snap_rect.mBottom);
+ translateIntoRect(snap_rect, FALSE);
}
break;
case LLFloaterEnums::OPEN_POSITIONING_CASCADING:
+ if (other != NULL)
{
- static const U32 CASCADING_FLOATER_HOFFSET = 25;
- static const U32 CASCADING_FLOATER_VOFFSET = 25;
- static const S32 CASCADING_FLOATER_LIMIT = 15;
- static S32 cascading_floater_count = 1;
- const S32 top = CASCADING_FLOATER_VOFFSET * cascading_floater_count;
- const S32 left = CASCADING_FLOATER_HOFFSET * cascading_floater_count;
- setOrigin(left, top);
- translateIntoRect(getSnapRect(), FALSE);
+ stackWith(*other);
+ }
+ else
+ {
+ static const U32 CASCADING_FLOATER_HOFFSET = 0;
+ static const U32 CASCADING_FLOATER_VOFFSET = 0;
+
+ const LLRect& snap_rect = gFloaterView->getSnapRect();
- if (++cascading_floater_count > CASCADING_FLOATER_LIMIT)
- {
- cascading_floater_count = 1;
- }
+ const S32 horizontal_offset = CASCADING_FLOATER_HOFFSET;
+ const S32 vertical_offset = snap_rect.getHeight() - CASCADING_FLOATER_VOFFSET;
+
+ S32 rect_height = getRect().getHeight();
+ setOrigin(horizontal_offset, vertical_offset - rect_height);
+
+ translate(snap_rect.mLeft, snap_rect.mBottom);
+ translateIntoRect(snap_rect, FALSE);
}
break;
@@ -2952,9 +2978,11 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
mHeaderHeight = p.header_height;
mLegacyHeaderHeight = p.legacy_header_height;
mSingleInstance = p.single_instance;
+
mOpenPositioning = p.open_positioning;
+ mSpecifiedLeft = p.specified_left;
+ mSpecifiedBottom = p.specified_bottom;
- /*
if (p.save_rect && mRectControl.empty())
{
mRectControl = "t"; // flag to build mRectControl name once mInstanceName is set
@@ -2962,8 +2990,7 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
if (p.save_visibility)
{
mVisibilityControl = "t"; // flag to build mVisibilityControl name once mInstanceName is set
- }*/
-
+ }
if(p.save_dock_state)
{
mDocStateControl = "t"; // flag to build mDocStateControl name once mInstanceName is set
@@ -3114,7 +3141,6 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::str
llerrs << "Failed to construct floater " << getName() << llendl;
}
- applyPositioning();
applyRectControl(); // If we have a saved rect control, apply it
gFloaterView->adjustToFitScreen(this, FALSE); // Floaters loaded from XML should all fit on screen
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 5e3d3aefc9..7cfec09e5f 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -131,6 +131,9 @@ public:
can_dock;
Optional<LLFloaterEnums::EOpenPositioning> open_positioning;
+ Optional<S32> specified_left;
+ Optional<S32> specified_bottom;
+
Optional<S32> header_height,
legacy_header_height; // HACK see initFromXML()
@@ -212,8 +215,8 @@ public:
void addDependentFloater(LLFloater* dependent, BOOL reposition = TRUE);
void addDependentFloater(LLHandle<LLFloater> dependent_handle, BOOL reposition = TRUE);
LLFloater* getDependee() { return (LLFloater*)mDependeeHandle.get(); }
- void removeDependentFloater(LLFloater* dependent);
- BOOL isMinimized() const { return mMinimized; }
+ void removeDependentFloater(LLFloater* dependent);
+ BOOL isMinimized() const { return mMinimized; }
void setVisibleWhenMinimized(bool visible);
bool getVisibleWhenMinimized() const { return mVisibleWhenMinimized;}
/// isShown() differs from getVisible() in that isShown() also considers
@@ -294,8 +297,6 @@ public:
virtual void setTornOff(bool torn_off) { mTornOff = torn_off; }
- void stackWith(LLFloater& other);
-
// Return a closeable floater, if any, given the current focus.
static LLFloater* getClosableFloaterFromFocus();
@@ -320,12 +321,16 @@ public:
void updateTransparency(ETypeTransparency transparency_type);
void enableResizeCtrls(bool enable, bool width = true, bool height = true);
+
+ bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mOpenPositioning); }
protected:
- virtual void applySavedVariables();
+ void applyControlsAndPosition(LLFloater* other);
+
+ void stackWith(LLFloater& other);
- virtual void applyRectControl();
- void applyDockState();
- void applyPositioning();
+ virtual bool applyRectControl();
+ bool applyDockState();
+ void applyPositioning(LLFloater* other);
void storeRectControl();
void storeVisibilityControl();
void storeDockStateControl();
@@ -415,6 +420,8 @@ private:
BOOL mResizable;
LLFloaterEnums::EOpenPositioning mOpenPositioning;
+ S32 mSpecifiedLeft;
+ S32 mSpecifiedBottom;
S32 mMinWidth;
S32 mMinHeight;
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index 058223abbd..a148f5a32e 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -59,19 +59,57 @@ void LLFloaterReg::add(const std::string& name, const std::string& filename, con
//static
LLFloater* LLFloaterReg::getLastFloaterInGroup(const std::string& name)
{
- LLRect rect;
const std::string& groupname = sGroupMap[name];
if (!groupname.empty())
{
instance_list_t& list = sInstanceMap[groupname];
if (!list.empty())
{
- return list.back();
+ for (instance_list_t::reverse_iterator iter = list.rbegin(); iter != list.rend(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && !inst->isMinimized())
+ {
+ return inst;
+ }
+ }
}
}
return NULL;
}
+LLFloater* LLFloaterReg::getLastFloaterCascading()
+{
+ LLRect candidate_rect;
+ candidate_rect.mTop = 100000;
+ LLFloater* candidate_floater = NULL;
+
+ std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+ for( ; it != it_end; ++it)
+ {
+ const std::string& group_name = it->second;
+
+ instance_list_t& instances = sInstanceMap[group_name];
+
+ for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && inst->isPositioning(LLFloaterEnums::OPEN_POSITIONING_CASCADING))
+ {
+ if (candidate_rect.mTop > inst->getRect().mTop)
+ {
+ candidate_floater = inst;
+ candidate_rect = inst->getRect();
+ }
+ }
+ }
+ }
+
+ return candidate_floater;
+}
+
//static
LLFloater* LLFloaterReg::findInstance(const std::string& name, const LLSD& key)
{
@@ -127,9 +165,10 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key)
res->mKey = key;
}
res->setInstanceName(name);
- res->applySavedVariables(); // Can't apply rect and dock state until setting instance name
- // apply list.size() and possibly stackWith(getLastFloaterInGroup(groupname))
+ LLFloater *last_floater = (list.empty() ? NULL : list.back());
+ res->applyControlsAndPosition(last_floater);
+
gFloaterView->adjustToFitScreen(res, false);
list.push_back(res);
@@ -533,3 +572,29 @@ bool LLFloaterReg::floaterInstanceMinimized(const LLSD& sdname)
LLFloater* instance = findInstance(name, key);
return LLFloater::isShown(instance);
}
+
+// static
+U32 LLFloaterReg::getVisibleFloaterInstanceCount()
+{
+ U32 count = 0;
+
+ std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+ for( ; it != it_end; ++it)
+ {
+ const std::string& group_name = it->second;
+
+ instance_list_t& instances = sInstanceMap[group_name];
+
+ for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+ {
+ LLFloater* inst = *iter;
+
+ if (inst->getVisible() && !inst->isMinimized())
+ {
+ count++;
+ }
+ }
+ }
+
+ return count;
+}
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index 07ae45cc4c..817fe2e8c6 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -87,6 +87,7 @@ public:
// Helpers
static LLFloater* getLastFloaterInGroup(const std::string& name);
+ static LLFloater* getLastFloaterCascading();
// Find / get (create) / remove / destroy
static LLFloater* findInstance(const std::string& name, const LLSD& key = LLSD());
@@ -153,6 +154,7 @@ public:
static void blockShowFloaters(bool value) { sBlockShowFloaters = value;}
+ static U32 getVisibleFloaterInstanceCount();
};
#endif
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index fc5ec5ea26..e67e18872c 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -99,6 +99,7 @@ LLToolBar::LLToolBar(const LLToolBar::Params& p)
mSideType(p.side),
mWrap(p.wrap),
mNeedsLayout(false),
+ mModified(false),
mButtonPanel(NULL),
mCenteringStack(NULL),
mPadLeft(p.pad_left),
@@ -395,12 +396,14 @@ void LLToolBar::resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row
// Returns the position of the coordinates as a rank in the button list.
// The rank is the position a tool dropped in (x,y) would assume in the button list.
-// The value returned is between 0 and mButtons.size(), 0 being the first element to the left
+// The returned value is between 0 and mButtons.size(), 0 being the first element to the left
// (or top) and mButtons.size() the last one to the right (or bottom).
-int LLToolBar::getRankFromPosition(S32& x, S32& y)
+// Various drag data are stored in the toolbar object though are not exposed outside (and shouldn't).
+int LLToolBar::getRankFromPosition(S32 x, S32 y)
{
int rank = 0;
+ // Convert the toolbar coord into button panel coords
LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
S32 button_panel_x = 0;
S32 button_panel_y = 0;
@@ -408,32 +411,72 @@ int LLToolBar::getRankFromPosition(S32& x, S32& y)
S32 dx = x - button_panel_x;
S32 dy = y - button_panel_y;
- // Simply compare the passed coord with the buttons outbound box
+ // Simply compare the passed coord with the buttons outbound box + padding
std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
std::list<LLToolBarButton*>::iterator end_button = mButtons.end();
LLRect button_rect;
while (it_button != end_button)
{
button_rect = (*it_button)->getRect();
- if (((orientation == LLLayoutStack::HORIZONTAL) && (button_rect.mRight > button_panel_x)) ||
- ((orientation == LLLayoutStack::VERTICAL) && (button_rect.mBottom < button_panel_y)) )
+ S32 point_x, point_y;
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ // Horizontal
+ point_x = (button_rect.mRight + button_rect.mLeft) / 2;
+ point_y = button_rect.mBottom - mPadBottom;
+ }
+ else
+ {
+ // Vertical
+ point_x = button_rect.mRight + mPadRight;
+ point_y = (button_rect.mTop + button_rect.mBottom) / 2;
+ }
+
+ if ((button_panel_x < point_x) && (button_panel_y > point_y))
{
break;
}
+ mDragCommand = (*it_button)->mId;
rank++;
++it_button;
}
- if (it_button != end_button)
+
+ // Update the passed coordinates to the hit button relevant corner
+ // (different depending on toolbar orientation)
+ if (rank < mButtons.size())
+ {
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mTop + mPadTop;
+ }
+ else
+ {
+ // We hit passed the end of the list so put the insertion point at the end
+ if (orientation == LLLayoutStack::HORIZONTAL)
{
- x = button_rect.mLeft + dx;
- y = button_rect.mTop + dy;
+ mDragx = button_rect.mRight + mPadRight;
+ mDragy = button_rect.mTop + mPadTop;
}
else
{
- x = button_rect.mRight + dx;
- y = button_rect.mBottom + dy;
+ mDragx = button_rect.mLeft - mPadLeft;
+ mDragy = button_rect.mBottom - mPadBottom;
+ }
}
+ // Update the "girth" of the caret, i.e. the width or height (depending of orientation)
+ if (orientation == LLLayoutStack::HORIZONTAL)
+ {
+ mDragGirth = button_rect.getHeight() + mPadBottom + mPadTop;
+ }
+ else
+ {
+ mDragGirth = button_rect.getWidth() + mPadLeft + mPadRight;
+ }
+
+ // The delta account for the coord model change (i.e. convert back to toolbar coord)
+ mDragx += dx;
+ mDragy += dy;
+
return rank;
}
@@ -628,26 +671,18 @@ void LLToolBar::draw()
{
LLRect caret_rect = caret->getRect();
LLRect toolbar_rect = getRect();
- if (mSideType == SIDE_BOTTOM)
+ if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
{
caret->setRect(LLRect(mDragx-caret_rect.getWidth()/2+1,
- toolbar_rect.getHeight()+3,
+ mDragy,
mDragx+caret_rect.getWidth()/2+1,
- toolbar_rect.getHeight()-caret_rect.getHeight()+3));
- }
- else if (mSideType == SIDE_LEFT)
- {
-
- caret->setRect(LLRect(toolbar_rect.getWidth()-caret_rect.getWidth()+3,
- mDragy+caret_rect.getHeight()/2,
- toolbar_rect.getWidth()+3,
- mDragy-caret_rect.getHeight()/2));
+ mDragy-mDragGirth));
}
else
{
- caret->setRect(LLRect(-3,
+ caret->setRect(LLRect(mDragx,
mDragy+caret_rect.getHeight()/2,
- caret_rect.getWidth()-3,
+ mDragx+mDragGirth,
mDragy-caret_rect.getHeight()/2));
}
caret->setVisible(TRUE);
@@ -788,16 +823,20 @@ BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
LLAssetType::EType type = inv_item->getType();
if (type == LLAssetType::AT_WIDGET)
{
- mDragx = x;
- mDragy = y;
- mDragRank = getRankFromPosition(mDragx, mDragy);
- mDragAndDropTarget = true;
+ mDragRank = getRankFromPosition(x, y);
+ // Don't DaD if we're dragging a command on itself
+ mDragAndDropTarget = (mDragCommand.uuid() != inv_item->getUUID());
+ //llinfos << "Merov debug : DaD, rank = " << mDragRank << ", hit uuid = " << mDragCommand.uuid() << ", dragged uui = " << inv_item->getUUID() << llendl;
/* Do the following if you want to animate the button itself
LLCommandId dragged_command(inv_item->getUUID());
removeCommand(dragged_command);
addCommand(dragged_command,rank);
*/
}
+ else
+ {
+ handled = FALSE;
+ }
}
return handled;
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 72fc5630bc..8d38bc0234 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -160,7 +160,7 @@ public:
// virtuals
void draw();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
- int getRankFromPosition(S32& x, S32& y);
+ int getRankFromPosition(S32 x, S32 y);
BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
EDragAndDropType cargo_type,
@@ -182,7 +182,8 @@ public:
LLToolBarButton* createButton(const LLCommandId& id);
- bool hasButtons() { return !mButtons.empty(); }
+ bool hasButtons() const { return !mButtons.empty(); }
+ bool isModified() const { return mModified; }
protected:
friend class LLUICtrlFactory;
@@ -196,7 +197,9 @@ protected:
bool mDragAndDropTarget;
int mDragRank;
S32 mDragx,
- mDragy;
+ mDragy,
+ mDragGirth;
+ LLCommandId mDragCommand;
public:
// Methods used in loading and saving toolbar settings
@@ -229,6 +232,7 @@ private:
bool mWrap;
bool mNeedsLayout;
+ bool mModified;
S32 mPadLeft,
mPadRight,
mPadTop,
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 3298d6c627..4b847dfbf7 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -619,7 +619,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/avatars.html</string>
+ <string>http://drofnas.components.pdp48.lindenlab.com/avatars.html</string>
</map>
<key>AvatarBakedTextureUploadTimeout</key>
<map>
@@ -2717,7 +2717,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html</string>
+ <string>http://drofnas.components.pdp48.lindenlab.com/guide.html</string>
</map>
<key>DisableCameraConstraints</key>
<map>
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index cd84275ef0..3e4228cfb6 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -109,15 +109,18 @@ BOOL LLNearbyChatBar::postBuild()
return TRUE;
}
-void LLNearbyChatBar::applyRectControl()
+bool LLNearbyChatBar::applyRectControl()
{
- LLFloater::applyRectControl();
- if (getRect().getHeight() > getMinHeight())
+ bool rect_controlled = LLFloater::applyRectControl();
+
+ if (getRect().getHeight() > getMinHeight())
{
getChildView("nearby_chat")->setVisible(true);
mExpandedHeight = getRect().getHeight();
enableResizeCtrls(true);
}
+
+ return rect_controlled;
}
void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index 5a7edac1bb..bc00c1b9fc 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -71,7 +71,7 @@ protected:
void onChatBoxCommit();
void onChatFontChange(LLFontGL* fontp);
- /* virtual */ void applyRectControl();
+ /* virtual */ bool applyRectControl();
void onToggleNearbyChatPanel();
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
index 133835aafc..b43c4e80fa 100644
--- a/indra/newview/lltoolbarview.cpp
+++ b/indra/newview/lltoolbarview.cpp
@@ -394,11 +394,13 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp
BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar)
{
+ BOOL handled = FALSE;
LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
LLAssetType::EType type = inv_item->getType();
if (type == LLAssetType::AT_WIDGET)
{
+ handled = TRUE;
// Get the command from its uuid
LLCommandManager& mgr = LLCommandManager::instance();
LLCommandId command_id(inv_item->getUUID());
@@ -443,7 +445,7 @@ BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* t
}
}
stopDragTool();
- return TRUE;
+ return handled;
}
void LLToolBarView::stopDragTool()
@@ -471,3 +473,14 @@ void LLToolBarView::setToolBarsVisible(bool visible)
mToolbarLeft->getParent()->setVisible(visible);
mToolbarRight->getParent()->setVisible(visible);
}
+
+bool LLToolBarView::isModified() const
+{
+ bool modified = false;
+
+ modified |= mToolbarBottom->isModified();
+ modified |= mToolbarLeft->isModified();
+ modified |= mToolbarRight->isModified();
+
+ return modified;
+}
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
index 01ff137c15..8b3af43875 100644
--- a/indra/newview/lltoolbarview.h
+++ b/indra/newview/lltoolbarview.h
@@ -81,6 +81,8 @@ public:
static BOOL handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar);
static void stopDragTool();
void onEndDrag();
+
+ bool isModified() const;
protected:
friend class LLUICtrlFactory;
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 4f34352516..25f1903131 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -149,9 +149,9 @@ with the same filename but different name
<texture name="Command_Speak_Icon" file_name="toolbar_icons/speak.png" preload="true" />
<texture name="Command_View_Icon" file_name="toolbar_icons/view.png" preload="true" />
<texture name="Command_Voice_Icon" file_name="toolbar_icons/nearbyvoice.png" preload="true" />
- <texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" />
- <texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" />
- <texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" />
+ <texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
+ <texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
+ <texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
index d506cda5c9..5f6a01eaa1 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
index b1284aaf79..0b8090314c 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
index bf6a4ed66c..044751560f 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
index 6e5c4ada48..3c7de6f334 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -5,7 +5,7 @@
can_close="true"
can_resize="true"
min_height="230"
- min_width="445"
+ min_width="450"
height="230"
layout="topleft"
name="Avatar"
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 7f3abbb481..20d0fa1c91 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
open_positioning="specified"
+ specified_left="683"
+ specified_bottom="0"
legacy_header_height="18"
can_minimize="true"
can_close="true"
follows="bottom"
height="164"
layout="topleft"
- left="683"
- bottom="0"
name="camera_floater"
help_topic="camera_floater"
save_visibility="true"
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
index 924e4bc11e..9229741801 100644
--- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
open_positioning="specified"
+ specified_left="150"
+ specified_bottom="0"
height="60"
- left="150"
- bottom="0"
layout="topleft"
legacy_header_height="25"
single_instance="true"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 2b48a9f6d6..e63dc02a57 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -7,7 +7,7 @@
user_resize="true"
can_resize="true"
min_height="230"
- min_width="525"
+ min_width="350"
height="230"
layout="topleft"
name="Destinations"
@@ -22,6 +22,5 @@
width="840"
follows="all"
name="destination_guide_contents"
- start_url="http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html"
trusted_content="true"/>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 3d23a94ec2..cbbd68beb3 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
open_positioning="specified"
+ specified_left="535"
+ specified_bottom="0"
legacy_header_height="18"
can_dock="false"
can_minimize="true"
can_close="true"
follows="bottom"
height="110"
- left="535"
- bottom="0"
layout="topleft"
name="move_floater"
help_topic="move_floater"
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
index 9ffd62f7a9..5475fcd245 100644
--- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -48,8 +48,8 @@
side="left"
button_display_mode="icons_only">
<icon layout="topleft"
- height="10"
- width="10"
+ height="15"
+ width="28"
follows="left|top"
top="20"
left="10"
@@ -99,8 +99,8 @@
side="right"
button_display_mode="icons_only">
<icon layout="topleft"
- height="10"
- width="10"
+ height="15"
+ width="28"
follows="left|top"
top="20"
left="10"
@@ -130,8 +130,8 @@
button_display_mode="icons_with_text"
visible="true">
<icon layout="topleft"
- height="10"
- width="10"
+ height="28"
+ width="15"
follows="left|top"
top="20"
left="10"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index f19cfa19f2..04fc5c868c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3695,7 +3695,7 @@ Try enclosing path to the editor with double quotes.
<string name="Command_MiniMap_Tooltip">Show nearby people</string>
<string name="Command_Move_Tooltip">Moving your avatar</string>
<string name="Command_People_Tooltip">Friends, groups, and nearby people</string>
- <string name="Command_Picks_Tooltip">Favorite places</string>
+ <string name="Command_Picks_Tooltip">Places to show as favorites in your profile</string>
<string name="Command_Places_Tooltip">Places you've saved</string>
<string name="Command_Preferences_Tooltip">Preferences</string>
<string name="Command_Profile_Tooltip">Edit or view your profile</string>