mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-16 21:58:39 -09:00
[Windows] Add right click copy/paste (#1247)
* Add right click copy/paste * Add quick edit config option
This commit is contained in:
parent
6f758654d2
commit
270fe5bef9
7 changed files with 36 additions and 5 deletions
|
|
@ -79,7 +79,11 @@ module.exports = {
|
||||||
bell: 'SOUND',
|
bell: 'SOUND',
|
||||||
|
|
||||||
// if true, selected text will automatically be copied to the clipboard
|
// if true, selected text will automatically be copied to the clipboard
|
||||||
copyOnSelect: false
|
copyOnSelect: false,
|
||||||
|
|
||||||
|
// if true, on right click selected text will be copied or pasted if no
|
||||||
|
// selection is present
|
||||||
|
quickEdit: false
|
||||||
|
|
||||||
// URL to custom bell
|
// URL to custom bell
|
||||||
// bellSoundURL: 'http://example.com/bell.mp3',
|
// bellSoundURL: 'http://example.com/bell.mp3',
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,8 @@ class TermGroup_ extends Component {
|
||||||
onTitle: this.bind(this.props.onTitle, null, uid),
|
onTitle: this.bind(this.props.onTitle, null, uid),
|
||||||
onData: this.bind(this.props.onData, null, uid),
|
onData: this.bind(this.props.onData, null, uid),
|
||||||
onURLAbort: this.bind(this.props.onURLAbort, null, uid),
|
onURLAbort: this.bind(this.props.onURLAbort, null, uid),
|
||||||
borderColor: this.props.borderColor
|
borderColor: this.props.borderColor,
|
||||||
|
quickEdit: this.props.quickEdit
|
||||||
});
|
});
|
||||||
|
|
||||||
// This will create a new ref_ function for every render,
|
// This will create a new ref_ function for every render,
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ export default class Term extends Component {
|
||||||
iframeWindow.addEventListener('wheel', this.handleWheel);
|
iframeWindow.addEventListener('wheel', this.handleWheel);
|
||||||
|
|
||||||
this.getScreenNode().addEventListener('mouseup', this.handleMouseUp);
|
this.getScreenNode().addEventListener('mouseup', this.handleMouseUp);
|
||||||
|
this.getScreenNode().addEventListener('mousedown', this.handleMouseDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleWheel(e) {
|
handleWheel(e) {
|
||||||
|
|
@ -275,6 +276,9 @@ export default class Term extends Component {
|
||||||
ev.target === this.termRef) {
|
ev.target === this.termRef) {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
}
|
}
|
||||||
|
if (this.props.quickEdit) {
|
||||||
|
this.term.onMouseDown_(ev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(nextProps) {
|
componentWillReceiveProps(nextProps) {
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,8 @@ export default class Terms extends Component {
|
||||||
onResize: this.props.onResize,
|
onResize: this.props.onResize,
|
||||||
onTitle: this.props.onTitle,
|
onTitle: this.props.onTitle,
|
||||||
onData: this.props.onData,
|
onData: this.props.onData,
|
||||||
onURLAbort: this.props.onURLAbort
|
onURLAbort: this.props.onURLAbort,
|
||||||
|
quickEdit: this.props.quickEdit
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,8 @@ const TermsContainer = connect(
|
||||||
bell: state.ui.bell,
|
bell: state.ui.bell,
|
||||||
bellSoundURL: state.ui.bellSoundURL,
|
bellSoundURL: state.ui.bellSoundURL,
|
||||||
copyOnSelect: state.ui.copyOnSelect,
|
copyOnSelect: state.ui.copyOnSelect,
|
||||||
modifierKeys: state.ui.modifierKeys
|
modifierKeys: state.ui.modifierKeys,
|
||||||
|
quickEdit: state.ui.quickEdit
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
dispatch => {
|
dispatch => {
|
||||||
|
|
|
||||||
14
lib/hterm.js
14
lib/hterm.js
|
|
@ -1,3 +1,4 @@
|
||||||
|
import {clipboard} from 'electron';
|
||||||
import {hterm, lib} from 'hterm-umdjs';
|
import {hterm, lib} from 'hterm-umdjs';
|
||||||
import runes from 'runes';
|
import runes from 'runes';
|
||||||
|
|
||||||
|
|
@ -305,11 +306,24 @@ hterm.Terminal.prototype.onMouse_ = function (e) {
|
||||||
// the user to click on rows
|
// the user to click on rows
|
||||||
if (e.type === 'mousedown') {
|
if (e.type === 'mousedown') {
|
||||||
e.preventDefault = function () { };
|
e.preventDefault = function () { };
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return oldOnMouse.call(this, e);
|
return oldOnMouse.call(this, e);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hterm.Terminal.prototype.onMouseDown_ = function (e) {
|
||||||
|
// copy/paste on right click
|
||||||
|
if (e.button === 2) {
|
||||||
|
const text = this.getSelectionText();
|
||||||
|
if (text) {
|
||||||
|
this.copyStringToClipboard(text);
|
||||||
|
} else {
|
||||||
|
this.onVTKeystroke(clipboard.readText());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// make background transparent to avoid transparency issues
|
// make background transparent to avoid transparency issues
|
||||||
hterm.ScrollPort.prototype.setBackgroundColor = function () {
|
hterm.ScrollPort.prototype.setBackgroundColor = function () {
|
||||||
this.screen_.style.backgroundColor = 'transparent';
|
this.screen_.style.backgroundColor = 'transparent';
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,8 @@ const initial = Immutable({
|
||||||
cmdIsMeta: false
|
cmdIsMeta: false
|
||||||
},
|
},
|
||||||
showHamburgerMenu: '',
|
showHamburgerMenu: '',
|
||||||
showWindowControls: ''
|
showWindowControls: '',
|
||||||
|
quickEdit: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const currentWindow = remote.getCurrentWindow();
|
const currentWindow = remote.getCurrentWindow();
|
||||||
|
|
@ -188,6 +189,11 @@ const reducer = (state = initial, action) => {
|
||||||
ret.showWindowControls = config.showWindowControls;
|
ret.showWindowControls = config.showWindowControls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof (config.quickEdit) !== 'undefined' &&
|
||||||
|
config.quickEdit !== null) {
|
||||||
|
ret.quickEdit = config.quickEdit;
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
})());
|
})());
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue