diff --git a/src/components/views/elements/EditableText.js b/src/components/views/elements/EditableText.js
index 2c74567698..3ce8c90447 100644
--- a/src/components/views/elements/EditableText.js
+++ b/src/components/views/elements/EditableText.js
@@ -33,7 +33,10 @@ module.exports = React.createClass({
className: React.PropTypes.string,
labelClassName: React.PropTypes.string,
placeholderClassName: React.PropTypes.string,
+ // Overrides blurToSubmit if true
blurToCancel: React.PropTypes.bool,
+ // Will cause onValueChanged(value, true) to fire on blur
+ blurToSubmit: React.PropTypes.bool,
editable: React.PropTypes.bool,
},
@@ -51,6 +54,7 @@ module.exports = React.createClass({
editable: true,
className: "mx_EditableText",
placeholderClassName: "mx_EditableText_placeholder",
+ blurToSubmit: false,
};
},
@@ -119,6 +123,7 @@ module.exports = React.createClass({
this.value = this.props.initialValue;
this.showPlaceholder(!this.value);
this.onValueChanged(false);
+ this.refs.editable_div.blur();
},
onValueChanged: function(shouldSubmit) {
@@ -182,13 +187,15 @@ module.exports = React.createClass({
}
},
- onFinish: function(ev) {
+ onFinish: function(ev, shouldSubmit) {
var self = this;
- var submit = (ev.key === "Enter");
+ var submit = (ev.key === "Enter") || shouldSubmit;
this.setState({
phase: this.Phases.Display,
}, function() {
- self.onValueChanged(submit);
+ if (this.value !== this.props.initialValue) {
+ self.onValueChanged(submit);
+ }
});
},
@@ -199,7 +206,7 @@ module.exports = React.createClass({
if (this.props.blurToCancel)
{this.cancelEdit();}
else
- {this.onFinish(ev);}
+ {this.onFinish(ev, this.props.blurToSubmit);}
this.showPlaceholder(!this.value);
},
diff --git a/src/components/views/elements/EditableTextContainer.js b/src/components/views/elements/EditableTextContainer.js
index b17f1b417d..d6f9c555c6 100644
--- a/src/components/views/elements/EditableTextContainer.js
+++ b/src/components/views/elements/EditableTextContainer.js
@@ -116,6 +116,7 @@ export default class EditableTextContainer extends React.Component {
);
}
@@ -137,11 +138,15 @@ EditableTextContainer.propTypes = {
/* callback to update the value. Called with a single argument: the new
* value. */
onSubmit: React.PropTypes.func,
+
+ /* should the input submit when focus is lost? */
+ blurToSubmit: React.PropTypes.bool,
};
EditableTextContainer.defaultProps = {
initialValue: "",
placeholder: "",
+ blurToSubmit: false,
onSubmit: function(v) {return q(); },
};
diff --git a/src/components/views/settings/ChangeDisplayName.js b/src/components/views/settings/ChangeDisplayName.js
index 26b6c2f830..23966c003d 100644
--- a/src/components/views/settings/ChangeDisplayName.js
+++ b/src/components/views/settings/ChangeDisplayName.js
@@ -53,6 +53,7 @@ module.exports = React.createClass({
);
}