Automated merge with bundle:E:\code\viewer-experience+c:\users\richard\appdata\local\temp\thg.t3awyz\ssh__richard@hg.lindenlab.com_richard_viewer-experience-merge_2xcevh.hg

master
Richard Linden 2011-05-02 17:29:56 -07:00
commit 78d76eb4b0
33 changed files with 651 additions and 516 deletions

View File

@ -171,13 +171,6 @@ viewer-tut-teamcity.email = enus@lindenlab.com
viewer-tut-teamcity.build_server = false
viewer-tut-teamcity.build_server_tests = false
# ========================================
# experience
# ========================================
viewer-experience.public_build = false
viewer-experience.viewer_channel = "Second Life SkyLight Viewer"
viewer-experience.login_channel = "Second Life SkyLight Viewer"
# =================================================================
# asset delivery 2010 projects
# =================================================================

View File

@ -108,9 +108,6 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key);
static EventTypeSpec WindowHandlerEventList[] =
{
// Window-related events
// { kEventClassWindow, kEventWindowCollapsing },
// { kEventClassWindow, kEventWindowCollapsed },
// { kEventClassWindow, kEventWindowShown },
{ kEventClassWindow, kEventWindowActivated },
{ kEventClassWindow, kEventWindowDeactivated },
{ kEventClassWindow, kEventWindowShown },
@ -121,8 +118,7 @@ static EventTypeSpec WindowHandlerEventList[] =
{ kEventClassWindow, kEventWindowClose },
{ kEventClassWindow, kEventWindowBoundsChanging },
{ kEventClassWindow, kEventWindowBoundsChanged },
// { kEventClassWindow, kEventWindowZoomed },
// { kEventClassWindow, kEventWindowDrawContent },
{ kEventClassWindow, kEventWindowGetIdealSize },
// Mouse events
{ kEventClassMouse, kEventMouseDown },
@ -248,6 +244,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mCursorIgnoreNextDelta = FALSE;
mNeedsResize = FALSE;
mOverrideAspectRatio = 0.f;
mMaximized = FALSE;
mMinimized = FALSE;
mTSMDocument = NULL; // Just in case.
mLanguageTextInputAllowed = FALSE;
@ -455,24 +452,23 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if(!mFullscreen && (mWindow == NULL))
{
Rect window_rect;
//int displayWidth = CGDisplayPixelsWide(mDisplay);
//int displayHeight = CGDisplayPixelsHigh(mDisplay);
//const int menuBarPlusTitleBar = 44; // Ugly magic number.
LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL;
window_rect.left = (long) x;
window_rect.right = (long) x + width;
window_rect.top = (long) y;
window_rect.bottom = (long) y + height;
mPreviousWindowRect.left = (long) x;
mPreviousWindowRect.right = (long) x + width;
mPreviousWindowRect.top = (long) y;
mPreviousWindowRect.bottom = (long) y + height;
//-----------------------------------------------------------------------
// Create the window
//-----------------------------------------------------------------------
mWindow = NewCWindow(
NULL,
&window_rect,
&mPreviousWindowRect,
mWindowTitle,
false, // Create the window invisible. Whoever calls createContext() should show it after any moving/resizing.
// noGrowDocProc, // Window with no grow box and no zoom box
@ -481,8 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
kFirstWindowOfClass,
true,
(long)this);
if (!mWindow)
{
setupFailure("Window creation error", "Error", OSMB_OK);
@ -1093,31 +1088,22 @@ BOOL LLWindowMacOSX::getVisible()
BOOL LLWindowMacOSX::getMinimized()
{
BOOL result = FALSE;
// Since the set of states where we want to act "minimized" is non-trivial, it's easier to
// track things locally than to try and retrieve the state from the window manager.
result = mMinimized;
return(result);
return mMinimized;
}
BOOL LLWindowMacOSX::getMaximized()
{
BOOL result = FALSE;
if (mWindow)
{
// TODO
}
return(result);
return mMaximized;
}
BOOL LLWindowMacOSX::maximize()
{
// TODO
return FALSE;
if (mWindow && !mMaximized)
{
ZoomWindow(mWindow, inContent, true);
}
return mMaximized;
}
BOOL LLWindowMacOSX::getFullscreen()
@ -2559,7 +2545,24 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds);
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
// event only allows the specification of size and not position.
if (mMaximized)
{
short leftOffset = mPreviousWindowRect.left - currentBounds.left;
currentBounds.left += leftOffset;
currentBounds.right += leftOffset;
short topOffset = mPreviousWindowRect.top - currentBounds.top;
currentBounds.top += topOffset;
currentBounds.bottom += topOffset;
}
else
{
// Store off the size for future un-maximize operations
mPreviousWindowRect = previousBounds;
}
if ((currentBounds.right - currentBounds.left) < MIN_WIDTH)
{
@ -2578,13 +2581,43 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
case kEventWindowBoundsChanged:
{
// Get new window bounds
Rect newBounds;
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
// Get previous window bounds
Rect oldBounds;
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
// Determine if the new size is larger than the old
bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
// Check to see if this is a zoom event (+ button on window pane)
unsigned int eventParams;
GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
// Maximized flag is if zoom event and increasing window size
mMaximized = (isZoomEvent && newBoundsLarger);
aglUpdateContext(mContext);
mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
}
break;
case kEventWindowGetIdealSize:
// Only recommend a new ideal size when un-maximizing
if (mMaximized == TRUE)
{
Point nonMaximizedSize;
nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
result = noErr;
}
break;

View File

@ -156,7 +156,6 @@ protected:
static pascal Boolean staticMoveEventComparator( EventRef event, void* data);
OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event);
void adjustCursorDecouple(bool warpingMouse = false);
void fixWindowSize(void);
void stopDockTileBounce();
static MASK modifiersToMask(SInt16 modifiers);
@ -182,6 +181,7 @@ protected:
EventComparatorUPP mMoveEventCampartorUPP;
Rect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse()
Rect mPreviousWindowRect; // Save previous window for un-maximize event
Str255 mWindowTitle;
double mOriginalAspectRatio;
BOOL mSimulatedRightClick;
@ -195,6 +195,7 @@ protected:
BOOL mNeedsResize; // Constructor figured out the window is too big, it needs a resize.
LLCoordScreen mNeedsResizeSize;
F32 mOverrideAspectRatio;
BOOL mMaximized;
BOOL mMinimized;
U32 mFSAASamples;
BOOL mForceRebuild;

View File

@ -214,6 +214,7 @@ set(viewer_SOURCE_FILES
llfloatersettingsdebug.cpp
llfloatersidetraytab.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloatertelehub.cpp
llfloatertestinspectors.cpp
llfloatertestlistview.cpp
@ -758,6 +759,7 @@ set(viewer_HEADER_FILES
llfloatersettingsdebug.h
llfloatersidetraytab.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloatertelehub.h
llfloatertestinspectors.h
llfloatertestlistview.h

View File

@ -11651,10 +11651,10 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>VoiceCallsRejectAll</key>
<key>VoiceCallsRejectGroup</key>
<map>
<key>Comment</key>
<string>Silently reject all incoming voice calls.</string>
<string>Silently reject all incoming group voice calls.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>

View File

@ -117,10 +117,10 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>VoiceCallsRejectAll</key>
<key>VoiceCallsRejectGroup</key>
<map>
<key>Comment</key>
<string>Silently reject all incoming voice calls.</string>
<string>Silently reject all incoming group voice calls.</string>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>

View File

@ -62,6 +62,7 @@
#include "llstatusbar.h"
#include "llteleportflags.h"
#include "lltool.h"
#include "lltoolpie.h"
#include "lltoolmgr.h"
#include "lltrans.h"
#include "llurlentry.h"
@ -559,6 +560,8 @@ void LLAgent::setFlying(BOOL fly)
// static
void LLAgent::toggleFlying()
{
LLToolPie::instance().stopClickToWalk();
BOOL fly = !gAgent.getFlying();
gAgent.mMoveTimer.reset();

View File

@ -378,12 +378,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
}
// We have to enable/disable right and left parts of speak button separately (EXT-4648)
mSpeakBtn->setSpeakBtnEnabled(enable);
getChild<LLButton>("speak_btn")->setEnabled(enable);
// skipped to avoid button blinking
if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
{
bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
mSpeakBtn->setFlyoutBtnEnabled(voice_status);
getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
if (voice_status)
{
LLFirstUse::speak(true);
@ -546,17 +547,21 @@ BOOL LLBottomTray::postBuild()
setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
mSpeakPanel = getChild<LLPanel>("speak_panel");
mSpeakBtn = getChild<LLSpeakButton>("talk");
LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
mSpeakBtn = findChild<LLSpeakButton>("talk");
if (mSpeakBtn)
{
LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
// Localization tool doesn't understand custom buttons like <talk_button>
mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
}
// Both parts of speak button should be initially disabled because
// it takes some time between logging in to world and connecting to voice channel.
mSpeakBtn->setSpeakBtnEnabled(false);
mSpeakBtn->setFlyoutBtnEnabled(false);
getChild<LLButton>("speak_btn")->setEnabled(false);
getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
// Localization tool doesn't understand custom buttons like <talk_button>
mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
// Registering Chat Bar to receive Voice client status change notifications.
LLVoiceClient::getInstance()->addObserver(this);
@ -852,6 +857,10 @@ void LLBottomTray::draw()
getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
}
@ -1309,7 +1318,11 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
if (possible_shrink_width > 0)
{
mSpeakBtn->setLabelVisible(false);
if (mSpeakBtn)
{
mSpeakBtn->setLabelVisible(false);
}
mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
required_width += possible_shrink_width;
@ -1435,7 +1448,7 @@ bool LLBottomTray::processExtendSpeakButton(S32& available_width)
}
// Reshape the Speak button to its maximum width.
mSpeakBtn->setLabelVisible(true);
if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
available_width -= required_headroom;

View File

@ -483,8 +483,9 @@ void LLIMChiclet::setShowSpeaker(bool show)
if(needs_resize)
{
mShowSpeaker = show;
toggleSpeakerControl();
}
toggleSpeakerControl();
}
void LLIMChiclet::enableCounterControl(bool enable)

View File

@ -0,0 +1,85 @@
/**
* @file llfloatersounddevices.cpp
* @author Leyla Farazha
* @brief Sound Preferences used for minimal skin
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llfloatersounddevices.h"
#include "llbottomtray.h"
#include "lldraghandle.h"
#include "llpanelvoicedevicesettings.h"
// Library includes
#include "indra_constants.h"
// protected
LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
: LLTransientDockableFloater(NULL, false, key)
{
LLTransientFloaterMgr::getInstance()->addControlView(this);
// force docked state since this floater doesn't save it between recreations
setDocked(true);
}
LLFloaterSoundDevices::~LLFloaterSoundDevices()
{
LLTransientFloaterMgr::getInstance()->removeControlView(this);
}
// virtual
BOOL LLFloaterSoundDevices::postBuild()
{
LLTransientDockableFloater::postBuild();
LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
setIsChrome(TRUE);
if (mDragHandle)
mDragHandle->setTitleVisible(TRUE);
updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
return TRUE;
}
//virtual
void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/)
{
LLTransientDockableFloater::setDocked(docked, pop_on_undock);
}
// virtual
void LLFloaterSoundDevices::setFocus( BOOL b )
{
LLTransientDockableFloater::setFocus(b);
// Force using active floater transparency
// We have to override setFocus() for because selecting an item of the
// combobox causes the floater to lose focus and thus become transparent.
updateTransparency(TT_ACTIVE);
}

View File

@ -0,0 +1,49 @@
/**
* @file llfloatersounddevices.h
* @author Leyla Farazha
* @brief Sound Preferences used for minimal skin
*
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#ifndef LL_LLFLOATERSOUNDDEVICES_H
#define LL_LLFLOATERSOUNDDEVICES_H
#include "lltransientdockablefloater.h"
class LLFloaterSoundDevices : public LLTransientDockableFloater
{
public:
LOG_CLASS(LLFloaterSoundDevices);
LLFloaterSoundDevices(const LLSD& key);
~LLFloaterSoundDevices();
/*virtual*/ BOOL postBuild();
/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
/*virtual*/ void setFocus( BOOL b );
};
#endif //LL_LLFLOATERSOUNDDEVICES_H

View File

@ -2696,10 +2696,10 @@ void LLIMMgr::inviteToSession(
if (voice_invite)
{
if ( // if we're rejecting all incoming call requests
gSavedSettings.getBOOL("VoiceCallsRejectAll")
if ( // if we are rejecting group calls
(gSavedSettings.getBOOL("VoiceCallsRejectGroup") && notify_box_type == "VoiceInviteGroup") ||
// or we're rejecting non-friend voice calls and this isn't a friend
|| (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
(gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
)
{
// silently decline the call

View File

@ -68,7 +68,6 @@ LLMediaCtrl::Params::Params()
: start_url("start_url"),
border_visible("border_visible", true),
ignore_ui_scale("ignore_ui_scale", true),
hide_loading("hide_loading", false),
decouple_texture_size("decouple_texture_size", false),
texture_width("texture_width", 1024),
texture_height("texture_height", 1024),
@ -97,8 +96,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mCurrentNavUrl( "" ),
mStretchToFill( true ),
mMaintainAspectRatio ( true ),
mHideLoading (false),
mHidingInitialLoad (false),
mDecoupleTextureSize ( false ),
mTextureWidth ( 1024 ),
mTextureHeight ( 1024 ),
@ -121,8 +118,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
setBorderVisible(p.border_visible);
mHideLoading = p.hide_loading;
setDecoupleTextureSize(p.decouple_texture_size);
setTextureSize(p.texture_width, p.texture_height);
@ -684,11 +679,6 @@ bool LLMediaCtrl::ensureMediaSourceExists()
mMediaSource->clearCache();
mClearCache = false;
}
if(mHideLoading)
{
mHidingInitialLoad = true;
}
}
else
{
@ -756,11 +746,11 @@ void LLMediaCtrl::draw()
}
}
if(mHidingInitialLoad)
{
// If we're hiding loading, don't draw at all.
draw_media = false;
}
// if(mHidingInitialLoad)
// {
// // If we're hiding loading, don't draw at all.
// draw_media = false;
// }
bool background_visible = isBackgroundVisible();
bool background_opaque = isBackgroundOpaque();

View File

@ -100,58 +100,6 @@ public:
}
};
LLLoginRefreshHandler gLoginRefreshHandler;
// helper class that trys to download a URL from a web site and calls a method
// on parent class indicating if the web server is working or not
class LLIamHereLogin : public LLHTTPClient::Responder
{
private:
LLIamHereLogin( LLPanelLogin* parent ) :
mParent( parent )
{}
LLPanelLogin* mParent;
public:
static boost::intrusive_ptr< LLIamHereLogin > build( LLPanelLogin* parent )
{
return boost::intrusive_ptr< LLIamHereLogin >( new LLIamHereLogin( parent ) );
};
virtual void setParent( LLPanelLogin* parentIn )
{
mParent = parentIn;
};
// We don't actually expect LLSD back, so need to override completedRaw
virtual void completedRaw(U32 status, const std::string& reason,
const LLChannelDescriptors& channels,
const LLIOPipe::buffer_ptr_t& buffer)
{
completed(status, reason, LLSD()); // will call result() or error()
}
virtual void result( const LLSD& content )
{
if ( mParent )
mParent->setSiteIsAlive( true );
};
virtual void error( U32 status, const std::string& reason )
{
if ( mParent )
mParent->setSiteIsAlive( false );
};
};
// this is global and not a class member to keep crud out of the header file
namespace {
boost::intrusive_ptr< LLIamHereLogin > gResponsePtr = 0;
};
//---------------------------------------------------------------------------
// Public methods
//---------------------------------------------------------------------------
@ -163,7 +111,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
mLogoImage(),
mCallback(callback),
mCallbackData(cb_data),
mHtmlAvailable( TRUE ),
mListener(new LLPanelLoginListener(this))
{
setBackgroundVisible(FALSE);
@ -193,21 +140,11 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
buildFromFile( "panel_login.xml");
// Legacy login web page is hidden under the menu bar.
// Adjust reg-in-client web browser widget to not be hidden.
if (gSavedSettings.getBOOL("RegInClient"))
{
reshape(rect.getWidth(), rect.getHeight() - MENU_BAR_HEIGHT);
}
else
{
reshape(rect.getWidth(), rect.getHeight());
}
reshape(rect.getWidth(), rect.getHeight());
getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
// change z sort of clickable text to be behind buttons
//sendChildToBack(getChildView("channel_text"));
sendChildToBack(getChildView("forgot_password_text"));
if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION)
@ -252,16 +189,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
web_browser->addObserver(this);
// Clear the browser's cache to avoid any potential for the cache messing up the login screen.
web_browser->clearCache();
reshapeBrowser();
// kick off a request to grab the url manually
gResponsePtr = LLIamHereLogin::build( this );
LLHTTPClient::head( LLGridManager::getInstance()->getLoginPage(), gResponsePtr );
loadLoginPage();
// Show last logged in user favorites in "Start at" combo.
addUsersWithFavoritesToUsername();
getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this));
@ -344,46 +275,10 @@ void LLPanelLogin::reshapeBrowser()
reshape( rect.getWidth(), rect.getHeight(), 1 );
}
void LLPanelLogin::setSiteIsAlive( bool alive )
{
LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
// if the contents of the site was retrieved
if ( alive )
{
if ( web_browser )
{
loadLoginPage();
// mark as available
mHtmlAvailable = TRUE;
}
}
else
// the site is not available (missing page, server down, other badness)
{
if ( web_browser )
{
// hide browser control (revealing default one)
web_browser->setVisible( FALSE );
// mark as unavailable
mHtmlAvailable = FALSE;
}
}
}
LLPanelLogin::~LLPanelLogin()
{
LLPanelLogin::sInstance = NULL;
// tell the responder we're not here anymore
if ( gResponsePtr )
gResponsePtr->setParent( 0 );
//// We know we're done with the image, so be rid of it.
//gTextureList.deleteImage( mLogoImage );
// Controls having keyboard focus by default
// must reset it on destroy. (EXT-2748)
gFocusMgr.setDefaultKeyboardFocus(NULL);
@ -406,22 +301,13 @@ void LLPanelLogin::draw()
S32 width = getRect().getWidth();
S32 height = getRect().getHeight();
if ( mHtmlAvailable )
if (getChild<LLView>("login_widgets")->getVisible())
{
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());
}
}
else
{
// the HTML login page is not available so default to the original screen
S32 offscreen_part = height / 3;
mLogoImage->draw(0, -offscreen_part, width, height+offscreen_part);
// 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());
};
}
glPopMatrix();
@ -880,23 +766,10 @@ void LLPanelLogin::loadLoginPage()
oStr << "&os=" << os_info;
curl_free(os_info);
gViewerWindow->setMenuBackgroundColor(false, !LLGridManager::getInstance()->isInProductionGrid());
gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
// navigate to the "real" page
if (gSavedSettings.getBOOL("RegInClient"))
{
web_browser->setFocus(TRUE);
login_page = sInstance->getString("reg_in_client_url");
web_browser->navigateTo(login_page, "text/html");
}
else
{
web_browser->navigateTo( oStr.str(), "text/html" );
}
web_browser->navigateTo( oStr.str(), "text/html" );
}
void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event)
@ -927,10 +800,6 @@ void LLPanelLogin::onClickConnect(void *)
{
if (sInstance && sInstance->mCallback)
{
// tell the responder we're not here anymore
if ( gResponsePtr )
gResponsePtr->setParent( 0 );
// JC - Make sure the fields all get committed.
sInstance->setFocus(FALSE);
@ -998,24 +867,6 @@ void LLPanelLogin::onClickConnect(void *)
}
}
/*
// static
bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (0 == option)
{
llinfos << "Going to account creation URL" << llendl;
LLWeb::loadURLExternal( LLNotifications::instance().getGlobalString("CREATE_ACCOUNT_URL"));
}
else
{
sInstance->setFocus(TRUE);
}
return false;
}
*/
// static
void LLPanelLogin::onClickNewAccount(void*)
{

View File

@ -89,7 +89,6 @@ private:
void addUsersWithFavoritesToUsername();
static void onClickConnect(void*);
static void onClickNewAccount(void*);
// static bool newAccountAlertCallback(const LLSD& notification, const LLSD& response);
static void onClickVersion(void*);
static void onClickForgotPassword(void*);
static void onClickHelp(void*);
@ -114,7 +113,6 @@ private:
static LLPanelLogin* sInstance;
static BOOL sCapslockDidNotification;
BOOL mHtmlAvailable;
};
std::string load_password_from_disk(void);

