PE merge.

master
Tofu Linden 2010-02-26 09:50:56 +00:00
commit 044e020bcb
29 changed files with 205 additions and 95 deletions

View File

@ -44,17 +44,28 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p)
S32 srch_btn_top = p.search_button.top_pad + p.search_button.rect.height;
S32 srch_btn_right = p.search_button.rect.width + p.search_button.left_pad;
LLRect srch_btn_rect(p.search_button.left_pad, srch_btn_top, srch_btn_right, p.search_button.top_pad);
S32 clr_btn_top = p.clear_button.rect.bottom + p.clear_button.rect.height;
S32 clr_btn_right = getRect().getWidth() - p.clear_button.pad_right;
S32 clr_btn_left = clr_btn_right - p.clear_button.rect.width;
LLRect clear_btn_rect(clr_btn_left, clr_btn_top, clr_btn_right, p.clear_button.rect.bottom);
S32 text_pad_left = p.text_pad_left;
S32 text_pad_right = p.text_pad_right;
if (p.search_button_visible)
text_pad_left += srch_btn_rect.getWidth();
if (p.clear_button_visible)
text_pad_right = getRect().getWidth() - clr_btn_left + p.clear_button.pad_left;
// Set up line editor.
LLLineEditor::Params line_editor_params(p);
line_editor_params.name("filter edit box");
line_editor_params.rect(getLocalRect());
line_editor_params.follows.flags(FOLLOWS_ALL);
line_editor_params.text_pad_left(text_pad_left);
line_editor_params.text_pad_right(text_pad_right);
line_editor_params.revert_on_esc(false);
line_editor_params.commit_callback.function(boost::bind(&LLUICtrl::onCommit, this));
line_editor_params.keystroke_callback(boost::bind(&LLSearchEditor::handleKeystroke, this));
@ -82,10 +93,6 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p)
// Set up clear button.
LLButton::Params clr_btn_params(p.clear_button);
clr_btn_params.name(std::string("clear button"));
S32 clr_btn_top = clr_btn_params.rect.bottom + clr_btn_params.rect.height;
S32 clr_btn_right = getRect().getWidth() - clr_btn_params.pad_right;
S32 clr_btn_left = clr_btn_right - clr_btn_params.rect.width;
LLRect clear_btn_rect(clr_btn_left, clr_btn_top, clr_btn_right, p.clear_button.rect.bottom);
clr_btn_params.rect(clear_btn_rect) ;
clr_btn_params.follows.flags(FOLLOWS_RIGHT|FOLLOWS_TOP);
clr_btn_params.tab_stop(false);

View File

@ -115,6 +115,9 @@ LLCallFloater::LLCallFloater(const LLSD& key)
mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL);
LLVoiceClient::getInstance()->addObserver(this);
LLTransientFloaterMgr::getInstance()->addControlView(this);
// force docked state since this floater doesn't save it between recreations
setDocked(true);
}
LLCallFloater::~LLCallFloater()

View File

@ -144,6 +144,7 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
std::string messageText = notification["message"].asString(); // UTF-8 line of text
std::string fromName = notification["from"].asString(); // agent or object name
mFromID = notification["from_id"].asUUID(); // agent id or object id
mFromName = fromName;
int sType = notification["source"].asInteger();
mSourceType = (EChatSourceType)sType;

View File

@ -60,6 +60,7 @@ public:
static LLNearbyChatToastPanel* createInstance();
const LLUUID& getFromID() const { return mFromID;}
const std::string& getFromName() const { return mFromName; }
//void addText (const std::string& message , const LLStyle::Params& input_params = LLStyle::Params());
//void setMessage (const LLChat& msg);
@ -84,9 +85,11 @@ public:
virtual void draw();
//*TODO REMOVE, why a dup of getFromID?
const LLUUID& messageID() const { return mFromID;}
private:
LLUUID mFromID; // agent id or object id
std::string mFromName;
EChatSourceType mSourceType;

View File

