diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 66f793a82cda7c459332967845edb2cd188623f6..dc5905b6e7d216730ec5958967a7279ac97108c2 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 be774e7765151eafc05af676cca7097228d75a3d..e44f79000eef20dff666c32cf8a01c36e1907f4b 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 1bb29bc302f84d2037b9efd038538a5f12c2a6d0..73d59cc2173e11262f9459de15440bbd990f7c67 100644
--- a/indra/newview/llkeyconflict.h
+++ b/indra/newview/llkeyconflict.h
@@ -127,7 +127,7 @@ class LLKeyConflictHandler
 
     // 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 35cbb02271ed95a3d4d66bb34b208301839cb4cd..aba81e3134daf349274cc0ff2cbf253d23be2426 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
@@ -73,26 +73,6 @@
          name="lst_action"
          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">
@@ -113,26 +93,6 @@
          name="lst_action"
          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">
@@ -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 0000000000000000000000000000000000000000..9334c6e179335a0f8ffc49847d5ac32034801900
--- /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>