View File

@ -316,6 +316,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()
if(LLVoiceClient::getInstance())
{
LLVoiceClient::getInstance()->setRenderDevice(
getChild<LLComboBox>("voice_input_device")->getValue().asString());
getChild<LLComboBox>("voice_output_device")->getValue().asString());
}
}

View File

@ -54,26 +54,6 @@ LLSpeakButton::Params::Params()
// See widgets/talk_button.xml
}
void LLSpeakButton::draw()
{
// LLVoiceClient::getInstance() is the authoritative global source of info regarding our open-mic state, we merely reflect that state.
bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
mSpeakBtn->setToggleState(openmic && voiceenabled);
mOutputMonitor->setIsMuted(!voiceenabled);
LLUICtrl::draw();
}
void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
{
LLButton* speak_btn = getChild<LLButton>("speak_btn");
speak_btn->setEnabled(enabled);
}
void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
{
LLButton* show_btn = getChild<LLBottomtrayButton>("speak_flyout_btn");
show_btn->setEnabled(enabled);
}
LLSpeakButton::LLSpeakButton(const Params& p)
: LLUICtrl(p)
, mOutputMonitor(NULL)

View File

@ -53,12 +53,7 @@ public:
};
/*virtual*/ ~LLSpeakButton();
/*virtual*/ void draw();
// methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
void setSpeakBtnEnabled(bool enabled);
void setFlyoutBtnEnabled(bool enabled);
// *HACK: Need to put tooltips in a translatable location,
// the panel that contains this button.
void setSpeakToolTip(const std::string& msg);

