summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Nikolenko <maximnproductengine@lindenlab.com>2026-03-19 00:08:44 +0200
committerGitHub <noreply@github.com>2026-03-19 00:08:44 +0200
commit1bd6893388ed939f3d4628be2b5f00de49350d50 (patch)
tree4299fe4368df8aa02972ba0b56ae68dd59eb38cc
parent76d8316e4f2c9ab662c4e94474edf8505ea9480f (diff)
parent1dca8b3257d6ac3fb56b28f4368aa0c00eb4795c (diff)
Merge pull request #5509 from secondlife/maxim/login_form_update
#5462 Login form update
-rw-r--r--indra/llui/llbutton.cpp22
-rw-r--r--indra/llui/llbutton.h9
-rw-r--r--indra/llui/lllayoutstack.cpp11
-rw-r--r--indra/llui/lllayoutstack.h6
-rw-r--r--indra/llui/lllineeditor.cpp4
-rw-r--r--indra/llui/lllineeditor.h4
-rw-r--r--indra/newview/llpanellogin.cpp28
-rw-r--r--indra/newview/llviewermenu.cpp2
-rw-r--r--indra/newview/llviewernetwork.cpp2
-rw-r--r--indra/newview/llviewernetwork.h1
-rw-r--r--indra/newview/skins/default/colors.xml6
-rw-r--r--indra/newview/skins/default/textures/textures.xml10
-rw-r--r--indra/newview/skins/default/textures/widgets/Checkbox_Slim_Off.pngbin0 -> 18115 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Checkbox_Slim_On.pngbin0 -> 17762 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_Arrow.pngbin0 -> 16236 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_white.pngbin0 -> 15808 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Login.pngbin18135 -> 18568 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Login_Over.pngbin18572 -> 18568 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Sign.pngbin0 -> 18631 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Sign_Over.pngbin0 -> 18631 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Sign_Pressed.pngbin0 -> 18631 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Text_Field_Cropped.pngbin0 -> 869 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/login_sl_logo_horizontal.pngbin0 -> 4366 bytes
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml503
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml2
25 files changed, 414 insertions, 196 deletions
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 3a3616c905..7f209c60a7 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -85,6 +85,7 @@ LLButton::Params::Params()
image_top_pad("image_top_pad"),
image_bottom_pad("image_bottom_pad"),
imgoverlay_label_space("imgoverlay_label_space", 1),
+ image_overlay_right_delta("image_overlay_right_delta", 0),
label_color("label_color"),
label_color_selected("label_color_selected"), // requires is_toggle true
label_color_disabled("label_color_disabled"),
@@ -109,6 +110,8 @@ LLButton::Params::Params()
commit_on_capture_lost("commit_on_capture_lost", false),
display_pressed_state("display_pressed_state", true),
use_draw_context_alpha("use_draw_context_alpha", true),
+ draw_focus_border("draw_focus_border", true),
+ hover_hand_cursor("hover_hand_cursor", false),
badge("badge"),
handle_right_mouse("handle_right_mouse"),
held_down_delay("held_down_delay"),
@@ -158,6 +161,7 @@ LLButton::LLButton(const LLButton::Params& p)
mImageOverlayTopPad(p.image_top_pad),
mImageOverlayBottomPad(p.image_bottom_pad),
mImgOverlayLabelSpace(p.imgoverlay_label_space),
+ mImageOverlayRightDelta(p.image_overlay_right_delta),
mIsToggle(p.is_toggle),
mScaleImage(p.scale_image),
mDropShadowedText(p.label_shadow),
@@ -179,6 +183,8 @@ LLButton::LLButton(const LLButton::Params& p)
mMouseUpSignal(NULL),
mHeldDownSignal(NULL),
mUseDrawContextAlpha(p.use_draw_context_alpha),
+ mDrawFocusBorder(p.draw_focus_border),
+ mHoverHandCursor(p.hover_hand_cursor),
mHandleRightMouse(p.handle_right_mouse),
mFlashingTimer(NULL)
{
@@ -653,7 +659,7 @@ bool LLButton::handleHover(S32 x, S32 y, MASK mask)
}
// We only handle the click if the click both started and ended within us
- getWindow()->setCursor(UI_CURSOR_ARROW);
+ getWindow()->setCursor(mHoverHandCursor ? UI_CURSOR_HAND : UI_CURSOR_ARROW);
LL_DEBUGS("UserInput") << "hover handled by " << getName() << LL_ENDL;
}
return true;
@@ -840,7 +846,7 @@ void LLButton::draw()
label_color = ll::ui::SearchableControl::getHighlightFontColor();
// overlay with keyboard focus border
- if (hasFocus())
+ if (hasFocus() && mDrawFocusBorder)
{
drawBorder(imagep, gFocusMgr.getFocusColor() % alpha, gFocusMgr.getFocusFlashWidth());
}
@@ -929,6 +935,17 @@ void LLButton::draw()
}
overlay_color.mV[VALPHA] *= alpha;
+ if (mImageOverlayRightDelta > 0)
+ {
+ mImageOverlay->draw(getRect().getWidth() - overlay_width - mImageOverlayRightDelta,
+ center_y - (overlay_height / 2),
+ overlay_width,
+ overlay_height,
+ overlay_color);
+ }
+ else
+ {
+
switch(mImageOverlayAlignment)
{
case LLFontGL::LEFT:
@@ -963,6 +980,7 @@ void LLButton::draw()
// draw nothing
break;
}
+ }
}
// Draw label
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index f530eceb4b..0d1a28ee31 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -110,6 +110,7 @@ public:
//image overlay paddings
Optional<S32> image_top_pad;
Optional<S32> image_bottom_pad;
+ Optional<S32> image_overlay_right_delta;
/**
* Space between image_overlay and label
@@ -132,7 +133,9 @@ public:
Optional<F32> hover_glow_amount;
Optional<TimeIntervalParam> held_down_delay;
- Optional<bool> use_draw_context_alpha;
+ Optional<bool> use_draw_context_alpha,
+ draw_focus_border,
+ hover_hand_cursor;
Optional<LLBadge::Params> badge;
@@ -366,12 +369,16 @@ protected:
S32 mImageOverlayBottomPad;
bool mUseDrawContextAlpha;
+ bool mDrawFocusBorder;
+ bool mHoverHandCursor;
/*
* Space between image_overlay and label
*/
S32 mImgOverlayLabelSpace;
+ S32 mImageOverlayRightDelta;
+
F32 mHoverGlowStrength;
F32 mCurGlowStrength;
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index fe0591ce4b..1dc80671cc 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -48,17 +48,21 @@ static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layo
LLLayoutPanel::Params::Params()
: expanded_min_dim("expanded_min_dim", 0),
min_dim("min_dim", -1),
+ max_dim("max_dim", -1),
user_resize("user_resize", false),
auto_resize("auto_resize", true)
{
addSynonym(min_dim, "min_width");
addSynonym(min_dim, "min_height");
+ addSynonym(max_dim, "max_width");
+ addSynonym(max_dim, "max_height");
}
LLLayoutPanel::LLLayoutPanel(const Params& p)
: LLPanel(p),
mExpandedMinDim(p.expanded_min_dim.isProvided() ? p.expanded_min_dim : p.min_dim),
mMinDim(p.min_dim),
+ mMaxDim(p.max_dim),
mAutoResize(p.auto_resize),
mUserResize(p.user_resize),
mCollapsed(false),
@@ -75,6 +79,7 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)
{
mVisibleAmt = 0.f;
}
+ setMaxDim(mMaxDim);
}
void LLLayoutPanel::initFromParams(const Params& p)
@@ -113,6 +118,8 @@ S32 LLLayoutPanel::getTargetDim() const
void LLLayoutPanel::setTargetDim(S32 value)
{
+ value = llmin(value, mMaxDim);
+
LLRect new_rect(getRect());
if (mOrientation == LLLayoutStack::HORIZONTAL)
{
@@ -145,6 +152,7 @@ void LLLayoutPanel::setOrientation( LLView::EOrientation orientation )
setMinDim(layout_dim);
}
mTargetDim = llmax(layout_dim, getMinDim());
+ mTargetDim = llmin(mTargetDim, mMaxDim);
}
void LLLayoutPanel::setVisible( bool visible )
@@ -167,6 +175,7 @@ void LLLayoutPanel::reshape( S32 width, S32 height, bool called_from_parent /*=
if (!mIgnoreReshape && !mAutoResize)
{
mTargetDim = (mOrientation == LLLayoutStack::HORIZONTAL) ? width : height;
+ mTargetDim = llmin(mTargetDim, mMaxDim);
LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent());
if (stackp)
{
@@ -439,6 +448,7 @@ void LLLayoutStack::updateLayout()
F32 fraction_to_distribute = (panelp->mFractionalSize * panelp->getAutoResizeFactor()) / (total_visible_fraction);
S32 delta = ll_round((F32)space_to_distribute * fraction_to_distribute);
panelp->mTargetDim += delta;
+ panelp->mTargetDim = llmin(panelp->mTargetDim, panelp->mMaxDim);
remaining_space -= delta;
}
}
@@ -455,6 +465,7 @@ void LLLayoutStack::updateLayout()
{
S32 space_for_panel = remaining_space > 0 ? 1 : -1;
panelp->mTargetDim += space_for_panel;
+ panelp->mTargetDim = llmin(panelp->mTargetDim, panelp->mMaxDim);
remaining_space -= space_for_panel;
}
}
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index 9e3536aaff..4c78c8a289 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -140,7 +140,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLPanel::Params>
{
Optional<S32> expanded_min_dim,
- min_dim;
+ min_dim,
+ max_dim;
Optional<bool> user_resize,
auto_resize;
@@ -164,6 +165,8 @@ public:
S32 getMinDim() const { return llmax(0, mMinDim); }
void setMinDim(S32 value) { mMinDim = value; }
+ void setMaxDim(S32 value) { mMaxDim = value < 0 ? S32_MAX : value; }
+
S32 getExpandedMinDim() const { return mExpandedMinDim >= 0 ? mExpandedMinDim : getMinDim(); }
void setExpandedMinDim(S32 value) { mExpandedMinDim = value; }
@@ -198,6 +201,7 @@ protected:
S32 mExpandedMinDim;
S32 mMinDim;
+ S32 mMaxDim;
bool mCollapsed;
F32 mVisibleAmt;
F32 mCollapseAmt;
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 4956d93e1c..9a88083a5d 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -97,6 +97,7 @@ LLLineEditor::Params::Params()
ignore_tab("ignore_tab", true),
is_password("is_password", false),
allow_emoji("allow_emoji", true),
+ draw_focus_border("draw_focus_border", true),
cursor_color("cursor_color"),
use_bg_color("use_bg_color", false),
bg_color("bg_color"),
@@ -147,6 +148,7 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
mIgnoreTab( p.ignore_tab ),
mDrawAsterixes( p.is_password ),
mAllowEmoji( p.allow_emoji ),
+ mDrawFocusBorder(p.draw_focus_border),
mSpellCheck( p.spellcheck ),
mSpellCheckStart(-1),
mSpellCheckEnd(-1),
@@ -1795,7 +1797,7 @@ void LLLineEditor::drawBackground()
if (!image) return;
// optionally draw programmatic border
- if (has_focus)
+ if (has_focus && mDrawFocusBorder)
{
LLColor4 tmp_color = gFocusMgr.getFocusColor();
tmp_color.setAlpha(alpha);
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 6384bfdc5f..fd248edda3 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -95,7 +95,8 @@ public:
show_label_focused,
is_password,
allow_emoji,
- use_bg_color;
+ use_bg_color,
+ draw_focus_border;
// colors
Optional<LLUIColor> cursor_color,
@@ -411,6 +412,7 @@ protected:
bool mAllowEmoji;
bool mUseBgColor;
+ bool mDrawFocusBorder;
LLWString mPreeditWString;
LLWString mPreeditOverwrittenWString;
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 868e02f28b..77de25c28e 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -174,6 +174,19 @@ public:
};
LLLoginLocationAutoHandler gLoginLocationAutoHandler;
+std::string getShortGridLabel(const std::string& slurl_grid)
+{
+ if (slurl_grid == MAINGRID)
+ {
+ return LLTrans::getString("AgniGridLabelShort");
+ }
+ if (slurl_grid == BETAGRID)
+ {
+ return LLTrans::getString("AditiGridLabelShort");
+ }
+ return LLGridManager::getInstance()->getGridLabel(slurl_grid);
+}
+
//---------------------------------------------------------------------------
// Public methods
//---------------------------------------------------------------------------
@@ -221,13 +234,13 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
password_edit->setCommitCallback(boost::bind(&LLPanelLogin::onClickConnect, false));
childSetAction("connect_btn", onClickConnect, this);
+ childSetAction("sign_btn", onClickSignUp, this);
mLoginBtn = getChild<LLButton>("connect_btn");
setDefaultBtn(mLoginBtn);
// change z sort of clickable text to be behind buttons
sendChildToBack(getChildView("forgot_password_text"));
- sendChildToBack(getChildView("sign_up_text"));
std::string current_grid = LLGridManager::getInstance()->getGrid();
if (!mFirstLoginThisInstall)
@@ -251,13 +264,13 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
if (!grid_choice->first.empty() && current_grid != grid_choice->first)
{
LL_DEBUGS("AppInit") << "adding " << grid_choice->first << LL_ENDL;
- server_choice_combo->add(grid_choice->second, grid_choice->first);
+ server_choice_combo->add(getShortGridLabel(grid_choice->first), grid_choice->first);
}
}
server_choice_combo->sortByName();
LL_DEBUGS("AppInit") << "adding current " << current_grid << LL_ENDL;
- server_choice_combo->add(LLGridManager::getInstance()->getGridLabel(),
+ server_choice_combo->add(getShortGridLabel(current_grid),
current_grid,
ADD_TOP);
server_choice_combo->selectFirstItem();
@@ -308,9 +321,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text");
forgot_password_text->setClickedCallback(onClickForgotPassword, NULL);
- LLTextBox* sign_up_text = getChild<LLTextBox>("sign_up_text");
- sign_up_text->setClickedCallback(onClickSignUp, NULL);
-
// get the web browser control
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
web_browser->addObserver(this);
@@ -752,6 +762,10 @@ void LLPanelLogin::updateLocationSelectorsVisibility()
{
server_combo->setVisible(show_server);
}
+ if (LLTextBox* grid_txt = sInstance->getChild<LLTextBox>("grid_text"))
+ {
+ grid_txt->setVisible(show_server);
+ }
}
}
@@ -787,7 +801,7 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)
// update the grid selector to match the slurl
LLComboBox* server_combo = sInstance->getChild<LLComboBox>("server_combo");
- std::string server_label(LLGridManager::getInstance()->getGridLabel(slurl_grid));
+ std::string server_label(getShortGridLabel(slurl_grid));
server_combo->setSimple(server_label);
updateServer(); // to change the links and splash screen
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index dbcf4fbbf4..ca01d048b4 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -649,7 +649,7 @@ void init_menus()
LLRect menuBarRect = gLoginMenuBarView->getRect();
menuBarRect.setLeftTopAndSize(0, menu_bar_holder->getRect().getHeight(), menuBarRect.getWidth(), menuBarRect.getHeight());
gLoginMenuBarView->setRect(menuBarRect);
- gLoginMenuBarView->setBackgroundColor( color );
+ gLoginMenuBarView->setBackgroundColor(LLColor4::black);
menu_bar_holder->addChild(gLoginMenuBarView);
// tooltips are on top of EVERYTHING, including menus
diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index 890580ddff..4101828019 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -125,7 +125,7 @@ void LLGridManager::initialize(const std::string& grid_file)
MAIN_GRID_WEB_PROFILE_URL,
"Agni");
addSystemGrid(LLTrans::getString("AditiGridLabel"),
- "util.aditi.lindenlab.com",
+ BETAGRID,
"https://login.aditi.lindenlab.com/cgi-bin/login.cgi",
"https://secondlife.aditi.lindenlab.com/helpers/",
DEFAULT_LOGIN_PAGE,
diff --git a/indra/newview/llviewernetwork.h b/indra/newview/llviewernetwork.h
index 2ed663e038..0937425a18 100644
--- a/indra/newview/llviewernetwork.h
+++ b/indra/newview/llviewernetwork.h
@@ -30,6 +30,7 @@
// @TODO this really should be private, but is used in llslurl
#define MAINGRID "util.agni.lindenlab.com"
+#define BETAGRID "util.aditi.lindenlab.com"
/// Exception thrown when a grid is not valid
class LLInvalidGridName
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index e7b8aa095a..d627556a7c 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -56,6 +56,9 @@
<color
name="DkGray2"
value="0.169 0.169 0.169 1" />
+ <color
+ name="DkGrayLogin"
+ value="0.129 0.133 0.137 1" />
<color
name="MouseGray"
value="0.191 0.191 0.191 1" />
@@ -1007,6 +1010,9 @@
name="PanelGray"
value="0.27 0.27 0.27 1" />
<color
+ name="PanelDark"
+ value="0.078 0.078 0.078 1" />
+ <color
name="PerformanceMid"
value="1 0.8 0 1" />
<color
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 2e655da82c..207aa438d7 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -124,7 +124,9 @@ with the same filename but different name
<texture name="Checkbox_Off_Disabled" file_name="widgets/Checkbox_Disabled.png" preload="true" />
<texture name="Checkbox_On_Disabled" file_name="widgets/Checkbox_On_Disabled.png" preload="true" />
<texture name="Checkbox_Off" file_name="widgets/Checkbox_Off.png" preload="true" />
+ <texture name="Checkbox_Slim_Off" file_name="widgets/Checkbox_Slim_Off.png" preload="true" />
<texture name="Checkbox_On" file_name="widgets/Checkbox_On.png" preload="true" />
+ <texture name="Checkbox_Slim_On" file_name="widgets/Checkbox_Slim_On.png" preload="true" />
<texture name="Checkbox_On_Press" file_name="widgets/Checkbox_On_Press.png" preload="true" />
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
<texture name="Check_Mark" file_name="icons/check_mark.png" preload="true" />
@@ -172,6 +174,8 @@ with the same filename but different name
<texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+ <texture name="ComboButton_White" file_name="widgets/ComboButton_white.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+ <texture name="ComboButton_Arrow" file_name="widgets/ComboButton_Arrow.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="Container" file_name="containers/Container.png" preload="false" />
@@ -566,7 +570,9 @@ with the same filename but different name
<texture name="PushButton_Login" file_name="widgets/PushButton_Login.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Login_Over" file_name="widgets/PushButton_Login_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="PushButton_Login_Pressed" file_name="widgets/PushButton_Login_Pressed.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
-
+ <texture name="PushButton_Sign" file_name="widgets/PushButton_Sign.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="PushButton_Sign_Over" file_name="widgets/PushButton_Sign_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+ <texture name="PushButton_Sign_Pressed" file_name="widgets/PushButton_Sign_Pressed.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
<texture name="RadioButton_Press" file_name="widgets/RadioButton_Press.png" preload="true" />
<texture name="RadioButton_On_Press" file_name="widgets/RadioButton_On_Press.png" preload="true" />
@@ -657,6 +663,7 @@ with the same filename but different name
<texture name="startup_logo" file_name="windows/startup_logo.png" preload="true" />
<texture name="login_sl_logo" file_name="windows/login_sl_logo.png" preload="true" />
+ <texture name="login_sl_logo_horizontal" file_name="windows/login_sl_logo_horizontal.png" preload="true" />
<texture name="login_sl_logo_small" file_name="windows/login_sl_logo_small.png" preload="true" />
<texture name="first_login_image" file_name="windows/first_login_image.jpg" preload="true" />
@@ -714,6 +721,7 @@ with the same filename but different name
<texture name="TextField_Active" file_name="widgets/TextField_Active.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
<texture name="TextField_Highlight" file_name="widgets/TextField_Highlight.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
<texture name="TextField_Search_Highlight" file_name="widgets/TextField_Search_Highlight.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
+ <texture name="Text_Field_Cropped" file_name="widgets/Text_Field_Cropped.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="Thumbnail_Fallback" file_name="icons/thumbnail_fallback_icon.png" preload="true" />
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Slim_Off.png b/indra/newview/skins/default/textures/widgets/Checkbox_Slim_Off.png
new file mode 100644
index 0000000000..99af0397d5
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/Checkbox_Slim_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Slim_On.png b/indra/newview/skins/default/textures/widgets/Checkbox_Slim_On.png
new file mode 100644
index 0000000000..cabecf1467
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/Checkbox_Slim_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Arrow.png b/indra/newview/skins/default/textures/widgets/ComboButton_Arrow.png
new file mode 100644
index 0000000000..7961967458
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ComboButton_Arrow.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_white.png b/indra/newview/skins/default/textures/widgets/ComboButton_white.png
new file mode 100644
index 0000000000..5c93700186
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/ComboButton_white.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Login.png b/indra/newview/skins/default/textures/widgets/PushButton_Login.png
index 2180adb2fd..7e892d2b0a 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Login.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Login.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png
index e2c3b297df..9110889d6c 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Login_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Sign.png b/indra/newview/skins/default/textures/widgets/PushButton_Sign.png
new file mode 100644
index 0000000000..f1c27f8c9b
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Sign.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Sign_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Sign_Over.png
new file mode 100644
index 0000000000..efef8bebad
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Sign_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Sign_Pressed.png b/indra/newview/skins/default/textures/widgets/PushButton_Sign_Pressed.png
new file mode 100644
index 0000000000..ec3409e8b8
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Sign_Pressed.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Text_Field_Cropped.png b/indra/newview/skins/default/textures/widgets/Text_Field_Cropped.png
new file mode 100644
index 0000000000..e5de6474f4
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/Text_Field_Cropped.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/login_sl_logo_horizontal.png b/indra/newview/skins/default/textures/windows/login_sl_logo_horizontal.png
new file mode 100644
index 0000000000..f56d0bd542
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/login_sl_logo_horizontal.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index e2219f6d5c..5bcd1fa0a4 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -6,7 +6,7 @@
name="panel_login"
focus_root="true"
background_visible="true"
- bg_opaque_color="0.16 0.16 0.16 1"
+ bg_opaque_color="DkGrayLogin"
background_opaque="true"
width="1024">
<panel.string
@@ -18,186 +18,329 @@
https://join.secondlife.com/
</panel.string>
<layout_stack
- follows="left|right|top"
- height="172"
- left="0"
- name="ui_stack"
- orientation="horizontal"
- top="10"
- width="1024">
+ follows="all"
+ layout="topleft"
+ orientation="horizontal"
+ name="main_stack"
+ border_size="0"
+ animate="false"
+ top="0"
+ left="0"
+ height="768"
+ width="1024">
+ <layout_panel
+ auto_resize="true"
+ user_resize="false"
+ layout="topleft"
+ name="left_spacer"
+ background_visible="false"
+ min_width="0"
+ expanded_min_dim="0"
+ width="1">
+ </layout_panel>
<layout_panel
- height="172"
- auto_resize="true"
- name="ui_elastic_pad_left"
- width="32" />
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ name="center_stage"
+ background_visible="true"
+ bg_opaque_color="DkGrayLogin"
+ background_opaque="true"
+ width="1008"
+ height="768">
+ <layout_stack
+ follows="all"
+ layout="topleft"
+ orientation="horizontal"
+ name="ui_stack"
+ border_size="0"
+ animate="false"
+ top="0"
+ left="0"
+ height="768"
+ width="1008">
+ <layout_panel
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ name="ui_container"
+ width="300"
+ height="768"
+ background_visible="true"
+ bg_opaque_color="PanelDark"
+ background_opaque="true">
+ <icon
+ height="77"
+ width="160"
+ image_name="login_sl_logo_horizontal"
+ layout="topleft"
+ follows="left|top"
+ left="70"
+ top="39"
+ name="sl_logo_small" />
+ <combo_box
+ left="40"
+ top_pad="30"
+ allow_text_entry="true"
+ follows="left|top"
+ layout="topleft"
+ height="28"
+ label="Username"
+ combo_editor.font="SansSerifLarge"
+ max_chars="128"
+ combo_editor.commit_on_focus_lost="false"
+ combo_editor.prevalidator="ascii"
+ tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
+ name="username_combo"
+ width="220">
+ <combo_box.combo_button
+ image_overlay="ComboButton_Arrow"
+ image_overlay_right_delta="10"
+ image_unselected="ComboButton_White"
+ hover_glow_amount="0"
+ image_selected="ComboButton_White"
+ image_disabled="ComboButton_White" />
+ <combo_box.combo_editor
+ background_image="Text_Field_Cropped"
+ background_image_disabled="Text_Field_Cropped"
+ background_image_focused="Text_Field_Cropped"
+ draw_focus_border="false"
+ text_pad_left="8"
+ bg_image_always_focused="true"/>
+ </combo_box>
+ <check_box
+ follows="left|top"
+ font="SansSerifMedium"
+ label_text.text_color="White"
+ top_pad="3"
+ layout="topleft"
+ height="24"
+ label="Remember username"
+ word_wrap="down"
+ check_button.bottom="3"
+ name="remember_name"
+ tool_tip="Already remembered user can be forgotten from Me &gt; Preferences &gt; Advanced &gt; Remembered Usernames."
+ width="198">
+ <check_box.label_text left="23"/>
+ <check_box.check_button
+ image_selected="Checkbox_Slim_On"
+ image_unselected="Checkbox_Slim_Off"
+ image_pressed="Checkbox_Slim_Off"
+ image_pressed_selected="Checkbox_Slim_Off"/>
+ </check_box>
+ <line_editor
+ follows="left|top"
+ height="28"
+ top_pad="20"
+ max_length_chars="16"
+ text_pad_left="8"
+ name="password_edit"
+ label="Password"
+ bg_image_always_focused="true"
+ font="SansSerifLarge"
+ is_password="true"
+ select_on_focus="true"
+ draw_focus_border="false"
+ commit_on_focus_lost="false"
+ width="220" />
+ <check_box
+ control_name="RememberPassword"
+ follows="left|top"
+ font="SansSerifMedium"
+ label_text.text_color="White"
+ height="24"
+ top_pad="3"
+ label="Remember password"
+ word_wrap="down"
+ check_button.bottom="3"
+ name="remember_password"
+ width="165">
+ <check_box.label_text left="23"/>
+ <check_box.check_button
+ image_selected="Checkbox_Slim_On"
+ image_unselected="Checkbox_Slim_Off"
+ image_pressed="Checkbox_Slim_Off"
+ image_pressed_selected="Checkbox_Slim_Off"/>
+ </check_box>
+ <text
+ follows="left|top"
+ font="SansSerif"
+ text_color="White"
+ height="12"
+ name="location_text"
+ top_pad="18"
+ width="120"
+ valign="center">
+ Start here
+ </text>
+ <combo_box
+ allow_text_entry="true"
+ control_name="NextLoginLocation"
+ follows="left|top"
+ label="My favorite places"
+ height="28"
+ max_chars="128"
+ combo_editor.font="SansSerifLarge"
+ top_pad="6"
+ name="start_location_combo"
+ width="220"
+ combo_button.scale_image="true">
+ <combo_box.combo_button
+ image_overlay="ComboButton_Arrow"
+ hover_glow_amount="0"
+ image_overlay_right_delta="10"
+ image_unselected="ComboButton_White"
+ image_selected="ComboButton_White"
+ image_disabled="ComboButton_White" />
+ <combo_box.combo_editor
+ background_image="Text_Field_Cropped"
+ background_image_disabled="Text_Field_Cropped"
+ background_image_focused="Text_Field_Cropped"
+ draw_focus_border="false"
+ text_pad_left="8"
+ bg_image_always_focused="true"/>
+ <combo_box.item
+ label="My last location"
+ name="MyLastLocation"
+ value="last" />
+ <combo_box.item
+ label="My home"
+ name="MyHome"
+ value="home" />
+ </combo_box>
+ <text
+ follows="left|top"
+ font="SansSerif"
+ text_color="white"
+ height="12"
+ name="grid_text"
+ top_pad="18"
+ width="120"
+ valign="center">
+ Grid
+ </text>
+ <combo_box
+ allow_text_entry="false"
+ font="SansSerifTiny"
+ follows="left|top"
+ height="28"
+ top_pad="6"
+ max_chars="128"
+ label="Select grid"
+ layout="topleft"
+ name="server_combo"
+ width="220">
+ <combo_box.drop_down_button
+ pad_bottom="1"
+ pad_left="10"
+ font="SansSerif"
+ label_color="Black"
+ label_color_selected="Black"
+ draw_focus_border="false"
+ image_overlay="ComboButton_Arrow"
+ image_overlay_right_delta="10"
+ image_unselected="TextField_Active"
+ image_selected="TextField_Active"
+ image_pressed="TextField_Active"
+ image_pressed_selected="TextField_Active"/>
+ </combo_box>
+ <button
+ follows="left|top"
+ image_unselected="PushButton_Login"
+ image_pressed="PushButton_Login_Pressed"
+ image_hover_unselected="PushButton_Login_Over"
+ label="Log in"
+ label_color="Black"
+ label_color_disabled="Black"
+ font="SansSerifLarge"
+ font.style="BOLD"
+ name="connect_btn"
+ draw_focus_border="false"
+ hover_hand_cursor="true"
+ enabled="true"
+ width="220"
+ height="30"
+ top_pad="25"
+ pad_bottom="1" />
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ text_color="EmphasisColor"
+ height="15"
+ name="forgot_password_text"
+ left="60"
+ top_pad="9"
+ width="180"
+ halign="center">
+ Need help logging in?
+ </text>
+ <button
+ follows="left|top"
+ image_unselected="PushButton_Sign"
+ image_pressed="PushButton_Sign_Pressed"
+ image_hover_unselected="PushButton_Sign_Over"
+ label="Create account"
+ label_color="White"
+ label_color_disabled="Black"
+ font="SansSerifMedium"
+ font.style="BOLD"
+ name="sign_btn"
+ draw_focus_border="false"
+ hover_hand_cursor="true"
+ width="220"
+ height="35"
+ left="40"
+ top_pad="25"
+ pad_bottom="1" />
+ </layout_panel>
+ <layout_panel
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ name="middle_gutter"
+ min_width="18"
+ max_width="18"
+ expanded_min_dim="18"
+ width="18"
+ height="768"
+ background_visible="true"
+ bg_opaque_color="DkGrayLogin"
+ background_opaque="true">
+ </layout_panel>
+ <layout_panel
+ auto_resize="false"
+ user_resize="false"
+ layout="topleft"
+ name="web_container"
+ width="690"
+ height="768"
+ background_visible="true"
+ bg_opaque_color="DkGrayLogin"
+ background_opaque="true">
+ <web_browser
+ tab_stop="false"
+ trusted_content="true"
+ bg_opaque_color="DkGrayLogin"
+ border_visible="false"
+ follows="all"
+ left="0"
+ top="0"
+ right="-1"
+ bottom="-1"
+ name="login_html"
+ start_url="" />
+ </layout_panel>
+ </layout_stack>
+ </layout_panel>
<layout_panel
- auto_resize="false"
- follows="left|right|top"
- name="ui_container"
- width="1011"
- left="0"
- top="0"
- height="172">
- <icon
- height="73"
- width="165"
- image_name="login_sl_logo"
- left="0"
- top="25"
- name="sl_logo_small" />
- <combo_box
- left_pad="22"
- bottom_delta="-7"
- allow_text_entry="true"
- follows="left|top"
- height="32"
- label="Username"
- combo_editor.font="SansSerifLarge"
- max_chars="128"
- combo_editor.commit_on_focus_lost="false"
- combo_editor.prevalidator="ascii"
- tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
- name="username_combo"
- width="206">
- <combo_box.combo_editor
- text_pad_left="8"
- bg_image_always_focused="true"/>
- </combo_box>
- <line_editor
- follows="left|top"
- height="32"
- left_pad="15"
- max_length_chars="16"
- text_pad_left="8"
- name="password_edit"
- label="Password"
- bg_image_always_focused="true"
- font="SansSerifLarge"
- is_password="true"
- select_on_focus="true"
- commit_on_focus_lost="false"
- bottom_delta="0"
- width="165" />
- <combo_box
- allow_text_entry="true"
- control_name="NextLoginLocation"
- follows="left|top"
- label="My favorite places"
- height="32"
- max_chars="128"
- combo_editor.font="SansSerifLarge"
- left_pad="15"
- bottom_delta="0"
- name="start_location_combo"
- width="175"
- combo_button.scale_image="true">
- <combo_box.combo_editor
- bg_image_always_focused="true"
- text_pad_left="8"/>
- <combo_box.item
- label="My last location"
- name="MyLastLocation"
- value="last" />
- <combo_box.item
- label="My home"
- name="MyHome"
- value="home" />
- </combo_box>
- <button
- follows="left|top"
- image_unselected="PushButton_Login"
- image_pressed="PushButton_Login_Pressed"
- image_hover_unselected="PushButton_Login_Over"
- label="Log in"
- label_color="White"
- font="SansSerifMedium"
- font.style="BOLD"
- name="connect_btn"
- enabled="true"
- width="120"
- height="32"
- left_pad="15"
- bottom_delta="0"
- pad_bottom="1" />
- <text
- follows="left|top"
- font="SansSerifLarge"
- font.style="BOLD"
- text_color="EmphasisColor"
- height="34"
- name="sign_up_text"
- left_pad="10"
- width="200"
- valign="center">
- Sign up
- </text>
- <check_box
- follows="left|top"
- font="SansSerifMedium"
- left="185"
- bottom_delta="21"
- height="24"
- label="Remember me"
- word_wrap="down"
- check_button.bottom="3"
- name="remember_name"
- tool_tip="Already remembered user can be forgotten from Me &gt; Preferences &gt; Advanced &gt; Remembered Usernames."
- width="198" />
- <check_box
- control_name="RememberPassword"
- follows="left|top"
- font="SansSerifMedium"
- height="24"
- left="408"
- bottom_delta="0"
- label="Remember password"
- word_wrap="down"
- check_button.bottom="3"
- name="remember_password"
- width="165" />
- <combo_box
- allow_text_entry="false"
- font="SansSerifTiny"
- follows="left|top"
- height="26"
- left="588"
- bottom_delta="8"
- max_chars="128"
- label="Select grid"
- layout="topleft"
- name="server_combo"
- width="149" >
- <combo_box.drop_down_button pad_right="21" />
- </combo_box>
- <text
- follows="left|top"
- font="SansSerifMedium"
- text_color="EmphasisColor"
- height="16"
- name="forgot_password_text"
- left="778"
- bottom_delta="-8"
- width="120"
- halign="center">
- Password help
- </text>
- </layout_panel>
- <layout_panel
- height="172"
- auto_resize="true"
- name="ui_elastic_pad_right"
- width="32" />
+ auto_resize="true"
+ user_resize="false"
+ layout="topleft"
+ name="right_spacer"
+ background_visible="false"
+ min_width="0"
+ expanded_min_dim="0"
+ width="1">
+ </layout_panel>
</layout_stack>
- <web_browser
- tab_stop="false"
- trusted_content="true"
- bg_opaque_color="Black"
- border_visible="false"
- follows="all"
- left="0"
- name="login_html"
- start_url=""
- top="154"
- height="600"
- width="1024" />
</panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 1860d38b0e..94e045cd9c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -116,6 +116,8 @@ Voice Server Version: [VOICE_VERSION]
<string name="AgniGridLabel">Second Life Main Grid (Agni)</string>
<string name="AditiGridLabel">Second Life Beta Test Grid (Aditi)</string>
+ <string name="AgniGridLabelShort">Agni (production)</string>
+ <string name="AditiGridLabelShort">Aditi (beta)</string>
<string name="ViewerDownloadURL">http://secondlife.com/download</string>
<string name="LoginFailedViewerNotPermitted">