| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
- *
- * This file is part of the QCAD project.
- *
- * QCAD is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * QCAD is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with QCAD.
- */
- include("scripts/Edit/Edit.js");
- function Esc(guiAction) {
- Edit.call(this, guiAction);
- }
- Esc.prototype = new Edit();
- Esc.prototype.beginEvent = function() {
- Edit.prototype.beginEvent.call(this);
- var returnFocus = false;
- var appWin = EAction.getMainWindow();
- var w = QApplication.focusWidget();
- // focus in RMathLineEdit (e.g. in options toolbar)
- // return focus to graphics view:
- if (isOfType(w, RMathLineEdit) || isOfType(w, QSpinBox)) {
- if (w.ignoreEscape===true) {
- // ignore escape and use standard action for escape
- // this is for some actions to make sure esc triggers step back
- // and not move focus to graphics view
- // the ignoreEscape property can be set in the UI file
- }
- else {
- returnFocus = true;
- }
- }
- // special case: erase command line text:
- var commandLineEdit = objectFromPath("MainWindow::CommandLine::CommandEdit");
- if (!isNull(commandLineEdit)) {
- if (commandLineEdit.focus) {
- if (commandLineEdit.text!=="") {
- commandLineEdit.text = "";
- this.terminate();
- return;
- }
- else {
- returnFocus = true;
- }
- }
- }
- // special case: erase script shell text:
- var ecmaScriptShellEdit = objectFromPath("MainWindow::EcmaScriptShell::CommandEdit");
- if (!isNull(ecmaScriptShellEdit)) {
- if (ecmaScriptShellEdit.focus) {
- if (ecmaScriptShellEdit.text!=="") {
- ecmaScriptShellEdit.text = "";
- this.terminate();
- return;
- }
- else {
- // give script shell a chance to cancel open brackets
- ecmaScriptShellEdit.escape();
- if (ecmaScriptShellEdit.property("OpenBrackets")>0) {
- ecmaScriptShellEdit.setProperty("OpenBrackets", 0);
- }
- else {
- returnFocus = true;
- }
- }
- }
- }
- // special case: erase tool matrix filter text:
- var filterEdit = objectFromPath("MainWindow::ToolMatrixDock::FilterEdit");
- if (!isNull(filterEdit)) {
- if (filterEdit.focus) {
- if (filterEdit.text!=="") {
- filterEdit.text = "";
- this.terminate();
- return;
- }
- else {
- returnFocus = true;
- }
- }
- }
- // return focus to graphics view or application window:
- if (returnFocus) {
- var view = this.getGraphicsView();
- if (!isNull(view) && isFunction(view.getQWidget)) {
- var viewQt = view.getQWidget();
- if (!isNull(viewQt)) {
- viewQt.setFocus(Qt.OtherFocusReason);
- this.terminate();
- return;
- }
- }
- else {
- appWin.setFocus(Qt.OtherFocusReason);
- this.terminate();
- return;
- }
- }
- // send escape event to current action:
- var base = this.getOverrideBase();
- if (!isNull(base)) {
- base.escapeEvent();
- }
- // clear key log of recorded keystrokes:
- appWin.clearKeyLog();
- this.terminate();
- };
|