View File

@ -688,6 +688,15 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
return LLTool::handleMouseUp(x, y, mask);
}
void LLToolPie::stopClickToWalk()
{
mPick.mPosGlobal = gAgent.getPositionGlobal();
handle_go_to();
if(mAutoPilotDestination)
{
mAutoPilotDestination->markDead();
}
}
BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
{

View File

@ -67,6 +67,7 @@ public:
LLObjectSelection* getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
void resetSelection();
void blockClickToWalk() { mBlockClickToWalk = true; }
void stopClickToWalk();
static void selectionPropertiesReceived();

View File

@ -91,6 +91,7 @@
#include "llfloatersettingsdebug.h"
#include "llfloatersidetraytab.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloatertelehub.h"
#include "llfloatertestinspectors.h"
#include "llfloatertestlistview.h"
@ -239,6 +240,7 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);

View File

@ -5591,6 +5591,14 @@ class LLToggleHelp : public view_listener_t
}
};
class LLToggleSpeak : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
{
LLVoiceClient::getInstance()->toggleUserPTTState();
return true;
}
};
class LLShowSidetrayPanel : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@ -8187,6 +8195,7 @@ void initialize_menus()
commit.add("BuyCurrency", boost::bind(&handle_buy_currency));
view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");
view_listener_t::addMenu(new LLToggleHelp(), "ToggleHelp");
view_listener_t::addMenu(new LLToggleSpeak(), "ToggleSpeak");
view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");
view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");
view_listener_t::addMenu(new LLToggleAgentProfile(), "ToggleAgentProfile");

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater
border_visible="false"
border="false"
legacy_header_height="18"
can_minimize="true"
can_resize="true"
can_close="false"
save_dock_state="true"
save_visibility="true"
save_rect="true"
single_instance="true"
bevel_style="in"
height="140"
layout="topleft"
name="floater_sound_devices"
title="Sound Devices"
width="315">
<panel
layout="topleft"
follows="all"
filename="panel_sound_devices.xml"
name="device_settings_panel"
width="300"
left="2"
top="26"
class="panel_voice_device_settings"/>
</floater>