@ -241,6 +241,7 @@ LLFloaterCamera::LLFloaterCamera(const LLSD& val)
BOOL LLFloaterCamera::postBuild()
{
setIsChrome(TRUE);
setTitleVisible(TRUE); // restore title visibility after chrome applying
mRotate = getChild<LLJoystickCameraRotate>(ORBIT);
mZoom = getChild<LLPanelCameraZoom>(ZOOM);
@ -295,6 +296,31 @@ void LLFloaterCamera::setMode(ECameraControlMode mode)
updateState();
}
void LLFloaterCamera::setModeTitle(const ECameraControlMode mode)
{
std::string title;
switch(mode)
{
case CAMERA_CTRL_MODE_ORBIT:
title = getString("orbit_mode_title");
break;
case CAMERA_CTRL_MODE_PAN:
title = getString("pan_mode_title");
break;
case CAMERA_CTRL_MODE_AVATAR_VIEW:
title = getString("avatar_view_mode_title");
break;
case CAMERA_CTRL_MODE_FREE_CAMERA:
title = getString("free_mode_title");
break;
default:
// title should be provided for all modes
llassert(false);
break;
}
setTitle(title);
}
void LLFloaterCamera::switchMode(ECameraControlMode mode)
{
setMode(mode);
@ -355,6 +381,8 @@ void LLFloaterCamera::updateState()
childSetVisible(PRESETS, CAMERA_CTRL_MODE_AVATAR_VIEW == mCurrMode);
updateCameraPresetButtons();
setModeTitle(mCurrMode);
//hiding or showing the panel with controls by reshaping the floater
bool showControls = CAMERA_CTRL_MODE_FREE_CAMERA != mCurrMode;

View File

@ -100,6 +100,9 @@ private:
/* sets a new mode preserving previous one and updates ui*/
void setMode(ECameraControlMode mode);
/** set title appropriate to passed mode */
void setModeTitle(const ECameraControlMode mode);
/* updates the state (UI) according to the current mode */
void updateState();

View File

@ -2163,6 +2163,15 @@ void LLFolderView::doIdle()
LLSelectFirstFilteredItem filter;
applyFunctorRecursively(filter);
}
// Open filtered folders for folder views with mAutoSelectOverride=TRUE.
// Used by LLPlacesFolderView.
if (mAutoSelectOverride && mFilter->getFilterSubString() != "")
{
LLOpenFilteredFolders filter;
applyFunctorRecursively(filter);
}
scrollToShowSelection();
}

View File

@ -96,29 +96,8 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
LLUUID session_id = floaterp->getKey();
LLIconCtrl* icon = 0;
if(gAgent.isInGroup(session_id, TRUE))
{
LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>();
icon_params.group_id = session_id;
icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params);
mSessions[session_id] = floaterp;
floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
}
else
{
LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id);
LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>();
icon_params.avatar_id = avatar_id;
icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params);
mSessions[session_id] = floaterp;
floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
}
mTabContainer->setTabImage(floaterp, icon);
floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
mSessions[session_id] = floaterp;
}
void LLIMFloaterContainer::onCloseFloater(LLUUID& id)

View File

@ -1473,6 +1473,8 @@ LLCallDialog::LLCallDialog(const LLSD& payload)
mLifetime(DEFAULT_LIFETIME)
{
setAutoFocus(FALSE);
// force docked state since this floater doesn't save it between recreations
setDocked(true);
}
void LLCallDialog::getAllowedRect(LLRect& rect)

View File

