diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llfloaterpreference.cpp | 28 | ||||
-rw-r--r-- | indra/newview/llkeyconflict.cpp | 23 | ||||
-rw-r--r-- | indra/newview/llkeyconflict.h | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/control_table_contents_camera.xml | 62 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/control_table_contents_camera_sitting.xml | 65 |
5 files changed, 95 insertions, 85 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 42defac250..604f054aa5 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2768,32 +2768,34 @@ void LLPanelPreferenceControls::populateControlTable() } addControlTableColumns(filename); - switch ((LLKeyConflictHandler::ESourceMode)mEditingMode) + + if (mEditingMode == LLKeyConflictHandler::MODE_FIRST_PERSON) { - case LLKeyConflictHandler::MODE_FIRST_PERSON: addControlTableRows("control_table_contents_movement.xml"); addControlTableSeparator(); addControlTableRows("control_table_contents_media.xml"); - break; - case LLKeyConflictHandler::MODE_THIRD_PERSON: - case LLKeyConflictHandler::MODE_EDIT_AVATAR: - case LLKeyConflictHandler::MODE_SITTING: + } + // MODE_THIRD_PERSON; MODE_EDIT_AVATAR; MODE_SITTING + else if (mEditingMode < LLKeyConflictHandler::MODE_SAVED_SETTINGS) + { + // In case of 'sitting' mode, movements still apply due to vehicles addControlTableRows("control_table_contents_movement.xml"); addControlTableSeparator(); - // contains couple 'sitting' options, might be good idea to recheck - // those and move to own group with sitting/spinning icon - addControlTableRows("control_table_contents_camera.xml"); + addControlTableRows("control_table_contents_camera.xml"); + if (mEditingMode == LLKeyConflictHandler::MODE_SITTING) + { + addControlTableRows("control_table_contents_camera_sitting.xml"); + } addControlTableSeparator(); - // Do we need this outside of MODE_EDIT_AVATAR? addControlTableRows("control_table_contents_editing.xml"); addControlTableSeparator(); addControlTableRows("control_table_contents_media.xml"); - break; - default: - // 'saved settings' mode doesn't have UI or actual settings yet + } + else + { LL_INFOS() << "Unimplemented mode" << LL_ENDL; return; } diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp index be774e7765..e44f79000e 100644 --- a/indra/newview/llkeyconflict.cpp +++ b/indra/newview/llkeyconflict.cpp @@ -294,8 +294,9 @@ void LLKeyConflictHandler::loadFromSettings(const LLViewerInput::KeyMode& keymod LLKeyboard::maskFromString(it->mask, &mask); // Note: it->command is also the name of UI element, howhever xml we are loading from // might not know all the commands, so UI will have to know what to fill by its own + // Assumes U32_MAX conflict mask, and is assignable by default, + // but assignability might have been overriden by generatePlaceholders. LLKeyConflict &type_data = (*destination)[it->command]; - type_data.mAssignable = true; type_data.mKeyBind.addKeyData(mouse, key, mask, true); } } @@ -777,12 +778,8 @@ void LLKeyConflictHandler::generatePlaceholders(ESourceMode load_mode) registerTemporaryControl("move_backward"); registerTemporaryControl("move_forward_fast"); registerTemporaryControl("move_backward_fast"); - registerTemporaryControl("move_forward_sitting"); - registerTemporaryControl("move_backward_sitting"); registerTemporaryControl("spin_over"); registerTemporaryControl("spin_under"); - registerTemporaryControl("spin_over_sitting"); - registerTemporaryControl("spin_under_sitting"); registerTemporaryControl("pan_up"); registerTemporaryControl("pan_down"); registerTemporaryControl("pan_left"); @@ -791,8 +788,6 @@ void LLKeyConflictHandler::generatePlaceholders(ESourceMode load_mode) registerTemporaryControl("pan_out"); registerTemporaryControl("spin_around_ccw"); registerTemporaryControl("spin_around_cw"); - registerTemporaryControl("spin_around_ccw_sitting"); - registerTemporaryControl("spin_around_cw_sitting"); // control_table_contents_editing.xml registerTemporaryControl("edit_avatar_spin_ccw"); @@ -802,6 +797,16 @@ void LLKeyConflictHandler::generatePlaceholders(ESourceMode load_mode) registerTemporaryControl("edit_avatar_move_forward"); registerTemporaryControl("edit_avatar_move_backward"); } + + if (load_mode != MODE_SITTING) + { + registerTemporaryControl("move_forward_sitting"); + registerTemporaryControl("move_backward_sitting"); + registerTemporaryControl("spin_over_sitting"); + registerTemporaryControl("spin_under_sitting"); + registerTemporaryControl("spin_around_ccw_sitting"); + registerTemporaryControl("spin_around_cw_sitting"); + } } bool LLKeyConflictHandler::removeConflicts(const LLKeyData &data, const U32 &conlict_mask) @@ -853,11 +858,11 @@ void LLKeyConflictHandler::registerTemporaryControl(const std::string &control_n type_data->mKeyBind.addKeyData(mouse, key, mask, false); } -void LLKeyConflictHandler::registerTemporaryControl(const std::string &control_name) +void LLKeyConflictHandler::registerTemporaryControl(const std::string &control_name, U32 conflict_mask) { LLKeyConflict *type_data = &mControlsMap[control_name]; type_data->mAssignable = false; - type_data->mConflictMask = 0; + type_data->mConflictMask = conflict_mask; } bool LLKeyConflictHandler::clearUnsavedChanges() diff --git a/indra/newview/llkeyconflict.h b/indra/newview/llkeyconflict.h index 1bb29bc302..73d59cc217 100644 --- a/indra/newview/llkeyconflict.h +++ b/indra/newview/llkeyconflict.h @@ -127,7 +127,7 @@ private: // at the moment these kind of control is not savable, but takes part in conflict resolution void registerTemporaryControl(const std::string &control_name, EMouseClickType mouse_ind, KEY key, MASK mask, U32 conflict_mask); - void registerTemporaryControl(const std::string &control_name); + void registerTemporaryControl(const std::string &control_name, U32 conflict_mask = 0); typedef std::map<std::string, LLKeyConflict> control_map_t; void loadFromSettings(const LLViewerInput::KeyMode& keymode, control_map_t *destination); diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml index 35cbb02271..aba81e3134 100644 --- a/indra/newview/skins/default/xui/en/control_table_contents_camera.xml +++ b/indra/newview/skins/default/xui/en/control_table_contents_camera.xml @@ -74,26 +74,6 @@ value="Camera Backward Fast" /> </rows> <rows - name="move_forward_sitting" - value="move_forward_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - value="Camera Forward Sitting" /> - </rows> - <rows - name="move_backward_sitting" - value="move_backward_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - value="Camera Backward Sitting" /> - </rows> - <rows name="spin_over" value="spin_over"> <columns @@ -114,26 +94,6 @@ value="Camera Spin Under" /> </rows> <rows - name="spin_over_sitting" - value="spin_over_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - value="Camera Spin Over Sitting" /> - </rows> - <rows - name="spin_under_sitting" - value="spin_under_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - value="Camera Spin Under Sitting" /> - </rows> - <rows name="pan_up" value="pan_up"> <columns @@ -215,26 +175,4 @@ tool_tip="Camera spin around clockwise" value="Clockwise" /> </rows> - <rows - name="spin_around_ccw_sitting" - value="spin_around_ccw_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - tool_tip="Camera spin around counterclockwise sitting" - value="Counterclockwise Sitting" /> - </rows> - <rows - name="spin_around_cw_sitting" - value="spin_around_cw_sitting"> - <columns - column="lst_action" - font="SansSerif" - halign="left" - name="lst_action" - tool_tip="Camera spin around clockwise sitting" - value="Clockwise Sitting" /> - </rows> </contents> diff --git a/indra/newview/skins/default/xui/en/control_table_contents_camera_sitting.xml b/indra/newview/skins/default/xui/en/control_table_contents_camera_sitting.xml new file mode 100644 index 0000000000..9334c6e179 --- /dev/null +++ b/indra/newview/skins/default/xui/en/control_table_contents_camera_sitting.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<contents> + <rows + name="move_forward_sitting" + value="move_forward_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + value="Camera Forward Sitting" /> + </rows> + <rows + name="move_backward_sitting" + value="move_backward_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + value="Camera Backward Sitting" /> + </rows> + <rows + name="spin_over_sitting" + value="spin_over_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + value="Camera Spin Over Sitting" /> + </rows> + <rows + name="spin_under_sitting" + value="spin_under_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + value="Camera Spin Under Sitting" /> + </rows> + <rows + name="spin_around_ccw_sitting" + value="spin_around_ccw_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + tool_tip="Camera spin around counterclockwise sitting" + value="Counterclockwise Sitting" /> + </rows> + <rows + name="spin_around_cw_sitting" + value="spin_around_cw_sitting"> + <columns + column="lst_action" + font="SansSerif" + halign="left" + name="lst_action" + tool_tip="Camera spin around clockwise sitting" + value="Clockwise Sitting" /> + </rows> +</contents> |