summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2020-06-12 20:09:43 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2020-06-12 20:09:43 +0300
commitceea2df59634ab09d165943bd7591e7125ee0f80 (patch)
tree4d3e7b2ecacb834f06262f777b7e8e54b1f20366
parentb1f9de4d377c37d1e97f5ef06cbb438cdc755f6f (diff)
SL-13421 Separated some sitting-exclusive controls
-rw-r--r--indra/newview/llfloaterpreference.cpp28
-rw-r--r--indra/newview/llkeyconflict.cpp23
-rw-r--r--indra/newview/llkeyconflict.h2
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_camera.xml62
-rw-r--r--indra/newview/skins/default/xui/en/control_table_contents_camera_sitting.xml65
5 files changed, 95 insertions, 85 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 66f793a82c..dc5905b6e7 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>