View File

@ -8,12 +8,6 @@
tab_stop="false"
name="main_view"
width="1024">
<panel top="0"
follows="all"
height="768"
mouse_opaque="false"
name="login_panel_holder"
width="1024"/>
<layout_stack border_size="0"
follows="all"
mouse_opaque="false"
@ -133,7 +127,14 @@
user_resize="false"
visible="false"
width="333"/>
</layout_stack>
</layout_stack>
<panel top="0"
follows="all"
height="500"
mouse_opaque="false"
name="login_panel_holder"
width="1024"/>
<panel follows="all"
height="500"
left="0"
@ -171,6 +172,7 @@
top="0"
width="1024"
visible="false"/>
<view mouse_opaque="false"
follows="all"
name="menu_bar_holder"

View File

@ -2696,7 +2696,7 @@
<menu_item_call
label="Web Content Browser"
name="Web Content Browser"
shortcut="control|alt|W">
shortcut="control|shift|Z">
<menu_item_call.on_click
function="Advanced.WebContentTest"
parameter="http://google.com"/>

View File

@ -478,164 +478,13 @@
name="device_settings_btn"
width="190">
</button>
<panel
background_visible="false"
bg_alpha_color="DkGray"
visiblity_control="ShowDeviceSettings"
border="false"
follows="top|left"
height="100"
label="Device Settings"
layout="topleft"
left_delta="-2"
name="device_settings_panel"
class="panel_voice_device_settings"
width="470"
top_pad="0">
<panel.string
name="default_text">
Default
</panel.string>
<panel.string
name="default system device">
Default system device
</panel.string>
<panel.string
name="no device">
No device
</panel.string>
<icon
height="18"
image_name="Microphone_On"
left_delta="4"
name="microphone_icon"
mouse_opaque="false"
top="7"
visible="true"
width="18" />
<text
type="string"
length="1"
font.style="BOLD"
follows="left|top"
height="16"
layout="topleft"
left_pad="3"
name="Input"
width="70">
Input
</text>
<combo_box
height="23"
control_name="VoiceInputAudioDevice"
layout="topleft"
left_pad="0"
max_chars="128"
name="voice_input_device"
top_delta="-5"
width="200" />
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
left_delta="-70"
name="My volume label"
top_pad="4"
width="200">
My volume:
</text>
<slider_bar
control_name="AudioLevelMic"
follows="left|top"
height="17"
increment="0.025"
initial_value="1.0"
layout="topleft"
left_delta="-6"
max_val="2"
name="mic_volume_slider"
tool_tip="Change the volume using this slider"
top_pad="-1"
width="220" />
<text
type="string"
text_color="EmphasisColor"
length="1"
follows="left|top"
height="18"
layout="topleft"
left_pad="5"
name="wait_text"
top_delta="-1"
width="110">
Please wait
</text>
<locate
height="20"
layout="topleft"
left_delta="0"
name="bar0"
top_delta="-2"
width="20" />
<locate
height="20"
layout="topleft"
left_pad="5"
name="bar1"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
left_pad="5"
name="bar2"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
left_pad="5"
name="bar3"
top_delta="0"
width="20" />
<locate
height="20"
layout="topleft"
left_pad="5"
name="bar4"
top_delta="0"
width="20" />
<icon
height="18"
image_name="Parcel_Voice_Light"
left="5"
name="speaker_icon"
mouse_opaque="false"
top_pad="3"
visible="true"
width="22" />
<text
font.style="BOLD"
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left_pad="0"
name="Output"
width="70">
Output
</text>
<combo_box
control_name="VoiceOutputAudioDevice"
height="23"
layout="topleft"
left_pad="0"
max_chars="128"
name="voice_output_device"
top_delta="-3"
width="200" />
</panel>
</panel>
<panel
layout="topleft"
filename="panel_sound_devices.xml"
visiblity_control="ShowDeviceSettings"
name="device_settings_panel"
top="314"
width="345"
left="18"
class="panel_voice_device_settings"/>
</panel>

