summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/llloginhandler.cpp27
-rwxr-xr-xindra/newview/llpanellogin.cpp180
-rwxr-xr-xindra/newview/llpanellogin.h9
-rwxr-xr-xindra/newview/skins/default/textures/textures.xml4
-rw-r--r--indra/newview/skins/default/textures/windows/first_login_image_left.pngbin0 -> 251572 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/first_login_image_right.pngbin0 -> 274356 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/login_sl_logo.pngbin0 -> 33742 bytes
-rwxr-xr-xindra/newview/skins/default/xui/en/main_view.xml1
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_login.xml608
-rw-r--r--indra/newview/skins/default/xui/en/panel_login_first.xml255
-rwxr-xr-xindra/newview/skins/default/xui/en/widgets/combo_box.xml2
11 files changed, 700 insertions, 386 deletions
diff --git a/indra/newview/llloginhandler.cpp b/indra/newview/llloginhandler.cpp
index 9b4f146332..39f3c0f113 100755
--- a/indra/newview/llloginhandler.cpp
+++ b/indra/newview/llloginhandler.cpp
@@ -96,33 +96,6 @@ bool LLLoginHandler::handle(const LLSD& tokens,
return true;
}
- if (tokens.size() == 1
- && tokens[0].asString() == "show")
- {
- // We're using reg-in-client, so show the XUI login widgets
- LLPanelLogin::showLoginWidgets();
- return true;
- }
-
- if (tokens.size() == 1
- && tokens[0].asString() == "reg")
- {
- LLWindow* window = gViewerWindow->getWindow();
- window->incBusyCount();
- window->setCursor(UI_CURSOR_ARROW);
-
- // Do this first, as it may be slow and we want to keep something
- // on the user's screen as long as possible
- LLWeb::loadURLExternal( "http://join.eniac15.lindenlab.com/" );
-
- window->decBusyCount();
- window->setCursor(UI_CURSOR_ARROW);
-
- // Then hide the window
- window->minimize();
- return true;
- }
-
// Make sure window is visible
LLWindow* window = gViewerWindow->getWindow();
if (window->getMinimized())
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 911ecaad9d..911979721e 100755
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -82,20 +82,86 @@ const S32 MAX_PASSWORD = 16;
LLPanelLogin *LLPanelLogin::sInstance = NULL;
BOOL LLPanelLogin::sCapslockDidNotification = FALSE;
-class LLLoginRefreshHandler : public LLCommandHandler
+class LLLoginLocationAutoHandler : public LLCommandHandler
{
public:
// don't allow from external browsers
- LLLoginRefreshHandler() : LLCommandHandler("login_refresh", UNTRUSTED_BLOCK) { }
+ LLLoginLocationAutoHandler() : LLCommandHandler("location_login", UNTRUSTED_BLOCK) { }
bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web)
- {
+ {
if (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP)
{
- LLPanelLogin::loadLoginPage();
- }
+ if ( tokens.size() == 0 || tokens.size() > 4 )
+ return false;
+
+ // unescape is important - uris with spaces are escaped in this code path
+ // (e.g. space -> %20) and the code to log into a region doesn't support that.
+ const std::string region = LLURI::unescape( tokens[0].asString() );
+
+ // just region name as payload
+ if ( tokens.size() == 1 )
+ {
+ // region name only - slurl will end up as center of region
+ LLSLURL slurl(region);
+ LLPanelLogin::autologinToLocation(slurl);
+ }
+ else
+ // region name and x coord as payload
+ if ( tokens.size() == 2 )
+ {
+ // invalid to only specify region and x coordinate
+ // slurl code will revert to same as region only, so do this anyway
+ LLSLURL slurl(region);
+ LLPanelLogin::autologinToLocation(slurl);
+ }
+ else
+ // region name and x/y coord as payload
+ if ( tokens.size() == 3 )
+ {
+ // region and x/y specified - default z to 0
+ F32 xpos;
+ std::istringstream codec(tokens[1].asString());
+ codec >> xpos;
+
+ F32 ypos;
+ codec.clear();
+ codec.str(tokens[2].asString());
+ codec >> ypos;
+
+ const LLVector3 location(xpos, ypos, 0.0f);
+ LLSLURL slurl(region, location);
+
+ LLPanelLogin::autologinToLocation(slurl);
+ }
+ else
+ // region name and x/y/z coord as payload
+ if ( tokens.size() == 4 )
+ {
+ // region and x/y/z specified - ok
+ F32 xpos;
+ std::istringstream codec(tokens[1].asString());
+ codec >> xpos;
+
+ F32 ypos;
+ codec.clear();
+ codec.str(tokens[2].asString());
+ codec >> ypos;
+
+ F32 zpos;
+ codec.clear();
+ codec.str(tokens[3].asString());
+ codec >> zpos;
+
+ const LLVector3 location(xpos, ypos, zpos);
+ LLSLURL slurl(region, location);
+
+ LLPanelLogin::autologinToLocation(slurl);
+ };
+ }
return true;
}
};
+LLLoginLocationAutoHandler gLoginLocationAutoHandler;
//---------------------------------------------------------------------------
// Public methods
@@ -134,7 +200,14 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
// Logo
mLogoImage = LLUI::getUIImage("startup_logo");
- buildFromFile( "panel_login.xml");
+ if (gSavedSettings.getBOOL("FirstLoginThisInstall"))
+ {
+ buildFromFile( "panel_login_first.xml");
+ }
+ else
+ {
+ buildFromFile( "panel_login.xml");
+ }
reshape(rect.getWidth(), rect.getHeight());
@@ -220,8 +293,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
web_browser->addObserver(this);
- reshapeBrowser();
-
loadLoginPage();
// Show last logged in user favorites in "Start at" combo.
@@ -298,21 +369,6 @@ void LLPanelLogin::addFavoritesToStartLocation()
}
}
-// force the size to be correct (XML doesn't seem to be sufficient to do this)
-// (with some padding so the other login screen doesn't show through)
-void LLPanelLogin::reshapeBrowser()
-{
- LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
- LLRect rect = gViewerWindow->getWindowRectScaled();
- LLRect html_rect;
- html_rect.setCenterAndSize(
- rect.getCenterX() - 2, rect.getCenterY() + 40,
- rect.getWidth() + 6, rect.getHeight() - 78 );
- web_browser->setRect( html_rect );
- web_browser->reshape( html_rect.getWidth(), html_rect.getHeight(), TRUE );
- reshape( rect.getWidth(), rect.getHeight(), 1 );
-}
-
LLPanelLogin::~LLPanelLogin()
{
LLPanelLogin::sInstance = NULL;
@@ -322,50 +378,6 @@ LLPanelLogin::~LLPanelLogin()
gFocusMgr.setDefaultKeyboardFocus(NULL);
}
-// virtual
-void LLPanelLogin::draw()
-{
- gGL.pushMatrix();
- {
- F32 image_aspect = 1.333333f;
- F32 view_aspect = (F32)getRect().getWidth() / (F32)getRect().getHeight();
- // stretch image to maintain aspect ratio
- if (image_aspect > view_aspect)
- {
- gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f);
- gGL.scalef(image_aspect / view_aspect, 1.f, 1.f);
- }
-
- S32 width = getRect().getWidth();
- S32 height = getRect().getHeight();
-
- if (getChild<LLView>("login_widgets")->getVisible())
- {
- // draw a background box in black
- gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
- // draw the bottom part of the background image
- // just the blue background to the native client UI
- mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
- };
- }
- gGL.popMatrix();
-
- LLPanel::draw();
-}
-
-// virtual
-BOOL LLPanelLogin::handleKeyHere(KEY key, MASK mask)
-{
- if ( KEY_F1 == key )
- {
- LLViewerHelp* vhelp = LLViewerHelp::getInstance();
- vhelp->showTopic(vhelp->f1HelpTopic());
- return TRUE;
- }
-
- return LLPanel::handleKeyHere(key, mask);
-}
-
// virtual
void LLPanelLogin::setFocus(BOOL b)
{
@@ -421,24 +433,6 @@ void LLPanelLogin::giveFocus()
}
// static
-void LLPanelLogin::showLoginWidgets()
-{
- if (sInstance)
- {
- // *NOTE: Mani - This may or may not be obselete code.
- // It seems to be part of the defunct? reg-in-client project.
- sInstance->getChildView("login_widgets")->setVisible( true);
- LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
- sInstance->reshapeBrowser();
- // *TODO: Append all the usual login parameters, like first_login=Y etc.
- std::string splash_screen_url = LLGridManager::getInstance()->getLoginPage();
- web_browser->navigateTo( splash_screen_url, "text/html" );
- LLUICtrl* username_combo = sInstance->getChild<LLUICtrl>("username_combo");
- username_combo->setFocus(TRUE);
- }
-}
-
-// static
void LLPanelLogin::show(const LLRect &rect,
void (*callback)(S32 option, void* user_data),
void* callback_data)
@@ -640,7 +634,8 @@ void LLPanelLogin::updateLocationSelectorsVisibility()
sInstance->getChild<LLLayoutPanel>("start_location_panel")->setVisible(show_start);
BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid");
- sInstance->getChild<LLLayoutPanel>("grid_panel")->setVisible(show_server);
+ //sInstance->getChild<LLLayoutPanel>("grid_panel")->setVisible(show_server);
+ sInstance->getChild<LLComboBox>("server_combo")->setVisible(show_server);
}
}
@@ -713,6 +708,19 @@ void LLPanelLogin::setLocation(const LLSLURL& slurl)
LL_DEBUGS("AppInit")<<"setting Location "<<slurl.asString()<<LL_ENDL;
LLStartUp::setStartSLURL(slurl); // calls onUpdateStartSLURL, above
}
+
+void LLPanelLogin::autologinToLocation(const LLSLURL& slurl)
+{
+ LL_DEBUGS("AppInit")<<"automatically logging into Location "<<slurl.asString()<<LL_ENDL;
+ LLStartUp::setStartSLURL(slurl); // calls onUpdateStartSLURL, above
+
+ if ( LLPanelLogin::sInstance != NULL )
+ {
+ void* unused_paramter = 0;
+ LLPanelLogin::sInstance->onClickConnect(unused_paramter);
+ }
+}
+
// static
void LLPanelLogin::closePanel()
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index c71cfc3783..bdce2b3a8c 100755
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -49,14 +49,8 @@ public:
void *callback_data);
~LLPanelLogin();
- virtual BOOL handleKeyHere(KEY key, MASK mask);
- virtual void draw();
virtual void setFocus( BOOL b );
- // Show the XUI first name, last name, and password widgets. They are
- // hidden on startup for reg-in-client
- static void showLoginWidgets();
-
static void show(const LLRect &rect,
void (*callback)(S32 option, void* user_data),
void* callback_data);
@@ -67,6 +61,7 @@ public:
static BOOL areCredentialFieldsDirty();
static void setLocation(const LLSLURL& slurl);
+ static void autologinToLocation(const LLSLURL& slurl);
/// Call when preferences that control visibility may have changed
static void updateLocationSelectorsVisibility();
@@ -88,7 +83,6 @@ public:
private:
friend class LLPanelLoginListener;
- void reshapeBrowser();
void addFavoritesToStartLocation();
void addUsersWithFavoritesToUsername();
void onSelectServer();
@@ -113,6 +107,7 @@ private:
static LLPanelLogin* sInstance;
static BOOL sCapslockDidNotification;
+ bool mFirstLoginThisInstall;
};
#endif
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 94c187e21a..011e2b47ab 100755
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -574,6 +574,10 @@ 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="first_login_image_left" file_name="windows/first_login_image_left.png" preload="true" />
+ <texture name="first_login_image_right" file_name="windows/first_login_image_right.png" preload="true" />
+
<texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />
<texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="false" />
<texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="false" />
diff --git a/indra/newview/skins/default/textures/windows/first_login_image_left.png b/indra/newview/skins/default/textures/windows/first_login_image_left.png
new file mode 100644
index 0000000000..bb485be091
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/first_login_image_left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/first_login_image_right.png b/indra/newview/skins/default/textures/windows/first_login_image_right.png
new file mode 100644
index 0000000000..87bd760671
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/first_login_image_right.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/login_sl_logo.png b/indra/newview/skins/default/textures/windows/login_sl_logo.png
new file mode 100644
index 0000000000..132912239a
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/login_sl_logo.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a87027a113..9885e37cea 100755
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -68,6 +68,7 @@
left="0"
follows="all"
height="500"
+ layout="topleft"
mouse_opaque="false"
name="login_panel_holder"
width="1024"/>
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 134ca75018..760069f897 100755
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -1,265 +1,343 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="600"
- layout="topleft"
- left="0"
- name="panel_login"
- focus_root="true"
- top="600"
- width="1130">
- <string name="reg_in_client_url" translate="false">
- http://secondlife.eniac15.lindenlab.com/reg-in-client/
- </string>
- <panel.string
- name="forgot_password_url">
- http://secondlife.com/account/request.php
- </panel.string>
- <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
- <web_browser
- tab_stop="false"
- trusted_content="true"
- bg_opaque_color="Black"
- border_visible="false"
- bottom="600"
- follows="all"
- left="0"
- name="login_html"
- start_url=""
- top="0"
- height="600"
- width="996"/>
- <layout_stack
- animate="false"
- clip="false"
- follows="left|bottom|right"
- name="login_widgets"
- layout="topleft"
- orientation="horizontal"
- top="519"
- width="1130"
- height="80">
- <layout_panel
- auto_resize="false"
- follows="left|bottom"
- name="login"
- layout="topleft"
- width="310"
- min_width="310"
- height="80">
- <text
- follows="left|bottom"
- font="SansSerif"
- font.style="BOLD"
- font.size="Large"
- height="16"
- name="log_in_text"
- top="8"
- left="15"
- width="150">
- LOG IN
- </text>
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="16"
- name="username_text"
- top="35"
- left="15"
- width="150">
- Username:
- </text>
- <!-- STEAM-14: Turn off commit_on_focus_lost so if user presses Enter
- with focus in this combo_box, we can use commit action to initiate
- login -->
- <combo_box
- allow_text_entry="true"
- follows="left|bottom"
- height="22"
- left_delta="0"
- max_chars="128"
- commit_on_focus_lost="false"
- combo_editor.prevalidate_callback="ascii"
- tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
- top_pad="0"
- name="username_combo"
- width="178">
-<!-- empirically, displayed width is 150 anyway?!? -->
- <combo_box.combo_button
- visible ="false"/>
- <combo_box.drop_down_button
- visible ="false"/>
- </combo_box>
-<!-- left="175" based on actual "username_combo" width of 150 vs. 178 -->
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="16"
- name="password_text"
- top="35"
- left="175"
- width="150">
- Password:
- </text>
- <!-- STEAM-14: Turn off commit_on_focus_lost so if user presses Enter
- with focus in this line_editor, we can use commit action to
- initiate login -->
- <line_editor
- follows="left|bottom"
- height="22"
- max_length_bytes="16"
- name="password_edit"
- is_password="true"
- select_on_focus="true"
- commit_on_focus_lost="false"
- top_pad="0"
- width="135" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|bottom"
- name="start_location_panel"
- layout="topleft"
- width="175"
- min_width="175"
- height="80">
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- height="16"
- left="10"
- name="start_location_text"
- top="35"
- width="130">
- Start at:
- </text>
- <combo_box
- allow_text_entry="true"
- control_name="NextLoginLocation"
- follows="left|bottom"
- height="22"
- max_chars="128"
- top_pad="0"
- name="start_location_combo"
- width="165">
- <combo_box.item
- label="My last location"
- name="MyLastLocation"
- value="last" />
- <combo_box.item
- label="My home"
- name="MyHome"
- value="home" />
- <combo_box.item
- label="&lt;Type region name&gt;"
- name="Typeregionname" value="" />
- </combo_box>
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|bottom"
- name="grid_panel"
- layout="topleft"
- width="145"
- height="80"
- visible="false">
- <combo_box
- allow_text_entry="false"
- font="SansSerifSmall"
- follows="left|right|bottom"
- height="23"
- max_chars="256"
- left="10"
- top="51"
- layout="topleft"
- top_pad="2"
- name="server_combo"
- width="135" />
- </layout_panel>
- <layout_panel
- auto_resize="false"
- follows="left|bottom"
- name="links_login_panel"
- layout="topleft"
- width="290"
- height="80">
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- text_color="EmphasisColor"
- left="10"
- height="16"
- name="login_help"
- top="19"
- width="280">
- Need help logging in?
- </text>
- <text
- follows="left|bottom"
- font="SansSerifSmall"
- text_color="EmphasisColor"
- height="16"
- name="forgot_password_text"
- top="35"
- width="280">
- Forgot your username or password?
- </text>
- <button
- follows="left|bottom"
- top_pad="0"
- height="23"
- image_unselected="PushButton_On"
- image_selected="PushButton_On_Selected"
- label="Log In"
- label_color="White"
- layout="topleft"
- name="connect_btn"
- width="90" />
- <check_box
- control_name="RememberPassword"
- follows="left|bottom"
- font="SansSerifSmall"
- left="110"
- top="56"
- height="16"
- label="Remember password"
- top_pad="3"
- name="remember_check"
- width="145" />
- </layout_panel>
- <layout_panel
- tab_stop="false"
- follows="right|bottom"
- name="links"
- width="210"
- min_width="100"
- height="80">
- <text
- follows="right|bottom"
- font="SansSerif"
- font.style="BOLD"
- font.size="Large"
- halign="right"
- height="16"
- name="create_account_text"
- top="8"
- right="-15"
- width="200">
- CREATE YOUR ACCOUNT
- </text>
- <button
- follows="right|bottom"
- top="35"
- right="-15"
- height="23"
- image_unselected="PushButton_On"
- image_selected="PushButton_On_Selected"
- label="Start now"
- label_color="White"
- layout="topleft"
- left_pad="10"
- name="create_new_account_btn"
- width="90" />
- </layout_panel>
- </layout_stack>
-</panel>
+<panel
+ follows="all"
+ height="768"
+ layout="topleft"
+ name="panel_login"
+ focus_root="true"
+ background_visible="true"
+ bg_opaque_color="0.16 0.16 0.16 1"
+ background_opaque="true"
+ width="1024">
+ <panel.string
+ name="forgot_password_url">
+ http://secondlife.com/account/request.php
+ </panel.string>
+ <layout_stack
+ follows="left|right|top|bottom"
+ width="1024"
+ height="768"
+ left="0"
+ name="logo_stack"
+ orientation="vertical"
+ top="0">
+ <layout_panel
+ height="30"
+ auto_resize="false"
+ name="page_top"
+ width="1024" />
+ <!-- start of logo stack -->
+ <layout_panel
+ height="140"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="400"
+ left="0"
+ name="logo_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="400"
+ min_height="0"
+ auto_resize="true"
+ name="logo_left"
+ width="300" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="logo_container"
+ width="315"
+ left="0"
+ top="0"
+ height="215">
+ <icon
+ height="128"
+ image_name="login_sl_logo"
+ left="0"
+ name="sl_logo"
+ top="0" />
+ </layout_panel>
+ <layout_panel
+ height="400"
+ name="logo_right"
+ auto_resize="true"
+ width="300" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of logo stack -->
+ <!-- start of widget1 stack -->
+ <layout_panel
+ height="80"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel2"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="80"
+ left="0"
+ name="widget_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="100"
+ min_height="10"
+ auto_resize="true"
+ name="widget_left"
+ width="100" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="widget_container"
+ width="560"
+ left="0"
+ top="0"
+ height="80">
+ <!-- width 560 -->
+ <combo_box
+ allow_text_entry="true"
+ follows="left|bottom"
+ height="32"
+ left="0"
+ label="Username"
+ combo_editor.font="SansSerifLarge"
+ max_chars="128"
+ top="0"
+ commit_on_focus_lost="false"
+ combo_editor.prevalidate_callback="ascii"
+ tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
+ name="username_combo"
+ width="232">
+ <!-- width 232 -->
+ <combo_box.combo_button
+ visible="false" />
+ <combo_box.drop_down_button
+ visible="false" />
+ </combo_box>
+ <line_editor
+ follows="left|top"
+ height="32"
+ left="220"
+ max_length_bytes="16"
+ name="password_edit"
+ label="Password"
+ font="SansSerifLarge"
+ is_password="true"
+ select_on_focus="true"
+ commit_on_focus_lost="false"
+ top="0"
+ width="200" />
+ <!-- width 200 -->
+ <combo_box
+ allow_text_entry="false"
+ font="SansSerifTiny"
+ follows="left|top"
+ height="20"
+ max_chars="128"
+ left="432"
+ top="12"
+ layout="topleft"
+ top_pad="2"
+ name="server_combo"
+ width="128" />
+ <!-- width 128 -->
+ <check_box
+ control_name="RememberPassword"
+ follows="left|top"
+ font="SansSerifLarge"
+ left="0"
+ top="32"
+ height="24"
+ label="Remember me"
+ check_button.bottom="3"
+ name="remember_check"
+ width="145" />
+ <text
+ follows="left|top"
+ font="SansSerifLarge"
+ text_color="EmphasisColor"
+ height="16"
+ name="forgot_password_text"
+ left="216"
+ top="34"
+ width="200">
+ Forgotten password
+ </text>
+ </layout_panel>
+ <layout_panel
+ height="20"
+ name="widget_right"
+ auto_resize="true"
+ width="100" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of widget1 stack -->
+ <!-- start of widget2 stack -->
+ <layout_panel
+ height="58"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel3"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="50"
+ left="0"
+ name="widget_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="50"
+ min_height="10"
+ auto_resize="true"
+ name="widget_left"
+ width="200" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="widget_container"
+ width="832"
+ left="0"
+ top="0"
+ height="50">
+ <button
+ follows="left|top"
+ image_unselected="PushButton_On"
+ image_selected="PushButton_On_Selected"
+ label="Log In"
+ label_color="White"
+ font="SansSerifMedium"
+ name="connect_btn"
+ left="0"
+ width="64"
+ height="30"
+ top="0" />
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ height="24"
+ name="At_My_Last_Location_Label"
+ left="72"
+ top="8"
+ width="200">
+ At my last location
+ </text>
+ <combo_box
+ control_name="NextLoginLocation"
+ follows="left|bottom"
+ label="My favorites"
+ height="30"
+ max_chars="128"
+ combo_editor.font="SansSerifMedium"
+ left="290"
+ top="0"
+ name="start_location_combo"
+ width="175"
+ combo_button.scale_image="true">
+ <combo_box.item
+ label="My home"
+ name="MyHome"
+ value="home" />
+ </combo_box>
+ <button
+ follows="left|top"
+ image_unselected="PushButton_On"
+ image_selected="PushButton_On_Selected"
+ label="Log In"
+ label_color="White"
+ font="SansSerifMedium"
+ name="connect_favorite_btn"
+ left="470"
+ width="64"
+ height="30"
+ top="0" />
+ <line_editor
+ follows="left|top"
+ width="170"
+ height="30"
+ left="590"
+ name="location_edit"
+ label="Type a location"
+ font="SansSerifMedium"
+ select_on_focus="true"
+ commit_on_focus_lost="false"
+ top="0" />
+ <button
+ follows="left|top"
+ image_unselected="PushButton_On"
+ image_selected="PushButton_On_Selected"
+ label="Log In"
+ label_color="White"
+ font="SansSerifMedium"
+ name="connect_location_btn"
+ left="768"
+ width="64"
+ height="30"
+ top="0" />
+ </layout_panel>
+ <layout_panel
+ height="100"
+ name="widget_right"
+ auto_resize="true"
+ width="200" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of widget2 stack -->
+ <!-- start of browser stack -->
+ <layout_panel
+ height="400"
+ min_height="10"
+ auto_resize="false"
+ name="parent_pane4"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="400"
+ left="0"
+ name="browser_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="400"
+ min_height="0"
+ auto_resize="true"
+ name="browser_left"
+ width="300" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="browser_container"
+ width="850"
+ left="0"
+ top="0"
+ height="400">
+ <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="0"
+ height="400"
+ width="850" />
+ </layout_panel>
+ <layout_panel
+ height="400"
+ name="browser_right"
+ auto_resize="true"
+ width="300" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of browser stack -->
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_login_first.xml b/indra/newview/skins/default/xui/en/panel_login_first.xml
new file mode 100644
index 0000000000..11751151b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_login_first.xml
@@ -0,0 +1,255 @@
+<panel
+ follows="all"
+ height="768"
+ layout="topleft"
+ name="panel_login"
+ focus_root="true"
+ background_visible="true"
+ bg_opaque_color="0.16 0.16 0.16 1"
+ background_opaque="true"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ width="1024"
+ height="768"
+ left="0"
+ name="logo_stack"
+ orientation="vertical"
+ top="0">
+ <layout_panel
+ height="48"
+ auto_resize="false"
+ name="page_top"
+ width="1024" />
+ <!-- start of logo stack -->
+ <layout_panel
+ height="150"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="400"
+ left="0"
+ name="logo_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="400"
+ min_height="10"
+ auto_resize="true"
+ name="logo_left"
+ width="300" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="logo_container"
+ width="315"
+ left="0"
+ top="0"
+ height="215">
+ <icon
+ height="128"
+ image_name="login_sl_logo"
+ left="0"
+ name="sl_logo"
+ top="15" />
+ </layout_panel>
+ <layout_panel
+ height="400"
+ name="logo_right"
+ auto_resize="true"
+ width="300" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of logo stack -->
+ <!-- start of widget stack -->
+ <layout_panel
+ height="100"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel2"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="80"
+ left="0"
+ name="widget_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="80"
+ min_height="10"
+ auto_resize="true"
+ name="widget_left"
+ width="200" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="widget_container"
+ width="532"
+ left="0"
+ top="0"
+ height="80">
+ <combo_box
+ allow_text_entry="true"
+ follows="left|bottom"
+ height="32"
+ left="0"
+ label="Username"
+ combo_editor.font="SansSerifLarge"
+ max_chars="128"
+ top="0"
+ commit_on_focus_lost="false"
+ combo_editor.prevalidate_callback="ascii"
+ tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
+ name="username_combo"
+ width="232">
+ <combo_box.combo_button
+ visible ="false"/>
+ <combo_box.drop_down_button
+ visible ="false"/>
+ </combo_box>
+ <line_editor
+ follows="left|top"
+ width="200"
+ height="32"
+ left="220"
+ max_length_bytes="16"
+ name="password_edit"
+ label="Password"
+ font="SansSerifLarge"
+ is_password="true"
+ select_on_focus="true"
+ commit_on_focus_lost="false"
+ top="0" />
+ <button
+ follows="left|top"
+ image_unselected="PushButton_On"
+ image_selected="PushButton_On_Selected"
+ label="Log In"
+ label_color="White"
+ font="SansSerifLarge"
+ name="connect_btn"
+ left="432"
+ width="100"
+ height="32"
+ top="0" />
+ <check_box
+ control_name="RememberPassword"
+ follows="left|top"
+ font="SansSerifLarge"
+ left="0"
+ top="32"
+ height="24"
+ label="Remember me"
+ check_button.bottom="3"
+ name="remember_check"
+ width="145" />
+ <text
+ follows="left|top"
+ font="SansSerifLarge"
+ text_color="EmphasisColor"
+ height="16"
+ name="forgot_password_text"
+ left="216"
+ top="34"
+ width="200">
+ Forgotten password
+ </text>
+ </layout_panel>
+ <layout_panel
+ height="100"
+ name="widget_right"
+ auto_resize="true"
+ width="200" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of widget stack -->
+ <!-- start of images stack -->
+ <layout_panel
+ height="500"
+ min_height="10"
+ auto_resize="false"
+ name="parent_panel3"
+ width="1024">
+ <layout_stack
+ follows="left|right|top|bottom"
+ height="500"
+ left="0"
+ name="images_stack"
+ orientation="horizontal"
+ top="0"
+ width="1024">
+ <layout_panel
+ height="500"
+ min_height="10"
+ auto_resize="true"
+ name="images_left"
+ width="96" />
+ <layout_panel
+ auto_resize="false"
+ follows="left|right|top"
+ name="images_container"
+ width="832"
+ left="0"
+ top="0"
+ height="500">
+ <icon
+ height="400"
+ width="400"
+ image_name="first_login_image_left"
+ left="0"
+ name="image_left"
+ top="0" />
+ <icon
+ height="400"
+ width="400"
+ image_name="first_login_image_right"
+ left_pad="32"
+ name="image_right"
+ top="0" />
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ text_color="White"
+ height="16"
+ name="image_caption_left"
+ left="0"
+ halign="center"
+ top="408"
+ width="400">
+ Your first step is Learning Island. Find the exit portal!
+ </text>
+ <text
+ follows="left|top"
+ font="SansSerifMedium"
+ text_color="White"
+ height="16"
+ name="image_caption_left"
+ left="432"
+ halign="center"
+ top="408"
+ width="400">
+ Then explore Social Island and meet other new residents!
+ </text>
+ </layout_panel>
+ <layout_panel
+ height="100"
+ name="images_right"
+ auto_resize="true"
+ width="96" />
+ </layout_stack>
+ </layout_panel>
+ <!-- end of images stack -->
+ <layout_panel
+ height="400"
+ min_height="10"
+ auto_resize="true"
+ name="page_bottom"
+ width="1024" />
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
index 82d620d1e6..65f9a143e9 100755
--- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml
@@ -7,7 +7,7 @@
<combo_box.combo_button name="Combobox Button"
hover_glow_amount="0.15"
font="SansSerifSmall"
- scale_image="false"
+ scale_image="true"
image_unselected="ComboButton_Off"
image_selected="ComboButton_Selected"
image_disabled="ComboButton_Disabled" />