summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llmenugl.cpp5
-rw-r--r--indra/llui/llmenugl.h4
-rw-r--r--indra/llui/lltoolbar.h85
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/app_settings/settings_per_account.xml2
-rw-r--r--indra/newview/llfavoritesbar.cpp2
-rw-r--r--indra/newview/llnearbychat.cpp25
-rw-r--r--indra/newview/llnearbychat.h6
-rw-r--r--indra/newview/llnearbychatbar.cpp9
-rw-r--r--indra/newview/llnotificationtiphandler.cpp4
-rwxr-xr-xindra/newview/llpanelpicks.cpp21
-rwxr-xr-xindra/newview/llpanelpicks.h6
-rw-r--r--indra/newview/llstartup.cpp8
-rw-r--r--indra/newview/llviewerwindow.cpp18
-rw-r--r--indra/newview/skins/default/xui/en/floater_avatar.xml4
15 files changed, 108 insertions, 102 deletions
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 3ef8d8ff35..cb237fca7c 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1686,7 +1686,8 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
mSpilloverMenu(NULL),
mJumpKey(p.jump_key),
mCreateJumpKeys(p.create_jump_keys),
- mNeedsArrange(FALSE),
+ mNeedsArrange(FALSE),
+ mResetScrollPositionOnShow(true),
mShortcutPad(p.shortcut_pad)
{
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
@@ -3043,7 +3044,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
S32 mouse_x, mouse_y;
// Resetting scrolling position
- if (menu->isScrollable())
+ if (menu->isScrollable() && menu->isScrollPositionOnShowReset())
{
menu->mFirstVisibleItem = NULL;
}
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 77db588390..bdae899933 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -516,6 +516,9 @@ public:
static class LLMenuHolderGL* sMenuContainer;
+ void resetScrollPositionOnShow(bool reset_scroll_pos) { mResetScrollPositionOnShow = reset_scroll_pos; }
+ bool isScrollPositionOnShowReset() { return mResetScrollPositionOnShow; }
+
protected:
void createSpilloverBranch();
void cleanupSpilloverBranch();
@@ -565,6 +568,7 @@ private:
KEY mJumpKey;
BOOL mCreateJumpKeys;
S32 mShortcutPad;
+ bool mResetScrollPositionOnShow;
}; // end class LLMenuGL
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index f10f39adc3..8c25c43f1a 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -66,6 +66,7 @@ public:
void reshape(S32 width, S32 height, BOOL called_from_parent = true);
void setEnabled(BOOL enabled);
void setCommandId(const LLCommandId& id) { mId = id; }
+ LLCommandId getCommandId() { return mId; }
void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; }
void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
@@ -164,7 +165,8 @@ public:
pad_bottom,
pad_between,
min_girth;
- // get rid of this
+
+ // default command set
Multiple<LLCommandId::Params> commands;
Optional<LLPanel::Params> button_panel;
@@ -175,8 +177,6 @@ public:
// virtuals
void draw();
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
- int getRankFromPosition(S32 x, S32 y);
- int getRankFromPosition(const LLCommandId& id);
BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
EDragAndDropType cargo_type,
@@ -185,15 +185,14 @@ public:
std::string& tooltip_msg);
static const int RANK_NONE = -1;
-
bool addCommand(const LLCommandId& commandId, int rank = RANK_NONE);
int removeCommand(const LLCommandId& commandId); // Returns the rank the removed command was at, RANK_NONE if not found
- bool hasCommand(const LLCommandId& commandId) const;
- bool enableCommand(const LLCommandId& commandId, bool enabled);
- bool stopCommandInProgress(const LLCommandId& commandId);
- bool flashCommand(const LLCommandId& commandId, bool flash);
+ bool hasCommand(const LLCommandId& commandId) const; // is this command bound to a button in this toolbar
+ bool enableCommand(const LLCommandId& commandId, bool enabled); // enable/disable button bound to the specified command, if it exists in this toolbar
+ bool stopCommandInProgress(const LLCommandId& commandId); // stop command if it is currently active
+ bool flashCommand(const LLCommandId& commandId, bool flash); // flash button associated with given command, if in this toolbar
- void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; }
+ void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; } // connects drag and drop behavior to external logic
void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
void setHandleDropCallback(tool_handledrop_callback_t cb) { mHandleDropCallback = cb; }
bool isReadOnly() const { return mReadOnly; }
@@ -206,35 +205,28 @@ public:
boost::signals2::connection setButtonLeaveCallback(const button_signal_t::slot_type& cb);
boost::signals2::connection setButtonRemoveCallback(const button_signal_t::slot_type& cb);
- void setTooltipButtonSuffix(const std::string& suffix) { mButtonTooltipSuffix = suffix; }
+ // append the specified string to end of tooltip
+ void setTooltipButtonSuffix(const std::string& suffix) { mButtonTooltipSuffix = suffix; }
LLToolBarEnums::SideType getSideType() const { return mSideType; }
bool hasButtons() const { return !mButtons.empty(); }
bool isModified() const { return mModified; }
-protected:
- friend class LLUICtrlFactory;
- LLToolBar(const Params&);
- ~LLToolBar();
-
- void initFromParams(const Params&);
- tool_startdrag_callback_t mStartDragItemCallback;
- tool_handledrag_callback_t mHandleDragItemCallback;
- tool_handledrop_callback_t mHandleDropCallback;
- bool mDragAndDropTarget;
- int mDragRank;
- S32 mDragx,
- mDragy,
- mDragGirth;
+ int getRankFromPosition(S32 x, S32 y);
+ int getRankFromPosition(const LLCommandId& id);
-public:
// Methods used in loading and saving toolbar settings
void setButtonType(LLToolBarEnums::ButtonType button_type);
LLToolBarEnums::ButtonType getButtonType() { return mButtonType; }
command_id_list_t& getCommandsList() { return mButtonCommands; }
void clearCommandsList();
-
+
private:
+ friend class LLUICtrlFactory;
+ LLToolBar(const Params&);
+ ~LLToolBar();
+
+ void initFromParams(const Params&);
void createContextMenu();
void updateLayoutAsNeeded();
void createButtons();
@@ -242,33 +234,44 @@ private:
BOOL isSettingChecked(const LLSD& userdata);
void onSettingEnable(const LLSD& userdata);
+private:
+ // static layout state
const bool mReadOnly;
+ const LLToolBarEnums::SideType mSideType;
+ const bool mWrap;
+ const S32 mPadLeft,
+ mPadRight,
+ mPadTop,
+ mPadBottom,
+ mPadBetween,
+ mMinGirth;
+
+ // drag and drop state
+ tool_startdrag_callback_t mStartDragItemCallback;
+ tool_handledrag_callback_t mHandleDragItemCallback;
+ tool_handledrop_callback_t mHandleDropCallback;
+ bool mDragAndDropTarget;
+ int mDragRank;
+ S32 mDragx,
+ mDragy,
+ mDragGirth;
typedef std::list<LLToolBarButton*> toolbar_button_list;
+ typedef std::map<LLUUID, LLToolBarButton*> command_id_map;
toolbar_button_list mButtons;
command_id_list_t mButtonCommands;
- typedef std::map<LLUUID, LLToolBarButton*> command_id_map;
command_id_map mButtonMap;
LLToolBarEnums::ButtonType mButtonType;
+ LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
+
+ // related widgets
LLLayoutStack* mCenteringStack;
- LLLayoutStack* mWrapStack;
LLPanel* mButtonPanel;
- LLToolBarEnums::SideType mSideType;
-
- bool mWrap;
+ LLHandle<class LLContextMenu> mPopupMenuHandle;
+
bool mNeedsLayout;
bool mModified;
- S32 mPadLeft,
- mPadRight,
- mPadTop,
- mPadBottom,
- mPadBetween,
- mMinGirth;
-
- LLToolBarButton::Params mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
-
- LLHandle<class LLContextMenu> mPopupMenuHandle;
button_signal_t* mButtonAddSignal;
button_signal_t* mButtonEnterSignal;
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 3771222455..8f660008e5 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2630,17 +2630,6 @@
<key>Value</key>
<integer>-1</integer>
</map>
- <key>DebugToolbarFUI</key>
- <map>
- <key>Comment</key>
- <string>Turn on the FUI Toolbars</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>1</integer>
- </map>
<key>DebugViews</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index 6ed4480cb1..8cdd8ed838 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -36,7 +36,7 @@
<key>DisplayDestinationsOnInitialRun</key>
<map>
<key>Comment</key>
- <string>Display the destinations guide when a user first launches FUI.</string>
+ <string>Display the destinations guide when a user first launches Second Life.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 6c9058caf1..1f269fb666 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -1197,7 +1197,9 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
LLToggleableMenu* menu = (LLToggleableMenu*) mOverflowMenuHandle.get();
if (mRestoreOverflowMenu && menu && !menu->getVisible())
{
+ menu->resetScrollPositionOnShow(false);
showDropDownMenu();
+ menu->resetScrollPositionOnShow(true);
}
}
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 3418462192..a7303ad035 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -60,13 +60,9 @@ static const S32 RESIZE_BAR_THICKNESS = 3;
static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat");
-LLNearbyChat::LLNearbyChat()
- : LLPanel()
- ,mChatHistory(NULL)
-{
-}
-
-LLNearbyChat::~LLNearbyChat()
+LLNearbyChat::LLNearbyChat(const LLNearbyChat::Params& p)
+: LLPanel(p),
+ mChatHistory(NULL)
{
}
@@ -178,15 +174,20 @@ bool LLNearbyChat::onNearbyChatCheckContextMenuItem(const LLSD& userdata)
return false;
}
+void LLNearbyChat::removeScreenChat()
+{
+ LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+ if(chat_channel)
+ {
+ chat_channel->removeToastsFromChannel();
+ }
+}
+
void LLNearbyChat::setVisible(BOOL visible)
{
if(visible)
{
- LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
- if(chat_channel)
- {
- chat_channel->removeToastsFromChannel();
- }
+ removeScreenChat();
}
LLPanel::setVisible(visible);
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 5ef584c8ff..7c5975cbc5 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -37,8 +37,7 @@ class LLChatHistory;
class LLNearbyChat: public LLPanel
{
public:
- LLNearbyChat();
- ~LLNearbyChat();
+ LLNearbyChat(const Params& p = LLPanel::getDefaultParams());
BOOL postBuild ();
@@ -63,13 +62,14 @@ public:
void loadHistory();
static LLNearbyChat* getInstance();
+ void removeScreenChat();
private:
void getAllowedRect (LLRect& rect);
void onNearbySpeakers ();
-
+
private:
LLHandle<LLView> mPopupMenuHandle;
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4674c85324..114472ba56 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -47,6 +47,7 @@
#include "llviewerwindow.h"
#include "llrootview.h"
#include "llviewerchat.h"
+#include "llnearbychat.h"
#include "llresizehandle.h"
@@ -401,11 +402,13 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
void LLNearbyChatBar::setMinimized(BOOL b)
{
- if (b != LLFloater::isMinimized())
+ LLNearbyChat* nearby_chat = getChild<LLNearbyChat>("nearby_chat");
+ // when unminimizing with nearby chat visible, go ahead and kill off screen chats
+ if (!b && nearby_chat->getVisible())
{
- LLFloater::setMinimized(b);
- getChildView("nearby_chat")->setVisible(!b);
+ nearby_chat->removeScreenChat();
}
+ LLFloater::setMinimized(b);
}
void LLNearbyChatBar::onChatBoxCommit()
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 2a08a29842..aa009a76fa 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -29,6 +29,7 @@
#include "llfloaterreg.h"
#include "llnearbychat.h"
+#include "llnearbychatbar.h"
#include "llnotificationhandler.h"
#include "llnotifications.h"
#include "lltoastnotifypanel.h"
@@ -93,7 +94,8 @@ bool LLTipHandler::processNotification(const LLSD& notify)
// don't show toast if Nearby Chat is opened
LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
- if (nearby_chat->getVisible())
+ LLNearbyChatBar* nearby_chat_bar = LLNearbyChatBar::getInstance();
+ if (nearby_chat_bar->getVisible() && nearby_chat->getVisible())
{
return false;
}
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 72c6be4c79..04e78e04e3 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -130,11 +130,11 @@ public:
void createPick()
{
- LLSD params;
- params["id"] = gAgent.getID();
- params["open_tab_name"] = "panel_picks";
- params["show_tab_panel"] = "create_pick";
- LLFloaterSidePanelContainer::showPanel("my_profile", params);
+ // open the new pick panel on the Picks floater
+ LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+ LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+ picks->createNewPick();
}
void editPick(LLPickData* pick_info)
@@ -247,12 +247,11 @@ public:
void createClassified()
{
- // open the new classified panel on the Me > Picks sidetray
- LLSD params;
- params["id"] = gAgent.getID();
- params["open_tab_name"] = "panel_picks";
- params["show_tab_panel"] = "create_classified";
- LLFloaterSidePanelContainer::showPanel("my_profile", params);
+ // open the new classified panel on the Picks floater
+ LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+ LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+ picks->createNewClassified();
}
void openClassified(LLAvatarClassifiedInfo* c_info)
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 29db110523..3bb7413ac3 100755
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -82,6 +82,9 @@ public:
// parent panels failed to work (picks related code was in my profile panel)
void setProfilePanel(LLPanelProfile* profile_panel);
+ void createNewPick();
+ void createNewClassified();
+
protected:
/*virtual*/void updateButtons();
@@ -115,9 +118,6 @@ private:
bool onEnableMenuItem(const LLSD& user_data);
- void createNewPick();
- void createNewClassified();
-
void openPickInfo();
void openClassifiedInfo();
void openClassifiedInfo(const LLSD& params);
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index e62227fa3c..9d8d1be0f5 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -190,6 +190,7 @@
#include "lllogin.h"
#include "llevents.h"
#include "llstartuplistener.h"
+#include "lltoolbarview.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -2091,7 +2092,12 @@ void login_show()
#else
BOOL bUseDebugLogin = TRUE;
#endif
-
+ // Hide the toolbars: may happen to come back here if login fails after login agent but before login in region
+ if (gToolBarView)
+ {
+ gToolBarView->setVisible(FALSE);
+ }
+
LLPanelLogin::show( gViewerWindow->getWindowRectScaled(),
bUseDebugLogin || gSavedSettings.getBOOL("SecondLifeEnterprise"),
login_callback, NULL );
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 6fcbc401af..e23ba0faf7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1789,17 +1789,13 @@ void LLViewerWindow::initBase()
mLoginPanelHolder = main_view->getChild<LLView>("login_panel_holder")->getHandle();
// Create the toolbar view
- // *TODO: Eventually, suppress the existence of this debug setting and turn toolbar FUI on permanently
- if (gSavedSettings.getBOOL("DebugToolbarFUI"))
- {
- // Get a pointer to the toolbar view holder
- LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
- // Load the toolbar view from file
- gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
- gToolBarView->setShape(panel_holder->getLocalRect());
- // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
- gToolBarView->setVisible(FALSE);
- }
+ // Get a pointer to the toolbar view holder
+ LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
+ // Load the toolbar view from file
+ gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+ gToolBarView->setShape(panel_holder->getLocalRect());
+ // Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
+ gToolBarView->setVisible(FALSE);
// Constrain floaters to inside the menu and status bar regions.
gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
index 2d973e7d90..6009821f7f 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -16,11 +16,11 @@
save_rect="true"
save_visibility="true"
title="AVATAR PICKER"
- width="635">
+ width="700">
<web_browser
top="25"
height="200"
- width="635"
+ width="700"
follows="all"
name="avatar_picker_contents"
trusted_content="true"/>