View File

@ -0,0 +1,163 @@
<panel
background_visible="false"
bg_alpha_color="DkGray"
follows="all"
height="200"
label="Device Settings"
layout="topleft"
name="device_settings_panel"
width="360">
<panel.string
name="default_text">
Default
</panel.string>
<panel.string
name="default system device">
Default system device
</panel.string>
<panel.string
name="no device">
No device
</panel.string>
<icon
height="18"
image_name="Microphone_On"
left_delta="4"
name="microphone_icon"
mouse_opaque="false"
top="7"
layout="topleft"
visible="true"
width="18" />
<text
type="string"
length="1"
font.style="BOLD"
follows="left|top"
height="16"
layout="topleft"
left_pad="3"
name="Input"
width="70">
Input
</text>
<combo_box
height="23"
control_name="VoiceInputAudioDevice"
follows="left|top"
layout="topleft"
left_pad="0"
max_chars="128"
name="voice_input_device"
top_delta="-5"
width="200" />
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
left_delta="-70"
name="My volume label"
top_pad="4"
width="200">
My volume:
</text>
<slider_bar
control_name="AudioLevelMic"
follows="top|right|left"
height="17"
increment="0.025"
initial_value="1.0"
layout="topleft"
left_delta="-6"
max_val="2"
name="mic_volume_slider"
tool_tip="Change the volume using this slider"
top_pad="-1"
width="220" />
<text
type="string"
text_color="EmphasisColor"
length="1"
follows="right|top"
height="18"
layout="topleft"
left_pad="5"
name="wait_text"
top_delta="-1"
width="110">
Please wait
</text>
<locate
follows="right|top"
height="20"
layout="topleft"
left_delta="0"
name="bar0"
top_delta="-2"
width="20" />
<locate
follows="right|top"
height="20"
layout="topleft"
left_pad="5"
name="bar1"
top_delta="0"
width="20" />
<locate
follows="right|top"
height="20"
layout="topleft"
left_pad="5"
name="bar2"
top_delta="0"
width="20" />
<locate
follows="right|top"
height="20"
layout="topleft"
left_pad="5"
name="bar3"
top_delta="0"
width="20" />
<locate
follows="right|top"
height="20"
layout="topleft"
left_pad="5"
name="bar4"
top_delta="0"
width="20" />
<icon
height="18"
image_name="Parcel_Voice_Light"
left="5"
name="speaker_icon"
mouse_opaque="false"
top_pad="3"
visible="true"
width="22" />
<text
font.style="BOLD"
type="string"
length="1"
follows="left|top"
height="15"
layout="topleft"
left_pad="0"
name="Output"
width="70">
Output
</text>
<combo_box
control_name="VoiceOutputAudioDevice"
height="23"
follows="left|top"
layout="topleft"
left_pad="0"
max_chars="128"
name="voice_output_device"
top_delta="-3"
width="200" />
</panel>

