Fix release merge issues (included upstream changes not yet in release from bear)
parent
d4e622daf2
commit
970ee73e9a
|
|
@ -506,8 +506,6 @@ namespace
|
|||
|
||||
LLSD::array_iterator beginArray() { return mData.begin(); }
|
||||
LLSD::array_iterator endArray() { return mData.end(); }
|
||||
LLSD::reverse_array_iterator rbeginArray() { return mData.rbegin(); }
|
||||
LLSD::reverse_array_iterator rendArray() { return mData.rend(); }
|
||||
virtual LLSD::array_const_iterator beginArray() const { return mData.begin(); }
|
||||
virtual LLSD::array_const_iterator endArray() const { return mData.end(); }
|
||||
|
||||
|
|
@ -949,9 +947,6 @@ LLSD::array_iterator LLSD::endArray() { return makeArray(impl).endArray(); }
|
|||
LLSD::array_const_iterator LLSD::beginArray() const{ return safe(impl).beginArray(); }
|
||||
LLSD::array_const_iterator LLSD::endArray() const { return safe(impl).endArray(); }
|
||||
|
||||
LLSD::reverse_array_iterator LLSD::rbeginArray() { return makeArray(impl).rbeginArray(); }
|
||||
LLSD::reverse_array_iterator LLSD::rendArray() { return makeArray(impl).rendArray(); }
|
||||
|
||||
namespace llsd
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -320,15 +320,11 @@ public:
|
|||
|
||||
typedef std::vector<LLSD>::iterator array_iterator;
|
||||
typedef std::vector<LLSD>::const_iterator array_const_iterator;
|
||||
typedef std::vector<LLSD>::reverse_iterator reverse_array_iterator;
|
||||
|
||||
|
||||
array_iterator beginArray();
|
||||
array_iterator endArray();
|
||||
array_const_iterator beginArray() const;
|
||||
array_const_iterator endArray() const;
|
||||
|
||||
reverse_array_iterator rbeginArray();
|
||||
reverse_array_iterator rendArray();
|
||||
//@}
|
||||
|
||||
/** @name Type Testing */
|
||||
|
|
|
|||
|
|
@ -114,9 +114,6 @@ static const F32 MEM_INFO_THROTTLE = 20;
|
|||
static const F32 MEM_INFO_WINDOW = 10*60;
|
||||
|
||||
#if LL_WINDOWS
|
||||
// We cannot trust GetVersionEx function on Win8.1 , we should check this value when creating OS string
|
||||
static const U32 WINNT_WINBLUE = 0x0603;
|
||||
|
||||
#ifndef DLLVERSIONINFO
|
||||
typedef struct _DllVersionInfo
|
||||
{
|
||||
|
|
@ -217,26 +214,6 @@ static bool regex_search_no_exc(const S& string, M& match, const R& regex)
|
|||
}
|
||||
}
|
||||
|
||||
#if LL_WINDOWS
|
||||
// GetVersionEx should not works correct with Windows 8.1 and the later version. We need to check this case
|
||||
static bool check_for_version(WORD wMajorVersion, WORD wMinorVersion, WORD wServicePackMajor)
|
||||
{
|
||||
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
|
||||
DWORDLONG const dwlConditionMask = VerSetConditionMask(
|
||||
VerSetConditionMask(
|
||||
VerSetConditionMask(
|
||||
0, VER_MAJORVERSION, VER_GREATER_EQUAL),
|
||||
VER_MINORVERSION, VER_GREATER_EQUAL),
|
||||
VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
|
||||
|
||||
osvi.dwMajorVersion = wMajorVersion;
|
||||
osvi.dwMinorVersion = wMinorVersion;
|
||||
osvi.wServicePackMajor = wServicePackMajor;
|
||||
|
||||
return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
LLOSInfo::LLOSInfo() :
|
||||
mMajorVer(0), mMinorVer(0), mBuild(0), mOSVersionString("")
|
||||
|
|
@ -245,7 +222,6 @@ LLOSInfo::LLOSInfo() :
|
|||
#if LL_WINDOWS
|
||||
OSVERSIONINFOEX osvi;
|
||||
BOOL bOsVersionInfoEx;
|
||||
BOOL bShouldUseShellVersion = false;
|
||||
|
||||
// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
|
||||
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
|
||||
|
|
@ -308,18 +284,10 @@ LLOSInfo::LLOSInfo() :
|
|||
}
|
||||
else if(osvi.dwMinorVersion == 2)
|
||||
{
|
||||
if (check_for_version(HIBYTE(WINNT_WINBLUE), LOBYTE(WINNT_WINBLUE), 0))
|
||||
{
|
||||
mOSStringSimple = "Microsoft Windows 8.1 ";
|
||||
bShouldUseShellVersion = true; // GetVersionEx failed, going to use shell version
|
||||
}
|
||||
if(osvi.wProductType == VER_NT_WORKSTATION)
|
||||
mOSStringSimple = "Microsoft Windows 8 ";
|
||||
else
|
||||
{
|
||||
if(osvi.wProductType == VER_NT_WORKSTATION)
|
||||
mOSStringSimple = "Microsoft Windows 8 ";
|
||||
else
|
||||
mOSStringSimple = "Windows Server 2012 ";
|
||||
}
|
||||
mOSStringSimple = "Windows Server 2012 ";
|
||||
}
|
||||
|
||||
///get native system info if available..
|
||||
|
|
@ -386,8 +354,9 @@ LLOSInfo::LLOSInfo() :
|
|||
}
|
||||
else
|
||||
{
|
||||
tmpstr = !bShouldUseShellVersion ? llformat("%s (Build %d)", csdversion.c_str(), (osvi.dwBuildNumber & 0xffff)):
|
||||
llformat("%s (Build %d)", csdversion.c_str(), shell32_build);
|
||||
tmpstr = llformat("%s (Build %d)",
|
||||
csdversion.c_str(),
|
||||
(osvi.dwBuildNumber & 0xffff));
|
||||
}
|
||||
|
||||
mOSString = mOSStringSimple + tmpstr;
|
||||
|
|
@ -423,7 +392,7 @@ LLOSInfo::LLOSInfo() :
|
|||
std::string compatibility_mode;
|
||||
if(got_shell32_version)
|
||||
{
|
||||
if((osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor) && !bShouldUseShellVersion)
|
||||
if(osvi.dwMajorVersion != shell32_major || osvi.dwMinorVersion != shell32_minor)
|
||||
{
|
||||
compatibility_mode = llformat(" compatibility mode. real ver: %d.%d (Build %d)",
|
||||
shell32_major,
|
||||
|
|
|
|||
|
|
@ -414,6 +414,117 @@ BOOL LLParcel::allowTerraformBy(const LLUUID &agent_id) const
|
|||
}
|
||||
|
||||
|
||||
bool LLParcel::isAgentBlockedFromParcel(LLParcel* parcelp,
|
||||
const LLUUID& agent_id,
|
||||
const uuid_vec_t& group_ids,
|
||||
const BOOL is_agent_identified,
|
||||
const BOOL is_agent_transacted,
|
||||
const BOOL is_agent_ageverified)
|
||||
{
|
||||
S32 current_group_access = parcelp->blockAccess(agent_id, LLUUID::null, is_agent_identified, is_agent_transacted, is_agent_ageverified);
|
||||
S32 count;
|
||||
bool is_allowed = (current_group_access == BA_ALLOWED) ? true: false;
|
||||
LLUUID group_id;
|
||||
|
||||
count = group_ids.size();
|
||||
for (int i = 0; i < count && !is_allowed; i++)
|
||||
{
|
||||
group_id = group_ids[i];
|
||||
current_group_access = parcelp->blockAccess(agent_id, group_id, is_agent_identified, is_agent_transacted, is_agent_ageverified);
|
||||
|
||||
if (current_group_access == BA_ALLOWED) is_allowed = true;
|
||||
}
|
||||
|
||||
return !is_allowed;
|
||||
}
|
||||
|
||||
BOOL LLParcel::isAgentBanned(const LLUUID& agent_id) const
|
||||
{
|
||||
// Test ban list
|
||||
if (mBanList.find(agent_id) != mBanList.end())
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
S32 LLParcel::blockAccess(const LLUUID& agent_id, const LLUUID& group_id,
|
||||
const BOOL is_agent_identified,
|
||||
const BOOL is_agent_transacted,
|
||||
const BOOL is_agent_ageverified) const
|
||||
{
|
||||
// Test ban list
|
||||
if (isAgentBanned(agent_id))
|
||||
{
|
||||
return BA_BANNED;
|
||||
}
|
||||
|
||||
// Always allow owner on (unless he banned himself, useful for
|
||||
// testing). We will also allow estate owners/managers in if they
|
||||
// are not explicitly banned.
|
||||
if (agent_id == mOwnerID)
|
||||
{
|
||||
return BA_ALLOWED;
|
||||
}
|
||||
|
||||
// Special case when using pass list where group access is being restricted but not
|
||||
// using access list. In this case group members are allowed only if they buy a pass.
|
||||
// We return BA_NOT_IN_LIST if not in list
|
||||
BOOL passWithGroup = getParcelFlag(PF_USE_PASS_LIST) && !getParcelFlag(PF_USE_ACCESS_LIST)
|
||||
&& getParcelFlag(PF_USE_ACCESS_GROUP) && !mGroupID.isNull() && group_id == mGroupID;
|
||||
|
||||
|
||||
// Test group list
|
||||
if (getParcelFlag(PF_USE_ACCESS_GROUP)
|
||||
&& !mGroupID.isNull()
|
||||
&& group_id == mGroupID
|
||||
&& !passWithGroup)
|
||||
{
|
||||
return BA_ALLOWED;
|
||||
}
|
||||
|
||||
// Test access list
|
||||
if (getParcelFlag(PF_USE_ACCESS_LIST) || passWithGroup )
|
||||
{
|
||||
if (mAccessList.find(agent_id) != mAccessList.end())
|
||||
{
|
||||
return BA_ALLOWED;
|
||||
}
|
||||
|
||||
return BA_NOT_ON_LIST;
|
||||
}
|
||||
|
||||
// If we're not doing any other limitations, all users
|
||||
// can enter, unless
|
||||
if ( !getParcelFlag(PF_USE_ACCESS_GROUP)
|
||||
&& !getParcelFlag(PF_USE_ACCESS_LIST))
|
||||
{
|
||||
//If the land is group owned, and you are in the group, bypass these checks
|
||||
if(getIsGroupOwned() && group_id == mGroupID)
|
||||
{
|
||||
return BA_ALLOWED;
|
||||
}
|
||||
|
||||
// Test for "payment" access levels
|
||||
// Anonymous - No Payment Info on File
|
||||
if(getParcelFlag(PF_DENY_ANONYMOUS) && !is_agent_identified && !is_agent_transacted)
|
||||
{
|
||||
return BA_NO_ACCESS_LEVEL;
|
||||
}
|
||||
// AgeUnverified - Not Age Verified
|
||||
if(getParcelFlag(PF_DENY_AGEUNVERIFIED) && !is_agent_ageverified)
|
||||
{
|
||||
return BA_NOT_AGE_VERIFIED;
|
||||
}
|
||||
|
||||
return BA_ALLOWED;
|
||||
}
|
||||
|
||||
return BA_NOT_IN_GROUP;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void LLParcel::setArea(S32 area, S32 sim_object_limit)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -527,6 +527,23 @@ public:
|
|||
// Can this agent change the shape of the land?
|
||||
BOOL allowTerraformBy(const LLUUID &agent_id) const;
|
||||
|
||||
// Returns 0 if access is OK, otherwise a BA_ return code above.
|
||||
S32 blockAccess(const LLUUID& agent_id,
|
||||
const LLUUID& group_id,
|
||||
const BOOL is_agent_identified,
|
||||
const BOOL is_agent_transacted,
|
||||
const BOOL is_agent_ageverified) const;
|
||||
|
||||
// Only checks if the agent is explicitly banned from this parcel
|
||||
BOOL isAgentBanned(const LLUUID& agent_id) const;
|
||||
|
||||
static bool isAgentBlockedFromParcel(LLParcel* parcelp,
|
||||
const LLUUID& agent_id,
|
||||
const uuid_vec_t& group_ids,
|
||||
const BOOL is_agent_identified,
|
||||
const BOOL is_agent_transacted,
|
||||
const BOOL is_agent_ageverified);
|
||||
|
||||
bool operator==(const LLParcel &rhs) const;
|
||||
|
||||
// Calculate rent - area * rent * discount rate
|
||||
|
|
|
|||
|
|
@ -166,8 +166,7 @@ void calc_tangent_from_triangle(
|
|||
|
||||
F32 rd = s1*t2-s2*t1;
|
||||
|
||||
float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
|
||||
: ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
|
||||
float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
|
||||
|
||||
llassert(llfinite(r));
|
||||
llassert(!llisnan(r));
|
||||
|
|
@ -6790,8 +6789,7 @@ void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVe
|
|||
|
||||
F32 rd = s1*t2-s2*t1;
|
||||
|
||||
float r = ((rd*rd) > FLT_EPSILON) ? (1.0f / rd)
|
||||
: ((rd > 0.0f) ? 1024.f : -1024.f); //some made up large ratio for division by zero
|
||||
float r = ((rd*rd) > FLT_EPSILON) ? 1.0F / rd : 1024.f; //some made up large ratio for division by zero
|
||||
|
||||
llassert(llfinite(r));
|
||||
llassert(!llisnan(r));
|
||||
|
|
|
|||
|
|
@ -534,13 +534,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
|
|||
}
|
||||
}
|
||||
|
||||
void LLComboBox::setLeftTextPadding(S32 pad)
|
||||
{
|
||||
S32 left_pad, right_pad;
|
||||
mTextEntry->getTextPadding(&left_pad, &right_pad);
|
||||
mTextEntry->setTextPadding(pad, right_pad);
|
||||
}
|
||||
|
||||
void* LLComboBox::getCurrentUserdata()
|
||||
{
|
||||
LLScrollListItem* item = mList->getFirstSelected();
|
||||
|
|
|
|||
|
|
@ -190,8 +190,6 @@ public:
|
|||
virtual BOOL operateOnAll(EOperation op);
|
||||
|
||||
//========================================================================
|
||||
|
||||
void setLeftTextPadding(S32 pad);
|
||||
|
||||
void* getCurrentUserdata();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ const LLCommandId LLCommandId::null = LLCommandId("null command");
|
|||
LLCommand::Params::Params()
|
||||
: available_in_toybox("available_in_toybox", false)
|
||||
, icon("icon")
|
||||
, hover_icon("hover_icon")
|
||||
, label_ref("label_ref")
|
||||
, name("name")
|
||||
, tooltip_ref("tooltip_ref")
|
||||
|
|
@ -72,7 +71,6 @@ LLCommand::LLCommand(const LLCommand::Params& p)
|
|||
: mIdentifier(p.name)
|
||||
, mAvailableInToybox(p.available_in_toybox)
|
||||
, mIcon(p.icon)
|
||||
, mHoverIcon(p.hover_icon)
|
||||
, mLabelRef(p.label_ref)
|
||||
, mName(p.name)
|
||||
, mTooltipRef(p.tooltip_ref)
|
||||
|
|
|
|||
|
|
@ -96,8 +96,6 @@ public:
|
|||
Mandatory<std::string> name;
|
||||
Mandatory<std::string> tooltip_ref;
|
||||
|
||||
Optional<std::string> hover_icon;
|
||||
|
||||
Mandatory<std::string> execute_function;
|
||||
Optional<LLSD> execute_parameters;
|
||||
|
||||
|
|
@ -126,7 +124,6 @@ public:
|
|||
const std::string& labelRef() const { return mLabelRef; }
|
||||
const std::string& name() const { return mName; }
|
||||
const std::string& tooltipRef() const { return mTooltipRef; }
|
||||
const std::string& hoverIcon() const {return mHoverIcon; }
|
||||
|
||||
const std::string& executeFunctionName() const { return mExecuteFunction; }
|
||||
const LLSD& executeParameters() const { return mExecuteParameters; }
|
||||
|
|
@ -153,7 +150,6 @@ private:
|
|||
std::string mLabelRef;
|
||||
std::string mName;
|
||||
std::string mTooltipRef;
|
||||
std::string mHoverIcon;
|
||||
|
||||
std::string mExecuteFunction;
|
||||
LLSD mExecuteParameters;
|
||||
|
|
|
|||
|
|
@ -509,8 +509,8 @@ LLFloater::~LLFloater()
|
|||
|
||||
if( gFocusMgr.childHasKeyboardFocus(this))
|
||||
{
|
||||
// Just in case we might still have focus here, release it.
|
||||
releaseFocus();
|
||||
// Just in case we might still have focus here, release it.
|
||||
releaseFocus();
|
||||
}
|
||||
|
||||
// This is important so that floaters with persistent rects (i.e., those
|
||||
|
|
@ -1821,7 +1821,7 @@ void LLFloater::onClickClose( LLFloater* self )
|
|||
self->onClickCloseBtn();
|
||||
}
|
||||
|
||||
void LLFloater::onClickCloseBtn(bool app_quitting)
|
||||
void LLFloater::onClickCloseBtn()
|
||||
{
|
||||
closeFloater(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@ protected:
|
|||
|
||||
void destroy(); // Don't call this directly. You probably want to call closeFloater()
|
||||
|
||||
virtual void onClickCloseBtn(bool app_quitting = false);
|
||||
virtual void onClickCloseBtn();
|
||||
|
||||
virtual void updateTitleButtons();
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
#include "llui.h"
|
||||
#include "llwindow.h"
|
||||
#include "llkeyboard.h"
|
||||
#include "llmenugl.h"
|
||||
|
||||
// static
|
||||
std::list<LLModalDialog*> LLModalDialog::sModalStack;
|
||||
|
||||
|
|
@ -161,18 +161,6 @@ void LLModalDialog::setVisible( BOOL visible )
|
|||
|
||||
BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
|
||||
if (popup_menu != NULL)
|
||||
{
|
||||
S32 mx, my;
|
||||
LLUI::getMousePositionScreen(&mx, &my);
|
||||
LLRect menu_screen_rc = popup_menu->calcScreenRect();
|
||||
if(!menu_screen_rc.pointInRect(mx, my))
|
||||
{
|
||||
LLMenuGL::sMenuContainer->hideMenus();
|
||||
}
|
||||
}
|
||||
|
||||
if (mModal)
|
||||
{
|
||||
if (!LLFloater::handleMouseDown(x, y, mask))
|
||||
|
|
@ -185,34 +173,16 @@ BOOL LLModalDialog::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
LLFloater::handleMouseDown(x, y, mask);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL LLModalDialog::handleHover(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
{
|
||||
if( childrenHandleHover(x, y, mask) == NULL )
|
||||
{
|
||||
getWindow()->setCursor(UI_CURSOR_ARROW);
|
||||
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl;
|
||||
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << llendl;
|
||||
}
|
||||
|
||||
LLView* popup_menu = LLMenuGL::sMenuContainer->getVisibleMenu();
|
||||
if (popup_menu != NULL)
|
||||
{
|
||||
S32 mx, my;
|
||||
LLUI::getMousePositionScreen(&mx, &my);
|
||||
LLRect menu_screen_rc = popup_menu->calcScreenRect();
|
||||
if(menu_screen_rc.pointInRect(mx, my))
|
||||
{
|
||||
S32 local_x = mx - popup_menu->getRect().mLeft;
|
||||
S32 local_y = my - popup_menu->getRect().mBottom;
|
||||
popup_menu->handleHover(local_x, local_y, mask);
|
||||
gFocusMgr.setMouseCapture(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -240,7 +210,6 @@ BOOL LLModalDialog::handleDoubleClick(S32 x, S32 y, MASK mask)
|
|||
|
||||
BOOL LLModalDialog::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLMenuGL::sMenuContainer->hideMenus();
|
||||
childrenHandleRightMouseDown(x, y, mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -519,7 +519,7 @@ bool LLScrollContainer::addChild(LLView* view, S32 tab_group)
|
|||
|
||||
void LLScrollContainer::updateScroll()
|
||||
{
|
||||
if (!getVisible() || !mScrolledView)
|
||||
if (!mScrolledView)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -193,15 +193,12 @@ LLTabContainer::TabParams::TabParams()
|
|||
: tab_top_image_unselected("tab_top_image_unselected"),
|
||||
tab_top_image_selected("tab_top_image_selected"),
|
||||
tab_top_image_flash("tab_top_image_flash"),
|
||||
tab_top_image_hovered("tab_top_image_hovered"),
|
||||
tab_bottom_image_unselected("tab_bottom_image_unselected"),
|
||||
tab_bottom_image_selected("tab_bottom_image_selected"),
|
||||
tab_bottom_image_flash("tab_bottom_image_flash"),
|
||||
tab_bottom_image_hovered("tab_bottom_image_hovered"),
|
||||
tab_left_image_unselected("tab_left_image_unselected"),
|
||||
tab_left_image_selected("tab_left_image_selected"),
|
||||
tab_left_image_flash("tab_left_image_flash"),
|
||||
tab_left_image_hovered("tab_left_image_hovered")
|
||||
tab_left_image_flash("tab_left_image_flash")
|
||||
{}
|
||||
|
||||
LLTabContainer::Params::Params()
|
||||
|
|
@ -221,8 +218,7 @@ LLTabContainer::Params::Params()
|
|||
open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false),
|
||||
tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
|
||||
use_ellipses("use_ellipses"),
|
||||
font_halign("halign"),
|
||||
use_highlighting_on_hover("use_highlighting_on_hover",false)
|
||||
font_halign("halign")
|
||||
{}
|
||||
|
||||
LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
|
||||
|
|
@ -258,8 +254,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
|
|||
mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
|
||||
mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),
|
||||
mTabIconCtrlPad(p.tab_icon_ctrl_pad),
|
||||
mUseTabEllipses(p.use_ellipses),
|
||||
mUseHighlightingOnHover(p.use_highlighting_on_hover)
|
||||
mUseTabEllipses(p.use_ellipses)
|
||||
{
|
||||
static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0);
|
||||
|
||||
|
|
@ -908,30 +903,18 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon
|
|||
tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_top_image_unselected));
|
||||
tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_top_image_selected));
|
||||
tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_top_image_flash));
|
||||
if(mUseHighlightingOnHover)
|
||||
{
|
||||
tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_top_image_hovered));
|
||||
}
|
||||
}
|
||||
else if (pos == LLTabContainer::BOTTOM)
|
||||
{
|
||||
tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_unselected));
|
||||
tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_bottom_image_selected));
|
||||
tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_bottom_image_flash));
|
||||
if(mUseHighlightingOnHover)
|
||||
{
|
||||
tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_hovered));
|
||||
}
|
||||
}
|
||||
else if (pos == LLTabContainer::LEFT)
|
||||
{
|
||||
tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_left_image_unselected));
|
||||
tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_left_image_selected));
|
||||
tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_left_image_flash));
|
||||
if(mUseHighlightingOnHover)
|
||||
{
|
||||
tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_left_image_hovered));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1089,20 +1072,20 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
|
|||
if (mIsVertical)
|
||||
{
|
||||
p.name("vtab_"+std::string(child->getName()));
|
||||
p.image_unselected(mMiddleTabParams.tab_left_image_unselected);
|
||||
p.image_selected(mMiddleTabParams.tab_left_image_selected);
|
||||
p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
|
||||
p.image_unselected(mMiddleTabParams.tab_left_image_unselected);
|
||||
p.image_selected(mMiddleTabParams.tab_left_image_selected);
|
||||
p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
p.name("htab_"+std::string(child->getName()));
|
||||
p.visible(false);
|
||||
p.image_unselected(tab_img);
|
||||
p.image_selected(tab_selected_img);
|
||||
p.follows.flags = p.follows.flags() | (getTabPosition() == TOP ? FOLLOWS_TOP : FOLLOWS_BOTTOM);
|
||||
// Try to squeeze in a bit more text
|
||||
p.pad_left( mLabelPadLeft );
|
||||
p.pad_right(2);
|
||||
p.visible(false);
|
||||
p.image_unselected(tab_img);
|
||||
p.image_selected(tab_selected_img);
|
||||
p.follows.flags = p.follows.flags() | (getTabPosition() == TOP ? FOLLOWS_TOP : FOLLOWS_BOTTOM);
|
||||
// Try to squeeze in a bit more text
|
||||
p.pad_left( mLabelPadLeft );
|
||||
p.pad_right(2);
|
||||
}
|
||||
|
||||
// *TODO : It seems wrong not to use p in both cases considering the way p is initialized
|
||||
|
|
|
|||
|
|
@ -62,15 +62,12 @@ public:
|
|||
Optional<LLUIImage*> tab_top_image_unselected,
|
||||
tab_top_image_selected,
|
||||
tab_top_image_flash,
|
||||
tab_top_image_hovered,
|
||||
tab_bottom_image_unselected,
|
||||
tab_bottom_image_selected,
|
||||
tab_bottom_image_flash,
|
||||
tab_bottom_image_hovered,
|
||||
tab_left_image_unselected,
|
||||
tab_left_image_selected,
|
||||
tab_left_image_flash,
|
||||
tab_left_image_hovered;
|
||||
tab_left_image_flash;
|
||||
TabParams();
|
||||
};
|
||||
|
||||
|
|
@ -117,11 +114,6 @@ public:
|
|||
*/
|
||||
Optional<S32> tab_icon_ctrl_pad;
|
||||
|
||||
/**
|
||||
* This variable is used to found out should we highlight tab button on hover
|
||||
*/
|
||||
Optional<bool> use_highlighting_on_hover;
|
||||
|
||||
Params();
|
||||
};
|
||||
|
||||
|
|
@ -315,7 +307,6 @@ private:
|
|||
bool mOpenTabsOnDragAndDrop;
|
||||
S32 mTabIconCtrlPad;
|
||||
bool mUseTabEllipses;
|
||||
bool mUseHighlightingOnHover;
|
||||
};
|
||||
|
||||
#endif // LL_TABCONTAINER_H
|
||||
|
|
|
|||
|
|
@ -666,14 +666,6 @@ void LLTextEditor::selectAll()
|
|||
updatePrimary();
|
||||
}
|
||||
|
||||
void LLTextEditor::selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos)
|
||||
{
|
||||
setCursorPos(prev_cursor_pos);
|
||||
startSelection();
|
||||
setCursorPos(next_cursor_pos);
|
||||
endSelection();
|
||||
}
|
||||
|
||||
BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
BOOL handled = FALSE;
|
||||
|
|
@ -721,6 +713,7 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
setCursorAtLocalPos( x, y, true );
|
||||
startSelection();
|
||||
}
|
||||
gFocusMgr.setMouseCapture( this );
|
||||
}
|
||||
|
||||
handled = TRUE;
|
||||
|
|
@ -729,10 +722,6 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
// Delay cursor flashing
|
||||
resetCursorBlink();
|
||||
|
||||
if (handled)
|
||||
{
|
||||
gFocusMgr.setMouseCapture( this );
|
||||
}
|
||||
return handled;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -144,8 +144,6 @@ public:
|
|||
virtual void selectAll();
|
||||
virtual BOOL canSelectAll() const;
|
||||
|
||||
void selectByCursorPosition(S32 prev_cursor_pos, S32 next_cursor_pos);
|
||||
|
||||
virtual bool canLoadOrSaveToFile();
|
||||
|
||||
void selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
|
||||
|
|
|
|||
|
|
@ -928,7 +928,6 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
|
|||
button_p.label = LLTrans::getString(commandp->labelRef());
|
||||
button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());
|
||||
button_p.image_overlay = LLUI::getUIImage(commandp->icon());
|
||||
button_p.image_hover_unselected = LLUI::getUIImage(commandp->hoverIcon());
|
||||
button_p.button_flash_enable = commandp->isFlashingAllowed();
|
||||
button_p.overwriteFrom(mButtonParams[mButtonType]);
|
||||
LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
<command name="appearance"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Appearance_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Appearance_Label"
|
||||
tooltip_ref="Command_Appearance_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -24,7 +23,6 @@
|
|||
<command name="avatar"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Avatar_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Avatar_Label"
|
||||
tooltip_ref="Command_Avatar_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -96,7 +94,6 @@
|
|||
<command name="inventory"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Inventory_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Inventory_Label"
|
||||
tooltip_ref="Command_Inventory_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -124,7 +121,6 @@
|
|||
<command name="minimap"
|
||||
available_in_toybox="true"
|
||||
icon="Command_MiniMap_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_MiniMap_Label"
|
||||
tooltip_ref="Command_MiniMap_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -175,7 +171,6 @@
|
|||
<command name="places"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Places_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Places_Label"
|
||||
tooltip_ref="Command_Places_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -204,7 +199,6 @@
|
|||
<command name="search"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Search_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Search_Label"
|
||||
tooltip_ref="Command_Search_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
@ -215,7 +209,6 @@
|
|||
<command name="snapshot"
|
||||
available_in_toybox="true"
|
||||
icon="Command_Snapshot_Icon"
|
||||
hover_icon="Command_Highlighting_Icon"
|
||||
label_ref="Command_Snapshot_Label"
|
||||
tooltip_ref="Command_Snapshot_Tooltip"
|
||||
execute_function="Floater.ToggleOrBringToFront"
|
||||
|
|
|
|||
|
|
@ -5942,17 +5942,6 @@
|
|||
<key>Value</key>
|
||||
<real>1.6</real>
|
||||
</map>
|
||||
<key>MaxPersistentNotifications</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Maximum amount of persistent notifications</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<real>250</real>
|
||||
</map>
|
||||
<key>MaxSelectDistance</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -13345,7 +13334,7 @@
|
|||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>0</string>
|
||||
<string>-1</string>
|
||||
</map>
|
||||
<key>VivoxDebugSIPURIHostName</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -77,17 +77,6 @@
|
|||
<key>Value</key>
|
||||
<integer>412</integer>
|
||||
</map>
|
||||
<key>ConversationsParticipantListCollapsed</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Stores the expanded/collapsed state of Nearby chat participant list</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>true</integer>
|
||||
</map>
|
||||
<key>InstantMessageLogPath</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -31,11 +31,9 @@ uniform vec4 matrixPalette[45];
|
|||
mat4 getSkinnedTransform()
|
||||
{
|
||||
mat4 ret;
|
||||
|
||||
float x = fract(weight.x);
|
||||
int i = int(floor(weight.x));
|
||||
i = min(i, 15);
|
||||
i = max(i, 0);
|
||||
float x = fract(weight.x);
|
||||
|
||||
ret[0] = mix(matrixPalette[i+0], matrixPalette[i+1], x);
|
||||
ret[1] = mix(matrixPalette[i+15],matrixPalette[i+16], x);
|
||||
ret[2] = mix(matrixPalette[i+30],matrixPalette[i+31], x);
|
||||
|
|
|
|||
|
|
@ -35,9 +35,6 @@ mat4 getObjectSkinnedTransform()
|
|||
vec4 w = fract(weight4);
|
||||
vec4 index = floor(weight4);
|
||||
|
||||
index = min(index, vec4(31.0));
|
||||
index = max(index, vec4( 0.0));
|
||||
|
||||
float scale = 1.0/(w.x+w.y+w.z+w.w);
|
||||
w *= scale;
|
||||
|
||||
|
|
|
|||
|
|
@ -1092,18 +1092,10 @@ const LLVector3d &LLAgent::getPositionGlobal() const
|
|||
//-----------------------------------------------------------------------------
|
||||
const LLVector3 &LLAgent::getPositionAgent()
|
||||
{
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if(gAgentAvatarp->mDrawable.isNull())
|
||||
{
|
||||
mFrameAgent.setOrigin(gAgentAvatarp->getPositionAgent());
|
||||
}
|
||||
else
|
||||
if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())
|
||||
{
|
||||
mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return mFrameAgent.getOrigin();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,14 +41,10 @@ static const LLBlockListNameTypeComparator NAME_TYPE_COMPARATOR;
|
|||
LLBlockList::LLBlockList(const Params& p)
|
||||
: LLFlatListViewEx(p),
|
||||
mSelectedItem(NULL),
|
||||
mDirty(true),
|
||||
mShouldAddAll(true),
|
||||
mActionType(NONE),
|
||||
mMuteListSize(0)
|
||||
mDirty(true)
|
||||
{
|
||||
|
||||
LLMuteList::getInstance()->addObserver(this);
|
||||
mMuteListSize = LLMuteList::getInstance()->getMutes().size();
|
||||
|
||||
// Set up context menu.
|
||||
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
|
||||
|
|
@ -77,41 +73,6 @@ LLBlockList::~LLBlockList()
|
|||
LLMuteList::getInstance()->removeObserver(this);
|
||||
}
|
||||
|
||||
void LLBlockList::createList()
|
||||
{
|
||||
std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
|
||||
std::vector<LLMute>::const_iterator mute_it = mutes.begin();
|
||||
|
||||
for (; mute_it != mutes.end(); ++mute_it)
|
||||
{
|
||||
addNewItem(&*mute_it);
|
||||
}
|
||||
}
|
||||
|
||||
BlockListActionType LLBlockList::getCurrentMuteListActionType()
|
||||
{
|
||||
BlockListActionType type = NONE;
|
||||
U32 curSize = LLMuteList::getInstance()->getMutes().size();
|
||||
if( curSize > mMuteListSize)
|
||||
type = ADD;
|
||||
else if(curSize < mMuteListSize)
|
||||
type = REMOVE;
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
void LLBlockList::onChangeDetailed(const LLMute &mute)
|
||||
{
|
||||
mActionType = getCurrentMuteListActionType();
|
||||
|
||||
mCurItemId = mute.mID;
|
||||
mCurItemName = mute.mName;
|
||||
mCurItemType = mute.mType;
|
||||
mCurItemFlags = mute.mFlags;
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
|
||||
|
|
@ -127,16 +88,6 @@ BOOL LLBlockList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
return handled;
|
||||
}
|
||||
|
||||
void LLBlockList::removeListItem(const LLMute* mute)
|
||||
{
|
||||
removeItemByUUID(mute->mID);
|
||||
}
|
||||
|
||||
void LLBlockList::hideListItem(LLBlockedListItem* item, bool show)
|
||||
{
|
||||
item->setVisible(show);
|
||||
}
|
||||
|
||||
void LLBlockList::setNameFilter(const std::string& filter)
|
||||
{
|
||||
std::string filter_upper = filter;
|
||||
|
|
@ -185,56 +136,28 @@ void LLBlockList::refresh()
|
|||
bool have_filter = !mNameFilter.empty();
|
||||
|
||||
// save selection to restore it after list rebuilt
|
||||
LLUUID selected = getSelectedUUID(), next_selected;
|
||||
LLUUID selected = getSelectedUUID();
|
||||
|
||||
if(mShouldAddAll) // creating list of blockers
|
||||
// calling refresh may be initiated by removing currently selected item
|
||||
// so select next item and save the selection to restore it after list rebuilt
|
||||
if (!selectNextItemPair(false, true))
|
||||
{
|
||||
clear();
|
||||
createList();
|
||||
mShouldAddAll = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// handle remove/add functionality
|
||||
LLMute mute(mCurItemId, mCurItemName, mCurItemType, mCurItemFlags);
|
||||
if(mActionType == ADD)
|
||||
{
|
||||
addNewItem(&mute);
|
||||
}
|
||||
else if(mActionType == REMOVE)
|
||||
{
|
||||
if(selected == mute.mID)
|
||||
{
|
||||
// we are going to remove currently selected item, so select next item and save the selection to restore it
|
||||
if (!selectNextItemPair(false, true))
|
||||
{
|
||||
selectNextItemPair(true, true);
|
||||
}
|
||||
next_selected = getSelectedUUID();
|
||||
}
|
||||
removeListItem(&mute);
|
||||
}
|
||||
mActionType = NONE;
|
||||
selectNextItemPair(true, true);
|
||||
}
|
||||
LLUUID next_selected = getSelectedUUID();
|
||||
|
||||
// handle filter functionality
|
||||
if(have_filter || (!have_filter && !mPrevNameFilter.empty()))
|
||||
{
|
||||
// we should update visibility of our items if previous filter was not empty
|
||||
std::vector < LLPanel* > allItems;
|
||||
getItems(allItems);
|
||||
std::vector < LLPanel* >::iterator it = allItems.begin();
|
||||
clear();
|
||||
|
||||
for(; it != allItems.end() ; ++it)
|
||||
{
|
||||
LLBlockedListItem * curItem = dynamic_cast<LLBlockedListItem *> (*it);
|
||||
if(curItem)
|
||||
{
|
||||
hideListItem(curItem, findInsensitive(curItem->getName(), mNameFilter));
|
||||
}
|
||||
}
|
||||
std::vector<LLMute> mutes = LLMuteList::instance().getMutes();
|
||||
std::vector<LLMute>::const_iterator mute_it = mutes.begin();
|
||||
|
||||
for (; mute_it != mutes.end(); ++mute_it)
|
||||
{
|
||||
if (have_filter && !findInsensitive(mute_it->mName, mNameFilter))
|
||||
continue;
|
||||
|
||||
addNewItem(&*mute_it);
|
||||
}
|
||||
mPrevNameFilter = mNameFilter;
|
||||
|
||||
if (getItemPair(selected))
|
||||
{
|
||||
|
|
@ -246,7 +169,6 @@ void LLBlockList::refresh()
|
|||
// previously selected item was removed, so select next item
|
||||
selectItemPair(getItemPair(next_selected), true);
|
||||
}
|
||||
mMuteListSize = LLMuteList::getInstance()->getMutes().size();
|
||||
|
||||
// Sort the list.
|
||||
sort();
|
||||
|
|
|
|||
|
|
@ -34,8 +34,6 @@
|
|||
class LLBlockedListItem;
|
||||
class LLMute;
|
||||
|
||||
enum BlockListActionType {NONE, ADD, REMOVE};
|
||||
|
||||
/**
|
||||
* List of blocked avatars and objects.
|
||||
* This list represents contents of the LLMuteList.
|
||||
|
|
@ -58,8 +56,7 @@ public:
|
|||
LLToggleableMenu* getContextMenu() const { return mContextMenu.get(); }
|
||||
LLBlockedListItem* getBlockedItem() const;
|
||||
|
||||
virtual void onChange() { }
|
||||
virtual void onChangeDetailed(const LLMute& );
|
||||
virtual void onChange() { refresh(); }
|
||||
virtual void draw();
|
||||
|
||||
void setNameFilter(const std::string& filter);
|
||||
|
|
@ -70,32 +67,18 @@ public:
|
|||
private:
|
||||
|
||||
void addNewItem(const LLMute* mute);
|
||||
void removeListItem(const LLMute* mute);
|
||||
void hideListItem(LLBlockedListItem* item, bool show);
|
||||
void setDirty(bool dirty = true) { mDirty = dirty; }
|
||||
bool findInsensitive(std::string haystack, const std::string& needle_upper);
|
||||
|
||||
bool isActionEnabled(const LLSD& userdata);
|
||||
void onCustomAction (const LLSD& userdata);
|
||||
void createList();
|
||||
|
||||
BlockListActionType getCurrentMuteListActionType();
|
||||
|
||||
|
||||
LLHandle<LLToggleableMenu> mContextMenu;
|
||||
|
||||
LLBlockedListItem* mSelectedItem;
|
||||
std::string mNameFilter;
|
||||
bool mDirty;
|
||||
bool mShouldAddAll;
|
||||
BlockListActionType mActionType;
|
||||
U32 mMuteListSize;
|
||||
|
||||
// This data is used to save information about item that currently changed(added or removed)
|
||||
LLUUID mCurItemId;
|
||||
std::string mCurItemName;
|
||||
LLMute::EType mCurItemType;
|
||||
U32 mCurItemFlags;
|
||||
std::string mPrevNameFilter;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -60,8 +60,6 @@
|
|||
#include "llstring.h"
|
||||
#include "llurlaction.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerobjectlist.h"
|
||||
#include "llmutelist.h"
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
|
||||
|
||||
|
|
@ -183,18 +181,6 @@ public:
|
|||
{
|
||||
LLAvatarActions::startIM(getAvatarId());
|
||||
}
|
||||
else if (level == "teleport")
|
||||
{
|
||||
LLAvatarActions::offerTeleport(getAvatarId());
|
||||
}
|
||||
else if (level == "voice_call")
|
||||
{
|
||||
LLAvatarActions::startCall(getAvatarId());
|
||||
}
|
||||
else if (level == "chat_history")
|
||||
{
|
||||
LLAvatarActions::viewChatHistory(getAvatarId());
|
||||
}
|
||||
else if (level == "add")
|
||||
{
|
||||
LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom);
|
||||
|
|
@ -203,75 +189,13 @@ public:
|
|||
{
|
||||
LLAvatarActions::removeFriendDialog(getAvatarId());
|
||||
}
|
||||
else if (level == "invite_to_group")
|
||||
{
|
||||
LLAvatarActions::inviteToGroup(getAvatarId());
|
||||
}
|
||||
else if (level == "zoom_in")
|
||||
{
|
||||
handle_zoom_to_object(getAvatarId());
|
||||
}
|
||||
else if (level == "map")
|
||||
{
|
||||
LLAvatarActions::showOnMap(getAvatarId());
|
||||
}
|
||||
else if (level == "share")
|
||||
{
|
||||
LLAvatarActions::share(getAvatarId());
|
||||
}
|
||||
else if (level == "pay")
|
||||
{
|
||||
LLAvatarActions::pay(getAvatarId());
|
||||
}
|
||||
else if(level == "block_unblock")
|
||||
{
|
||||
mute(getAvatarId(), LLMute::flagVoiceChat);
|
||||
}
|
||||
else if(level == "mute_unmute")
|
||||
{
|
||||
mute(getAvatarId(), LLMute::flagTextChat);
|
||||
}
|
||||
}
|
||||
|
||||
bool onAvatarIconContextMenuItemChecked(const LLSD& userdata)
|
||||
{
|
||||
std::string level = userdata.asString();
|
||||
|
||||
if (level == "is_blocked")
|
||||
{
|
||||
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagVoiceChat);
|
||||
}
|
||||
if (level == "is_muted")
|
||||
{
|
||||
return LLMuteList::getInstance()->isMuted(getAvatarId(), LLMute::flagTextChat);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void mute(const LLUUID& participant_id, U32 flags)
|
||||
{
|
||||
BOOL is_muted = LLMuteList::getInstance()->isMuted(participant_id, flags);
|
||||
std::string name;
|
||||
gCacheName->getFullName(participant_id, name);
|
||||
LLMute mute(participant_id, name, LLMute::AGENT);
|
||||
|
||||
if (!is_muted)
|
||||
{
|
||||
LLMuteList::getInstance()->add(mute, flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLMuteList::getInstance()->remove(mute, flags);
|
||||
}
|
||||
}
|
||||
|
||||
BOOL postBuild()
|
||||
{
|
||||
LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
|
||||
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar registrar_enable;
|
||||
|
||||
registrar.add("AvatarIcon.Action", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemClicked, this, _2));
|
||||
registrar_enable.add("AvatarIcon.Check", boost::bind(&LLChatHistoryHeader::onAvatarIconContextMenuItemChecked, this, _2));
|
||||
registrar.add("ObjectIcon.Action", boost::bind(&LLChatHistoryHeader::onObjectIconContextMenuItemClicked, this, _2));
|
||||
|
||||
LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_avatar_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
|
||||
|
|
@ -536,7 +460,7 @@ protected:
|
|||
|
||||
if(menu)
|
||||
{
|
||||
bool is_friend = LLAvatarActions::isFriend(mAvatarID);
|
||||
bool is_friend = LLAvatarTracker::instance().getBuddyInfo(mAvatarID) != NULL;
|
||||
|
||||
menu->setItemEnabled("Add Friend", !is_friend);
|
||||
menu->setItemEnabled("Remove Friend", is_friend);
|
||||
|
|
@ -546,34 +470,13 @@ protected:
|
|||
menu->setItemEnabled("Add Friend", false);
|
||||
menu->setItemEnabled("Send IM", false);
|
||||
menu->setItemEnabled("Remove Friend", false);
|
||||
menu->setItemEnabled("Offer Teleport",false);
|
||||
menu->setItemEnabled("Voice Call", false);
|
||||
menu->setItemEnabled("Invite Group", false);
|
||||
menu->setItemEnabled("Zoom In", false);
|
||||
menu->setItemEnabled("Share", false);
|
||||
menu->setItemEnabled("Pay", false);
|
||||
menu->setItemEnabled("Block Unblock", false);
|
||||
menu->setItemEnabled("Mute Text", false);
|
||||
}
|
||||
else
|
||||
|
||||
if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
|
||||
{
|
||||
LLUUID currentSessionID = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID);
|
||||
if (mSessionID == currentSessionID)
|
||||
{
|
||||
menu->setItemVisible("Send IM", false);
|
||||
}
|
||||
menu->setItemEnabled("Offer Teleport", LLAvatarActions::canOfferTeleport(mAvatarID));
|
||||
menu->setItemEnabled("Voice Call", LLAvatarActions::canCall());
|
||||
|
||||
// We should only show 'Zoom in' item in a nearby chat
|
||||
bool should_show_zoom = !LLIMModel::getInstance()->findIMSession(currentSessionID);
|
||||
menu->setItemVisible("Zoom In", should_show_zoom && gObjectList.findObject(mAvatarID));
|
||||
menu->setItemEnabled("Block Unblock", LLAvatarActions::canBlock(mAvatarID));
|
||||
menu->setItemEnabled("Mute Text", LLAvatarActions::canBlock(mAvatarID));
|
||||
menu->setItemVisible("Send IM", false);
|
||||
}
|
||||
|
||||
menu->setItemEnabled("Chat History", LLLogChat::isTranscriptExist(mAvatarID));
|
||||
menu->setItemEnabled("Map", (LLAvatarTracker::instance().isBuddyOnline(mAvatarID) && is_agent_mappable(mAvatarID)) || gAgent.isGodlike() );
|
||||
menu->buildDrawLabels();
|
||||
menu->updateParent(LLMenuGL::sMenuContainer);
|
||||
LLMenuGL::showPopup(this, menu, x, y);
|
||||
|
|
@ -1065,42 +968,25 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
// notify processing
|
||||
if (chat.mNotifId.notNull())
|
||||
{
|
||||
bool create_toast = true;
|
||||
for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
|
||||
, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
|
||||
LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
|
||||
if (notification != NULL)
|
||||
{
|
||||
LLToastNotifyPanel& panel = *ti;
|
||||
LLIMToastNotifyPanel * imtoastp = dynamic_cast<LLIMToastNotifyPanel *>(&panel);
|
||||
const std::string& notification_name = panel.getNotificationName();
|
||||
if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled() && imtoastp)
|
||||
{
|
||||
create_toast = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (create_toast)
|
||||
{
|
||||
LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
|
||||
if (notification != NULL)
|
||||
{
|
||||
LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
|
||||
LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
|
||||
notification, chat.mSessionID, LLRect::null, !use_plain_text_chat_history, mEditor);
|
||||
|
||||
//Prepare the rect for the view
|
||||
LLRect target_rect = mEditor->getDocumentView()->getRect();
|
||||
// squeeze down the widget by subtracting padding off left and right
|
||||
target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
|
||||
target_rect.mRight -= mRightWidgetPad;
|
||||
notify_box->reshape(target_rect.getWidth(), notify_box->getRect().getHeight());
|
||||
notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
|
||||
//Prepare the rect for the view
|
||||
LLRect target_rect = mEditor->getDocumentView()->getRect();
|
||||
// squeeze down the widget by subtracting padding off left and right
|
||||
target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();
|
||||
target_rect.mRight -= mRightWidgetPad;
|
||||
notify_box->reshape(target_rect.getWidth(), notify_box->getRect().getHeight());
|
||||
notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
|
||||
|
||||
LLInlineViewSegment::Params params;
|
||||
params.view = notify_box;
|
||||
params.left_pad = mLeftWidgetPad;
|
||||
params.right_pad = mRightWidgetPad;
|
||||
mEditor->appendWidget(params, "\n", false);
|
||||
}
|
||||
LLInlineViewSegment::Params params;
|
||||
params.view = notify_box;
|
||||
params.left_pad = mLeftWidgetPad;
|
||||
params.right_pad = mRightWidgetPad;
|
||||
mEditor->appendWidget(params, "\n", false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1130,7 +1016,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
|
|||
if (square_brackets)
|
||||
{
|
||||
message += "]";
|
||||
}
|
||||
}
|
||||
|
||||
mEditor->appendText(message, prependNewLineState, body_message_params);
|
||||
prependNewLineState = false;
|
||||
|
|
|
|||
|
|
@ -1526,6 +1526,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
|
|||
}
|
||||
|
||||
glBindBufferARB(GL_TRANSFORM_FEEDBACK_BUFFER, 0);
|
||||
|
||||
gGL.popMatrix();
|
||||
|
||||
if (cur_shader)
|
||||
|
|
|
|||
|
|
@ -194,8 +194,7 @@ public:
|
|||
|
||||
void setSize(S32 numVertices, S32 num_indices = 0, bool align = false);
|
||||
|
||||
BOOL genVolumeBBoxes(const LLVolume &volume, S32 f,
|
||||
const LLMatrix4& mat_vert_in, BOOL global_volume = FALSE);
|
||||
BOOL genVolumeBBoxes(const LLVolume &volume, S32 f,const LLMatrix4& mat, BOOL global_volume = FALSE);
|
||||
|
||||
void init(LLDrawable* drawablep, LLViewerObject* objp);
|
||||
void destroy();
|
||||
|
|
|
|||
|
|
@ -1545,7 +1545,7 @@ void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::
|
|||
return ;
|
||||
}
|
||||
}
|
||||
void LLFastTimerView::onClickCloseBtn(bool)
|
||||
void LLFastTimerView::onClickCloseBtn()
|
||||
{
|
||||
setVisible(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public:
|
|||
F64 getTime(const std::string& name);
|
||||
|
||||
protected:
|
||||
virtual void onClickCloseBtn(bool app_quitting = false);
|
||||
virtual void onClickCloseBtn();
|
||||
private:
|
||||
typedef std::vector<std::vector<S32> > bar_positions_t;
|
||||
bar_positions_t mBarStart;
|
||||
|
|
|
|||
|
|
@ -422,19 +422,6 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
|
|||
L"PNG Images (*.png)\0*.png\0" \
|
||||
L"\0";
|
||||
break;
|
||||
case FFSAVE_TGAPNG:
|
||||
if (filename.empty())
|
||||
{
|
||||
wcsncpy( mFilesW,L"untitled.png", FILENAME_BUFFER_SIZE); /*Flawfinder: ignore*/
|
||||
//PNG by default
|
||||
}
|
||||
mOFN.lpstrDefExt = L"png";
|
||||
mOFN.lpstrFilter =
|
||||
L"PNG Images (*.png)\0*.png\0" \
|
||||
L"Targa Images (*.tga)\0*.tga\0" \
|
||||
L"\0";
|
||||
break;
|
||||
|
||||
case FFSAVE_JPEG:
|
||||
if (filename.empty())
|
||||
{
|
||||
|
|
@ -653,16 +640,13 @@ bool LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& filena
|
|||
creator = "TVOD";
|
||||
extension = "wav";
|
||||
break;
|
||||
|
||||
case FFSAVE_TGA:
|
||||
type = "TPIC";
|
||||
creator = "prvw";
|
||||
extension = "tga";
|
||||
break;
|
||||
case FFSAVE_TGAPNG:
|
||||
type = "PNG";
|
||||
creator = "prvw";
|
||||
extension = "png";
|
||||
break;
|
||||
|
||||
case FFSAVE_BMP:
|
||||
type = "BMPf";
|
||||
creator = "prvw";
|
||||
|
|
@ -937,20 +921,6 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
|
|||
g_slist_free (file_list);
|
||||
}
|
||||
|
||||
// let's save the extension of the last added file(considering current filter)
|
||||
GtkFileFilter *gfilter = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(widget));
|
||||
std::string filter = gtk_file_filter_get_name(gfilter);
|
||||
|
||||
if(filter == LLTrans::getString("png_image_files"))
|
||||
{
|
||||
picker->mCurrentExtension = ".png";
|
||||
}
|
||||
else if(filter == LLTrans::getString("targa_image_files"))
|
||||
{
|
||||
picker->mCurrentExtension = ".tga";
|
||||
}
|
||||
|
||||
|
||||
// set the default path for this usage context.
|
||||
const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
|
||||
if (cur_folder != NULL)
|
||||
|
|
@ -1122,24 +1092,6 @@ static std::string add_dictionary_filter_to_gtkchooser(GtkWindow *picker)
|
|||
LLTrans::getString("dictionary_files") + " (*.dic; *.xcu)");
|
||||
}
|
||||
|
||||
static std::string add_save_texture_filter_to_gtkchooser(GtkWindow *picker)
|
||||
{
|
||||
GtkFileFilter *gfilter_tga = gtk_file_filter_new();
|
||||
GtkFileFilter *gfilter_png = gtk_file_filter_new();
|
||||
|
||||
gtk_file_filter_add_pattern(gfilter_tga, "*.tga");
|
||||
gtk_file_filter_add_mime_type(gfilter_png, "image/png");
|
||||
std::string caption = LLTrans::getString("save_texture_image_files") + " (*.tga; *.png)";
|
||||
gtk_file_filter_set_name(gfilter_tga, LLTrans::getString("targa_image_files").c_str());
|
||||
gtk_file_filter_set_name(gfilter_png, LLTrans::getString("png_image_files").c_str());
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
|
||||
gfilter_png);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(picker),
|
||||
gfilter_tga);
|
||||
return caption;
|
||||
}
|
||||
|
||||
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
|
||||
{
|
||||
BOOL rtn = FALSE;
|
||||
|
|
@ -1177,15 +1129,6 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
|
|||
(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
|
||||
suggest_ext = ".bmp";
|
||||
break;
|
||||
case FFSAVE_PNG:
|
||||
caption += add_simple_mime_filter_to_gtkchooser
|
||||
(picker, "image/png", LLTrans::getString("png_image_files") + " (*.png)");
|
||||
suggest_ext = ".png";
|
||||
break;
|
||||
case FFSAVE_TGAPNG:
|
||||
caption += add_save_texture_filter_to_gtkchooser(picker);
|
||||
suggest_ext = ".png";
|
||||
break;
|
||||
case FFSAVE_AVI:
|
||||
caption += add_simple_mime_filter_to_gtkchooser
|
||||
(picker, "video/x-msvideo",
|
||||
|
|
@ -1238,17 +1181,9 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
|
|||
}
|
||||
|
||||
gtk_widget_show_all(GTK_WIDGET(picker));
|
||||
|
||||
gtk_main();
|
||||
|
||||
rtn = (getFileCount() == 1);
|
||||
|
||||
if(rtn && filter == FFSAVE_TGAPNG)
|
||||
{
|
||||
std::string selected_file = mFiles.back();
|
||||
mFiles.pop_back();
|
||||
mFiles.push_back(selected_file + mCurrentExtension);
|
||||
}
|
||||
}
|
||||
|
||||
gViewerWindow->getWindow()->afterDialog();
|
||||
|
|
|
|||
|
|
@ -107,7 +107,6 @@ public:
|
|||
FFSAVE_PNG = 13,
|
||||
FFSAVE_JPEG = 14,
|
||||
FFSAVE_SCRIPT = 15,
|
||||
FFSAVE_TGAPNG = 16
|
||||
};
|
||||
|
||||
// open the dialog. This is a modal operation
|
||||
|
|
@ -176,8 +175,6 @@ private:
|
|||
// we remember the last path that was accessed for a particular usage
|
||||
std::map <std::string, std::string> mContextToPathMap;
|
||||
std::string mCurContextName;
|
||||
// we also remember the extension of the last added file.
|
||||
std::string mCurrentExtension;
|
||||
#endif
|
||||
|
||||
std::vector<std::string> mFiles;
|
||||
|
|
|
|||
|
|
@ -44,8 +44,7 @@ LLFloaterConversationPreview::LLFloaterConversationPreview(const LLSD& session_i
|
|||
mPageSize(gSavedSettings.getS32("ConversationHistoryPageSize")),
|
||||
mAccountName(session_id[LL_FCP_ACCOUNT_NAME]),
|
||||
mCompleteName(session_id[LL_FCP_COMPLETE_NAME]),
|
||||
mMutex(NULL),
|
||||
mShowHistory(false)
|
||||
mMutex(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -92,11 +91,12 @@ BOOL LLFloaterConversationPreview::postBuild()
|
|||
mPageSpinner->setMinValue(1);
|
||||
mPageSpinner->set(1);
|
||||
mPageSpinner->setEnabled(false);
|
||||
mChatHistoryLoaded = false;
|
||||
LLLogChat::startChatHistoryThread(file, load_params);
|
||||
return LLFloater::postBuild();
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages, const std::string& file_name)
|
||||
void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages,const std::string& file_name)
|
||||
{
|
||||
if(file_name == mChatHistoryFileName)
|
||||
{
|
||||
|
|
@ -111,30 +111,34 @@ void LLFloaterConversationPreview::setPages(std::list<LLSD>& messages, const std
|
|||
|
||||
std::string total_page_num = llformat("/ %d", mCurrentPage+1);
|
||||
getChild<LLTextBox>("page_num_label")->setValue(total_page_num);
|
||||
mShowHistory = true;
|
||||
mChatHistoryLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::draw()
|
||||
{
|
||||
if(mShowHistory)
|
||||
if(mChatHistoryLoaded)
|
||||
{
|
||||
showHistory();
|
||||
mShowHistory = false;
|
||||
mChatHistoryLoaded = false;
|
||||
}
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::onOpen(const LLSD& key)
|
||||
{
|
||||
mShowHistory = true;
|
||||
if(mChatHistoryLoaded)
|
||||
{
|
||||
showHistory();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterConversationPreview::showHistory()
|
||||
{
|
||||
// additional protection to avoid changes of mMessages in setPages
|
||||
// additional protection to avoid changes of mMessages in setPages()
|
||||
LLMutexLock lock(&mMutex);
|
||||
if(!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
|
||||
|
||||
if (!mMessages.size() || mCurrentPage * mPageSize >= mMessages.size())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -143,7 +147,7 @@ void LLFloaterConversationPreview::showHistory()
|
|||
std::ostringstream message;
|
||||
std::list<LLSD>::const_iterator iter = mMessages.begin();
|
||||
std::advance(iter, mCurrentPage * mPageSize);
|
||||
|
||||
|
||||
for (int msg_num = 0; iter != mMessages.end() && msg_num < mPageSize; ++iter, ++msg_num)
|
||||
{
|
||||
LLSD msg = *iter;
|
||||
|
|
@ -194,11 +198,10 @@ void LLFloaterConversationPreview::showHistory()
|
|||
void LLFloaterConversationPreview::onMoreHistoryBtnClick()
|
||||
{
|
||||
mCurrentPage = (int)(mPageSpinner->getValueF32());
|
||||
if (!mCurrentPage)
|
||||
if (--mCurrentPage < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
mCurrentPage--;
|
||||
mShowHistory = true;
|
||||
showHistory();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ private:
|
|||
std::string mAccountName;
|
||||
std::string mCompleteName;
|
||||
std::string mChatHistoryFileName;
|
||||
bool mShowHistory;
|
||||
bool mChatHistoryLoaded;
|
||||
};
|
||||
|
||||
#endif /* LLFLOATERCONVERSATIONPREVIEW_H_ */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@
|
|||
#include "llpanelgroupinvite.h"
|
||||
#include "lltrans.h"
|
||||
#include "lldraghandle.h"
|
||||
#include "llgroupmgr.h"
|
||||
|
||||
class LLFloaterGroupInvite::impl
|
||||
{
|
||||
|
|
@ -124,11 +123,6 @@ void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, uuid_vec_t *agen
|
|||
LLFloaterGroupInvite *fgi = get_if_there(impl::sInstances,
|
||||
group_id,
|
||||
(LLFloaterGroupInvite*)NULL);
|
||||
|
||||
// refresh group information
|
||||
LLGroupMgr::getInstance()->clearGroupData(group_id);
|
||||
|
||||
|
||||
if (!fgi)
|
||||
{
|
||||
fgi = new LLFloaterGroupInvite(group_id);
|
||||
|
|
|
|||
|
|
@ -101,7 +101,6 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
|
|||
|
||||
gSavedPerAccountSettings.setBOOL("ConversationsListPaneCollapsed", mConversationsPane->isCollapsed());
|
||||
gSavedPerAccountSettings.setBOOL("ConversationsMessagePaneCollapsed", mMessagesPane->isCollapsed());
|
||||
gSavedPerAccountSettings.setBOOL("ConversationsParticipantListCollapsed", !isParticipantListExpanded());
|
||||
|
||||
if (!LLSingleton<LLIMMgr>::destroyed())
|
||||
{
|
||||
|
|
@ -251,11 +250,6 @@ BOOL LLFloaterIMContainer::postBuild()
|
|||
// Init the sort order now that the root had been created
|
||||
setSortOrder(LLConversationSort(gSavedSettings.getU32("ConversationSortOrder")));
|
||||
|
||||
//We should expand nearby chat participants list for the new user
|
||||
if(gAgent.isFirstLogin() || !gSavedPerAccountSettings.getBOOL("ConversationsParticipantListCollapsed"))
|
||||
{
|
||||
expandConversation();
|
||||
}
|
||||
// Keep the xml set title around for when we have to overwrite it
|
||||
mGeneralTitle = getTitle();
|
||||
|
||||
|
|
@ -668,10 +662,10 @@ void LLFloaterIMContainer::setVisible(BOOL visible)
|
|||
LLFloater* session_floater = widget->getSessionFloater();
|
||||
if (session_floater != nearby_chat)
|
||||
{
|
||||
widget->setVisibleIfDetached(visible);
|
||||
}
|
||||
widget->setVisibleIfDetached(visible);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Now, do the normal multifloater show/hide
|
||||
LLMultiFloater::setVisible(visible);
|
||||
|
|
@ -706,13 +700,13 @@ void LLFloaterIMContainer::setVisibleAndFrontmost(BOOL take_focus, const LLSD& k
|
|||
// Only select other sessions
|
||||
if (!getSelectedSession().isNull())
|
||||
{
|
||||
selectConversationPair(getSelectedSession(), false, take_focus);
|
||||
selectConversationPair(getSelectedSession(), false, take_focus);
|
||||
}
|
||||
if (mInitialized && mIsFirstLaunch)
|
||||
{
|
||||
collapseMessagesPane(gSavedPerAccountSettings.getBOOL("ConversationsMessagePaneCollapsed"));
|
||||
mIsFirstLaunch = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterIMContainer::updateResizeLimits()
|
||||
|
|
@ -840,7 +834,7 @@ void LLFloaterIMContainer::assignResizeLimits()
|
|||
|
||||
S32 conv_pane_target_width = is_conv_pane_expanded
|
||||
? ( is_msg_pane_expanded?mConversationsPane->getRect().getWidth():mConversationsPane->getExpandedMinDim() )
|
||||
: mConversationsPane->getMinDim();
|
||||
: mConversationsPane->getMinDim();
|
||||
|
||||
S32 msg_pane_min_width = is_msg_pane_expanded ? mMessagesPane->getExpandedMinDim() : 0;
|
||||
S32 new_min_width = conv_pane_target_width + msg_pane_min_width + summary_width_of_visible_borders;
|
||||
|
|
@ -1001,7 +995,7 @@ void LLFloaterIMContainer::setSortOrder(const LLConversationSort& order)
|
|||
conversation_floater->setSortOrder(order);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gSavedSettings.setU32("ConversationSortOrder", (U32)order);
|
||||
}
|
||||
|
||||
|
|
@ -1192,7 +1186,7 @@ void LLFloaterIMContainer::doToSelectedConversation(const std::string& command,
|
|||
}
|
||||
else if("chat_history" == command)
|
||||
{
|
||||
if (selectedIDS.size() > 0)
|
||||
if (selectedIDS.size() > 0)
|
||||
{
|
||||
LLAvatarActions::viewChatHistory(selectedIDS.front());
|
||||
}
|
||||
|
|
@ -1214,7 +1208,7 @@ void LLFloaterIMContainer::doToSelectedConversation(const std::string& command,
|
|||
{
|
||||
LLFloaterReg::showInstance("preview_conversation", LLSD(LLUUID::null), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1245,7 +1239,7 @@ void LLFloaterIMContainer::doToSelectedGroup(const LLSD& userdata)
|
|||
|
||||
if (action == "group_profile")
|
||||
{
|
||||
LLGroupActions::show(mSelectedSession);
|
||||
LLGroupActions::show(mSelectedSession);
|
||||
}
|
||||
else if (action == "activate_group")
|
||||
{
|
||||
|
|
@ -2092,19 +2086,6 @@ void LLFloaterIMContainer::expandConversation()
|
|||
}
|
||||
}
|
||||
}
|
||||
bool LLFloaterIMContainer::isParticipantListExpanded()
|
||||
{
|
||||
bool is_expanded = false;
|
||||
if(!mConversationsPane->isCollapsed())
|
||||
{
|
||||
LLConversationViewSession* widget = dynamic_cast<LLConversationViewSession*>(get_ptr_in_map(mConversationsWidgets,getSelectedSession()));
|
||||
if (widget)
|
||||
{
|
||||
is_expanded = widget->isOpen();
|
||||
}
|
||||
}
|
||||
return is_expanded;
|
||||
}
|
||||
|
||||
// By default, if torn off session is currently frontmost, LLFloater::isFrontmost() will return FALSE, which can lead to some bugs
|
||||
// So LLFloater::isFrontmost() is overriden here to check both selected session and the IM floater itself
|
||||
|
|
@ -2121,7 +2102,7 @@ BOOL LLFloaterIMContainer::isFrontmost()
|
|||
|
||||
// For conversations, closeFloater() (linked to Ctrl-W) does not actually close the floater but the active conversation.
|
||||
// This is intentional so it doesn't confuse the user. onClickCloseBtn() closes the whole floater.
|
||||
void LLFloaterIMContainer::onClickCloseBtn(bool app_quitting/* = false*/)
|
||||
void LLFloaterIMContainer::onClickCloseBtn()
|
||||
{
|
||||
// Always unminimize before trying to close.
|
||||
// Most of the time the user will never see this state.
|
||||
|
|
@ -2130,7 +2111,7 @@ void LLFloaterIMContainer::onClickCloseBtn(bool app_quitting/* = false*/)
|
|||
LLMultiFloater::setMinimized(FALSE);
|
||||
}
|
||||
|
||||
LLFloater::closeFloater(app_quitting);
|
||||
LLFloater::closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterIMContainer::closeHostedFloater()
|
||||
|
|
@ -2177,7 +2158,7 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)
|
|||
if(app_quitting)
|
||||
{
|
||||
closeAllConversations();
|
||||
onClickCloseBtn(app_quitting);
|
||||
onClickCloseBtn();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ private:
|
|||
void onStubCollapseButtonClicked();
|
||||
void processParticipantsStyleUpdate();
|
||||
void onSpeakButtonClicked();
|
||||
/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
|
||||
/*virtual*/ void onClickCloseBtn();
|
||||
/*virtual*/ void closeHostedFloater();
|
||||
|
||||
void collapseConversationsPane(bool collapse, bool save_is_allowed=true);
|
||||
|
|
@ -172,7 +172,6 @@ private:
|
|||
void toggleAllowTextChat(const LLUUID& participant_uuid);
|
||||
void toggleMute(const LLUUID& participant_id, U32 flags);
|
||||
void openNearbyChat();
|
||||
bool isParticipantListExpanded();
|
||||
|
||||
LLButton* mExpandCollapseBtn;
|
||||
LLButton* mStubCollapseBtn;
|
||||
|
|
|
|||
|
|
@ -308,8 +308,7 @@ void LLFloaterIMNearbyChat::onClose(bool app_quitting)
|
|||
}
|
||||
|
||||
// virtual
|
||||
void LLFloaterIMNearbyChat::onClickCloseBtn(bool)
|
||||
|
||||
void LLFloaterIMNearbyChat::onClickCloseBtn()
|
||||
{
|
||||
if (!isTornOff())
|
||||
{
|
||||
|
|
@ -494,11 +493,11 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()
|
|||
if (!rest_of_match.empty())
|
||||
{
|
||||
mInputEditor->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part
|
||||
|
||||
// Select to end of line, starting from the character
|
||||
// after the last one the user typed.
|
||||
mInputEditor->selectByCursorPosition(utf8_out_str.size()-rest_of_match.size(),utf8_out_str.size());
|
||||
mInputEditor->selectNext(rest_of_match, false);
|
||||
}
|
||||
|
||||
}
|
||||
else if (matchChatTypeTrigger(utf8_trigger, &utf8_out_str))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ protected:
|
|||
void onChatFontChange(LLFontGL* fontp);
|
||||
|
||||
/*virtual*/ void onTearOffClicked();
|
||||
/*virtual*/ void onClickCloseBtn(bool app_qutting = false);
|
||||
/*virtual*/ void onClickCloseBtn();
|
||||
|
||||
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
|
||||
EChatType processChatTypeTriggers(EChatType type, std::string &str);
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ void LLFloaterIMSession::onTearOffClicked()
|
|||
}
|
||||
|
||||
// virtual
|
||||
void LLFloaterIMSession::onClickCloseBtn(bool)
|
||||
void LLFloaterIMSession::onClickCloseBtn()
|
||||
{
|
||||
LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSessionID);
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ private:
|
|||
/*virtual*/ void refresh();
|
||||
|
||||
/*virtual*/ void onTearOffClicked();
|
||||
/*virtual*/ void onClickCloseBtn(bool app_qutting);
|
||||
/*virtual*/ void onClickCloseBtn();
|
||||
|
||||
// Update the window title and input field help text
|
||||
/*virtual*/ void updateSessionName(const std::string& name);
|
||||
|
|
|
|||
|
|
@ -2374,7 +2374,7 @@ void LLPanelLandAccess::refresh()
|
|||
{
|
||||
BOOL use_access_list = parcel->getParcelFlag(PF_USE_ACCESS_LIST);
|
||||
BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
|
||||
BOOL public_access = !use_access_list;
|
||||
BOOL public_access = !use_access_list && !use_group;
|
||||
|
||||
getChild<LLUICtrl>("public_access")->setValue(public_access );
|
||||
getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
|
||||
|
|
@ -2541,10 +2541,6 @@ void LLPanelLandAccess::refresh_ui()
|
|||
getChildView("HoursSpin")->setEnabled(FALSE);
|
||||
getChildView("AccessList")->setEnabled(FALSE);
|
||||
getChildView("BannedList")->setEnabled(FALSE);
|
||||
getChildView("add_allowed")->setEnabled(FALSE);
|
||||
getChildView("remove_allowed")->setEnabled(FALSE);
|
||||
getChildView("add_banned")->setEnabled(FALSE);
|
||||
getChildView("remove_banned")->setEnabled(FALSE);
|
||||
|
||||
LLParcel *parcel = mParcel->getParcel();
|
||||
if (parcel)
|
||||
|
|
@ -2583,6 +2579,7 @@ void LLPanelLandAccess::refresh_ui()
|
|||
{
|
||||
getChildView("Only Allow")->setToolTip(std::string());
|
||||
}
|
||||
getChildView("GroupCheck")->setEnabled(FALSE);
|
||||
getChildView("PassCheck")->setEnabled(FALSE);
|
||||
getChildView("pass_combo")->setEnabled(FALSE);
|
||||
getChildView("AccessList")->setEnabled(FALSE);
|
||||
|
|
@ -2592,7 +2589,11 @@ void LLPanelLandAccess::refresh_ui()
|
|||
getChildView("limit_payment")->setEnabled(FALSE);
|
||||
getChildView("limit_age_verified")->setEnabled(FALSE);
|
||||
|
||||
|
||||
std::string group_name;
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
getChildView("GroupCheck")->setEnabled(can_manage_allowed);
|
||||
}
|
||||
BOOL group_access = getChild<LLUICtrl>("GroupCheck")->getValue().asBoolean();
|
||||
BOOL sell_passes = getChild<LLUICtrl>("PassCheck")->getValue().asBoolean();
|
||||
getChildView("PassCheck")->setEnabled(can_manage_allowed);
|
||||
|
|
@ -2603,11 +2604,6 @@ void LLPanelLandAccess::refresh_ui()
|
|||
getChildView("HoursSpin")->setEnabled(can_manage_allowed);
|
||||
}
|
||||
}
|
||||
std::string group_name;
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
getChildView("GroupCheck")->setEnabled(can_manage_allowed);
|
||||
}
|
||||
getChildView("AccessList")->setEnabled(can_manage_allowed);
|
||||
S32 allowed_list_count = parcel->mAccessList.size();
|
||||
getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
|
||||
|
|
@ -2654,6 +2650,17 @@ void LLPanelLandAccess::onCommitPublicAccess(LLUICtrl *ctrl, void *userdata)
|
|||
return;
|
||||
}
|
||||
|
||||
// If we disabled public access, enable group access by default (if applicable)
|
||||
BOOL public_access = self->getChild<LLUICtrl>("public_access")->getValue().asBoolean();
|
||||
if (public_access == FALSE)
|
||||
{
|
||||
std::string group_name;
|
||||
if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
|
||||
{
|
||||
self->getChild<LLUICtrl>("GroupCheck")->setValue(public_access ? FALSE : TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
onCommitAny(ctrl, userdata);
|
||||
}
|
||||
|
||||
|
|
@ -2687,6 +2694,7 @@ void LLPanelLandAccess::onCommitAny(LLUICtrl *ctrl, void *userdata)
|
|||
if (public_access)
|
||||
{
|
||||
use_access_list = FALSE;
|
||||
use_access_group = FALSE;
|
||||
limit_payment = self->getChild<LLUICtrl>("limit_payment")->getValue().asBoolean();
|
||||
limit_age_verified = self->getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
|
|||
getChild<LLPanel>(sMainPanelName)->onOpen(key);
|
||||
}
|
||||
|
||||
void LLFloaterSidePanelContainer::onClickCloseBtn(bool)
|
||||
void LLFloaterSidePanelContainer::onClickCloseBtn()
|
||||
{
|
||||
LLPanelOutfitEdit* panel_outfit_edit =
|
||||
dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public:
|
|||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
/*virtual*/ void onClickCloseBtn(bool app_quitting = false);
|
||||
/*virtual*/ void onClickCloseBtn();
|
||||
|
||||
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
|
||||
|
||||
|
|
|
|||
|
|
@ -251,7 +251,6 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
|||
llinfos << "Muting by name " << mute.mName << llendl;
|
||||
updateAdd(mute);
|
||||
notifyObservers();
|
||||
notifyObserversDetailed(mute);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
|
|
@ -300,7 +299,6 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
|||
llinfos << "Muting " << localmute.mName << " id " << localmute.mID << " flags " << localmute.mFlags << llendl;
|
||||
updateAdd(localmute);
|
||||
notifyObservers();
|
||||
notifyObserversDetailed(localmute);
|
||||
if(!(localmute.mFlags & LLMute::flagParticles))
|
||||
{
|
||||
//Kill all particle systems owned by muted task
|
||||
|
|
@ -398,7 +396,6 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
|
|||
}
|
||||
|
||||
// Must be after erase.
|
||||
notifyObserversDetailed(localmute);
|
||||
setLoaded(); // why is this here? -MG
|
||||
}
|
||||
else
|
||||
|
|
@ -412,7 +409,6 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)
|
|||
updateRemove(mute);
|
||||
mLegacyMutes.erase(legacy_it);
|
||||
// Must be after erase.
|
||||
notifyObserversDetailed(mute);
|
||||
setLoaded(); // why is this here? -MG
|
||||
}
|
||||
}
|
||||
|
|
@ -766,16 +762,3 @@ void LLMuteList::notifyObservers()
|
|||
it = mObservers.upper_bound(observer);
|
||||
}
|
||||
}
|
||||
|
||||
void LLMuteList::notifyObserversDetailed(const LLMute& mute)
|
||||
{
|
||||
for (observer_set_t::iterator it = mObservers.begin();
|
||||
it != mObservers.end();
|
||||
)
|
||||
{
|
||||
LLMuteListObserver* observer = *it;
|
||||
observer->onChangeDetailed(mute);
|
||||
// In case onChange() deleted an entry.
|
||||
it = mObservers.upper_bound(observer);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,7 +123,6 @@ private:
|
|||
|
||||
void setLoaded();
|
||||
void notifyObservers();
|
||||
void notifyObserversDetailed(const LLMute &mute);
|
||||
|
||||
void updateAdd(const LLMute& mute);
|
||||
void updateRemove(const LLMute& mute);
|
||||
|
|
@ -174,7 +173,6 @@ class LLMuteListObserver
|
|||
public:
|
||||
virtual ~LLMuteListObserver() { }
|
||||
virtual void onChange() = 0;
|
||||
virtual void onChangeDetailed(const LLMute& ) { }
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -542,13 +542,6 @@ void LLPanelMainInventory::changed(U32)
|
|||
updateItemcountText();
|
||||
}
|
||||
|
||||
void LLPanelMainInventory::setFocusFilterEditor()
|
||||
{
|
||||
if(mFilterEditor)
|
||||
{
|
||||
mFilterEditor->setFocus(true);
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLPanelMainInventory::draw()
|
||||
|
|
|
|||
|
|
@ -82,9 +82,6 @@ public:
|
|||
void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
|
||||
|
||||
void onFilterEdit(const std::string& search_string );
|
||||
|
||||
void setFocusFilterEditor();
|
||||
|
||||
protected:
|
||||
//
|
||||
// Misc functions
|
||||
|
|
|
|||
|
|
@ -77,14 +77,6 @@ void LLPersistentNotificationStorage::saveNotifications()
|
|||
}
|
||||
|
||||
data.append(notification->asLLSD(true));
|
||||
if (data.size() >= gSavedSettings.getS32("MaxPersistentNotifications"))
|
||||
{
|
||||
llwarns << "Too many persistent notifications."
|
||||
<< " Saved " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << history_channel->size()
|
||||
<< " persistent notifications." << llendl;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
writeNotifications(output);
|
||||
|
|
@ -105,6 +97,7 @@ void LLPersistentNotificationStorage::loadNotifications()
|
|||
}
|
||||
|
||||
mLoaded = true;
|
||||
|
||||
LLSD input;
|
||||
if (!readNotifications(input) ||input.isUndefined())
|
||||
{
|
||||
|
|
@ -122,9 +115,9 @@ void LLPersistentNotificationStorage::loadNotifications()
|
|||
findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
|
||||
|
||||
LLNotifications& instance = LLNotifications::instance();
|
||||
S32 processed_notifications = 0;
|
||||
for (LLSD::reverse_array_iterator notification_it = data.rbeginArray();
|
||||
notification_it != data.rendArray();
|
||||
|
||||
for (LLSD::array_const_iterator notification_it = data.beginArray();
|
||||
notification_it != data.endArray();
|
||||
++notification_it)
|
||||
{
|
||||
LLSD notification_params = *notification_it;
|
||||
|
|
@ -143,16 +136,8 @@ void LLPersistentNotificationStorage::loadNotifications()
|
|||
// hide saved toasts so they don't confuse the user
|
||||
notification_channel->hideToast(notification->getID());
|
||||
}
|
||||
++processed_notifications;
|
||||
if (processed_notifications >= gSavedSettings.getS32("MaxPersistentNotifications"))
|
||||
{
|
||||
llwarns << "Too many persistent notifications."
|
||||
<< " Processed " << gSavedSettings.getS32("MaxPersistentNotifications") << " of " << data.size() << " persistent notifications." << llendl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
LLNotifications::instance().getChannel("Persistent")->
|
||||
connectChanged(boost::bind(&LLPersistentNotificationStorage::onPersistentChannelChanged, this, _1));
|
||||
|
||||
LL_INFOS("LLPersistentNotificationStorage") << "finished loading notifications" << LL_ENDL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
#include "llfilepicker.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llimagetga.h"
|
||||
#include "llimagepng.h"
|
||||
#include "llinventory.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llresmgr.h"
|
||||
|
|
@ -262,7 +261,7 @@ void LLPreviewTexture::saveAs()
|
|||
|
||||
LLFilePicker& file_picker = LLFilePicker::instance();
|
||||
const LLInventoryItem* item = getItem() ;
|
||||
if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGAPNG, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
|
||||
if( !file_picker.getSaveFile( LLFilePicker::FFSAVE_TGA, item ? LLDir::getScrubbedFileName(item->getName()) : LLStringUtil::null) )
|
||||
{
|
||||
// User canceled or we failed to acquire save file.
|
||||
return;
|
||||
|
|
@ -359,27 +358,14 @@ void LLPreviewTexture::onFileLoadedForSave(BOOL success,
|
|||
|
||||
if( self && final && success )
|
||||
{
|
||||
const U32 ext_length = 3;
|
||||
std::string extension = self->mSaveFileName.substr( self->mSaveFileName.length() - ext_length);
|
||||
|
||||
// We only support saving in PNG or TGA format
|
||||
LLPointer<LLImageFormatted> image;
|
||||
if(extension == "png")
|
||||
{
|
||||
image = new LLImagePNG;
|
||||
}
|
||||
else if(extension == "tga")
|
||||
{
|
||||
image = new LLImageTGA;
|
||||
}
|
||||
|
||||
if( image && !image->encode( src, 0 ) )
|
||||
LLPointer<LLImageTGA> image_tga = new LLImageTGA;
|
||||
if( !image_tga->encode( src ) )
|
||||
{
|
||||
LLSD args;
|
||||
args["FILE"] = self->mSaveFileName;
|
||||
LLNotificationsUtil::add("CannotEncodeFile", args);
|
||||
}
|
||||
else if( image && !image->save( self->mSaveFileName ) )
|
||||
else if( !image_tga->save( self->mSaveFileName ) )
|
||||
{
|
||||
LLSD args;
|
||||
args["FILE"] = self->mSaveFileName;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ LLSceneView::LLSceneView(const LLRect& rect)
|
|||
setCanClose(true);
|
||||
}
|
||||
|
||||
void LLSceneView::onClickCloseBtn(bool)
|
||||
void LLSceneView::onClickCloseBtn()
|
||||
{
|
||||
setVisible(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public:
|
|||
virtual void draw();
|
||||
|
||||
protected:
|
||||
virtual void onClickCloseBtn(bool app_qutting = false);
|
||||
virtual void onClickCloseBtn();
|
||||
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -397,7 +397,7 @@ void LLSidepanelInventory::onToggleInboxBtn()
|
|||
void LLSidepanelInventory::onOpen(const LLSD& key)
|
||||
{
|
||||
LLFirstUse::newInventory(false);
|
||||
mPanelMainInventory->setFocusFilterEditor();
|
||||
|
||||
#if AUTO_EXPAND_INBOX
|
||||
// Expand the inbox if we have fresh items
|
||||
LLPanelMarketplaceInbox * inbox = findChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
|
||||
|
|
|
|||
|
|
@ -1170,10 +1170,6 @@ void LLSidepanelTaskInfo::doClickAction(U8 click_action)
|
|||
// Warn, but do it anyway.
|
||||
LLNotificationsUtil::add("ClickActionNotPayable");
|
||||
}
|
||||
else
|
||||
{
|
||||
handle_give_money_dialog();
|
||||
}
|
||||
}
|
||||
LLSelectMgr::getInstance()->selectionSetClickAction(click_action);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -555,7 +555,7 @@ BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
mHideBtnPressed = mHideBtn->getRect().pointInRect(x, y);
|
||||
}
|
||||
|
||||
return LLModalDialog::handleMouseDown(x, y, mask);
|
||||
return LLFloater::handleMouseDown(x, y, mask);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -69,8 +69,6 @@ public:
|
|||
|
||||
virtual void updateNotification() {}
|
||||
|
||||
bool isControlPanelEnabled() const;
|
||||
|
||||
protected:
|
||||
LLButton* createButton(const LLSD& form_element, BOOL is_option);
|
||||
|
||||
|
|
|
|||
|
|
@ -52,12 +52,6 @@ std::string LLToastPanel::getTitle()
|
|||
return mNotification->getMessage();
|
||||
}
|
||||
|
||||
//virtual
|
||||
const std::string& LLToastPanel::getNotificationName()
|
||||
{
|
||||
return mNotification->getName();
|
||||
}
|
||||
|
||||
//virtual
|
||||
const LLUUID& LLToastPanel::getID()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ public:
|
|||
virtual ~LLToastPanel() = 0;
|
||||
|
||||
virtual std::string getTitle();
|
||||
virtual const std::string& getNotificationName();
|
||||
virtual const LLUUID& getID();
|
||||
|
||||
static const S32 MIN_PANEL_HEIGHT;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@
|
|||
#include "llsd.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llteleportflags.h"
|
||||
#include "lltoastnotifypanel.h"
|
||||
#include "lltransactionflags.h"
|
||||
#include "llvfile.h"
|
||||
#include "llvfs.h"
|
||||
|
|
@ -3229,20 +3228,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
payload["online"] = (offline == IM_ONLINE);
|
||||
payload["sender"] = msg->getSender().getIPandPort();
|
||||
|
||||
bool add_notification = true;
|
||||
for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
|
||||
, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
|
||||
{
|
||||
LLToastNotifyPanel& panel = *ti;
|
||||
const std::string& notification_name = panel.getNotificationName();
|
||||
if (notification_name == "OfferFriendship" && panel.isControlPanelEnabled())
|
||||
{
|
||||
add_notification = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_muted && add_notification)
|
||||
if (is_muted)
|
||||
{
|
||||
LLNotifications::instance().forceResponse(LLNotification::Params("OfferFriendship").payload(payload), 1);
|
||||
}
|
||||
|
|
@ -3253,9 +3239,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
send_do_not_disturb_message(msg, from_id);
|
||||
}
|
||||
args["NAME_SLURL"] = LLSLURL("agent", from_id, "about").getSLURLString();
|
||||
|
||||
if (add_notification)
|
||||
{
|
||||
if(message.empty())
|
||||
{
|
||||
//support for frienship offers from clients before July 2008
|
||||
|
|
@ -3271,7 +3254,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case IM_FRIENDSHIP_ACCEPTED:
|
||||
|
|
@ -3834,6 +3816,19 @@ public:
|
|||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_card);
|
||||
}
|
||||
LLSD args;
|
||||
if ( land_items.count() > 0 )
|
||||
{ // Show notification that they can now teleport to landmarks. Use a random landmark from the inventory
|
||||
S32 random_land = ll_rand( land_items.count() - 1 );
|
||||
args["NAME"] = land_items[random_land]->getName();
|
||||
LLNotificationsUtil::add("TeleportToLandmark",args);
|
||||
}
|
||||
if ( card_items.count() > 0 )
|
||||
{ // Show notification that they can now contact people. Use a random calling card from the inventory
|
||||
S32 random_card = ll_rand( card_items.count() - 1 );
|
||||
args["NAME"] = card_items[random_card]->getName();
|
||||
LLNotificationsUtil::add("TeleportToPerson",args);
|
||||
}
|
||||
|
||||
gInventory.removeObserver(this);
|
||||
delete this;
|
||||
|
|
@ -4110,6 +4105,18 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
|
|||
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
// Chat the "back" SLURL. (DEV-4907)
|
||||
|
||||
LLSLURL slurl;
|
||||
gAgent.getTeleportSourceSLURL(slurl);
|
||||
LLSD substitution = LLSD().with("[T_SLURL]", slurl.getSLURLString());
|
||||
std::string completed_from = LLAgent::sTeleportProgressMessages["completed_from"];
|
||||
LLStringUtil::format(completed_from, substitution);
|
||||
|
||||
LLSD args;
|
||||
args["MESSAGE"] = completed_from;
|
||||
LLNotificationsUtil::add("SystemMessageTip", args);
|
||||
|
||||
// Set the new position
|
||||
gAgentAvatarp->setPositionAgent(agent_pos);
|
||||
gAgentAvatarp->clearChat();
|
||||
|
|
@ -6885,43 +6892,43 @@ void send_lures(const LLSD& notification, const LLSD& response)
|
|||
LLAgentUI::buildSLURL(slurl);
|
||||
text.append("\r\n").append(slurl.getSLURLString());
|
||||
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_StartLure);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_Info);
|
||||
msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in.
|
||||
msg->addStringFast(_PREHASH_Message, text);
|
||||
for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray();
|
||||
it != notification["payload"]["ids"].endArray();
|
||||
++it)
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessageFast(_PREHASH_StartLure);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
|
||||
msg->nextBlockFast(_PREHASH_Info);
|
||||
msg->addU8Fast(_PREHASH_LureType, (U8)0); // sim will fill this in.
|
||||
msg->addStringFast(_PREHASH_Message, text);
|
||||
for(LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray();
|
||||
it != notification["payload"]["ids"].endArray();
|
||||
++it)
|
||||
{
|
||||
LLUUID target_id = it->asUUID();
|
||||
|
||||
msg->nextBlockFast(_PREHASH_TargetData);
|
||||
msg->addUUIDFast(_PREHASH_TargetID, target_id);
|
||||
|
||||
// Record the offer.
|
||||
{
|
||||
LLUUID target_id = it->asUUID();
|
||||
|
||||
msg->nextBlockFast(_PREHASH_TargetData);
|
||||
msg->addUUIDFast(_PREHASH_TargetID, target_id);
|
||||
|
||||
// Record the offer.
|
||||
{
|
||||
std::string target_name;
|
||||
gCacheName->getFullName(target_id, target_name); // for im log filenames
|
||||
LLSD args;
|
||||
args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();;
|
||||
std::string target_name;
|
||||
gCacheName->getFullName(target_id, target_name); // for im log filenames
|
||||
LLSD args;
|
||||
args["TO_NAME"] = LLSLURL("agent", target_id, "displayname").getSLURLString();;
|
||||
|
||||
LLSD payload;
|
||||
LLSD payload;
|
||||
|
||||
//*TODO please rewrite all keys to the same case, lower or upper
|
||||
payload["from_id"] = target_id;
|
||||
//*TODO please rewrite all keys to the same case, lower or upper
|
||||
payload["from_id"] = target_id;
|
||||
payload["SUPPRESS_TOAST"] = true;
|
||||
LLNotificationsUtil::add("TeleportOfferSent", args, payload);
|
||||
LLNotificationsUtil::add("TeleportOfferSent", args, payload);
|
||||
|
||||
// Add the recepient to the recent people list.
|
||||
LLRecentPeople::instance().add(target_id);
|
||||
}
|
||||
// Add the recepient to the recent people list.
|
||||
LLRecentPeople::instance().add(target_id);
|
||||
}
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
|
||||
bool handle_lure_callback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -954,7 +954,7 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
|
|||
objectp = *idle_iter;
|
||||
llassert(objectp->isActive());
|
||||
objectp->idleUpdate(agent, world, frame_time);
|
||||
}
|
||||
}
|
||||
|
||||
//update flexible objects
|
||||
LLVolumeImplFlexible::updateClass();
|
||||
|
|
@ -962,8 +962,8 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
|
|||
//update animated textures
|
||||
if (gAnimateTextures)
|
||||
{
|
||||
LLViewerTextureAnim::updateClass();
|
||||
}
|
||||
LLViewerTextureAnim::updateClass();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1326,27 +1326,45 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
|
|||
return;
|
||||
}
|
||||
|
||||
LLViewerObject *objectp = NULL;
|
||||
S32 num_removed = 0;
|
||||
LLViewerObject *objectp;
|
||||
|
||||
vobj_list_t::reverse_iterator target = mObjects.rbegin();
|
||||
|
||||
vobj_list_t::iterator iter;
|
||||
for (iter = mObjects.begin(); iter != mObjects.end();)
|
||||
vobj_list_t::iterator iter = mObjects.begin();
|
||||
for ( ; iter != mObjects.end(); )
|
||||
{
|
||||
// Scan for all of the dead objects and put them all on the end of the list with no ref count ops
|
||||
objectp = *iter;
|
||||
if (objectp == NULL)
|
||||
{ //we caught up to the dead tail
|
||||
break;
|
||||
}
|
||||
|
||||
if (objectp && objectp->isDead())
|
||||
if (objectp->isDead())
|
||||
{
|
||||
iter = mObjects.erase(iter);
|
||||
LLPointer<LLViewerObject>::swap(*iter, *target);
|
||||
*target = NULL;
|
||||
++target;
|
||||
num_removed++;
|
||||
|
||||
if (num_removed == mNumDeadObjects || iter->isNull())
|
||||
{
|
||||
// We've cleaned up all of the dead objects or caught up to the dead tail
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
llassert(num_removed == mNumDeadObjects);
|
||||
|
||||
//erase as a block
|
||||
mObjects.erase(mObjects.begin()+(mObjects.size()-mNumDeadObjects), mObjects.end());
|
||||
|
||||
// We've cleaned the global object list, now let's do some paranoia testing on objects
|
||||
// before blowing away the dead list.
|
||||
mDeadObjects.clear();
|
||||
|
|
|
|||
|
|
@ -786,6 +786,7 @@ void LLVivoxVoiceClient::stateMachine()
|
|||
{
|
||||
loglevel = "0"; // turn logging off completely
|
||||
}
|
||||
loglevel = "0"; // turn logging off completely
|
||||
params.args.add("-ll");
|
||||
params.args.add(loglevel);
|
||||
params.cwd = gDirUtilp->getAppRODataDir();
|
||||
|
|
|
|||
|
|
@ -1036,6 +1036,7 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams ¶ms_in, const S32 detail, bo
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static LLCachedControl<bool> use_transform_feedback(gSavedSettings, "RenderUseTransformFeedback");
|
||||
|
||||
bool cache_in_vram = use_transform_feedback && gTransformPositionProgram.mProgramObject &&
|
||||
|
|
@ -2617,6 +2618,7 @@ void LLVOVolume::setLightTextureID(LLUUID id)
|
|||
if (hasLightTexture())
|
||||
{
|
||||
setParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE, FALSE, true);
|
||||
parameterChanged(LLNetworkData::PARAMS_LIGHT_IMAGE, true);
|
||||
mLightTexture = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -2634,7 +2636,8 @@ void LLVOVolume::setSpotLightParams(LLVector3 params)
|
|||
|
||||
void LLVOVolume::setIsLight(BOOL is_light)
|
||||
{
|
||||
if (is_light != getIsLight())
|
||||
BOOL was_light = getIsLight();
|
||||
if (is_light != was_light)
|
||||
{
|
||||
if (is_light)
|
||||
{
|
||||
|
|
@ -2819,7 +2822,7 @@ void LLVOVolume::updateSpotLightPriority()
|
|||
bool LLVOVolume::isLightSpotlight() const
|
||||
{
|
||||
LLLightImageParams* params = (LLLightImageParams*) getParameterEntry(LLNetworkData::PARAMS_LIGHT_IMAGE);
|
||||
if (params)
|
||||
if (params && getParameterEntryInUse(LLNetworkData::PARAMS_LIGHT_IMAGE))
|
||||
{
|
||||
return params->isLightSpotlight();
|
||||
}
|
||||
|
|
@ -3749,8 +3752,30 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
|
|||
{
|
||||
LLFace* face = mDrawable->getFace(face_hit);
|
||||
|
||||
bool ignore_alpha = false;
|
||||
|
||||
const LLTextureEntry* te = face->getTextureEntry();
|
||||
if (te)
|
||||
{
|
||||
LLMaterial* mat = te->getMaterialParams();
|
||||
if (mat)
|
||||
{
|
||||
U8 mode = mat->getDiffuseAlphaMode();
|
||||
|
||||
if (mode == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE ||
|
||||
mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE)
|
||||
{
|
||||
ignore_alpha = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (face &&
|
||||
(pick_transparent || !face->getTexture() || !face->getTexture()->hasGLTexture() || face->getTexture()->getMask(face->surfaceToTexture(tc, p, n))))
|
||||
(ignore_alpha ||
|
||||
pick_transparent ||
|
||||
!face->getTexture() ||
|
||||
!face->getTexture()->hasGLTexture() ||
|
||||
face->getTexture()->getMask(face->surfaceToTexture(tc, p, n))))
|
||||
{
|
||||
local_end = p;
|
||||
if (face_hitp != NULL)
|
||||
|
|
@ -4435,8 +4460,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
|
|||
|
||||
bool emissive = false;
|
||||
|
||||
|
||||
|
||||
{
|
||||
LLFastTimer t(FTM_REBUILD_VOLUME_FACE_LIST);
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)
|
|||
{
|
||||
llinfos << "Add region with handle: " << region_handle << " on host " << host << llendl;
|
||||
LLViewerRegion *regionp = getRegionFromHandle(region_handle);
|
||||
std::string seedUrl;
|
||||
if (regionp)
|
||||
{
|
||||
llinfos << "Region exists, removing it " << llendl;
|
||||
|
|
@ -162,9 +161,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)
|
|||
llwarns << "LLWorld::addRegion exists, but isn't alive" << llendl;
|
||||
}
|
||||
|
||||
// Save capabilities seed URL
|
||||
seedUrl = regionp->getCapability("Seed");
|
||||
|
||||
// Kill the old host, and then we can continue on and add the new host. We have to kill even if the host
|
||||
// matches, because all the agent state for the new camera is completely different.
|
||||
removeRegion(old_host);
|
||||
|
|
@ -192,11 +188,6 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)
|
|||
llerrs << "Unable to create new region!" << llendl;
|
||||
}
|
||||
|
||||
if ( !seedUrl.empty() )
|
||||
{
|
||||
regionp->setCapability("Seed", seedUrl);
|
||||
}
|
||||
|
||||
mRegionList.push_back(regionp);
|
||||
mActiveRegionList.push_back(regionp);
|
||||
mCulledRegionList.push_back(regionp);
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ 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="Command_Highlighting_Icon" file_name="toolbar_icons/highlighting.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" />
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
parameter="profile" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="IM"
|
||||
label="Send IM..."
|
||||
layout="topleft"
|
||||
name="Send IM">
|
||||
<menu_item_call.on_click
|
||||
|
|
@ -25,26 +25,7 @@
|
|||
parameter="im" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Offer teleport"
|
||||
layout="topleft"
|
||||
name="Offer Teleport">
|
||||
<on_click function="AvatarIcon.Action" parameter="teleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Voice call"
|
||||
layout="topleft"
|
||||
name="Voice Call">
|
||||
<on_click function="AvatarIcon.Action" parameter="voice_call"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Chat history..."
|
||||
layout="topleft"
|
||||
name="Chat History">
|
||||
<on_click function="AvatarIcon.Action" parameter="chat_history"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator layout="topleft" name="separator_chat_history"/>
|
||||
<menu_item_call
|
||||
label="Add friend"
|
||||
label="Add Friend..."
|
||||
layout="topleft"
|
||||
name="Add Friend">
|
||||
<menu_item_call.on_click
|
||||
|
|
@ -52,56 +33,11 @@
|
|||
parameter="add" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Remove friend"
|
||||
label="Remove Friend..."
|
||||
layout="topleft"
|
||||
name="Remove Friend">
|
||||
<menu_item_call.on_click
|
||||
function="AvatarIcon.Action"
|
||||
parameter="remove" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Invite to group..."
|
||||
layout="topleft"
|
||||
name="Invite Group">
|
||||
<on_click function="AvatarIcon.Action" parameter="invite_to_group" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator layout="topleft" name="separator_invite_to_group"/>
|
||||
<menu_item_call
|
||||
label="Zoom In"
|
||||
layout="topleft"
|
||||
name="Zoom In">
|
||||
<on_click function="AvatarIcon.Action" parameter="zoom_in" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Map"
|
||||
layout="topleft"
|
||||
name="Map">
|
||||
<on_click function="AvatarIcon.Action" parameter="map" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Share"
|
||||
layout="topleft"
|
||||
name="Share">
|
||||
<on_click function="AvatarIcon.Action" parameter="share" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Pay"
|
||||
layout="topleft"
|
||||
name="Pay">
|
||||
<on_click function="AvatarIcon.Action" parameter="pay" />
|
||||
</menu_item_call>
|
||||
<menu_item_check
|
||||
label="Block Voice"
|
||||
layout="topleft"
|
||||
name="Block Unblock">
|
||||
<on_click function="AvatarIcon.Action" parameter="block_unblock" />
|
||||
<on_check function="AvatarIcon.Check" parameter="is_blocked" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Block Text"
|
||||
layout="topleft"
|
||||
name="Mute Text">
|
||||
<on_click function="AvatarIcon.Action" parameter="mute_unmute" />
|
||||
<on_check function="AvatarIcon.Check" parameter="is_muted" />
|
||||
</menu_item_check>
|
||||
</menu>
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@
|
|||
direction="down"
|
||||
height="23"
|
||||
image_overlay="Arrow_Left_Off"
|
||||
image_hover_unselected="PushButton_Over"
|
||||
image_bottom_pad="1"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
|
|
@ -100,7 +99,6 @@
|
|||
direction="down"
|
||||
height="23"
|
||||
image_overlay="Arrow_Right_Off"
|
||||
image_hover_unselected="PushButton_Over"
|
||||
image_bottom_pad="1"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
|
|
@ -113,7 +111,6 @@
|
|||
height="23"
|
||||
image_bottom_pad="1"
|
||||
image_overlay="Home_Off"
|
||||
image_hover_unselected="PushButton_Over"
|
||||
layout="topleft"
|
||||
left_pad="7"
|
||||
name="home_btn"
|
||||
|
|
|
|||
|
|
@ -456,8 +456,6 @@ Please try logging in again in a minute.</string>
|
|||
<string name="load_file_verb">Load</string>
|
||||
<string name="targa_image_files">Targa Images</string>
|
||||
<string name="bitmap_image_files">Bitmap Images</string>
|
||||
<string name="png_image_files">PNG Images</string>
|
||||
<string name="save_texture_image_files">Targa or PNG Images</string>
|
||||
<string name="avi_movie_file">AVI Movie File</string>
|
||||
<string name="xaf_animation_file">XAF Anim File</string>
|
||||
<string name="xml_file">XML File</string>
|
||||
|
|
|
|||
|
|
@ -25,25 +25,19 @@ label_pad_left - padding to the left of tab button labels
|
|||
tab_bottom_image_selected="Toolbar_Left_Selected"
|
||||
tab_left_image_unselected="SegmentedBtn_Left_Disabled"
|
||||
tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
|
||||
tab_top_image_hovered="TabTop_Left_Selected"
|
||||
tab_button_image_hovered="Toolbar_Left_Selected"
|
||||
tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
|
||||
/>
|
||||
<middle_tab tab_top_image_unselected="TabTop_Middle_Off"
|
||||
tab_top_image_selected="TabTop_Middle_Selected"
|
||||
tab_bottom_image_unselected="Toolbar_Middle_Off"
|
||||
tab_bottom_image_selected="Toolbar_Middle_Selected"
|
||||
tab_left_image_unselected="SegmentedBtn_Left_Disabled"
|
||||
tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
|
||||
tab_top_image_hovered="TabTop_Middle_Selected"
|
||||
tab_button_image_hovered="Toolbar_Middle_Selected"
|
||||
tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
|
||||
/>
|
||||
<last_tab tab_top_image_unselected="TabTop_Right_Off"
|
||||
tab_top_image_selected="TabTop_Right_Selected"
|
||||
tab_bottom_image_unselected="Toolbar_Right_Off"
|
||||
tab_bottom_image_selected="Toolbar_Right_Selected"
|
||||
tab_left_image_unselected="SegmentedBtn_Left_Disabled"
|
||||
tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
|
||||
tab_top_image_hovered="TabTop_Right_Selected"
|
||||
tab_button_image_hovered="Toolbar_Right_Selected"
|
||||
tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/>
|
||||
/>
|
||||
</tab_container>
|
||||
|
|
|
|||
Loading…
Reference in New Issue