Merge "SideBySide2: Disable cancel button on new drafts with text"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
index 25dcdf0..8d505ee 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DraftBox.java
@@ -92,6 +92,9 @@
expandTimer = new Timer() {
@Override
public void run() {
+ if (isNew()) {
+ cancel.setVisible(!isDirty());
+ }
expandText();
}
};
@@ -291,7 +294,7 @@
@UiHandler("cancel")
void onCancel(ClickEvent e) {
e.stopPropagation();
- if (comment.id() == null && editArea.getValue().length() == 0) {
+ if (isNew() && !isDirty()) {
removeUI();
} else {
setEdit(false);
@@ -302,7 +305,7 @@
@UiHandler({"discard1", "discard2"})
void onDiscard(ClickEvent e) {
e.stopPropagation();
- if (comment.id() == null) {
+ if (isNew()) {
removeUI();
} else {
setEdit(false);
@@ -327,11 +330,30 @@
onSave();
return;
}
- } else if (e.getNativeKeyCode() == KeyCodes.KEY_ESCAPE
- && comment.id() == null && editArea.getValue().length() == 0) {
- removeUI();
- return;
+ } else if (e.getNativeKeyCode() == KeyCodes.KEY_ESCAPE && !isDirty()) {
+ if (isNew()) {
+ removeUI();
+ return;
+ } else {
+ setEdit(false);
+ cm.focus();
+ return;
+ }
}
expandTimer.schedule(250);
}
+
+ private boolean isNew() {
+ return comment.id() == null;
+ }
+
+ private boolean isDirty() {
+ String msg = editArea.getValue().trim();
+ if (isNew()) {
+ return msg.length() > 0;
+ }
+ return msg.equals(comment.message() != null
+ ? comment.message().trim()
+ : "");
+ }
}