From 20e56a6925b4d4106059a73a22170beb5a38be1e Mon Sep 17 00:00:00 2001 From: Steven Bennetts Date: Tue, 13 Oct 2009 16:25:48 +0000 Subject: merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1992 https://svn.aws.productengine.com/secondlife/pe/stable-2@2004 -> viewer-2.0.0-3 * Bugs: EXT-1091 EXT-1418 EXT-996 EXT-1150 EXT-1188 EXT-1417 EXT-1181 EXT-1058 EXT-1397 EXT-836 EXT-1437 EXT-1379 * Dev: EXT-1291 EXT-1255 EXT-992 EXT-96 EXT-1157 --- indra/newview/CMakeLists.txt | 6 -- indra/newview/llfavoritesbar.cpp | 33 ++++++++++- indra/newview/llfloatercamera.cpp | 26 +-------- indra/newview/llfloatercamera.h | 6 +- indra/newview/llimfloater.cpp | 60 ++++++++++++++++---- indra/newview/llimfloater.h | 7 ++- indra/newview/llmoveview.cpp | 48 +++++++++------- indra/newview/llmoveview.h | 1 + indra/newview/llnearbychatbar.cpp | 66 ++++++++++++---------- indra/newview/llnearbychatbar.h | 6 ++ indra/newview/lloutputmonitorctrl.cpp | 2 +- indra/newview/llpanelgroup.cpp | 24 +++++++- indra/newview/llpanelgroup.h | 1 + indra/newview/llsyswellwindow.cpp | 11 ++-- indra/newview/llteleporthistorystorage.cpp | 1 + indra/newview/lltoastimpanel.cpp | 1 + indra/newview/llviewerfloaterreg.cpp | 2 - indra/newview/llviewermenu.cpp | 22 -------- .../skins/default/xui/en/floater_camera.xml | 4 +- .../skins/default/xui/en/floater_moveview.xml | 4 +- indra/newview/skins/default/xui/en/menu_viewer.xml | 9 --- .../skins/default/xui/en/panel_bottomtray.xml | 6 +- .../skins/default/xui/en/panel_chat_item.xml | 2 +- .../skins/default/xui/en/panel_nearby_chat_bar.xml | 29 +++++++--- .../skins/default/xui/en/widgets/accordion_tab.xml | 8 ++- 25 files changed, 227 insertions(+), 158 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 87c31c600e..b9e5664ff7 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -136,7 +136,6 @@ set(viewer_SOURCE_FILES llfeaturemanager.cpp llfilepicker.cpp llfirstuse.cpp - llfirsttimetipmanager.cpp llflexibleobject.cpp llfloaterabout.cpp llfloateractivespeakers.cpp @@ -161,7 +160,6 @@ set(viewer_SOURCE_FILES llfloaterdaycycle.cpp llfloaterdirectory.cpp llfloaterenvsettings.cpp - llfloaterfirsttimetip.cpp llfloaterfriends.cpp llfloaterfonttest.cpp llfloatergesture.cpp @@ -325,7 +323,6 @@ set(viewer_SOURCE_FILES llpanelmedia.cpp llpanelmediahud.cpp llpanelmeprofile.cpp - llpanelmovetip.cpp llpanelmediasettingsgeneral.cpp llpanelmediasettingssecurity.cpp llpanelmediasettingspermissions.cpp @@ -607,7 +604,6 @@ set(viewer_HEADER_FILES llfeaturemanager.h llfilepicker.h llfirstuse.h - llfirsttimetipmanager.h llflexibleobject.h llfloaterabout.h llfloateractivespeakers.h @@ -632,7 +628,6 @@ set(viewer_HEADER_FILES llfloaterdaycycle.h llfloaterdirectory.h llfloaterenvsettings.h - llfloaterfirsttimetip.h llfloaterfonttest.h llfloaterfriends.h llfloatergesture.h @@ -792,7 +787,6 @@ set(viewer_HEADER_FILES llpanelmedia.h llpanelmediahud.h llpanelmeprofile.h - llpanelmovetip.h llpanelmediasettingsgeneral.h llpanelmediasettingssecurity.h llpanelmediasettingspermissions.h diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index b06b4855ad..007c6b2c4c 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -201,7 +201,7 @@ public: fb->handleHover(x, y, mask); } - return LLMenuItemCallGL::handleHover(x, y, mask); + return TRUE; } void initFavoritesBarPointer(LLFavoritesBarCtrl* fb) { this->fb = fb; } @@ -216,6 +216,35 @@ private: LLFavoritesBarCtrl* fb; }; +/** + * This class was introduced just for fixing the following issue: + * EXT-836 Nav bar: Favorites overflow menu passes left-mouse click through. + * We must explicitly handle drag and drop event by returning TRUE + * because otherwise LLToolDragAndDrop will initiate drag and drop operation + * with the world. + */ +class LLFavoriteLandmarkToggleableMenu : public LLToggleableMenu +{ +public: + virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) + { + *accept = ACCEPT_NO; + return TRUE; + } + +protected: + LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p): + LLToggleableMenu(p) + { + } + + friend class LLUICtrlFactory; +}; + /** * This class is needed to update an item being copied to the favorites folder * with a sort field value (required to save favorites bar's tabs order). @@ -788,7 +817,7 @@ void LLFavoritesBarCtrl::showDropDownMenu() menu_p.max_scrollable_items = 10; menu_p.preferred_width = DROP_DOWN_MENU_WIDTH; - LLToggleableMenu* menu = LLUICtrlFactory::create(menu_p); + LLToggleableMenu* menu = LLUICtrlFactory::create(menu_p); mPopupMenuHandle = menu->getHandle(); } diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 0511ec1063..db20b11efd 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -39,7 +39,6 @@ // Viewer includes #include "lljoystickbutton.h" -#include "llfirsttimetipmanager.h" #include "llviewercontrol.h" #include "llbottomtray.h" #include "llagent.h" @@ -54,10 +53,6 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f; #define CONTROLS "controls" -void show_tip(LLFirstTimeTipsManager::EFirstTimeTipType tipType, LLView* anchorView) -{ - LLFirstTimeTipsManager::showTipsFor(tipType, anchorView, LLFirstTimeTipsManager::TPA_POS_RIGHT_ALIGN_TOP); -} // // Member functions // @@ -88,7 +83,6 @@ void LLFloaterCamera::update() { ECameraControlMode mode = determineMode(); if (mode != mCurrMode) setMode(mode); - show_tip(mMode2TipType[mode], this); } @@ -129,12 +123,11 @@ void LLFloaterCamera::onOpen(const LLSD& key) anchor_panel, this, getDockTongue(), LLDockControl::TOP)); - show_tip(mMode2TipType[mCurrMode], this); } LLFloaterCamera::LLFloaterCamera(const LLSD& val) -: LLDockableFloater(NULL, false, val), +: LLDockableFloater(NULL, val), mCurrMode(CAMERA_CTRL_MODE_ORBIT), mPrevMode(CAMERA_CTRL_MODE_ORBIT) { @@ -149,8 +142,6 @@ BOOL LLFloaterCamera::postBuild() mZoom = getChild("zoom"); mTrack = getChild(PAN); - initMode2TipTypeMap(); - assignButton2Mode(CAMERA_CTRL_MODE_ORBIT, "orbit_btn"); assignButton2Mode(CAMERA_CTRL_MODE_PAN, "pan_btn"); assignButton2Mode(CAMERA_CTRL_MODE_FREE_CAMERA, "freecamera_btn"); @@ -236,7 +227,6 @@ void LLFloaterCamera::onClickBtn(ECameraControlMode mode) switchMode(mode); - show_tip(mMode2TipType[mode], this); } void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::string& button_name) @@ -247,15 +237,6 @@ void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::stri mMode2Button[mode] = button; } -void LLFloaterCamera::initMode2TipTypeMap() -{ - mMode2TipType[CAMERA_CTRL_MODE_ORBIT] = LLFirstTimeTipsManager::FTT_CAMERA_ORBIT_MODE; - mMode2TipType[CAMERA_CTRL_MODE_PAN] = LLFirstTimeTipsManager::FTT_CAMERA_PAN_MODE; - mMode2TipType[CAMERA_CTRL_MODE_FREE_CAMERA] = LLFirstTimeTipsManager::FTT_CAMERA_FREE_MODE; - mMode2TipType[CAMERA_CTRL_MODE_AVATAR_VIEW] = LLFirstTimeTipsManager::FTT_AVATAR_FREE_MODE; -} - - void LLFloaterCamera::updateState() { //updating buttons @@ -305,7 +286,7 @@ void LLFloaterCamera::updateState() //-------------LLFloaterCameraPresets------------------------ LLFloaterCameraPresets::LLFloaterCameraPresets(const LLSD& key): -LLDockableFloater(NULL, false, key) +LLDockableFloater(NULL, key) {} BOOL LLFloaterCameraPresets::postBuild() @@ -330,17 +311,14 @@ void LLFloaterCameraPresets::onClickCameraPresets(LLUICtrl* ctrl, const LLSD& pa if ("rear_view" == name) { - LLFirstTimeTipsManager::showTipsFor(LLFirstTimeTipsManager::FTT_CAMERA_PRESET_REAR, ctrl); gAgent.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); } else if ("group_view" == name) { - LLFirstTimeTipsManager::showTipsFor(LLFirstTimeTipsManager::FTT_CAMERA_PRESET_GROUP); gAgent.switchCameraPreset(CAMERA_PRESET_GROUP_VIEW); } else if ("front_view" == name) { - LLFirstTimeTipsManager::showTipsFor(LLFirstTimeTipsManager::FTT_CAMERA_PRESET_FRONT); gAgent.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW); } diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index 020cae7e82..69df861a20 100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -35,8 +35,6 @@ #include "lldockablefloater.h" -#include "llfirsttimetipmanager.h" - class LLJoystickCameraRotate; class LLJoystickCameraZoom; class LLJoystickCameraTrack; @@ -105,13 +103,11 @@ private: void onClickBtn(ECameraControlMode mode); void assignButton2Mode(ECameraControlMode mode, const std::string& button_name); - void initMode2TipTypeMap(); - + ECameraControlMode mPrevMode; ECameraControlMode mCurrMode; std::map mMode2Button; - std::map mMode2TipType; }; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 3e449e2c82..680106c7bb 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -40,9 +40,11 @@ #include "llbottomtray.h" #include "llchannelmanager.h" #include "llchiclet.h" +#include "llfloaterchat.h" #include "llfloaterreg.h" #include "llimview.h" #include "lllineeditor.h" +#include "lllogchat.h" #include "llpanelimcontrolpanel.h" #include "llscreenchannel.h" #include "lltrans.h" @@ -90,16 +92,6 @@ void LLIMFloater::onClose(bool app_quitting) gIMMgr->removeSession(mSessionID); } -void LLIMFloater::setMinimized(BOOL minimize) -{ - if(!isDocked()) - { - setVisible(!minimize); - } - - LLFloater::setMinimized(minimize); -} - /* static */ void LLIMFloater::newIMCallback(const LLSD& data){ @@ -203,6 +195,12 @@ BOOL LLIMFloater::postBuild() setTitle(LLIMModel::instance().getName(mSessionID)); setDocked(true); + if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) + { + LLLogChat::loadHistory(getTitle(), &chatFromLogFile, (void *)this); + } + + return LLDockableFloater::postBuild(); } @@ -316,13 +314,19 @@ void LLIMFloater::setVisible(BOOL visible) bool LLIMFloater::toggle(const LLUUID& session_id) { LLIMFloater* floater = LLFloaterReg::findTypedInstance("impanel", session_id); - if (floater && floater->getVisible()) + if (floater && floater->getVisible() && floater->isDocked()) { // clicking on chiclet to close floater just hides it to maintain existing // scroll/text entry state floater->setVisible(false); return false; } + else if(floater && !floater->isDocked()) + { + floater->setVisible(TRUE); + floater->setFocus(TRUE); + return true; + } else { // ensure the list of messages is updated when floater is made visible @@ -419,3 +423,37 @@ void LLIMFloater::setTyping(BOOL typing) { } +void LLIMFloater::chatFromLogFile(LLLogChat::ELogLineType type, std::string line, void* userdata) +{ + if (!userdata) return; + + LLIMFloater* self = (LLIMFloater*) userdata; + std::string message = line; + S32 im_log_option = gSavedPerAccountSettings.getS32("IMLogOptions"); + switch (type) + { + case LLLogChat::LOG_EMPTY: + // add warning log enabled message + if (im_log_option!=LOG_CHAT) + { + message = LLTrans::getString("IM_logging_string"); + } + break; + case LLLogChat::LOG_END: + // add log end message + if (im_log_option!=LOG_CHAT) + { + message = LLTrans::getString("IM_logging_string"); + } + break; + case LLLogChat::LOG_LINE: + // just add normal lines from file + break; + default: + // nothing + break; + } + + self->mHistoryEditor->appendText(message, true, LLStyle::Params().color(LLUIColorTable::instance().getColor("ChatHistoryTextColor"))); + self->mHistoryEditor->blockUndo(); +} diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index f85a941be3..5276013568 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -34,6 +34,7 @@ #define LL_IMFLOATER_H #include "lldockablefloater.h" +#include "lllogchat.h" class LLLineEditor; class LLPanelChatControlPanel; @@ -59,7 +60,6 @@ public: /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); // override LLFloater's minimization according to EXT-1216 - /*virtual*/ void setMinimized(BOOL minimize); // Make IM conversion visible and update the message history static LLIMFloater* show(const LLUUID& session_id); @@ -91,7 +91,10 @@ private: static void* createPanelGroupControl(void* userdata); // gets a rect that bounds possible positions for the LLIMFloater on a screen (EXT-1111) void getAllowedRect(LLRect& rect); - + + static void chatFromLogFile(LLLogChat::ELogLineType type, std::string line, void* userdata); + + LLPanelChatControlPanel* mControlPanel; LLUUID mSessionID; S32 mLastMessageIndex; diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index d8f00ec370..1bbcc3f98e 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -44,9 +44,7 @@ #include "llvoavatarself.h" // to check gAgent.getAvatarObject()->isSitting() #include "llbottomtray.h" #include "llbutton.h" -#include "llfirsttimetipmanager.h" #include "llfloaterreg.h" -#include "llfloaterfirsttimetip.h" #include "lljoystickbutton.h" #include "lluictrlfactory.h" #include "llviewerwindow.h" @@ -54,6 +52,7 @@ #include "llselectmgr.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" +#include "lltooltip.h" // // Constants @@ -71,7 +70,7 @@ const std::string BOTTOM_TRAY_BUTTON_NAME = "movement_btn"; // protected LLFloaterMove::LLFloaterMove(const LLSD& key) -: LLDockableFloater(NULL, false, key), +: LLDockableFloater(NULL, key), mForwardButton(NULL), mBackwardButton(NULL), mTurnLeftButton(NULL), @@ -305,7 +304,6 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode) showModeButtons(!bHideModeButtons); - showQuickTips(mode); } void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode) @@ -464,6 +462,11 @@ void LLFloaterMove::enableInstance(BOOL bEnable) if (instance) { instance->setEnabled(bEnable); + + if (gAgent.getFlying()) + { + instance->showModeButtons(FALSE); + } } } @@ -487,8 +490,6 @@ void LLFloaterMove::onOpen(const LLSD& key) anchor_panel, this, getDockTongue(), LLDockControl::TOP)); - showQuickTips(mCurrentMode); - sUpdateFlyingStatus(); } @@ -500,20 +501,6 @@ void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/) updateHeight(show_mode_buttons); } -void LLFloaterMove::showQuickTips(const EMovementMode mode) -{ - LLFirstTimeTipsManager::EFirstTimeTipType tipType = LLFirstTimeTipsManager::FTT_MOVE_WALK; - switch (mode) - { - case MM_FLY: tipType = LLFirstTimeTipsManager::FTT_MOVE_FLY; break; - case MM_RUN: tipType = LLFirstTimeTipsManager::FTT_MOVE_RUN; break; - case MM_WALK: tipType = LLFirstTimeTipsManager::FTT_MOVE_WALK; break; - default: llwarns << "Quick Tip type was not detected, FTT_MOVE_WALK will be used" << llendl; - } - - LLFirstTimeTipsManager::showTipsFor(tipType, this, LLFirstTimeTipsManager::TPA_POS_LEFT_ALIGN_TOP); -} - void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode) { llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode)); @@ -610,6 +597,22 @@ void LLPanelStandStopFlying::setVisible(BOOL visible) LLPanel::setVisible(visible); } +BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask) +{ + LLToolTipMgr::instance().unblockToolTips(); + + if (mStandButton->getVisible()) + { + LLToolTipMgr::instance().show(mStandButton->getToolTip()); + } + else if (mStopFlyingButton->getVisible()) + { + LLToolTipMgr::instance().show(mStopFlyingButton->getToolTip()); + } + + return TRUE; +} + ////////////////////////////////////////////////////////////////////////// // Private Section ////////////////////////////////////////////////////////////////////////// @@ -635,7 +638,10 @@ void LLPanelStandStopFlying::onStandButtonClick() gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); setFocus(FALSE); // EXT-482 - setVisible(FALSE); + + BOOL fly = gAgent.getFlying(); + mStopFlyingButton->setVisible(fly); + setVisible(fly); } void LLPanelStandStopFlying::onStopFlyingButtonClick() diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index 584c7c494c..cbed36f10d 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -142,6 +142,7 @@ public: // *HACK: due to hard enough to have this control aligned with "Move" button while resizing // let update its position in each frame /*virtual*/ void draw(){updatePosition(); LLPanel::draw();} + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); protected: diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 1d8789fde0..c2e1019f43 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -201,35 +201,8 @@ BOOL LLNearbyChatBar::postBuild() mChatBox->setMaxTextLength(1023); mChatBox->setEnableLineHistory(TRUE); - // TODO: Initialization of the output monitor's params should be done via xml - const S32 MONITOR_RIGHT_PAD = 2; - - LLRect monitor_rect = LLRect(0, 18, 18, 0); - LLRect chatbox_rect = mChatBox->getRect(); - - S32 monitor_height = monitor_rect.getHeight(); - monitor_rect.mLeft = chatbox_rect.getWidth() - monitor_rect.getWidth() - MONITOR_RIGHT_PAD; - monitor_rect.mRight = chatbox_rect.getWidth() - MONITOR_RIGHT_PAD; - monitor_rect.mBottom = (chatbox_rect.getHeight() / 2) - (monitor_height / 2); - monitor_rect.mTop = monitor_rect.mBottom + monitor_height; - - LLOutputMonitorCtrl::Params monitor_params = LLOutputMonitorCtrl::Params(); - monitor_params.name = "output_monitor"; - monitor_params.draw_border(false); - monitor_params.rect(monitor_rect); - monitor_params.auto_update(true); - monitor_params.speaker_id(gAgentID); - - LLView::Follows follows = LLView::Follows(); - follows.flags = FOLLOWS_RIGHT; - monitor_params.follows = follows; - mOutputMonitor = LLUICtrlFactory::create(monitor_params); - mChatBox->addChild(mOutputMonitor); - - // never show "muted" because you can't mute yourself - mOutputMonitor->setIsMuted(false); + mOutputMonitor = getChild("chat_zone_indicator"); mOutputMonitor->setVisible(FALSE); - mTalkBtn = getChild("talk"); // Speak button should be initially disabled because @@ -254,6 +227,12 @@ bool LLNearbyChatBar::instanceExists() return LLBottomTray::instanceExists() && LLBottomTray::getInstance()->getNearbyChatBar() != NULL; } +void LLNearbyChatBar::draw() +{ + displaySpeakingIndicator(); + LLPanel::draw(); +} + std::string LLNearbyChatBar::getCurrentChat() { return mChatBox ? mChatBox->getText() : LLStringUtil::null; @@ -470,6 +449,36 @@ void LLNearbyChatBar::onChatBoxCommit() gAgent.stopTyping(); } +void LLNearbyChatBar::displaySpeakingIndicator() +{ + LLSpeakerMgr::speaker_list_t speaker_list; + LLUUID id; + + id.setNull(); + mSpeakerMgr.update(TRUE); + mSpeakerMgr.getSpeakerList(&speaker_list, FALSE); + + for (LLSpeakerMgr::speaker_list_t::iterator i = speaker_list.begin(); i != speaker_list.end(); ++i) + { + LLPointer s = *i; + if (s->mSpeechVolume > 0 || s->mStatus == LLSpeaker::STATUS_SPEAKING) + { + id = s->mID; + break; + } + } + + if (!id.isNull()) + { + mOutputMonitor->setVisible(TRUE); + mOutputMonitor->setSpeakerId(id); + } + else + { + mOutputMonitor->setVisible(FALSE); + } +} + void LLNearbyChatBar::sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate) { sendChatFromViewer(utf8str_to_wstring(utf8text), type, animate); @@ -622,7 +631,6 @@ LLWString LLNearbyChatBar::stripChannelNumber(const LLWString &mesg, S32* channe void LLNearbyChatBar::setPTTState(bool state) { mTalkBtn->setSpeakBtnToggleState(state); - mOutputMonitor->setVisible(state); } void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel) diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index 1b71ad69f2..d6827315f2 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -40,6 +40,7 @@ #include "llchiclet.h" #include "llvoiceclient.h" #include "lloutputmonitorctrl.h" +#include "llfloateractivespeakers.h" class LLGestureComboBox : public LLComboBox @@ -84,6 +85,8 @@ public: LLLineEditor* getChatBox() { return mChatBox; } + virtual void draw(); + std::string getCurrentChat(); virtual BOOL handleKeyHere( KEY key, MASK mask ); @@ -110,12 +113,15 @@ protected: static LLWString stripChannelNumber(const LLWString &mesg, S32* channel); EChatType processChatTypeTriggers(EChatType type, std::string &str); + void displaySpeakingIndicator(); + // Which non-zero channel did we last chat on? static S32 sLastSpecialChatChannel; LLLineEditor* mChatBox; LLTalkButton* mTalkBtn; LLOutputMonitorCtrl* mOutputMonitor; + LLActiveSpeakerMgr mSpeakerMgr; }; #endif diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index d9cdf2e04f..8bac9937f0 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -222,7 +222,7 @@ void LLOutputMonitorCtrl::draw() void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id) { - if (speaker_id.isNull()) return; + if (speaker_id.isNull() || speaker_id == mSpeakerId) return; mSpeakerId = speaker_id; diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index acad897fa4..e2281743c9 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -211,9 +211,19 @@ void LLPanelGroup::reposButton(const std::string& name) button->setRect(btn_rect); } -void LLPanelGroup::reshape(S32 width, S32 height, BOOL called_from_parent ) +void LLPanelGroup::reposButtons() { - LLPanel::reshape(width, height, called_from_parent ); + LLButton* button_refresh = findChild("btn_refresh"); + LLButton* button_cancel = findChild("btn_cancel"); + + if(button_refresh && button_cancel && button_refresh->getVisible() && button_cancel->getVisible()) + { + LLRect btn_refresh_rect = button_refresh->getRect(); + LLRect btn_cancel_rect = button_cancel->getRect(); + btn_refresh_rect.setLeftTopAndSize( btn_cancel_rect.mLeft + btn_cancel_rect.getWidth() + 2, + btn_refresh_rect.getHeight() + 2, btn_refresh_rect.getWidth(), btn_refresh_rect.getHeight()); + button_refresh->setRect(btn_refresh_rect); + } reposButton("btn_apply"); reposButton("btn_create"); @@ -221,6 +231,13 @@ void LLPanelGroup::reshape(S32 width, S32 height, BOOL called_from_parent ) reposButton("btn_cancel"); } +void LLPanelGroup::reshape(S32 width, S32 height, BOOL called_from_parent ) +{ + LLPanel::reshape(width, height, called_from_parent ); + + reposButtons(); +} + void LLPanelGroup::onBackBtnClick() { LLSideTrayPanelContainer* parent = dynamic_cast(getParent()); @@ -411,7 +428,6 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) getChild("group_name")->setVisible(false); getChild("group_name_editor")->setVisible(true); - } else { @@ -431,6 +447,8 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) getChild("group_name")->setVisible(true); getChild("group_name_editor")->setVisible(false); } + + reposButtons(); } bool LLPanelGroup::apply(LLPanelGroupTab* tab) diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index f2118a7244..628e2389b6 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -104,6 +104,7 @@ protected: static bool joinDlgCB(const LLSD& notification, const LLSD& response); void reposButton(const std::string& name); + void reposButtons(); protected: diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index c5a92f52d0..67a0528a06 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -112,9 +112,12 @@ BOOL LLSysWellWindow::postBuild() void LLSysWellWindow::setMinimized(BOOL minimize) { // we don't show empty Message Well window - setVisible(!minimize && !isWindowEmpty()); + if (!minimize) + { + setVisible(!isWindowEmpty()); + } - LLFloater::setMinimized(minimize); + LLDockableFloater::setMinimized(minimize); } //--------------------------------------------------------------------------------- @@ -264,7 +267,7 @@ void LLSysWellWindow::toggleWindow() getDockTongue(), LLDockControl::TOP, boost::bind(&LLSysWellWindow::getAllowedRect, this, _1))); } - if(!getVisible()) + if(!getVisible() || isMinimized()) { if(isWindowEmpty()) { @@ -273,7 +276,7 @@ void LLSysWellWindow::toggleWindow() setVisible(TRUE); } - else + else if (isDocked()) { setVisible(FALSE); } diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp index 0bb5a727e0..a588153ca2 100644 --- a/indra/newview/llteleporthistorystorage.cpp +++ b/indra/newview/llteleporthistorystorage.cpp @@ -100,6 +100,7 @@ void LLTeleportHistoryStorage::onTeleportHistoryChange() void LLTeleportHistoryStorage::purgeItems() { mItems.clear(); + mHistoryChangedSignal(); } void LLTeleportHistoryStorage::addItem(const std::string title, const LLVector3d& global_pos) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index fe1492d937..c2cd63900b 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -66,6 +66,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mReplyBtn->setVisible(FALSE); S32 btn_height = mReplyBtn->getRect().getHeight(); LLRect msg_rect = mMessage->getRect(); + mMessage->reshape(msg_rect.getWidth(), msg_rect.getHeight() + btn_height); msg_rect.setLeftTopAndSize(msg_rect.mLeft, msg_rect.mTop, msg_rect.getWidth(), msg_rect.getHeight() + btn_height); mMessage->setRect(msg_rect); } diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 8c46949d70..e88217fae6 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -58,7 +58,6 @@ #include "llfloaterchatterbox.h" #include "llfloaterdaycycle.h" #include "llfloaterdirectory.h" -#include "llfloaterfirsttimetip.h" #include "llfloaterenvsettings.h" #include "llfloaterfonttest.h" #include "llfloatergesture.h" @@ -154,7 +153,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("contacts", "floater_my_friends.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); - LLFloaterReg::add("first_time_tip", "floater_first_time_tip.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("env_day_cycle", "floater_day_cycle_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); LLFloaterReg::add("env_settings", "floater_env_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index a81d26cb7b..b4e0d88e79 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -82,7 +82,6 @@ #include "llface.h" #include "llfilepicker.h" #include "llfirstuse.h" -#include "llfirsttimetipmanager.h" #include "llfloater.h" #include "llfloaterabout.h" #include "llfloaterbuycurrency.h" @@ -7603,24 +7602,6 @@ class LLWorldDayCycle : public view_listener_t } }; -/// Show First Time Tips calbacks -class LLHelpCheckShowFirstTimeTip : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - return LLFirstTimeTipsManager::tipsEnabled(); - } -}; - -class LLHelpShowFirstTimeTip : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - LLFirstTimeTipsManager::enabledTip(!userdata.asBoolean()); - return true; - } -}; - void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y) { static LLMenuGL* show_navbar_context_menu = LLUICtrlFactory::getInstance()->createFromFile("menu_hide_navbar.xml", @@ -7738,9 +7719,6 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); view_listener_t::addMenu(new LLWorldDayCycle(), "World.DayCycle"); - view_listener_t::addMenu(new LLHelpCheckShowFirstTimeTip(), "Help.CheckShowFirstTimeTip"); - view_listener_t::addMenu(new LLHelpShowFirstTimeTip(), "Help.ShowQuickTips"); - // Tools menu view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool"); view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects"); diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index c4a2654403..86c75a3946 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -1,8 +1,8 @@ - @@ -121,7 +121,7 @@ name="camera_btn" width="70"> diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml index 713c3a41a2..78f53562cd 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml @@ -16,7 +16,7 @@ /> Jerry Knight diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 4088d96ebf..d914583352 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -21,15 +21,28 @@ tool_tip="Press Enter to say, Ctrl-Enter to shout." top="3" width="250" /> + + header_expand_img_pressed="Accordion_ArrowOpened_Press" + header_image="Accordion_Off.png" + header_image_over="Accordion_Over" + header_image_pressed="Accordion_Press" + /> -- cgit v1.2.3