Merge "Scroll from the window when rendering entire file"

This commit is contained in:
Shawn Pearce
2014-01-08 18:22:44 +00:00
committed by Gerrit Code Review
4 changed files with 38 additions and 13 deletions

View File

@@ -56,6 +56,7 @@ class DiffTable extends Composite {
@UiField Element patchSetNavRow; @UiField Element patchSetNavRow;
@UiField Element patchSetNavCellA; @UiField Element patchSetNavCellA;
@UiField Element patchSetNavCellB; @UiField Element patchSetNavCellB;
@UiField Element sidePanelCell;
@UiField FlowPanel widgets; @UiField FlowPanel widgets;
@UiField static DiffTableStyle style; @UiField static DiffTableStyle style;

View File

@@ -44,6 +44,10 @@ limitations under the License.
width: auto; width: auto;
} }
.difftable .CodeMirror {
height: auto;
}
/* Preserve space for underscores. If this changes /* Preserve space for underscores. If this changes
* see ChunkManager.addPadding() and adjust there. * see ChunkManager.addPadding() and adjust there.
*/ */
@@ -150,7 +154,9 @@ limitations under the License.
</tr> </tr>
</table> </table>
</td> </td>
<td class='{style.sidePanelCell}'><d:SidePanel ui:field='sidePanel'/></td> <td ui:field='sidePanelCell' class='{style.sidePanelCell}'>
<d:SidePanel ui:field='sidePanel'/>
</td>
</tr> </tr>
</table> </table>
<g:FlowPanel ui:field='widgets' visible='false'/> <g:FlowPanel ui:field='widgets' visible='false'/>

View File

@@ -33,6 +33,7 @@ limitations under the License.
font-family: arial,sans-serif; font-family: arial,sans-serif;
font-weight: bold; font-weight: bold;
overflow: hidden; overflow: hidden;
position: fixed !important;
text-align: left; text-align: left;
text-shadow: 1px 1px 7px #000000; text-shadow: 1px 1px 7px #000000;
min-width: 300px; min-width: 300px;

View File

@@ -52,6 +52,7 @@ import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window; import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwtexpui.globalkey.client.GlobalKey; import com.google.gwtexpui.globalkey.client.GlobalKey;
import com.google.gwtexpui.globalkey.client.KeyCommand; import com.google.gwtexpui.globalkey.client.KeyCommand;
import com.google.gwtexpui.globalkey.client.KeyCommandSet; import com.google.gwtexpui.globalkey.client.KeyCommandSet;
@@ -202,7 +203,8 @@ public class SideBySide2 extends Screen {
@Override @Override
public void onShowView() { public void onShowView() {
super.onShowView(); super.onShowView();
Window.enableScrolling(false); Window.enableScrolling(prefs.renderEntireFile());
UIObject.setVisible(diffTable.sidePanelCell, !prefs.renderEntireFile());
if (prefs.hideTopMenu()) { if (prefs.hideTopMenu()) {
Gerrit.setHeaderVisible(false); Gerrit.setHeaderVisible(false);
} }
@@ -217,8 +219,10 @@ public class SideBySide2 extends Screen {
operation(new Runnable() { operation(new Runnable() {
@Override @Override
public void run() { public void run() {
cmA.setHeight(height); if (!prefs.renderEntireFile()) {
cmB.setHeight(height); cmA.setHeight(height);
cmB.setHeight(height);
}
cmA.refresh(); cmA.refresh();
cmB.refresh(); cmB.refresh();
} }
@@ -471,11 +475,13 @@ public class SideBySide2 extends Screen {
operation(new Runnable() { operation(new Runnable() {
public void run() { public void run() {
// Estimate initial CM3 height, fixed up in onShowView. if (!prefs.renderEntireFile()) {
int height = Window.getClientHeight() // Estimate initial CM3 height, fixed up in onShowView.
- (Gerrit.getHeaderFooterHeight() + 18); int height = Window.getClientHeight()
cmA.setHeight(height); - (Gerrit.getHeaderFooterHeight() + 18);
cmB.setHeight(height); cmA.setHeight(height);
cmB.setHeight(height);
}
render(diff); render(diff);
commentManager.render(comments, prefs.expandAllComments()); commentManager.render(comments, prefs.expandAllComments());
@@ -623,6 +629,9 @@ public class SideBySide2 extends Screen {
return new Runnable() { return new Runnable() {
@Override @Override
public void run() { public void run() {
if (prefs.renderEntireFile()) {
return;
}
Viewport fromTo = cm.getViewport(); Viewport fromTo = cm.getViewport();
int size = fromTo.getTo() - fromTo.getFrom() + 1; int size = fromTo.getTo() - fromTo.getFrom() + 1;
if (cm.getOldViewportSize() == size) { if (cm.getOldViewportSize() == size) {
@@ -762,17 +771,25 @@ public class SideBySide2 extends Screen {
if (prefs.renderEntireFile()) { if (prefs.renderEntireFile()) {
cmA.addKeyMap(RENDER_ENTIRE_FILE_KEYMAP); cmA.addKeyMap(RENDER_ENTIRE_FILE_KEYMAP);
cmB.addKeyMap(RENDER_ENTIRE_FILE_KEYMAP); cmB.addKeyMap(RENDER_ENTIRE_FILE_KEYMAP);
cmA.setHeight("");
cmB.setHeight("");
} }
cmA.setOption("viewportMargin", prefs.renderEntireFile() ? POSITIVE_INFINITY : 10); cmA.setOption("viewportMargin", prefs.renderEntireFile() ? POSITIVE_INFINITY : 10);
cmB.setOption("viewportMargin", prefs.renderEntireFile() ? POSITIVE_INFINITY : 10); cmB.setOption("viewportMargin", prefs.renderEntireFile() ? POSITIVE_INFINITY : 10);
Window.enableScrolling(prefs.renderEntireFile());
UIObject.setVisible(diffTable.sidePanelCell, !prefs.renderEntireFile());
resizeCodeMirror();
} }
void resizeCodeMirror() { void resizeCodeMirror() {
int height = getCodeMirrorHeight(); if (!prefs.renderEntireFile()) {
cmA.setHeight(height); int height = getCodeMirrorHeight();
cmB.setHeight(height); cmA.setHeight(height);
diffTable.sidePanel.adjustGutters(cmB); cmB.setHeight(height);
diffTable.sidePanel.adjustGutters(cmB);
}
} }
private int getCodeMirrorHeight() { private int getCodeMirrorHeight() {