@ -63,6 +63,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
mItems.erase(mItems.begin(), mItems.end()-max_items);
}
llassert((S32)mItems.size() <= max_items);
mChangedSignal(ADD);
}
/*
@ -87,9 +88,10 @@ bool LLLocationHistory::touchItem(const LLLocationHistoryItem& item) {
void LLLocationHistory::removeItems()
{
mItems.clear();
mChangedSignal(CLEAR);
}
bool LLLocationHistory::getMatchingItems(std::string substring, location_list_t& result) const
bool LLLocationHistory::getMatchingItems(const std::string& substring, location_list_t& result) const
{
// *TODO: an STL algorithm would look nicer
result.clear();
@ -160,7 +162,7 @@ void LLLocationHistory::load()
return;
}
removeItems();
mItems.clear();// need to use a direct call of clear() method to avoid signal invocation
// add each line in the file to the list
std::string line;
@ -179,5 +181,5 @@ void LLLocationHistory::load()
file.close();
mLoadedSignal();
mChangedSignal(LOAD);
}

View File

@ -111,9 +111,16 @@ class LLLocationHistory: public LLSingleton<LLLocationHistory>
LOG_CLASS(LLLocationHistory);
public:
enum EChangeType
{
ADD
,CLEAR
,LOAD
};
typedef std::vector<LLLocationHistoryItem> location_list_t;
typedef boost::function<void()> loaded_callback_t;
typedef boost::signals2::signal<void()> loaded_signal_t;
typedef boost::function<void(EChangeType event)> history_changed_callback_t;
typedef boost::signals2::signal<void(EChangeType event)> history_changed_signal_t;
LLLocationHistory();
@ -122,8 +129,8 @@ public:
void removeItems();
size_t getItemCount() const { return mItems.size(); }
const location_list_t& getItems() const { return mItems; }
bool getMatchingItems(std::string substring, location_list_t& result) const;
boost::signals2::connection setLoadedCallback(loaded_callback_t cb) { return mLoadedSignal.connect(cb); }
bool getMatchingItems(const std::string& substring, location_list_t& result) const;
boost::signals2::connection setChangedCallback(history_changed_callback_t cb) { return mChangedSignal.connect(cb); }
void save() const;
void load();
@ -133,7 +140,7 @@ private:
location_list_t mItems;
std::string mFilename; /// File to store the history to.
loaded_signal_t mLoadedSignal;
history_changed_signal_t mChangedSignal;
};
#endif

View File

@ -52,7 +52,6 @@
#include "llinventoryobserver.h"
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
#include "lllocationhistory.h"
#include "llteleporthistory.h"
#include "llsidetray.h"
#include "llslurl.h"
@ -377,9 +376,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
// - Update the location string on parcel change.
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLLocationInputCtrl::onAgentParcelChange, this));
mLocationHistoryConnection = LLLocationHistory::getInstance()->setLoadedCallback(
boost::bind(&LLLocationInputCtrl::onLocationHistoryLoaded, this));
// LLLocationHistory instance is being created before the location input control, so we have to update initial state of button manually.
mButton->setEnabled(LLLocationHistory::instance().getItemCount() > 0);
mLocationHistoryConnection = LLLocationHistory::getInstance()->setChangedCallback(
boost::bind(&LLLocationInputCtrl::onLocationHistoryChanged, this,_1));
mRemoveLandmarkObserver = new LLRemoveLandmarkObserver(this);
mAddLandmarkObserver = new LLAddLandmarkObserver(this);
@ -620,9 +620,13 @@ void LLLocationInputCtrl::onLandmarkLoaded(LLLandmark* lm)
updateAddLandmarkButton();
}
void LLLocationInputCtrl::onLocationHistoryLoaded()
void LLLocationInputCtrl::onLocationHistoryChanged(LLLocationHistory::EChangeType event)
{
rebuildLocationHistory();
if(event == LLLocationHistory::LOAD)
{
rebuildLocationHistory();
}
mButton->setEnabled(LLLocationHistory::instance().getItemCount() > 0);
}
void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)
@ -893,7 +897,7 @@ void LLLocationInputCtrl::positionMaturityIcon()
mMaturityIcon->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad);
}
void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
void LLLocationInputCtrl::rebuildLocationHistory(const std::string& filter)
{
LLLocationHistory::location_list_t filtered_items;
const LLLocationHistory::location_list_t* itemsp = NULL;

View File

@ -36,6 +36,7 @@
#include "llcombobox.h"
#include "lliconctrl.h" // Params
#include "lltextbox.h" // Params
#include "lllocationhistory.h"
class LLLandmark;
@ -137,7 +138,7 @@ private:
void refreshHealth();
void positionMaturityIcon();
void rebuildLocationHistory(std::string filter = "");
void rebuildLocationHistory(const std::string& filter = LLStringUtil::null);
bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
void setText(const LLStringExplicit& text);
void updateAddLandmarkButton();
@ -147,7 +148,7 @@ private:
void changeLocationPresentation();
void onInfoButtonClicked();
void onLocationHistoryLoaded();
void onLocationHistoryChanged(LLLocationHistory::EChangeType event);
void onLocationPrearrange(const LLSD& data);
void onTextEditorRightClicked(S32 x, S32 y, MASK mask);
void onLandmarkLoaded(LLLandmark* lm);

View File

@ -77,7 +77,6 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)
mTurnRightButton(NULL),
mMoveUpButton(NULL),
mMoveDownButton(NULL),
mStopFlyingButton(NULL),
mModeActionsPanel(NULL),
mCurrentMode(MM_WALK)
{
@ -87,6 +86,7 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)
BOOL LLFloaterMove::postBuild()
{
setIsChrome(TRUE);
setTitleVisible(TRUE); // restore title visibility after chrome applying
LLDockableFloater::postBuild();
@ -112,8 +112,6 @@ BOOL LLFloaterMove::postBuild()
mMoveDownButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveDown, this));
mStopFlyingButton = getChild<LLButton>("stop_fly_btn");
mModeActionsPanel = getChild<LLPanel>("panel_modes");
LLButton* btn;
@ -126,11 +124,6 @@ BOOL LLFloaterMove::postBuild()
btn = getChild<LLButton>("mode_fly_btn");
btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this));
btn = getChild<LLButton>("stop_fly_btn");
btn->setCommitCallback(boost::bind(&LLFloaterMove::onStopFlyingButtonClick, this));
showFlyControls(false);
initModeTooltips();
@ -304,10 +297,6 @@ void LLFloaterMove::onFlyButtonClick()
{
setMovementMode(MM_FLY);
}
void LLFloaterMove::onStopFlyingButtonClick()
{
setMovementMode(gAgent.getAlwaysRun() ? MM_RUN : MM_WALK);
}
void LLFloaterMove::setMovementMode(const EMovementMode mode)
{
@ -353,16 +342,13 @@ void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode)
showFlyControls(MM_FLY == newMode);
setModeTooltip(newMode);
setModeButtonToggleState(newMode);
setModeTitle(newMode);
}
void LLFloaterMove::showFlyControls(bool bShow)
{
mMoveUpButton->setVisible(bShow);
mMoveDownButton->setVisible(bShow);
// *TODO: mantipov: mStopFlyingButton from the FloaterMove is not used now.
// It was not completly removed until functionality is reviewed by LL
mStopFlyingButton->setVisible(FALSE);
}
void LLFloaterMove::initModeTooltips()
@ -420,11 +406,30 @@ void LLFloaterMove::setModeTooltip(const EMovementMode mode)
}
}
void LLFloaterMove::setModeTitle(const EMovementMode mode)
{
std::string title;
switch(mode)
{
case MM_WALK:
title = getString("walk_title");
break;
case MM_RUN:
title = getString("run_title");
break;
case MM_FLY:
title = getString("fly_title");
break;
default:
// title should be provided for all modes
llassert(false);
break;
}
setTitle(title);
}
/**
* Updates position of the floater to be center aligned with Move button.
*
* Because Tip floater created as dependent floater this method
* must be called before "showQuickTips()" to get Tip floater be positioned at the right side of the floater
*/
void LLFloaterMove::updatePosition()
{

View File

@ -86,13 +86,12 @@ private:
void onWalkButtonClick();
void onRunButtonClick();
void onFlyButtonClick();
void onStopFlyingButtonClick();
void initMovementMode();
void setMovementMode(const EMovementMode mode);
void showFlyControls(bool bShow);
void initModeTooltips();
void setModeTooltip(const EMovementMode mode);
void showQuickTips(const EMovementMode mode);
void setModeTitle(const EMovementMode mode);
void initModeButtonMap();
void setModeButtonToggleState(const EMovementMode mode);
void updateButtonsWithMovementMode(const EMovementMode newMode);
@ -108,7 +107,6 @@ public:
LLButton* mMoveUpButton;
LLButton* mMoveDownButton;
private:
LLButton* mStopFlyingButton;
LLPanel* mModeActionsPanel;
typedef std::map<LLView*, std::string> control_tooltip_map_t;

View File

@ -451,6 +451,12 @@ void LLNavigationBar::onLocationSelection()
return;
//get selected item from combobox item
LLSD value = mCmbLocation->getSelectedValue();
if(value.isUndefined() && !mCmbLocation->getTextEntry()->isDirty())
{
// At this point we know that: there is no selected item in list and text field has NOT been changed
// So there is no sense to try to change the location
return;
}
/* since navbar list support autocompletion it contains several types of item: landmark, teleport hystory item,
* typed by user slurl or region name. Let's find out which type of item the user has selected
* to make decision about adding this location into typed history. see mSaveToLocationHistory

View File

@ -176,10 +176,11 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
if(m_active_toasts.size())
{
LLUUID fromID = notification["from_id"].asUUID(); // agent id or object id
std::string from = notification["from"].asString();
LLToast* toast = m_active_toasts[0];
LLNearbyChatToastPanel* panel = dynamic_cast<LLNearbyChatToastPanel*>(toast->getPanel());
if(panel && panel->messageID() == fromID && panel->canAddText())
if(panel && panel->messageID() == fromID && panel->getFromName() == from && panel->canAddText())
{
panel->addMessage(notification);
toast->reshapeToPanel();

View File

@ -420,10 +420,8 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
gInventory.startBackgroundFetch();
std::string uppercase_search_string = search_string;
LLStringUtil::toUpper(uppercase_search_string);
mFilterSubString = uppercase_search_string;
if (mActivePanel->getFilterSubString().empty() && uppercase_search_string.empty())
mFilterSubString = search_string;
if (mActivePanel->getFilterSubString().empty() && mFilterSubString.empty())
{
// current filter and new filter empty, do nothing
return;
@ -437,7 +435,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
}
// set new filter string
mActivePanel->setFilterSubString(mFilterSubString);
setFilterSubString(mFilterSubString);
}

View File

@ -256,7 +256,7 @@ void LLPanelPlaceInfo::reshape(S32 width, S32 height, BOOL called_from_parent)
static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
S32 scroll_height = mScrollContainer->getRect().getHeight();
if (mScrollingPanelMinHeight >= scroll_height)
if (mScrollingPanelMinHeight > scroll_height)
{
mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight);
}

View File

@ -37,6 +37,7 @@
#include "llagent.h" // gAgent
#include "lluicolortable.h"
#include "llviewercontrol.h" // gSavedSettings
#include "llinstantmessage.h" //SYSTEM_FROM
// LLViewerChat
@ -55,7 +56,7 @@ void LLViewerChat::getChatColor(const LLChat& chat, LLColor4& r_color)
r_color = LLUIColorTable::instance().getColor("SystemChatColor");
break;
case CHAT_SOURCE_AGENT:
if (chat.mFromID.isNull())
if (chat.mFromID.isNull() || SYSTEM_FROM == chat.mFromName)
{
r_color = LLUIColorTable::instance().getColor("SystemChatColor");
}

View File

@ -102,6 +102,13 @@ const F32 UPDATE_THROTTLE_SECONDS = 0.1f;
const F32 LOGIN_RETRY_SECONDS = 10.0f;
const int MAX_LOGIN_RETRIES = 12;
// Defines the maximum number of times(in a row) "stateJoiningSession" case for spatial channel is reached in stateMachine()
// which is treated as normal. If this number is exceeded we suspect there is a problem with connection
// to voice server (EXT-4313). When voice works correctly, there is from 1 to 15 times. 50 was chosen
// to make sure we don't make mistake when slight connection problems happen- situation when connection to server is
// blocked is VERY rare and it's better to sacrifice response time in this situation for the sake of stability.
const int MAX_NORMAL_JOINING_SPATIAL_NUM = 50;
static void setUUIDFromStringHash(LLUUID &uuid, const std::string &str)
{
LLMD5 md5_uuid;
@ -1221,6 +1228,7 @@ LLVoiceClient::LLVoiceClient() :
mRelogRequested(false),
mConnected(false),
mPump(NULL),
mSpatialJoiningNum(0),
mTuningMode(false),
mTuningEnergy(0.0f),
@ -2223,6 +2231,8 @@ void LLVoiceClient::stateMachine()
//MARK: stateNoChannel
case stateNoChannel:
mSpatialJoiningNum = 0;
// Do this here as well as inside sendPositionalUpdate().
// Otherwise, if you log in but don't join a proximal channel (such as when your login location has voice disabled), your friends list won't sync.
sendFriendsListUpdates();
@ -2279,6 +2289,23 @@ void LLVoiceClient::stateMachine()
//MARK: stateJoiningSession
case stateJoiningSession: // waiting for session handle
// If this is true we have problem with connection to voice server (EXT-4313).
// See descriptions of mSpatialJoiningNum and MAX_NORMAL_JOINING_SPATIAL_NUM.
if(mSpatialJoiningNum == MAX_NORMAL_JOINING_SPATIAL_NUM)
{
// Notify observers to let them know there is problem with voice
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED);
llwarns << "There seems to be problem with connection to voice server. Disabling voice chat abilities." << llendl;
}
// Increase mSpatialJoiningNum only for spatial sessions- it's normal to reach this case for
// example for p2p many times while waiting for response, so it can't be used to detect errors
if(mAudioSession && mAudioSession->mIsSpatial)
{
mSpatialJoiningNum++;
}
// joinedAudioSession() will transition from here to stateSessionJoined.
if(!mVoiceEnabled)
{
@ -2302,6 +2329,8 @@ void LLVoiceClient::stateMachine()
//MARK: stateSessionJoined
case stateSessionJoined: // session handle received
mSpatialJoiningNum = 0;
// It appears that I need to wait for BOTH the SessionGroup.AddSession response and the SessionStateChangeEvent with state 4
// before continuing from this state. They can happen in either order, and if I don't wait for both, things can get stuck.
// For now, the SessionGroup.AddSession response handler sets mSessionHandle and the SessionStateChangeEvent handler transitions to stateSessionJoined.
@ -5992,7 +6021,9 @@ bool LLVoiceClient::voiceEnabled()
bool LLVoiceClient::voiceWorking()
{
//Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758)
return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);
// Condition with joining spatial num was added to take into account possible problems with connection to voice
// server(EXT-4313). See bug descriptions and comments for MAX_NORMAL_JOINING_SPATIAL_NUM for more info.
return (mSpatialJoiningNum < MAX_NORMAL_JOINING_SPATIAL_NUM) && (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);
}
void LLVoiceClient::setLipSyncEnabled(BOOL enabled)

View File

@ -586,6 +586,10 @@ static void updatePosition(void);
state mState;
bool mSessionTerminateRequested;
bool mRelogRequested;
// Number of times (in a row) "stateJoiningSession" case for spatial channel is reached in stateMachine().
// The larger it is the greater is possibility there is a problem with connection to voice server.
// Introduced while fixing EXT-4313.
int mSpatialJoiningNum;
void setState(state inState);
state getState(void) { return mState; };

View File

@ -27,6 +27,22 @@
name="move_tooltip">
Move Camera Up and Down, Left and Right
</floater.string>
<floater.string
name="orbit_mode_title">
Orbit
</floater.string>
<floater.string
name="pan_mode_title">
Pan
</floater.string>
<floater.string
name="avatar_view_mode_title">
Presets
</floater.string>
<floater.string
name="free_mode_title">
View Object
</floater.string>
<panel
border="false"
height="110"
@ -232,7 +248,7 @@
image_selected="PushButton_Selected_Press"
name="avatarview_btn"
tab_stop="false"
tool_tip="See as avatar"
tool_tip="Presets"
width="25">
</button>
<button

View File

@ -22,9 +22,7 @@
tab_width="64"
tab_max_width = "134"
tab_height="16"
use_custom_icon_ctrl="true"
tab_icon_ctrl_pad="2"
halign="left"
halign="center"
use_ellipses="true"
top="0"
width="390" />

View File

@ -38,6 +38,18 @@
name="fly_back_tooltip">
Fly Backwards (press Down Arrow or S)
</string>
<string
name="walk_title">
Walk
</string>
<string
name="run_title">
Run
</string>
<string
name="fly_title">
Fly
</string>
<panel
border="false"
height="83"
@ -179,16 +191,5 @@
tool_tip="Flying mode"
top="2"
width="31" />
<button
visible="false"
follows="left|bottom"
height="20"
label="Stop Flying"
layout="topleft"
left="0"
name="stop_fly_btn"
tool_tip="Stop flying"
top="2"
width="115" />
</panel>
</floater>

View File

@ -89,13 +89,13 @@
<panel
bg_alpha_color="DkGray2"
follows="left|top|right"
height="700"
height="630"
layout="topleft"
left="0"
min_height="300"
name="scrolling_panel"
top="0"
width="285">
width="310">
<texture_picker
enabled="false"
follows="left|top|right"

View File

@ -222,7 +222,7 @@
top="10"
width="293"
wrap="true">
To add friends try [secondlife:///app/search/people global search] or click on a user to add them as a friend.
To add friends try [secondlife:///app/search/people global search] or use right click on a user to add them as a friend.
If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map].
</text>
</panel>

View File

@ -174,13 +174,13 @@
<panel
bg_alpha_color="DkGray2"
follows="left|top|right"
height="700"
height="532"
layout="topleft"
left="0"
min_height="300"
name="scrolling_panel"
top="0"
width="285">
width="310">
<texture_picker
enabled="false"
follows="left|top|right"

View File

@ -3,6 +3,7 @@
clear_button_visible="false"
search_button_visible="true"
text_pad_left="6"
text_pad_right="6"
select_on_focus="true"
text_tentative_color="TextFgTentativeColor"
background_image="TextField_Search_Off"
@ -21,5 +22,6 @@
image_unselected="Icon_Close_Foreground"
image_selected="Icon_Close_Press"
pad_right="4"
pad_left="4"
width="16" />
</search_editor>