diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/app_settings/key_bindings.xml | 60 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.cpp | 85 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.h | 7 | ||||
-rw-r--r-- | indra/newview/llkeyconflict.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llkeyconflict.h | 1 | ||||
-rw-r--r-- | indra/newview/llsetkeybinddialog.cpp | 12 | ||||
-rw-r--r-- | indra/newview/llsetkeybinddialog.h | 7 | ||||
-rw-r--r-- | indra/newview/llviewerinput.cpp | 7 | ||||
-rw-r--r-- | indra/newview/llviewerinput.h | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_select_key.xml | 8 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 13 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_controls.xml | 18 |
12 files changed, 104 insertions, 129 deletions
diff --git a/indra/newview/app_settings/key_bindings.xml b/indra/newview/app_settings/key_bindings.xml index 536199c696..dd74293644 100644 --- a/indra/newview/app_settings/key_bindings.xml +++ b/indra/newview/app_settings/key_bindings.xml @@ -129,65 +129,6 @@ <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/> <binding key="" mask="NONE" mouse="LMB" command="walk_to"/> </third_person> - - <!-- Basic editing camera control --> - <edit> - <binding key="A" mask="NONE" command="spin_around_cw"/> - <binding key="D" mask="NONE" command="spin_around_ccw"/> - <binding key="W" mask="NONE" command="move_forward"/> - <binding key="S" mask="NONE" command="move_backward"/> - <binding key="E" mask="NONE" command="spin_over"/> - <binding key="C" mask="NONE" command="spin_under"/> - <binding key="ENTER" mask="NONE" command="start_chat"/> - <binding key="DIVIDE" mask="NONE" command="start_gesture"/> - <binding key="PAD_ENTER" mask="NONE" command="start_chat"/> - <binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/> - - <binding key="LEFT" mask="NONE" command="spin_around_cw"/> - <binding key="RIGHT" mask="NONE" command="spin_around_ccw"/> - <binding key="UP" mask="NONE" command="move_forward"/> - <binding key="DOWN" mask="NONE" command="move_backward"/> - <binding key="PGUP" mask="NONE" command="spin_over"/> - <binding key="PGDN" mask="NONE" command="spin_under"/> - - <binding key="A" mask="SHIFT" command="pan_left"/> - <binding key="D" mask="SHIFT" command="pan_right"/> - <binding key="W" mask="SHIFT" command="pan_up"/> - <binding key="S" mask="SHIFT" command="pan_down"/> - - <binding key="LEFT" mask="SHIFT" command="pan_left"/> - <binding key="RIGHT" mask="SHIFT" command="pan_right"/> - <binding key="UP" mask="SHIFT" command="pan_up"/> - <binding key="DOWN" mask="SHIFT" command="pan_down"/> - - <!--Walking works with ALT held down.--> - <binding key="A" mask="ALT" command="slide_left"/> - <binding key="D" mask="ALT" command="slide_right"/> - <binding key="W" mask="ALT" command="push_forward"/> - <binding key="S" mask="ALT" command="push_backward"/> - <binding key="E" mask="ALT" command="jump"/> - <binding key="C" mask="ALT" command="push_down"/> - - <binding key="LEFT" mask="ALT" command="slide_left"/> - <binding key="RIGHT" mask="ALT" command="slide_right"/> - <binding key="UP" mask="ALT" command="push_forward"/> - <binding key="DOWN" mask="ALT" command="push_backward"/> - <binding key="PGUP" mask="ALT" command="jump"/> - <binding key="PGDN" mask="ALT" command="push_down"/> - <binding key="HOME" mask="ALT" command="toggle_fly"/> - - <binding key="PAD_LEFT" mask="ALT" command="slide_left"/> - <binding key="PAD_RIGHT" mask="ALT" command="slide_right"/> - <binding key="PAD_UP" mask="ALT" command="push_forward"/> - <binding key="PAD_DOWN" mask="ALT" command="push_backward"/> - <binding key="PAD_PGUP" mask="ALT" command="jump"/> - <binding key="PAD_PGDN" mask="ALT" command="push_down"/> - <binding key="PAD_ENTER" mask="ALT" command="start_chat"/> - <binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/> - - <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/> - <binding key="" mask="NONE" mouse="LMB" command="walk_to"/> - </edit> <sitting> <binding key="A" mask="ALT" command="spin_around_cw"/> <binding key="D" mask="ALT" command="spin_around_ccw"/> @@ -312,6 +253,5 @@ <binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/> <binding key="" mask="NONE" mouse="MMB" command="toggle_voice"/> - <binding key="" mask="NONE" mouse="LMB" command="walk_to"/> </edit_avatar> </keys> diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 0abd014a2c..50b7f16ec7 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2637,7 +2637,7 @@ BOOL LLPanelPreferenceControls::postBuild() pControlsTable->setCommitCallback(boost::bind(&LLPanelPreferenceControls::onListCommit, this)); pKeyModeBox->setCommitCallback(boost::bind(&LLPanelPreferenceControls::onModeCommit, this)); - getChild<LLButton>("restore_defaults")->setCommitCallback(boost::bind(&LLPanelPreferenceControls::onRestoreDefaults, this)); + getChild<LLButton>("restore_defaults")->setCommitCallback(boost::bind(&LLPanelPreferenceControls::onRestoreDefaultsBtn, this)); return TRUE; } @@ -2659,7 +2659,6 @@ void LLPanelPreferenceControls::populateControlTable() { case LLKeyConflictHandler::MODE_THIRD_PERSON: case LLKeyConflictHandler::MODE_FIRST_PERSON: - case LLKeyConflictHandler::MODE_EDIT: case LLKeyConflictHandler::MODE_EDIT_AVATAR: case LLKeyConflictHandler::MODE_SITTING: filename = "control_table_contents.xml"; @@ -2867,20 +2866,42 @@ void LLPanelPreferenceControls::onModeCommit() populateControlTable(); } -void LLPanelPreferenceControls::onRestoreDefaults() +void LLPanelPreferenceControls::onRestoreDefaultsBtn() { - for (U32 i = 0; i < LLKeyConflictHandler::MODE_COUNT - 1; ++i) + LLNotificationsUtil::add("PreferenceControlsDefaults", LLSD(), LLSD(), boost::bind(&LLPanelPreferenceControls::onRestoreDefaultsResponse, this, _1, _2)); +} + +void LLPanelPreferenceControls::onRestoreDefaultsResponse(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + switch(option) { - mConflictHandler[i].resetToDefaults(); + case 0: // All + for (U32 i = 0; i < LLKeyConflictHandler::MODE_COUNT - 1; ++i) + { + mConflictHandler[i].resetToDefaults(); + // Apply changes to viewer as 'temporary' + mConflictHandler[i].saveToSettings(true); + } + + updateTable(); + break; + case 1: // Current + mConflictHandler[mEditingMode].resetToDefaults(); // Apply changes to viewer as 'temporary' - mConflictHandler[i].saveToSettings(true); - } + mConflictHandler[mEditingMode].saveToSettings(true); - updateTable(); + updateTable(); + break; + case 2: // Cancel + default: + //exit; + break; + } } // todo: copy onSetKeyBind to interface and inherit from interface -bool LLPanelPreferenceControls::onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool ignore_mask) +bool LLPanelPreferenceControls::onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes) { if (!mConflictHandler[mEditingMode].canAssignControl(mEditingControl)) { @@ -2889,16 +2910,32 @@ bool LLPanelPreferenceControls::onSetKeyBind(EMouseClickType click, KEY key, MAS if ( mEditingColumn > 0) { - mConflictHandler[mEditingMode].registerControl(mEditingControl, mEditingColumn - 1, click, key, mask, true); - // Apply changes to viewer as 'temporary' - mConflictHandler[mEditingMode].saveToSettings(true); + if (all_modes) + { + for (U32 i = 0; i < LLKeyConflictHandler::MODE_COUNT - 1; ++i) + { + if (mConflictHandler[i].empty()) + { + mConflictHandler[i].loadFromSettings((LLKeyConflictHandler::ESourceMode)i); + } + mConflictHandler[i].registerControl(mEditingControl, mEditingColumn - 1, click, key, mask, true); + // Apply changes to viewer as 'temporary' + mConflictHandler[i].saveToSettings(true); + } + } + else + { + mConflictHandler[mEditingMode].registerControl(mEditingControl, mEditingColumn - 1, click, key, mask, true); + // Apply changes to viewer as 'temporary' + mConflictHandler[mEditingMode].saveToSettings(true); + } } updateTable(); return true; } -void LLPanelPreferenceControls::onDefaultKeyBind() +void LLPanelPreferenceControls::onDefaultKeyBind(bool all_modes) { if (!mConflictHandler[mEditingMode].canAssignControl(mEditingControl)) { @@ -2907,9 +2944,25 @@ void LLPanelPreferenceControls::onDefaultKeyBind() if (mEditingColumn > 0) { - mConflictHandler[mEditingMode].resetToDefault(mEditingControl, mEditingColumn - 1); - // Apply changes to viewer as 'temporary' - mConflictHandler[mEditingMode].saveToSettings(true); + if (all_modes) + { + for (U32 i = 0; i < LLKeyConflictHandler::MODE_COUNT - 1; ++i) + { + if (mConflictHandler[i].empty()) + { + mConflictHandler[i].loadFromSettings((LLKeyConflictHandler::ESourceMode)i); + } + mConflictHandler[i].resetToDefault(mEditingControl, mEditingColumn - 1); + // Apply changes to viewer as 'temporary' + mConflictHandler[i].saveToSettings(true); + } + } + else + { + mConflictHandler[mEditingMode].resetToDefault(mEditingControl, mEditingColumn - 1); + // Apply changes to viewer as 'temporary' + mConflictHandler[mEditingMode].saveToSettings(true); + } } updateTable(); } diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index f89923e497..6c2e655270 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -302,9 +302,10 @@ public: void onListCommit(); void onModeCommit(); - void onRestoreDefaults(); - /*virtual*/ bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool ignore_mask); - /*virtual*/ void onDefaultKeyBind(); + void onRestoreDefaultsBtn(); + void onRestoreDefaultsResponse(const LLSD& notification, const LLSD& response); + /*virtual*/ bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes); + /*virtual*/ void onDefaultKeyBind(bool all_modes); /*virtual*/ void onCancelKeyBind(); private: diff --git a/indra/newview/llkeyconflict.cpp b/indra/newview/llkeyconflict.cpp index d9c2b3d53a..b4f5ec4d57 100644 --- a/indra/newview/llkeyconflict.cpp +++ b/indra/newview/llkeyconflict.cpp @@ -345,13 +345,6 @@ bool LLKeyConflictHandler::loadFromSettings(const ESourceMode &load_mode, const res = true; } break; - case MODE_EDIT: - if (keys.edit.isProvided()) - { - loadFromSettings(keys.edit, destination); - res = true; - } - break; case MODE_EDIT_AVATAR: if (keys.edit_avatar.isProvided()) { @@ -553,12 +546,6 @@ void LLKeyConflictHandler::saveToSettings(bool temporary) keys.third_person.bindings.set(mode.bindings, true); } break; - case MODE_EDIT: - if (keys.edit.isProvided()) - { - keys.edit.bindings.set(mode.bindings, true); - } - break; case MODE_EDIT_AVATAR: if (keys.edit_avatar.isProvided()) { diff --git a/indra/newview/llkeyconflict.h b/indra/newview/llkeyconflict.h index 4ebe054f22..48af0ccdfe 100644 --- a/indra/newview/llkeyconflict.h +++ b/indra/newview/llkeyconflict.h @@ -59,7 +59,6 @@ public: { MODE_FIRST_PERSON, MODE_THIRD_PERSON, - MODE_EDIT, MODE_EDIT_AVATAR, MODE_SITTING, MODE_SAVED_SETTINGS, // for settings from saved settings diff --git a/indra/newview/llsetkeybinddialog.cpp b/indra/newview/llsetkeybinddialog.cpp index 806c70aa03..8d0d71daaf 100644 --- a/indra/newview/llsetkeybinddialog.cpp +++ b/indra/newview/llsetkeybinddialog.cpp @@ -86,7 +86,7 @@ BOOL LLSetKeyBindDialog::postBuild() childSetAction("Cancel", onCancel, this); getChild<LLUICtrl>("Cancel")->setFocus(TRUE); - pCheckBox = getChild<LLCheckBoxCtrl>("ignore_masks"); + pCheckBox = getChild<LLCheckBoxCtrl>("apply_all"); pDesription = getChild<LLTextBase>("descritption"); gFocusMgr.setKeystrokesOnly(TRUE); @@ -148,10 +148,6 @@ void LLSetKeyBindDialog::setParent(LLKeyBindResponderInterface* parent, LLView* } pDesription->setText(getString("basic_description")); pDesription->setTextArg("[INPUT]", input); - - bool can_ignore_masks = (key_mask & CAN_IGNORE_MASKS) != 0; - pCheckBox->setVisible(can_ignore_masks); - pCheckBox->setValue(false); } // static @@ -308,7 +304,7 @@ void LLSetKeyBindDialog::onDefault(void* user_data) LLSetKeyBindDialog* self = (LLSetKeyBindDialog*)user_data; if (self->pParent) { - self->pParent->onDefaultKeyBind(); + self->pParent->onDefaultKeyBind(self->pCheckBox->getValue().asBoolean()); self->pParent = NULL; } self->closeFloater(); @@ -326,11 +322,11 @@ void LLSetKeyBindDialog::onClickTimeout(void* user_data, MASK mask) self->closeFloater(); } -void LLSetKeyBindDialog::setKeyBind(EMouseClickType click, KEY key, MASK mask, bool ignore) +void LLSetKeyBindDialog::setKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes) { if (pParent) { - pParent->onSetKeyBind(click, key, mask, ignore); + pParent->onSetKeyBind(click, key, mask, all_modes); pParent = NULL; } } diff --git a/indra/newview/llsetkeybinddialog.h b/indra/newview/llsetkeybinddialog.h index 16a2d768e4..c7b4e3c364 100644 --- a/indra/newview/llsetkeybinddialog.h +++ b/indra/newview/llsetkeybinddialog.h @@ -40,7 +40,6 @@ static const U32 ALLOW_MASK_MOUSE = 2; static const U32 ALLOW_KEYS = 4; //keyboard static const U32 ALLOW_MASK_KEYS = 8; static const U32 ALLOW_MASKS = 16; -static const U32 CAN_IGNORE_MASKS = 32; // For example W (aka Forward) should work regardless of SHIFT being pressed static const U32 DEFAULT_KEY_FILTER = ALLOW_MOUSE | ALLOW_MASK_MOUSE | ALLOW_KEYS | ALLOW_MASK_KEYS; @@ -50,9 +49,9 @@ public: virtual ~LLKeyBindResponderInterface() {}; virtual void onCancelKeyBind() = 0; - virtual void onDefaultKeyBind() = 0; + virtual void onDefaultKeyBind(bool all_modes) = 0; // returns true if parent failed to set key due to key being in use - virtual bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool ignore) = 0; + virtual bool onSetKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes) = 0; }; class LLSetKeyBindDialog : public LLModalDialog, public LLDrawFrustum @@ -82,7 +81,7 @@ public: private: bool recordAndHandleKey(KEY key, MASK mask); - void setKeyBind(EMouseClickType click, KEY key, MASK mask, bool ignore); + void setKeyBind(EMouseClickType click, KEY key, MASK mask, bool all_modes); LLKeyBindResponderInterface *pParent; LLCheckBoxCtrl *pCheckBox; LLTextBase *pDesription; diff --git a/indra/newview/llviewerinput.cpp b/indra/newview/llviewerinput.cpp index 3ff4e4eb9d..9f16b6a4d5 100644 --- a/indra/newview/llviewerinput.cpp +++ b/indra/newview/llviewerinput.cpp @@ -936,11 +936,6 @@ BOOL LLViewerInput::modeFromString(const std::string& string, S32 *mode) const *mode = MODE_THIRD_PERSON; return TRUE; } - else if (string == "EDIT") - { - *mode = MODE_EDIT; - return TRUE; - } else if (string == "EDIT_AVATAR") { *mode = MODE_EDIT_AVATAR; @@ -1155,7 +1150,6 @@ LLViewerInput::KeyMode::KeyMode() LLViewerInput::Keys::Keys() : first_person("first_person"), third_person("third_person"), - edit("edit"), sitting("sitting"), edit_avatar("edit_avatar") {} @@ -1182,7 +1176,6 @@ S32 LLViewerInput::loadBindingsXML(const std::string& filename) { binding_count += loadBindingMode(keys.first_person, MODE_FIRST_PERSON); binding_count += loadBindingMode(keys.third_person, MODE_THIRD_PERSON); - binding_count += loadBindingMode(keys.edit, MODE_EDIT); binding_count += loadBindingMode(keys.sitting, MODE_SITTING); binding_count += loadBindingMode(keys.edit_avatar, MODE_EDIT_AVATAR); } diff --git a/indra/newview/llviewerinput.h b/indra/newview/llviewerinput.h index b7124a54b2..eff42600fd 100644 --- a/indra/newview/llviewerinput.h +++ b/indra/newview/llviewerinput.h @@ -65,7 +65,6 @@ typedef enum e_keyboard_mode { MODE_FIRST_PERSON, MODE_THIRD_PERSON, - MODE_EDIT, MODE_EDIT_AVATAR, MODE_SITTING, MODE_COUNT @@ -99,7 +98,6 @@ public: { Optional<KeyMode> first_person, third_person, - edit, sitting, edit_avatar; diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index 255de60d00..48d9eee4cd 100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -44,11 +44,11 @@ Allowed input: [INPUT]. follows="top|left" height="20" initial_value="false" - label="Ignore extra accelerator keys" + label="Apply to all" layout="topleft" - left="28" - name="ignore_masks" - tool_tip="Ignore extra Shift, Alt and Ctrl keys. Example: This allows to hold W (forward, ignores shift) and Shift+A (slide left) simultaneously and agent will both move forward and slide left." + left="90" + name="apply_all" + tool_tip="Viewer uses different control combinations depending on what you are doing in world, setting this will apply your change to all combinations" top_pad="8" width="160" /> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 8a91a1f721..42d4f46d7f 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -11406,6 +11406,19 @@ Cannot create large prims that intersect other residents. Please re-try when ot notext="Cancel" yestext="OK"/> </notification> + + <notification + icon="alertmodal.tga" + name="PreferenceControlsDefaults" + type="alertmodal"> + Do you want to restore default values for controls? + <tag>confirm</tag> + <usetemplate + canceltext="Cancel" + name="yesnocancelbuttons" + notext="Current mode" + yestext="All modes"/> + </notification> <notification icon="alertmodal.tga" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml index bd39343093..0f830ef0c9 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_controls.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8"?> <panel border="true" follows="all" @@ -15,28 +15,24 @@ top="6" left="10" height="23" - width="110" + width="140" name="key_mode"> <combo_box.item label="Third Person " name="third_person" value="1"/> <combo_box.item - label="First Person " + label="First Person (Mouselook)" name="first_person" value="0"/> <combo_box.item - label="Edit" - name="edit" - value="2"/> - <combo_box.item label="Edit Avatar" name="edit_avatar" - value="3"/> + value="2"/> <combo_box.item label="Sitting" name="sitting" - value="4"/> + value="3"/> </combo_box> <button @@ -45,8 +41,8 @@ top="6" right="-10" height="23" - width="110" - label="Restore Default" + width="140" + label="Restore Defaults" tooltip="Restores default values for all control modes." name="restore_defaults"/> |