diff options
Diffstat (limited to 'indra/newview/llnearbychatbar.cpp')
-rw-r--r-- | indra/newview/llnearbychatbar.cpp | 136 |
1 files changed, 38 insertions, 98 deletions
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 9bef0a6192..1507b7d324 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -2,25 +2,31 @@ * @file llnearbychatbar.cpp * @brief LLNearbyChatBar class implementation * - * $LicenseInfo:firstyear=2002&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. + * $LicenseInfo:firstyear=2002&license=viewergpl$ + * + * Copyright (c) 2002-2009, 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. + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 * - * 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. + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception * - * 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 + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. * $/LicenseInfo$ */ @@ -28,7 +34,6 @@ #include "message.h" -#include "llappviewer.h" #include "llfloaterreg.h" #include "lltrans.h" @@ -64,33 +69,6 @@ static LLChatTypeTrigger sChatTypeTriggers[] = { { "/shout" , CHAT_TYPE_SHOUT} }; -//ext-7367 -//Problem: gesture list control (actually LLScrollListCtrl) didn't actually process mouse wheel message. -// introduce new gesture list subclass to "eat" mouse wheel messages (and probably some other messages) -class LLGestureScrollListCtrl: public LLScrollListCtrl -{ -protected: - friend class LLUICtrlFactory; - LLGestureScrollListCtrl(const LLScrollListCtrl::Params& params) - :LLScrollListCtrl(params) - { - } -public: - BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) - { - LLScrollListCtrl::handleScrollWheel( x, y, clicks ); - return TRUE; - } - //See EXT-6598 - //Mouse hover over separator will result in not processing tooltip message - //So eat this message - BOOL handleToolTip(S32 x, S32 y, MASK mask) - { - LLScrollListCtrl::handleToolTip( x, y, mask ); - return TRUE; - } -}; - LLGestureComboList::Params::Params() : combo_button("combo_button"), combo_list("combo_list") @@ -101,7 +79,6 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) : LLUICtrl(p) , mLabel(p.label) , mViewAllItemIndex(0) - , mGetMoreItemIndex(0) { LLButton::Params button_params = p.combo_button; button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT); @@ -112,14 +89,13 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) addChild(mButton); - LLGestureScrollListCtrl::Params params(p.combo_list); - + LLScrollListCtrl::Params params = p.combo_list; params.name("GestureComboList"); params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2)); params.visible(false); params.commit_on_keyboard_movement(false); - mList = LLUICtrlFactory::create<LLGestureScrollListCtrl>(params); + mList = LLUICtrlFactory::create<LLScrollListCtrl>(params); addChild(mList); //****************************Gesture Part********************************/ @@ -284,12 +260,9 @@ void LLGestureComboList::refreshGestures() sortByName(); - // store indices for Get More and View All items (idx is the index followed by the last added Gesture) - mGetMoreItemIndex = idx; - mViewAllItemIndex = idx + 1; - - // add Get More and View All items at the bottom - mList->addSimpleElement(LLTrans::getString("GetMoreGestures"), ADD_BOTTOM, LLSD(mGetMoreItemIndex)); + // store index followed by the last added Gesture and add View All item at bottom + mViewAllItemIndex = idx; + mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex)); // Insert label after sorting, at top, with separator below it @@ -311,19 +284,9 @@ void LLGestureComboList::refreshGestures() if (gestures) { - S32 sel_index = gestures->getFirstSelectedIndex(); - if (sel_index != 0) - { - S32 index = gestures->getSelectedValue().asInteger(); - if (index<0 || index >= (S32)mGestures.size()) - { - llwarns << "out of range gesture access" << llendl; - } - else - { - gesture = mGestures.at(index); - } - } + S32 index = gestures->getSelectedValue().asInteger(); + if(index > 0) + gesture = mGestures.at(index); } if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture)) @@ -339,13 +302,13 @@ void LLGestureComboList::onCommitGesture() LLCtrlListInterface* gestures = getListInterface(); if (gestures) { - S32 sel_index = gestures->getFirstSelectedIndex(); - if (sel_index == 0) + S32 index = gestures->getFirstSelectedIndex(); + if (index == 0) { return; } - S32 index = gestures->getSelectedValue().asInteger(); + index = gestures->getSelectedValue().asInteger(); if (mViewAllItemIndex == index) { @@ -355,26 +318,13 @@ void LLGestureComboList::onCommitGesture() return; } - if (mGetMoreItemIndex == index) - { - LLWeb::loadURLExternal(gSavedSettings.getString("GesturesMarketplaceURL")); - return; - } - - if (index<0 || index >= (S32)mGestures.size()) + LLMultiGesture* gesture = mGestures.at(index); + if(gesture) { - llwarns << "out of range gesture index" << llendl; - } - else - { - LLMultiGesture* gesture = mGestures.at(index); - if(gesture) + LLGestureMgr::instance().playGesture(gesture); + if(!gesture->mReplaceText.empty()) { - LLGestureMgr::instance().playGesture(gesture); - if(!gesture->mReplaceText.empty()) - { - LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE); - } + LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE); } } } @@ -385,11 +335,6 @@ LLGestureComboList::~LLGestureComboList() LLGestureMgr::instance().removeObserver(this); } -LLCtrlListInterface* LLGestureComboList::getListInterface() -{ - return mList; -}; - LLNearbyChatBar::LLNearbyChatBar() : LLPanel() , mChatBox(NULL) @@ -405,7 +350,6 @@ BOOL LLNearbyChatBar::postBuild() mChatBox->setCommitCallback(boost::bind(&LLNearbyChatBar::onChatBoxCommit, this)); mChatBox->setKeystrokeCallback(&onChatBoxKeystroke, this); mChatBox->setFocusLostCallback(boost::bind(&onChatBoxFocusLost, _1, this)); - mChatBox->setFocusReceivedCallback(boost::bind(&LLNearbyChatBar::onChatBoxFocusReceived, this)); mChatBox->setIgnoreArrowKeys( FALSE ); mChatBox->setCommitOnFocusLost( FALSE ); @@ -449,6 +393,7 @@ BOOL LLNearbyChatBar::handleKeyHere( KEY key, MASK mask ) { BOOL handled = FALSE; + // ALT-RETURN is reserved for windowed/fullscreen toggle if( KEY_RETURN == key && mask == MASK_CONTROL) { // shout @@ -562,11 +507,6 @@ void LLNearbyChatBar::onChatBoxFocusLost(LLFocusableElement* caller, void* userd gAgent.stopTyping(); } -void LLNearbyChatBar::onChatBoxFocusReceived() -{ - mChatBox->setEnabled(!gDisconnected); -} - EChatType LLNearbyChatBar::processChatTypeTriggers(EChatType type, std::string &str) { U32 length = str.length(); |