diff --git a/client/helpers/dom.js b/client/helpers/dom.js
index 4db3ab98..33274dbd 100644
--- a/client/helpers/dom.js
+++ b/client/helpers/dom.js
@@ -1,8 +1,15 @@
-export function screenHeight(){
+export function screenHeight(withMenuBar){
const $breadcrumb = document.querySelector(".component_breadcrumb");
- const $menubar = document.querySelector(".component_menubar");
- let size = document.body.clientHeight;
- if($breadcrumb){ size -= $breadcrumb.clientHeight; }
- if($menubar){ size -= $menubar.clientHeight; }
+ let size = document.body.offsetHeight;
+ if($breadcrumb){ size -= $breadcrumb.offsetHeight; }
+ return size;
+}
+
+export function screenHeightWithMenubar(){
+ const $breadcrumb = document.querySelector(".component_breadcrumb");
+ const $menubar = document.querySelector(".component_menubar");
+ let size = document.body.offsetHeight;
+ if($breadcrumb){ size -= $breadcrumb.offsetHeight; }
+ if($menubar){ size -= $menubar.offsetHeight; }
return size;
}
diff --git a/client/helpers/index.js b/client/helpers/index.js
index 4016e64b..766b5902 100644
--- a/client/helpers/index.js
+++ b/client/helpers/index.js
@@ -8,6 +8,6 @@ export { pathBuilder, basename, dirname } from './path';
export { memory } from './memory';
export { prepare } from './navigate';
export { invalidate, http_get, http_post, http_delete } from './ajax';
-export { screenHeight } from './dom';
+export { screenHeight, screenHeightWithMenubar } from './dom';
export { prompt } from './prompt';
export { notify } from './notify';
diff --git a/client/pages/viewerpage/editor.js b/client/pages/viewerpage/editor.js
index b5ad7f3a..f75fcf56 100644
--- a/client/pages/viewerpage/editor.js
+++ b/client/pages/viewerpage/editor.js
@@ -20,6 +20,7 @@ import 'codemirror/addon/fold/foldgutter';
import 'codemirror/addon/fold/foldgutter.css';
import './editor.scss';
+import { debounce, screenHeightWithMenubar } from '../../helpers/';
export class Editor extends React.Component {
constructor(props){
@@ -27,8 +28,10 @@ export class Editor extends React.Component {
this.state = {
loading: null,
editor: null,
- filename: this.props.filename
+ filename: this.props.filename,
+ height: 0
};
+ this.resetHeight = debounce(this.resetHeight.bind(this), 100);
}
componentWillReceiveProps(props){
@@ -77,12 +80,22 @@ export class Editor extends React.Component {
this.props.onSave && this.props.onSave();
};
}
+ this.resetHeight();
+ window.addEventListener("resize", this.resetHeight);
}
componentWillUnmount(){
this.state.editor.clearHistory();
+ window.removeEventListener("resize", this.resetHeight);
}
+ resetHeight(){
+ this.setState({
+ height: screenHeightWithMenubar()
+ });
+ }
+
+
loadMode(file){
let ext = file.split('.').pop(),
mode = null;
@@ -134,7 +147,7 @@ export class Editor extends React.Component {