Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
QuickNavigateDialog.prototype.showDialog = function (prefix, initialString) {
if (this.isOpen) {
return;
}
this.isOpen = true;
// Global listener to hide search bar & popup
$(window.document).on("mousedown", this._handleDocumentMouseDown);
// Record current document & cursor pos so we can restore it if search is canceled
// We record scroll pos *before* modal bar is opened since we're going to restore it *after* it's closed
var curDoc = DocumentManager.getCurrentDocument();
this._origDocPath = curDoc ? curDoc.file.fullPath : null;
if (curDoc) {
this._origSelection = EditorManager.getCurrentFullEditor().getSelection();
this._origScrollPos = EditorManager.getCurrentFullEditor().getScrollPos();
} else {
this._origSelection = null;
this._origScrollPos = null;
}
// Show the search bar ("dialog")
var dialogHTML = "<div align="right"><span class="find-dialog-label"></span> <input style="width: 30em" id="quickOpenSearch" autocomplete="off" type="text"></div>";
this.modalBar = new ModalBar(dialogHTML, false);
this.$searchField = $("input#quickOpenSearch");
// The various listeners registered below fire in this order:
// keydown, (async gap), keyup, (async gap), filter, resultsReady, showResults/noResults
// The later events *always* come after the keydown & keyup (they're triggered on a timeout from keyup). But
// because of the async gaps, a keydown for the *next* key typed might come *before* they run:
// keydown, (async gap), keyup, (async gap), keydown #2, (async gap), filter, resultsReady, showResults/noResults
.done(function (doc) {
// Opened document is now the current main editor
EditorManager.getCurrentFullEditor().setSelection(match.start, match.end);
});
});
if (restoreScrollPos === undefined) {
restoreScrollPos = true;
}
this._$root.addClass("popout");
// Since the modal bar has now an absolute position relative to the editor holder,
// when there are html menus we need to adjust the top position
if (!brackets.nativeMenus) {
var top = $("#titlebar").outerHeight();
this._$root.css("top", top + "px");
}
// Preserve scroll position of the current full editor across the editor refresh, adjusting for the
// height of the modal bar so the code doesn't appear to shift if possible.
var fullEditor = EditorManager.getCurrentFullEditor(),
barHeight,
scrollPos;
if (restoreScrollPos && fullEditor) {
barHeight = this.height();
scrollPos = fullEditor.getScrollPos();
}
EditorManager.resizeEditor();
if (restoreScrollPos && fullEditor) {
fullEditor._codeMirror.scrollTo(scrollPos.x, scrollPos.y - barHeight);
}
};
ModalBar.prototype.prepareClose = function (restoreScrollPos) {
if (restoreScrollPos === undefined) {
restoreScrollPos = true;
}
this._$root.addClass("popout");
// Preserve scroll position of the current full editor across the editor refresh, adjusting for the
// height of the modal bar so the code doesn't appear to shift if possible.
var fullEditor = EditorManager.getCurrentFullEditor(),
barHeight,
scrollPos;
if (restoreScrollPos && fullEditor) {
barHeight = this.height();
scrollPos = fullEditor.getScrollPos();
}
EditorManager.resizeEditor();
if (restoreScrollPos && fullEditor) {
fullEditor._codeMirror.scrollTo(scrollPos.x, scrollPos.y - barHeight);
}
};
var exclusionsContext = {
label: FindUtils.labelForScope(scope),
promise: candidateFilesPromise
};
filterPicker = FileFilters.createFilterPicker(exclusionsContext);
// TODO: include in FindBar? (and disable it when FindBar is disabled)
_findBar._modalBar.getRoot().find(".scope-group").append(filterPicker);
}
handleQueryChange();
// Appending FilterPicker and query text can change height of modal bar, so resize editor.
// Preserve scroll position of the current full editor across the editor refresh, adjusting
// for the height of the modal bar so the code doesn't appear to shift if possible.
var fullEditor = EditorManager.getCurrentFullEditor(),
scrollPos;
if (fullEditor) {
scrollPos = fullEditor.getScrollPos();
scrollPos.y -= oldModalBarHeight; // modalbar already showing, adjust for old height
}
WorkspaceManager.recomputeLayout();
if (fullEditor) {
fullEditor._codeMirror.scrollTo(scrollPos.x, scrollPos.y + _findBar._modalBar.height());
}
}
}
$triangle.toggleClass("expanded");
var providerName = $selectedRow.find("input[type='hidden']").val();
prefs.set(providerName + ".collapsed", !isExpanded);
prefs.save();
} else {
// This is a problem marker row, show the result on click
// Grab the required position data
var lineTd = $selectedRow.find(".line-number");
var line = parseInt(lineTd.text(), 10) - 1; // convert friendlyLine back to pos.line
// if there is no line number available, don't do anything
if (!isNaN(line)) {
var character = lineTd.data("character");
var editor = EditorManager.getCurrentFullEditor();
editor.setCursorPos(line, character, true);
MainViewManager.focusActivePane();
}
}
});
.done(function () {
if (!isNaN(gotoLine)) {
var editor = EditorManager.getCurrentFullEditor();
editor.setCursorPos(gotoLine, 0, true);
}
})
.always(function () {
function openLocation(location, noFlash) {
var editor = EditorManager.getCurrentFullEditor();
var codeMirror = editor._codeMirror;
if (typeof location === "number") {
location = codeMirror.posFromIndex(location);
}
codeMirror.setCursor(location);
editor.focus();
if (!noFlash) {
codeMirror.addLineClass(location.line, "wrap", "flash");
window.setTimeout(function () {
codeMirror.removeLineClass(location.line, "wrap", "flash");
}, 1000);
}
}
function itemFocus(selectedItem, query, explicit) {
if (!selectedItem || (query.length < 2 && !explicit)) {
return;
}
var fileLocation = selectedItem.fileLocation;
var from = {line: fileLocation.line, ch: fileLocation.chFrom};
var to = {line: fileLocation.line, ch: fileLocation.chTo};
EditorManager.getCurrentFullEditor().setSelection(from, to, true);
}
function setJumpPosition(curPos) {
EditorManager.getCurrentFullEditor().setCursorPos(curPos.line, curPos.ch, true);
}