Commit b1e53189 authored by Kitty Barnett's avatar Kitty Barnett
Browse files

Merged with .Catznip tip

--HG--
branch : Catznip
parents 0b3faaaf 7716ddfa
54e81f61aca5bf7c655fb4bf94553aaca0251e43
\ No newline at end of file
5118dbc0c5e1f8ff963248cb11b21f3623ba1341
\ No newline at end of file
35c05ea3ccf6c35525faa467bbec44ffea3a47c5
\ No newline at end of file
6e2bc24862d208434fcbe3aff9cac4accc380a60
\ No newline at end of file
bdad6632d662ea0fd8ccb32a9e7dd5b7e53d0e44
\ No newline at end of file
09d5c51b1f41d79fdafce16279db423ca2ebe10e
\ No newline at end of file
54fd792bf83a1106fcf17ed678d8e47211b3ee0c
\ No newline at end of file
5118dbc0c5e1f8ff963248cb11b21f3623ba1341
\ No newline at end of file
e004787acc14f48d640f17ba89871f765f2b8cf0
\ No newline at end of file
5118dbc0c5e1f8ff963248cb11b21f3623ba1341
\ No newline at end of file
......@@ -1205,6 +1205,7 @@ a563f7e215c7883c1cfd20908085687a0ed96284 RLVa-1.4.0
0c8f23b2c4cf96d1a08bd527b3ccb6339a9fdb60 RLVa-1.4.6
674db463770b78f836fc9c87a1b2235e212a576c RLVa-1.4.7
7fc0f5d537b46dc1a9f09a1db4ac67752e3462b1 RLVa-2.0.0
9372d6c0a565581d907a8d6d2dda74a5ae05ade5 RLVa-2.1.0
83c76ab719126dea85b71862fc9bd9b2e8204b9f Catznip-R11.0.1
edcabef2decc7d6af0aaf75edf437b77f2c0687a Catznip-R11.0.3
e9dd5e09a1c7df04b516010c3cfd2468e8a2124e Catznip-R11.0.4
......
......@@ -11052,6 +11052,17 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>RenderResolutionMultiplier</key>
<map>
<key>Comment</key>
<string>Multiplier for rendering 3D scene at reduced resolution.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>1.0</real>
</map>
<key>RenderShaderLightingMaxLevel</key>
<map>
<key>Comment</key>
......@@ -11398,6 +11409,17 @@
<key>Value</key>
<real>10.0E6</real>
</map>
<key>RenderOthersAs</key>
<map>
<key>Comment</key>
<string>Specifies how to render other avatars (0: normally; 1: as imposters with exceptions; 2: only yourself with exceptions; 3: only yourself with no exceptions</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>S32</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>RenderFriendsFull</key>
<map>
<key>Comment</key>
......
......@@ -565,7 +565,6 @@ void LLPanelLogin::selectUser(LLPointer<LLCredential> cred, BOOL remember)
// sInstance->getChild<LLUICtrl>("remember_check")->setValue(remember);
//}
// [SL:KB] - Patch: Viewer-Login | Checked: 2013-12-16 (Catznip-3.6)
LLSD LLPanelLogin::getIdentifier()
{
......
......@@ -137,17 +137,19 @@ void LLQuickPrefsAppearancePanel::refreshComplexity()
m_pComplexityText->setText(llformat("%d", nComplexity));
LLAvatarRenderNotifier* pAvRenderNotif = LLAvatarRenderNotifier::getInstance();
LLStringUtil::format_map_t visibilityArgs;
if (pAvRenderNotif->getLatestAgentsCount() > 0)
{
m_pVisibilityText->setText(llformat("%d / %d (%.0f%%)", pAvRenderNotif->getLatestAgentsCount() - pAvRenderNotif->getLatestOverLimitAgents(),
pAvRenderNotif->getLatestAgentsCount(),
100.f - pAvRenderNotif->getLatestOverLimitPct()));
visibilityArgs["[VISIBLE]"] = std::to_string(pAvRenderNotif->getLatestAgentsCount() - pAvRenderNotif->getLatestOverLimitAgents());
visibilityArgs["[TOTAL]"] = std::to_string(pAvRenderNotif->getLatestAgentsCount());
}
else
{
m_pVisibilityText->setText(llformat("- / -"));
visibilityArgs["[VISIBLE]"] = "-";
visibilityArgs["[TOTAL]"] = "-";
}
m_pVisibilityText->setText(getString("visibility_text", visibilityArgs));
}
}
......
......@@ -880,13 +880,16 @@ bool idle_startup()
// Show the login dialog
login_show();
// connect dialog is already shown, so fill in the names
if (gUserCredential.notNull() && !LLPanelLogin::isCredentialSet())
{
// [SL:KB] - Patch: Viewer-Login | Checked: 2013-12-16 (Catznip-3.6)
if (gUserCredential.notNull() && LLPanelLogin::isCredentialSet())
{
LLPanelLogin::selectUser(gUserCredential, gRememberPassword);
}
// [/SL:KB]
// if (gUserCredential.notNull() && !LLPanelLogin::isCredentialSet())
// {
// LLPanelLogin::setFields( gUserCredential, gRememberPassword);
}
// }
LLPanelLogin::giveFocus();
// MAINT-3231 Show first run dialog only for Desura viewer
......
......@@ -242,6 +242,15 @@ static bool handleVolumeLODChanged(const LLSD& newvalue)
return true;
}
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
static bool handleRenderOthersAsChanged()
{
LLVOAvatar::resetImpostors();
LLVOAvatar::invalidateNameTags();
return true;
}
// [/SL:KB]
static bool handleAvatarLODChanged(const LLSD& newvalue)
{
LLVOAvatar::sLODFactor = (F32) newvalue.asReal();
......@@ -730,6 +739,9 @@ void settings_setup_listeners()
gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderGammaFull")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderVolumeLODFactor")->getSignal()->connect(boost::bind(&handleVolumeLODChanged, _2));
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
gSavedSettings.getControl("RenderOthersAs")->getSignal()->connect(boost::bind(&handleRenderOthersAsChanged));
// [/SL:KB]
gSavedSettings.getControl("RenderAvatarLODFactor")->getSignal()->connect(boost::bind(&handleAvatarLODChanged, _2));
gSavedSettings.getControl("RenderAvatarPhysicsLODFactor")->getSignal()->connect(boost::bind(&handleAvatarPhysicsLODChanged, _2));
gSavedSettings.getControl("RenderTerrainLODFactor")->getSignal()->connect(boost::bind(&handleTerrainLODChanged, _2));
......@@ -749,6 +761,9 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _2));
gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2));
gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
gSavedSettings.getControl("RenderResolutionMultiplier")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2));
// [/SL:KB]
gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
......
......@@ -1279,7 +1279,6 @@ void set_use_wireframe(bool useWireframe)
gWindowResized = TRUE;
LLPipeline::updateRenderDeferred();
if (gUseWireframe)
{
gInitialDeferredModeForWireframe = LLPipeline::sRenderDeferred;
......
......@@ -2292,8 +2292,12 @@ void LLVOAvatar::idleUpdate(LLAgent &agent, const F64 &time)
return;
}
if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR))
&& !(gSavedSettings.getBOOL("DisableAllRenderTypes")) && !isSelf())
// if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR))
// && !(gSavedSettings.getBOOL("DisableAllRenderTypes")) && !isSelf())
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
if ( ((!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR)) && (!gSavedSettings.getBOOL("DisableAllRenderTypes")) && (!isSelf())) ||
(ERenderAvatarAs::INVISIBLE == getRenderAvatarAs()) )
// [/SL:KB]
{
return;
}
......@@ -3014,10 +3018,11 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)
bool use_complexity_color = false;
LLColor4 complexity_color;
static LLUICachedControl<S32> render_others_as("RenderOthersAs", (int)ERenderAvatarAs::NORMAL);
static LLUICachedControl<bool> show_avatar_complexity("RenderNameShowComplexity", true);
static LLUICachedControl<bool> show_avatar_complexity_atlimit("RenderNameShowComplexityAtLimit", true);
static LLUICachedControl<bool> show_avatar_complexity_self("RenderNameShowComplexitySelf", false);
if ( (show_avatar_complexity) &&
if ( (show_avatar_complexity) && (render_others_as == (int)ERenderAvatarAs::NORMAL) &&
( (!isSelf() && (!show_avatar_complexity_atlimit || isVisuallyMuted())) ||
(isSelf() && show_avatar_complexity_self) ) )
{
......@@ -3445,14 +3450,25 @@ bool LLVOAvatar::isVisuallyMuted()
// * check against the render cost and attachment limits
if (!isSelf())
{
if (mVisuallyMuteSetting == AV_ALWAYS_RENDER)
// if (mVisuallyMuteSetting == AV_ALWAYS_RENDER)
// {
// muted = false;
// }
// else if (mVisuallyMuteSetting == AV_DO_NOT_RENDER)
// { // Always want to see this AV as an impostor
// muted = true;
// }
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
const VisualMuteSettings muteSetting = getVisualMuteSettings();
if (muteSetting == AV_ALWAYS_RENDER)
{
muted = false;
}
else if (mVisuallyMuteSetting == AV_DO_NOT_RENDER)
else if (muteSetting == AV_DO_NOT_RENDER)
{ // Always want to see this AV as an impostor
muted = true;
}
// [/SL:KB]
else if (isInMuteList())
{
muted = true;
......@@ -3494,7 +3510,7 @@ bool LLVOAvatar::isNearby() const
return mCachedIsNearby;
}
const F64 SECONDS_BETWEEN_NEARBY_UPDATES = 1;
const F64 SECONDS_BETWEEN_NEARBY_UPDATES = 1.0f;
mCachedNearbyUpdateTime = now + SECONDS_BETWEEN_NEARBY_UPDATES;
mCachedIsNearby = dist_vec_squared(gAgent.getPositionGlobal(), getPositionGlobal()) < CHAT_NORMAL_RADIUS * CHAT_NORMAL_RADIUS;
return mCachedIsNearby;
......@@ -3508,11 +3524,32 @@ bool LLVOAvatar::isFriend() const
return mCachedIsFriend;
}
const F64 SECONDS_BETWEEN_FRIEND_UPDATES = 1;
const F64 SECONDS_BETWEEN_FRIEND_UPDATES = 5.f;
mCachedIsFriendUpdateTime = now + SECONDS_BETWEEN_FRIEND_UPDATES;
mCachedIsFriend = LLAvatarTracker::instance().isBuddy(getID());
return mCachedIsFriend;
}
LLVOAvatar::ERenderAvatarAs LLVOAvatar::getRenderAvatarAs() const
{
static LLCachedControl<S32> render_others_as(gSavedSettings, "RenderOthersAs", (int)ERenderAvatarAs::NORMAL);
static LLCachedControl<bool> always_render_friends(gSavedSettings, "RenderFriendsFull", true);
static LLCachedControl<bool> always_render_nearby(gSavedSettings, "RenderNearbyFull", false);
LLVOAvatar::ERenderOthersAs eRenderAs = (LLVOAvatar::ERenderOthersAs)render_others_as();
if ( (eRenderAs == ERenderOthersAs::EVERYONE_NORMALLY) || (isSelf()) ||
( (eRenderAs != ERenderOthersAs::INVISIBLE) && ( ((always_render_friends) && (isFriend())) ||
((always_render_nearby) && (isNearby())) ||
(AV_ALWAYS_RENDER == mVisuallyMuteSetting) ) ) )
{
return ERenderAvatarAs::NORMAL;
}
else if (eRenderAs == ERenderOthersAs::EVERYONE_AS_IMPOSTERS)
{
return ERenderAvatarAs::IMPOSTER;
}
return ERenderAvatarAs::INVISIBLE;
}
// [/SL:KB]
void LLVOAvatar::updateDebugText()
......@@ -6414,6 +6451,9 @@ BOOL LLVOAvatar::updateGeometry(LLDrawable *drawable)
{
LL_RECORD_BLOCK_TIME(FTM_UPDATE_AVATAR);
if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR)))
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
// if ( (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_AVATAR)) || (ERenderAvatarAs::INVISIBLE == getRenderAvatarAs()) )
// [/SL:KB]
{
return TRUE;
}
......@@ -7077,9 +7117,15 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color)
BOOL LLVOAvatar::isVisible() const
{
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
return mDrawable.notNull()
&& (!mOrphaned || isSelf())
&& (mDrawable->isVisible() || mIsDummy);
&& (mDrawable->isVisible() || mIsDummy)
&& (getRenderAvatarAs() != ERenderAvatarAs::INVISIBLE);
// [/SL:KB]
// return mDrawable.notNull()
// && (!mOrphaned || isSelf())
// && (mDrawable->isVisible() || mIsDummy);
}
// Determine if we have enough avatar data to render
......
......@@ -403,7 +403,23 @@ class LLVOAvatar :
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-4.1
bool isNearby() const;
bool isFriend() const;
enum class ERenderAvatarAs
{
NORMAL,
IMPOSTER,
INVISIBLE
};
enum class ERenderOthersAs
{
EVERYONE_NORMALLY = 0,
EVERYONE_AS_IMPOSTERS,
ONLY_EXCEPTIONS,
INVISIBLE
};
ERenderAvatarAs getRenderAvatarAs() const;
// [/SL:KB]
void forceUpdateVisualMuteSettings();
enum VisualMuteSettings
......@@ -413,7 +429,10 @@ class LLVOAvatar :
AV_ALWAYS_RENDER = 2
};
void setVisualMuteSettings(VisualMuteSettings set);
VisualMuteSettings getVisualMuteSettings() { return mVisuallyMuteSetting; };
// [SL:KB] - Patch: Appearance-Complexity | Checked: Catznip-5.4
VisualMuteSettings getVisualMuteSettings() const { return (ERenderAvatarAs::NORMAL == getRenderAvatarAs()) ? mVisuallyMuteSetting : AV_DO_NOT_RENDER; };
// [/SL:KB]
// VisualMuteSettings getVisualMuteSettings() { return mVisuallyMuteSetting; };
U32 renderRigid();
U32 renderSkinned();
......
......@@ -141,6 +141,9 @@ bool LLPipeline::RenderDeferred;
F32 LLPipeline::RenderDeferredSunWash;
U32 LLPipeline::RenderFSAASamples;
U32 LLPipeline::RenderResolutionDivisor;
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
F32 LLPipeline::RenderResolutionMultiplier;
// [/SL:KB]
bool LLPipeline::RenderUIBuffer;
S32 LLPipeline::RenderShadowDetail;
bool LLPipeline::RenderDeferredSSAO;
......@@ -586,6 +589,9 @@ void LLPipeline::init()
connectRefreshCachedSettingsSafe("RenderDeferredSunWash");
connectRefreshCachedSettingsSafe("RenderFSAASamples");
connectRefreshCachedSettingsSafe("RenderResolutionDivisor");
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
connectRefreshCachedSettingsSafe("RenderResolutionMultiplier");
// [/SL:KB]
connectRefreshCachedSettingsSafe("RenderUIBuffer");
connectRefreshCachedSettingsSafe("RenderShadowDetail");
connectRefreshCachedSettingsSafe("RenderDeferredSSAO");
......@@ -792,17 +798,20 @@ void LLPipeline::resizeScreenTexture()
GLuint resX = gViewerWindow->getWorldViewWidthRaw();
GLuint resY = gViewerWindow->getWorldViewHeightRaw();
// [RLVa:KB] - Checked: 2014-02-23 (RLVa-1.4.10)
U32 resMod = RenderResolutionDivisor, resAdjustedX = resX, resAdjustedY = resY;
if ( (resMod > 1) && (resMod < resX) && (resMod < resY) )
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
if ( (RenderResolutionDivisor > 1) && (RenderResolutionDivisor < resX) && (RenderResolutionDivisor < resY) )
{
resAdjustedX /= resMod;
resAdjustedY /= resMod;
resX /= RenderResolutionDivisor;
resY /= RenderResolutionDivisor;
}
else if (RenderResolutionMultiplier != 1.f)
{
resX *= RenderResolutionMultiplier;
resY *= RenderResolutionMultiplier;
}
// [/SL:KB]
if ( (resAdjustedX != mScreen.getWidth()) || (resAdjustedY != mScreen.getHeight()) )
// [/RLVa:KB]
// if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight()))
if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight()))
{
releaseScreenBuffers();
if (!allocateScreenBuffer(resX,resY))
......@@ -938,6 +947,13 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
resX /= res_mod;
resY /= res_mod;
}
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
else if (RenderResolutionMultiplier != 1.f)
{
resX *= RenderResolutionMultiplier;
resY *= RenderResolutionMultiplier;
}
// [/SL:KB]
if (RenderUIBuffer)
{
......@@ -1116,6 +1132,9 @@ void LLPipeline::refreshCachedSettings()
RenderDeferredSunWash = gSavedSettings.getF32("RenderDeferredSunWash");
RenderFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
RenderResolutionDivisor = gSavedSettings.getU32("RenderResolutionDivisor");
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
RenderResolutionMultiplier = gSavedSettings.getF32("RenderResolutionMultiplier");
// [/SL:KB]
RenderUIBuffer = gSavedSettings.getBOOL("RenderUIBuffer");
RenderShadowDetail = gSavedSettings.getS32("RenderShadowDetail");
RenderDeferredSSAO = gSavedSettings.getBOOL("RenderDeferredSSAO");
......
......@@ -871,6 +871,9 @@ class LLPipeline
static F32 RenderDeferredSunWash;
static U32 RenderFSAASamples;
static U32 RenderResolutionDivisor;
// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
static F32 RenderResolutionMultiplier;
// [/SL:KB]
static bool RenderUIBuffer;
static S32 RenderShadowDetail;
static bool RenderDeferredSSAO;
......
......@@ -5,6 +5,10 @@
layout="topleft"
name="panel_quickprefs_appearance"
width="300">
<string
name="visibility_text"
value="Visible to [VISIBLE] out of [TOTAL] nearby" />
<text
follows="top|left"
font.style="BOLD"
......@@ -16,20 +20,29 @@
width="100">
You
</text>
<text
follows="left|top"
height="15"
layout="topleft"
left_pad="5"
name="appearance_visibility_value"
width="175">
Visible to 10 out of 40 nearby
</text>
<slider
can_edit_text="true"
decimal_digits="3"
follows="top|left"
height="16"
increment="0.001"
initial_value="0.0"
label="Hover height:"
label_width="100"
<slider
can_edit_text="true"
decimal_digits="3"
follows="top|left"
height="16"
increment="0.001"
initial_value="0.0"
label="Hover height:"
label_width="80"
left="25"
layout="topleft"
name="appearance_hover_value"
top_pad="1"
layout="topleft"
name="appearance_hover_value"
top_pad="2"
right="-30" />
<text
......@@ -38,8 +51,8 @@
layout="topleft"
left="25"
name="appearance_complexity_text"
top_pad="2"
width="100">
top_pad="3"
width="85">
Complexity:
</text>
<text
......@@ -53,32 +66,13 @@
123,456,789
</text>
<text
follows="left|top"
height="15"
layout="topleft"
left="25"
name="appearance_visibility_text"
top_pad="2"
width="100">
Visible:
</text>
<text
follows="left|top"
height="15"
layout="topleft"
left_pad="5"
name="appearance_visibility_value"
width="150">
10 / 40
</text>
<check_box
height="16"
label="Show complexity notifications"
layout="topleft"
left="25"
left="23"
name="appearance_notifications_check"
top_pad="2"
top_pad="3"
width="130" />
<view_border
......@@ -110,7 +104,7 @@
increment="1"
tool_tip="Controls at what point a visually complex avatar is drawn as a jelly doll"
label="Complexity limit:"
label_width="100"
label_width="94"
layout="topleft"
left="25"
min_val="1"
......@@ -140,7 +134,7 @@
increment="1"
initial_value="12"
label="# Non-impostors:"
label_width="100"
label_width="94"
layout="topleft"
left="25"
min_val="1"
......@@ -162,29 +156,65 @@
width="60">
15
</text>
<text
follows="left|top"
height="15"
layout="topleft"
left="25"
name="appearance_renderas_text"
top_pad="4"
width="90">
Render:
</text>
<combo_box
control_name="RenderOthersAs"
follows="left|top"
height="18"
layout="topleft"
left_pad="9"
name="appearance_renderas_type"
right="-10"
top_delta="-3">
<combo_box.item
label="Only myself"
name="appearance_renderas_type_item0"
value="3" />
<combo_box.item
label="Myself and exceptions"
name="appearance_renderas_type_item1"
value="2" />
<combo_box.item
label="Everyone as imposters"
name="appearance_renderas_type_item2"
value="1" />
<combo_box.item
label="Everyone normally"
name="appearance_renderas_type_item3"
value="0" />
</combo_box>
<text
follows="left|top"
height="15"
layout="topleft"
left="25"
name="appearance_show_text"
top_pad="3"
top_pad="5"
width="90">
Always render:
Exceptions:
</text>
<check_box
control_name="RenderFriendsFull"
height="16"
label="Friends"
layout="topleft"
left_pad="2"
left_pad="9"
name="appearance_showfriends_check"
top_delta="0"
width="70" />
<button
follows="top|right"
height="18"
label="Exceptions"
label="Others..."
layout="topleft"
right="-10"
name="appearance_exceptions_btn"
......@@ -199,7 +229,7 @@
height="16"
label="Nearby avatars (20m)"
layout="topleft"
left="117"
left="124"
name="appearance_shownearby_check"
top_pad="3"
width="130" />
......@@ -213,7 +243,7 @@
name="appearance_border_2"
top_pad="3"
right="-5"/>
<text
follows="left|top"