hyper/lib/utils/selection.js

54 lines
1.6 KiB
JavaScript
Raw Normal View History

// Clear selection range of current selected term view
2016-08-17 17:45:18 -08:00
// Fix event when terminal text is selected and keyboard action is invoked
exports.clear = terminal => {
2016-08-17 17:45:18 -08:00
terminal.document_.getSelection().removeAllRanges();
};
2016-08-18 19:09:40 -08:00
// Use selection extend upon dblclick
exports.extend = terminal => {
const sel = terminal.document_.getSelection();
2016-08-21 01:44:17 -08:00
// Test if focusNode exist and nodeName is #text
if (sel.focusNode && sel.focusNode.nodeName === '#text') {
terminal.screen_.expandSelection(sel);
if (terminal.copyOnSelect) {
2016-12-05 18:35:40 -09:00
terminal.copyStringToClipboard(sel);
}
2016-08-21 01:44:17 -08:00
}
2016-08-17 17:45:18 -08:00
};
2016-08-18 19:09:40 -08:00
// Fix a bug in ScrollPort selectAll behavior
// Select all rows in the viewport
exports.all = terminal => {
const scrollPort = terminal.scrollPort_;
let firstRow;
let lastRow;
2016-08-18 19:09:40 -08:00
if (scrollPort.topFold_.nextSibling.rowIndex === 0) {
firstRow = scrollPort.topFold_.nextSibling;
} else {
2016-08-18 19:09:40 -08:00
while (scrollPort.topFold_.previousSibling) {
scrollPort.rowNodes_.removeChild(scrollPort.topFold_.previousSibling);
}
firstRow = scrollPort.fetchRowNode_(0);
scrollPort.rowNodes_.insertBefore(firstRow, scrollPort.topFold_);
scrollPort.syncRowNodesDimensions_();
}
const lastRowIndex = scrollPort.rowProvider_.getRowCount() - 1;
2016-08-18 19:09:40 -08:00
if (scrollPort.bottomFold_.previousSibling.rowIndex === lastRowIndex) {
lastRow = scrollPort.bottomFold_.previousSibling.rowIndex;
} else {
2016-08-18 19:09:40 -08:00
while (scrollPort.bottomFold_.nextSibling) {
scrollPort.rowNodes_.removeChild(scrollPort.bottomFold_.nextSibling);
}
lastRow = scrollPort.fetchRowNode_(lastRowIndex);
scrollPort.rowNodes_.appendChild(lastRow);
}
scrollPort.selection.sync();
};