diff options
| author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-11-10 19:06:03 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2020-06-23 14:50:05 +0300 | 
| commit | 5568018bd20a43c30caca0c6288e63bfae29a2e3 (patch) | |
| tree | a5d81dbebe5601230d95b8a1c45dc1b2a577e6ca | |
| parent | e7d383be8a9734a5008690b8a7e1b179e2f2a718 (diff) | |
SL-6109 Better key and table localization support and fix for key-replacing
| -rw-r--r-- | indra/llcommon/llkeybind.cpp | 31 | ||||
| -rw-r--r-- | indra/llwindow/llkeyboard.cpp | 11 | ||||
| -rw-r--r-- | indra/llwindow/llkeyboard.h | 2 | ||||
| -rw-r--r-- | indra/newview/llkeyconflict.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llkeyconflict.h | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/control_table_contents.xml | 52 | 
6 files changed, 68 insertions, 32 deletions
diff --git a/indra/llcommon/llkeybind.cpp b/indra/llcommon/llkeybind.cpp index 46a3230240..ecfc289cb3 100644 --- a/indra/llcommon/llkeybind.cpp +++ b/indra/llcommon/llkeybind.cpp @@ -340,43 +340,24 @@ bool LLKeyBind::addKeyData(const LLKeyData& data)  void LLKeyBind::replaceKeyData(EMouseClickType mouse, KEY key, MASK mask, bool ignore, U32 index)  { -    if (mouse != CLICK_NONE || key != KEY_NONE ) -    { -        // if both click and key are none, we are inserting a placeholder, we don't want to reset anything -        // otherwise reset identical key -        for (data_vector_t::iterator iter = mData.begin(); iter != mData.end(); iter++) -        { -            if (iter->mKey == key -                && iter->mMouse == mouse -                && iter->mIgnoreMasks == ignore -                && (iter->mIgnoreMasks || iter->mMask == mask)) -            { -                iter->reset(); -                break; -            } -        } -    } -    if (mData.size() > index) -    { -        mData[index] = LLKeyData(mouse, key, mask, ignore); -    } -    else -    { -        mData.push_back(LLKeyData(mouse, key, mask, ignore)); -    } +    replaceKeyData(LLKeyData(mouse, key, mask, ignore), index);  }  void LLKeyBind::replaceKeyData(const LLKeyData& data, U32 index)  {      if (!data.isEmpty())      { +        // if both click and key are none (isEmpty()), we are inserting a placeholder, we don't want to reset anything +        // otherwise reset identical key          for (data_vector_t::iterator iter = mData.begin(); iter != mData.end(); iter++)          {              if (iter->mKey == data.mKey                  && iter->mMouse == data.mMouse                  && iter->mIgnoreMasks == data.mIgnoreMasks -                && (iter->mIgnoreMasks || iter->mMask == data.mMask)) +                && iter->mMask == data.mMask)              { +                // Replacing only fully equal combinations even in case 'ignore' is set +                // Reason: Simplicity and user might decide to do a 'move' command as W and Shift+Ctrl+W, and 'run' as Shift+W                  iter->reset();                  break;              } diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp index 8e75325859..5404ac50e5 100644 --- a/indra/llwindow/llkeyboard.cpp +++ b/indra/llwindow/llkeyboard.cpp @@ -327,7 +327,7 @@ BOOL LLKeyboard::keyFromString(const std::string& str, KEY *key)  // static -std::string LLKeyboard::stringFromKey(KEY key) +std::string LLKeyboard::stringFromKey(KEY key, bool translate)  {  	std::string res = get_if_there(sKeysToNames, key, std::string());  	if (res.empty()) @@ -338,10 +338,13 @@ std::string LLKeyboard::stringFromKey(KEY key)  		res = std::string(buffer);  	} -	LLKeyStringTranslatorFunc *trans = gKeyboard->mStringTranslator; -	if (trans != NULL) +	if (translate)  	{ -		res = trans(res.c_str()); +		LLKeyStringTranslatorFunc *trans = gKeyboard->mStringTranslator; +		if (trans != NULL) +		{ +			res = trans(res.c_str()); +		}  	}  	return res; diff --git a/indra/llwindow/llkeyboard.h b/indra/llwindow/llkeyboard.h index f6404164e7..36bd8bcbed 100644 --- a/indra/llwindow/llkeyboard.h +++ b/indra/llwindow/llkeyboard.h @@ -94,7 +94,7 @@ public:  	static BOOL		maskFromString(const std::string& str, MASK *mask);		// False on failure  	static BOOL		keyFromString(const std::string& str, KEY *key);			// False on failure -	static std::string stringFromKey(KEY key); +	static std::string stringFromKey(KEY key, bool translate = true);  	static std::string stringFromAccelerator( MASK accel_mask ); // separated for convinience, returns with "+": "Shift+" or "Shift+Alt+"...  	static std::string stringFromAccelerator( MASK accel_mask, KEY key ); diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp index 121965a388..882a1d0caf 100644 --- a/indra/newview/llkeyconflict.cpp +++ b/indra/newview/llkeyconflict.cpp @@ -517,8 +517,7 @@ void LLKeyConflictHandler::saveToSettings(bool temporary)                      }                      else                      { -                        // Note: this is UI string, we might want to hardcode our own for 'fixed' use in keys.xml -                        binding.key = LLKeyboard::stringFromKey(data.mKey); +                        binding.key = LLKeyboard::stringFromKey(data.mKey, false /*Do not localize*/);                      }                      binding.mask = string_from_mask(data.mMask);                      if (data.mMouse == CLICK_NONE) diff --git a/indra/newview/llkeyconflict.h b/indra/newview/llkeyconflict.h index 48af0ccdfe..84730e4d4f 100644 --- a/indra/newview/llkeyconflict.h +++ b/indra/newview/llkeyconflict.h @@ -86,6 +86,7 @@ public:      LLKeyData getControl(const std::string &control_name, U32 data_index); +    // localized string      static std::string getStringFromKeyData(const LLKeyData& keydata);      std::string getControlString(const std::string &control_name, U32 data_index); diff --git a/indra/newview/skins/default/xui/en/control_table_contents.xml b/indra/newview/skins/default/xui/en/control_table_contents.xml index da9cceb2db..7b777befee 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents.xml @@ -30,6 +30,7 @@           value="Move_Walk_Off" />      </rows>      <rows +     name="walk_to"       value="walk_to">          <columns           column="lst_action" @@ -40,6 +41,7 @@           value="Walk to" />      </rows>      <rows +     name="teleport_to"       value="teleport_to">          <columns           column="lst_action" @@ -50,6 +52,7 @@           value="Teleport to" />      </rows>      <rows +     name="push_forward"       value="push_forward">          <columns           column="lst_action" @@ -59,6 +62,7 @@           value="Move Forward" />      </rows>      <rows +     name="push_backward"       value="push_backward">          <columns           column="lst_action" @@ -68,6 +72,7 @@           value="Move Backward" />      </rows>      <rows +     name="turn_left"       value="turn_left">          <columns           column="lst_action" @@ -77,6 +82,7 @@           value="Left" />      </rows>      <rows +     name="turn_right"       value="turn_right">          <columns           column="lst_action" @@ -86,6 +92,7 @@           value="Right" />      </rows>      <rows +     name="slide_left"       value="slide_left">          <columns           column="lst_action" @@ -95,6 +102,7 @@           value="Strafe left" />      </rows>      <rows +     name="slide_right"       value="slide_right">          <columns           column="lst_action" @@ -104,6 +112,7 @@           value="Strafe right" />      </rows>      <rows +     name="jump"       value="jump">          <columns           column="lst_action" @@ -113,6 +122,7 @@           value="Jump/Up" />      </rows>      <rows +     name="push_down"       value="push_down">          <columns           column="lst_action" @@ -122,6 +132,7 @@           value="Down" />      </rows>      <rows +     name="run_forward"       value="run_forward">          <columns           column="lst_action" @@ -131,6 +142,7 @@           value="Run Forward" />      </rows>      <rows +     name="run_backward"       value="run_backward">          <columns           column="lst_action" @@ -140,6 +152,7 @@           value="Run Backward" />      </rows>      <rows +     name="run_left"       value="run_left">          <columns           column="lst_action" @@ -149,6 +162,7 @@           value="Run Left" />      </rows>      <rows +     name="run_right"       value="run_right">          <columns           column="lst_action" @@ -158,6 +172,7 @@           value="Run Right" />      </rows>      <rows +     name="toggle_run"       value="toggle_run">          <columns           column="lst_action" @@ -167,6 +182,7 @@           value="Toggle Run" />      </rows>      <rows +     name="toggle_fly"       value="toggle_fly">          <columns           column="lst_action" @@ -176,6 +192,7 @@           value="Fly/Stop flying" />      </rows>      <rows +     name="toggle_sit"       value="toggle_sit">          <columns           column="lst_action" @@ -185,6 +202,7 @@           value="Sit/Stand" />      </rows>      <rows +     name="stop_moving"       value="stop_moving">          <columns           column="lst_action" @@ -215,6 +233,7 @@           value="Cam_FreeCam_Off" />      </rows>      <rows +     name="look_up"       value="look_up">          <columns           column="lst_action" @@ -224,6 +243,7 @@           value="Look Up" />      </rows>      <rows +     name="look_down"       value="look_down">          <columns           column="lst_action" @@ -233,6 +253,7 @@           value="Look Down" />      </rows>      <rows +     name="move_forward"       value="move_forward">          <columns           column="lst_action" @@ -242,6 +263,7 @@           value="Camera Forward" />      </rows>      <rows +     name="move_backward"       value="move_backward">          <columns           column="lst_action" @@ -251,6 +273,7 @@           value="Camera Backward" />      </rows>      <rows +     name="move_forward_fast"       value="move_forward_fast">          <columns           column="lst_action" @@ -260,6 +283,7 @@           value="Camera Forward Fast" />      </rows>      <rows +     name="move_backward_fast"       value="move_backward_fast">          <columns           column="lst_action" @@ -269,6 +293,7 @@           value="Camera Backward Fast" />      </rows>      <rows +     name="move_forward_sitting"       value="move_forward_sitting">          <columns           column="lst_action" @@ -278,6 +303,7 @@           value="Camera Forward Sitting" />      </rows>      <rows +     name="move_backward_sitting"       value="move_backward_sitting">          <columns           column="lst_action" @@ -287,6 +313,7 @@           value="Camera Backward Sitting" />      </rows>      <rows +     name="spin_over"       value="spin_over">          <columns           column="lst_action" @@ -296,6 +323,7 @@           value="Camera Spin Over" />      </rows>      <rows +     name="spin_under"       value="spin_under">          <columns           column="lst_action" @@ -305,6 +333,7 @@           value="Camera Spin Under" />      </rows>      <rows +     name="spin_over_sitting"       value="spin_over_sitting">          <columns           column="lst_action" @@ -314,6 +343,7 @@           value="Camera Spin Over" />      </rows>      <rows +     name="spin_under_sitting"       value="spin_under_sitting">          <columns           column="lst_action" @@ -323,6 +353,7 @@           value="Camera Spin Under" />      </rows>      <rows +     name="pan_up"       value="pan_up">          <columns           column="lst_action" @@ -332,6 +363,7 @@           value="Camera Pan Up" />      </rows>      <rows +     name="pan_down"       value="pan_down">          <columns           column="lst_action" @@ -341,6 +373,7 @@           value="Camera Pan Down" />      </rows>      <rows +     name="pan_left"       value="pan_left">          <columns           column="lst_action" @@ -350,6 +383,7 @@           value="Camera Pan Left" />      </rows>      <rows +     name="pan_right"       value="pan_right">          <columns           column="lst_action" @@ -359,6 +393,7 @@           value="Camera Pan Right" />      </rows>      <rows +     name="pan_in"       value="pan_in">          <columns           column="lst_action" @@ -368,6 +403,7 @@           value="Camera Pan In" />      </rows>      <rows +     name="pan_out"       value="pan_out">          <columns           column="lst_action" @@ -377,6 +413,7 @@           value="Camera Pan Out" />      </rows>      <rows +     name="spin_around_ccw"       value="spin_around_ccw">          <columns           column="lst_action" @@ -387,6 +424,7 @@           value="Counterclockwise" />      </rows>      <rows +     name="spin_around_cw"       value="spin_around_cw">          <columns           column="lst_action" @@ -397,6 +435,7 @@           value="Clockwise" />      </rows>      <rows +     name="spin_around_ccw_sitting"       value="spin_around_ccw_sitting">          <columns           column="lst_action" @@ -407,6 +446,7 @@           value="Counterclockwise Sitting" />      </rows>      <rows +     name="spin_around_cw_sitting"       value="spin_around_cw_sitting">          <columns           column="lst_action" @@ -438,6 +478,7 @@           value="Tool_Dozer" />      </rows>      <rows +     name="edit_avatar_spin_ccw"       value="edit_avatar_spin_ccw">          <columns           column="lst_action" @@ -448,6 +489,7 @@           value="Counterclockwise" />      </rows>      <rows +     name="edit_avatar_spin_cw"       value="edit_avatar_spin_cw">          <columns           column="lst_action" @@ -458,6 +500,7 @@           value="Clockwise" />      </rows>      <rows +     name="edit_avatar_spin_over"       value="edit_avatar_spin_over">          <columns           column="lst_action" @@ -468,6 +511,7 @@           value="Camera Spin Over" />      </rows>      <rows +     name="edit_avatar_spin_under"       value="edit_avatar_spin_under">          <columns           column="lst_action" @@ -478,6 +522,7 @@           value="Camera Spin Under" />      </rows>      <rows +     name="edit_avatar_move_forward"       value="edit_avatar_move_forward">          <columns           column="lst_action" @@ -487,6 +532,7 @@           value="Camera Forward" />      </rows>      <rows +     name="edit_avatar_move_backward"       value="edit_avatar_move_backward">          <columns           column="lst_action" @@ -517,6 +563,7 @@           value="Audio_Press" />      </rows>      <rows +     name="toggle_pause_media"       value="toggle_pause_media">          <columns           column="lst_action" @@ -526,6 +573,7 @@           value="Play/Pause Media" />      </rows>      <rows +     name="toggle_enable_media"       value="toggle_enable_media">          <columns           column="lst_action" @@ -535,6 +583,7 @@           value="Play/Stop All Media" />      </rows>      <rows +     name="voice_follow_key"       value="voice_follow_key">          <columns           column="lst_action" @@ -544,6 +593,7 @@           value="Voice" />      </rows>      <rows +     name="toggle_voice"       value="toggle_voice">          <columns           column="lst_action" @@ -553,6 +603,7 @@           value="Toggle Voice" />      </rows>      <rows +     name="start_chat"       value="start_chat">          <columns           column="lst_action" @@ -562,6 +613,7 @@           value="Start Chat" />      </rows>      <rows +     name="start_gesture"       value="start_gesture">          <columns           column="lst_action"  | 