View File

@ -21,6 +21,7 @@
width="20" />
<chiclet_im_p2p.avatar_icon
bottom="3"
color="white"
follows="left|top|bottom"
height="20"
left="2"

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -6,4 +6,6 @@
<texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
<texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
<texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
</textures>
<texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
<texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
</textures>

View File

@ -8,13 +8,6 @@
tab_stop="false"
name="main_view"
width="1024">
<panel top="0"
follows="all"
height="768"
mouse_opaque="false"
name="login_panel_holder"
width="1024"/>
<layout_stack border_size="0"
follows="all"
mouse_opaque="false"
@ -96,6 +89,14 @@
name="stand_stop_flying_container"
visible="false"
width="500"/>
<panel top="0"
follows="all"
height="500"
mouse_opaque="false"
name="login_panel_holder"
width="1024"/>
<panel follows="all"
height="500"
left="0"

View File

@ -12,16 +12,16 @@
focus_root="true"
top="28"
width="1310">
<string
<string
name="DragIndicationImageName"
value="Accordion_ArrowOpened_Off" />
<string
<string
name="SpeakBtnToolTip"
value="Turns microphone on/off" />
<string
<string
name="VoiceControlBtnToolTip"
value="Shows/hides voice control panel" />
<layout_stack
<layout_stack
border_size="0"
clip="false"
follows="all"
@ -33,12 +33,12 @@
orientation="horizontal"
top="0"
width="1310">
<layout_panel
<layout_panel
auto_resize="false"
user_resize="false"
min_width="2"
width="2" />
<layout_panel
<layout_panel
auto_resize="false"
layout="topleft"
max_width="320"
@ -48,7 +48,7 @@
name="chat_bar_layout_panel"
user_resize="true"
width="308" >
<panel
<panel
name="chat_bar"
filename="panel_nearby_chat_bar.xml"
left="0"
@ -61,6 +61,79 @@
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
layout="topleft"
min_height="28"
min_width="35"
mouse_opaque="false"
name="speak_panel"
top_delta="0"
user_resize="false"
width="85">
<button
follows="left|right"
height="23"
layout="topleft"
label="Speak"
left="0"
name="speak_btn"
tool_tip="Turn your microphone on and off"
pad_right="30"
halign="center"
use_ellipses="true"
tab_stop="true"
is_toggle="true"
image_selected="Speak_Btn_Selected_Press"
image_unselected="Speak_Btn_Off"
image_pressed="Speak_Btn_Selected_Press"
image_pressed_selected="Speak_Btn_Selected_Press"
top="5"
width="85">
<commit_callback
function="ToggleSpeak"
parameter="f1_help" />
</button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
layout="topleft"
min_height="28"
min_width="20"
mouse_opaque="false"
name="speak_flyout_panel"
top_delta="0"
user_resize="false"
width="20">
<button
follows="left|right"
width="20"
top="5"
left="0"
height="23"
name="speak_flyout_btn"
label=""
tab_stop="false"
tool_tip="Change your sound preferences"
is_toggle="true"
image_disabled="ComboButton_UpOff"
image_unselected="ComboButton_UpOff"
image_selected="ComboButton_On"
image_pressed="ComboButton_UpSelected"
image_pressed_selected="ComboButton_Selected">
<init_callback
function="Button.SetDockableFloaterToggle"
parameter="sound_devices" />
</button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="right"
height="28"
layout="topleft"
@ -70,7 +143,7 @@
name="gesture_panel"
top_delta="0"
user_resize="false"
width="85">
width="88">
<gesture_combo_list
follows="left|right"
height="23"
@ -78,20 +151,20 @@
layout="topleft"
get_more="false"
view_all="false"
left="0"
left="3"
name="Gesture"
tool_tip="Shows/hides gestures"
tool_tip="Make your avatar do things"
top="5"
width="82">
<combo_button
<combo_button
pad_right="10"
can_drag="false"
use_ellipses="true" />
<combo_list
<combo_list
page_lines="17" />
</gesture_combo_list>
</layout_panel>
<layout_panel
</gesture_combo_list>
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
@ -102,7 +175,7 @@
name="cam_panel"
user_resize="false"
width="83">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -114,16 +187,16 @@
layout="topleft"
left="0"
name="camera_btn"
tool_tip="Shows/hides camera controls"
tool_tip="Control your camera angle"
top="5"
use_ellipses="true"
width="80">
<init_callback
<init_callback
function="Button.SetDockableFloaterToggle"
parameter="camera" />
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
@ -132,7 +205,7 @@
name="splitter_panel"
user_resize="false"
width="17">
<icon
<icon
follows="left|bottom"
height="18"
width="2"
@ -140,8 +213,8 @@
image_name="Button_Separator"
name="separator"
top="7"/>
</layout_panel>
<layout_panel
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
@ -152,7 +225,7 @@
name="avatar_and_destinations_panel"
user_resize="false"
width="103">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -163,16 +236,16 @@
layout="topleft"
left="0"
name="destination_btn"
tool_tip="Shows destinations window"
tool_tip="Travel through Second Life"
top="5"
is_toggle="true"
use_ellipses="true"
width="100">
<bottomtray_button.commit_callback
<bottomtray_button.commit_callback
function="Destination.show" />
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
@ -183,7 +256,7 @@
name="avatar_and_destinations_panel"
user_resize="false"
width="103">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -196,13 +269,14 @@
name="avatar_btn"
top="5"
is_toggle="true"
tool_tip="Change your appearance"
use_ellipses="true"
width="100">
<bottomtray_button.commit_callback
<bottomtray_button.commit_callback
function="Avatar.show" />
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="left|right"
height="28"
@ -211,7 +285,7 @@
name="splitter_panel"
user_resize="false"
width="17">
<icon
<icon
follows="left|bottom"
height="18"
width="2"
@ -219,8 +293,8 @@
image_name="Button_Separator"
name="separator"
top="7"/>
</layout_panel>
<layout_panel
</layout_panel>
<layout_panel
auto_resize="false"
follows="right"
height="28"
@ -232,7 +306,7 @@
top_delta="0"
user_resize="false"
width="105">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -243,17 +317,17 @@
layout="topleft"
left="0"
name="show_people_button"
tool_tip="Shows people window"
tool_tip="Find people in Second Life"
top="5"
is_toggle="true"
use_ellipses="true"
width="100">
<bottomtray_button.commit_callback
<bottomtray_button.commit_callback
function="ShowSidetrayPanel"
parameter="panel_people" />
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="right"
height="28"
@ -265,7 +339,7 @@
top_delta="0"
user_resize="false"
width="105">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -276,17 +350,17 @@
layout="topleft"
left="0"
name="show_profile_btn"
tool_tip="Shows profile window"
tool_tip="View and edit your Profile"
is_toggle="true"
top="5"
use_ellipses="true"
width="100">
<bottomtray_button.commit_callback
<bottomtray_button.commit_callback
function="ToggleAgentProfile"
parameter="agent"/>
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
auto_resize="false"
follows="right"
height="28"
@ -298,7 +372,7 @@
top_delta="0"
user_resize="false"
width="105">
<bottomtray_button
<bottomtray_button
can_drag="false"
follows="left|right"
height="23"
@ -309,17 +383,17 @@
layout="topleft"
left="0"
name="show_help_btn"
tool_tip="Open Second Life How To topics"
tool_tip="View Second Life help info"
is_toggle="true"
top="5"
use_ellipses="true"
width="100">
<bottomtray_button.commit_callback
<bottomtray_button.commit_callback
function="ToggleHelp"
parameter="f1_help" />
</bottomtray_button>
</layout_panel>
<layout_panel
</bottomtray_button>
</layout_panel>
<layout_panel
follows="left|right"
height="30"
layout="topleft"
@ -329,9 +403,9 @@
top="0"
user_resize="false"
width="189">
<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
<chiclet_panel
<chiclet_panel
chiclet_padding="4"
follows="left|right"
height="24"
@ -342,7 +416,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
name="chiclet_list"
top="7"
width="189">
<button
<button
auto_resize="true"
follows="right"
height="29"
@ -359,7 +433,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
top="-28"
visible="false"
width="7" />
<button
<button
auto_resize="true"
follows="right"
height="29"
@ -376,13 +450,13 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
top="-28"
visible="false"
width="7" />
</chiclet_panel>
</layout_panel>
<layout_panel auto_resize="false"
</chiclet_panel>
</layout_panel>
<layout_panel auto_resize="false"
user_resize="false"
width="4"
min_width="4"/>
<layout_panel
<layout_panel
auto_resize="false"
follows="right"
height="28"
@ -393,7 +467,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
top="0"
user_resize="false"
width="37">
<chiclet_im_well
<chiclet_im_well
follows="right"
height="28"
layout="topleft"
@ -402,7 +476,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
name="im_well"
top="0"
width="35">
<!--
<!--
Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
xml attribute Description
image_unselected "Unlit" - there are no new messages
@ -410,7 +484,7 @@ image_selected "Unlit" + "Selected" - there are no new messages and the
image_pressed "Lit" - there are new messages
image_pressed_selected "Lit" + "Selected" - there are new messages and the Well is open
-->
<button
<button
auto_resize="true"
follows="right"
halign="center"
@ -425,13 +499,13 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
name="Unread IM messages"
tool_tip="Conversations"
width="34">
<init_callback
<init_callback
function="Button.SetDockableFloaterToggle"
parameter="im_well_window" />
</button>
</chiclet_im_well>
</layout_panel>
<layout_panel
</button>
</chiclet_im_well>
</layout_panel>
<layout_panel
auto_resize="false"
follows="right"
height="28"
@ -442,7 +516,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
top="0"
user_resize="false"
width="37">
<chiclet_notification
<chiclet_notification
follows="right"
height="23"
layout="topleft"
@ -451,7 +525,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
name="notification_well"
top="5"
width="35">
<button
<button
auto_resize="true"
bottom_pad="3"
follows="right"
@ -467,7 +541,7 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
name="Unread"
tool_tip="Notifications"
width="34">
<init_callback
<init_callback
function="Button.SetDockableFloaterToggle"
parameter="notification_well_window" />
</button>
@ -479,5 +553,5 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well
min_width="4"
name="DUMMY2"
width="8" />
</layout_stack>
</layout_stack>
</panel>