Merge "Fix related change show more calculation"
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
index 97c1dee..7a61d56 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
@@ -227,6 +227,12 @@
       .collapseToggleContainer {
         display: flex;
       }
+      #relatedChangesToggle {
+        display: none;
+      }
+      #relatedChangesToggle.showToggle {
+        display: flex;
+      }
       .collapseToggleContainer gr-button {
         display: block;
       }
@@ -425,8 +431,7 @@
               </gr-related-changes-list>
               <div
                   id="relatedChangesToggle"
-                  class="collapseToggleContainer"
-                  hidden$="[[_computeRelatedChangesToggleHidden(_relatedChangesLoading)]]">
+                  class$="collapseToggleContainer [[_computeRelatedChangesToggleClass(_relatedChangesLoading)]]">
                 <gr-button
                     link
                     id="relatedChangesToggleButton"
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index b1501b6..27a5e86 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -1260,9 +1260,14 @@
       this.updateStyles();
     },
 
-    _computeRelatedChangesToggleHidden() {
-      return this._getScrollHeight(this.$.relatedChanges) <=
-          this._getOffsetHeight(this.$.relatedChanges);
+    _computeRelatedChangesToggleClass() {
+      // Prevents showMore from showing when click on related change, since the
+      // line height would be positive, but related changes height is 0.
+      if (!this._getScrollHeight(this.$.relatedChanges)) { return ''; }
+
+      return this._getScrollHeight(this.$.relatedChanges) >
+          (this._getOffsetHeight(this.$.relatedChanges) +
+          this._getLineHeight(this.$.relatedChanges)) ? 'showToggle' : '';
     },
 
     _startUpdateCheckTimer() {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
index 75adcdc..797b6b3 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
@@ -1172,23 +1172,29 @@
 
       test('relatedChangesToggle shown height greater than changeInfo height',
           () => {
-            assert.isTrue(element.$.relatedChangesToggle.hasAttribute('hidden'));
+            assert.isFalse(element.$.relatedChangesToggle.classList
+                .contains('showToggle'));
             sandbox.stub(element, '_getOffsetHeight', () => 50);
             sandbox.stub(element, '_getScrollHeight', () => 60);
+            sandbox.stub(element, '_getLineHeight', () => 5);
             sandbox.stub(window, 'matchMedia', () => ({matches: true}));
             element._relatedChangesLoading = false;
-            assert.isFalse(element.$.relatedChangesToggle.hasAttribute('hidden'));
+            assert.isTrue(element.$.relatedChangesToggle.classList
+                .contains('showToggle'));
             assert.equal(updateHeightSpy.callCount, 1);
           });
 
       test('relatedChangesToggle hidden height less than changeInfo height',
           () => {
-            assert.isTrue(element.$.relatedChangesToggle.hasAttribute('hidden'));
+            assert.isFalse(element.$.relatedChangesToggle.classList
+                .contains('showToggle'));
             sandbox.stub(element, '_getOffsetHeight', () => 50);
             sandbox.stub(element, '_getScrollHeight', () => 40);
+            sandbox.stub(element, '_getLineHeight', () => 5);
             sandbox.stub(window, 'matchMedia', () => ({matches: true}));
             element._relatedChangesLoading = false;
-            assert.isTrue(element.$.relatedChangesToggle.hasAttribute('hidden'));
+            assert.isFalse(element.$.relatedChangesToggle.classList
+                .contains('showToggle'));
             assert.equal(updateHeightSpy.callCount, 1);
           });