m_editor;
LanguageClientOutlineModel m_model;
- QSortFilterProxyModel m_proxyModel;
- Utils::TreeView m_view;
+ DragSortFilterProxyModel m_proxyModel;
+ Utils::NavigationTreeView m_view;
DocumentUri m_uri;
bool m_sync = false;
bool m_sorted = false;
@@ -176,11 +240,14 @@ LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client,
layout->addWidget(Core::ItemViewFind::createSearchableWrapper(&m_view));
setLayout(layout);
m_model.setSymbolStringifier(m_client->symbolStringifier());
+ m_model.setFilePath(editor->textDocument()->filePath());
m_proxyModel.setSourceModel(&m_model);
m_view.setModel(&m_proxyModel);
m_view.setHeaderHidden(true);
m_view.setExpandsOnDoubleClick(false);
m_view.setFrameStyle(QFrame::NoFrame);
+ m_view.setDragEnabled(true);
+ m_view.setDragDropMode(QAbstractItemView::DragOnly);
connect(&m_view, &QAbstractItemView::activated,
this, &LanguageClientOutlineWidget::onItemActivated);
connect(m_editor->editorWidget(), &TextEditor::TextEditorWidget::cursorPositionChanged,
diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp
index a7aca308643..9536052b811 100644
--- a/src/plugins/languageclient/semantichighlightsupport.cpp
+++ b/src/plugins/languageclient/semantichighlightsupport.cpp
@@ -262,7 +262,7 @@ void SemanticTokenSupport::updateFormatHash()
case variableToken: style = C_LOCAL; break;
case functionToken: style = C_FUNCTION; break;
case methodToken: style = C_FUNCTION; break;
- case macroToken: style = C_PREPROCESSOR; break;
+ case macroToken: style = C_MACRO; break;
case keywordToken: style = C_KEYWORD; break;
case commentToken: style = C_COMMENT; break;
case stringToken: style = C_STRING; break;
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index fa62339215d..beb91799715 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -1299,8 +1299,8 @@ public:
layout->setContentsMargins(0, 0, 0, 0);
m_tripleLineEdit.setEnabled(false);
m_overrideCheckBox.setText(tr("Override for code model"));
- m_overrideCheckBox.setToolTip(tr("Check this button in the rare case that the code model\n"
- "fails because clang does not understand the target architecture."));
+ m_overrideCheckBox.setToolTip(tr("Enable in the rare case that the code model\n"
+ "fails because Clang does not understand the target architecture."));
layout->addWidget(&m_tripleLineEdit, 1);
layout->addWidget(&m_overrideCheckBox);
layout->addStretch(1);
diff --git a/src/plugins/projectexplorer/simpleprojectwizard.cpp b/src/plugins/projectexplorer/simpleprojectwizard.cpp
index 0b8a20a29ff..c893cb6a490 100644
--- a/src/plugins/projectexplorer/simpleprojectwizard.cpp
+++ b/src/plugins/projectexplorer/simpleprojectwizard.cpp
@@ -170,7 +170,7 @@ SimpleProjectWizard::SimpleProjectWizard()
setSupportedProjectTypes({QmakeProjectManager::Constants::QMAKEPROJECT_ID,
CMakeProjectManager::Constants::CMAKE_PROJECT_ID});
setIcon(ProjectExplorer::Icons::WIZARD_IMPORT_AS_PROJECT.icon());
- setDisplayName(tr("Import as qmake or cmake Project (Limited Functionality)"));
+ setDisplayName(tr("Import as qmake or CMake Project (Limited Functionality)"));
setId("Z.DummyProFile");
setDescription(tr("Imports existing projects that do not use qmake, CMake, Qbs, Meson, or Autotools."
"This creates a project file that allows you to use %1 as a code editor "
diff --git a/src/plugins/python/pythonsettings.cpp b/src/plugins/python/pythonsettings.cpp
index c2b183bef87..ce6af38ef25 100644
--- a/src/plugins/python/pythonsettings.cpp
+++ b/src/plugins/python/pythonsettings.cpp
@@ -218,7 +218,7 @@ InterpreterOptionsWidget::InterpreterOptionsWidget(const QList &int
m_cleanButton = new QPushButton(PythonSettings::tr("&Clean Up"));
connect(m_cleanButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::cleanUp);
m_cleanButton->setToolTip(
- PythonSettings::tr("Remove all python interpreters without a valid executable."));
+ PythonSettings::tr("Remove all Python interpreters without a valid executable."));
updateCleanButton();
@@ -423,7 +423,7 @@ public:
mainGroupLayout->addWidget(m_pluginsGroup);
const QString labelText = PythonSettings::tr(
- "For a complete list of avilable options, consult the Python LSP Server configuration documentation.");
diff --git a/src/plugins/qmldesigner/generateresource.cpp b/src/plugins/qmldesigner/generateresource.cpp
index 9d6be4e1c7c..2233538196f 100644
--- a/src/plugins/qmldesigner/generateresource.cpp
+++ b/src/plugins/qmldesigner/generateresource.cpp
@@ -195,7 +195,7 @@ QList getFilesFromQrc(QFile *file, bool inProjec
return fileList;
}
-void GenerateResource::generateMenuEntry()
+void GenerateResource::generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
@@ -203,7 +203,7 @@ void GenerateResource::generateMenuEntry()
const Core::Context projectContext(QmlProjectManager::Constants::QML_PROJECT_ID);
// ToDo: move this to QtCreator and add tr to the string then
auto action = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource",
- "Generate QRC Resource File"));
+ "Generate QRC Resource File"), parent);
action->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
// todo make it more intelligent when it gets enabled
QObject::connect(ProjectExplorer::SessionManager::instance(),
@@ -352,7 +352,7 @@ void GenerateResource::generateMenuEntry()
// ToDo: move this to QtCreator and add tr to the string then
auto rccAction = new QAction(QCoreApplication::translate("QmlDesigner::GenerateResource",
- "Generate Deployable Package"));
+ "Generate Deployable Package"), parent);
rccAction->setEnabled(ProjectExplorer::SessionManager::startupProject() != nullptr);
QObject::connect(ProjectExplorer::SessionManager::instance(),
&ProjectExplorer::SessionManager::startupProjectChanged, [rccAction]() {
diff --git a/src/plugins/qmldesigner/generateresource.h b/src/plugins/qmldesigner/generateresource.h
index 42d96c2d513..d96274efe5e 100644
--- a/src/plugins/qmldesigner/generateresource.h
+++ b/src/plugins/qmldesigner/generateresource.h
@@ -33,7 +33,7 @@ struct ResourceFile
QString fileName;
bool inProject;
};
- void generateMenuEntry();
+ void generateMenuEntry(QObject *parent);
QStringList getFileList(const QList &);
QTableWidget* createFilesTable(const QList &);
}
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 1ce53ee8d71..131bedac04d 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -237,7 +237,7 @@ bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *e
return false;
d = new QmlDesignerPluginPrivate;
if (QmlProjectManager::QmlProject::isQtDesignStudio())
- GenerateResource::generateMenuEntry();
+ GenerateResource::generateMenuEntry(this);
const QString fontPath
= Core::ICore::resourcePath(
diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp
index 779f1ad394e..5186d80b7a3 100644
--- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp
+++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp
@@ -169,7 +169,7 @@ public:
m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave());
m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject());
m_ui.foldAuxDataCheckBox->setChecked(s.foldAuxData());
- m_ui.uiQmlOpenComboBox->addItem(tr("Always ask"), "");
+ m_ui.uiQmlOpenComboBox->addItem(tr("Always Ask"), "");
m_ui.uiQmlOpenComboBox->addItem(tr("Qt Design Studio"), Core::Constants::MODE_DESIGN);
m_ui.uiQmlOpenComboBox->addItem(tr("Qt Creator"), Core::Constants::MODE_EDIT);
int comboIndex = m_ui.uiQmlOpenComboBox->findData(s.uiQmlOpenMode());
diff --git a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
index 559bd42cefb..d64dc672503 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
+++ b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.cpp
@@ -56,11 +56,11 @@ const QString ERROR_TEXT = QCoreApplication::translate("QmlDesigner::CmakeProjec
const QString SUCCESS_TEXT = QCoreApplication::translate("QmlDesigner::CmakeProjectConverter",
"Creating project succeeded.");
-void CmakeProjectConverter::generateMenuEntry()
+void CmakeProjectConverter::generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
- auto action = new QAction(MENU_ITEM_CONVERT);
+ auto action = new QAction(MENU_ITEM_CONVERT, parent);
QObject::connect(action, &QAction::triggered, CmakeProjectConverter::onConvertProject);
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.ConvertToCmakeProject");
menu->addAction(cmd, Core::Constants::G_FILE_EXPORT);
diff --git a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.h b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.h
index 0efad68ac7a..1022f657b27 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.h
+++ b/src/plugins/qmlprojectmanager/cmakegen/cmakeprojectconverter.h
@@ -49,7 +49,7 @@ class CmakeProjectConverter {
public:
bool convertProject(const QmlProjectManager::QmlProject *project,
const Utils::FilePath &targetDir);
- static void generateMenuEntry();
+ static void generateMenuEntry(QObject *parent);
static void onConvertProject();
static bool isProjectConvertable(const ProjectExplorer::Project *project);
static bool isProjectCurrentFormat(const ProjectExplorer::Project *project);
diff --git a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
index 380cbc70873..5dde651ded2 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
+++ b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.cpp
@@ -81,11 +81,11 @@ enum ProjectDirectoryError {
const QString MENU_ITEM_GENERATE = QCoreApplication::translate("QmlDesigner::GenerateCmake",
"Generate CMake Build Files");
-void generateMenuEntry()
+void generateMenuEntry(QObject *parent)
{
Core::ActionContainer *menu =
Core::ActionManager::actionContainer(Core::Constants::M_FILE);
- auto action = new QAction(MENU_ITEM_GENERATE);
+ auto action = new QAction(MENU_ITEM_GENERATE, parent);
QObject::connect(action, &QAction::triggered, GenerateCmake::onGenerateCmakeLists);
Core::Command *cmd = Core::ActionManager::registerAction(action, "QmlProject.CreateCMakeLists");
menu->addAction(cmd, Core::Constants::G_FILE_EXPORT);
diff --git a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.h b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.h
index 20020f51f34..02cf19b7028 100644
--- a/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.h
+++ b/src/plugins/qmlprojectmanager/cmakegen/generatecmakelists.h
@@ -39,7 +39,7 @@ struct GeneratableFile {
bool operator==(const GeneratableFile &left, const GeneratableFile &right);
-void generateMenuEntry();
+void generateMenuEntry(QObject *parent);
void onGenerateCmakeLists();
bool isErrorFatal(int error);
int isProjectCorrectlyFormed(const Utils::FilePath &rootDir);
diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
index 4c98a998838..e06f0016db9 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp
@@ -378,8 +378,8 @@ bool QmlProjectPlugin::initialize(const QStringList &, QString *errorMessage)
});
}
- GenerateCmake::generateMenuEntry();
- GenerateCmake::CmakeProjectConverter::generateMenuEntry();
+ GenerateCmake::generateMenuEntry(this);
+ GenerateCmake::CmakeProjectConverter::generateMenuEntry(this);
return true;
}
diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp
index e324fb6dd59..50b5626ca76 100644
--- a/src/plugins/texteditor/codeassist/codeassistant.cpp
+++ b/src/plugins/texteditor/codeassist/codeassistant.cpp
@@ -64,7 +64,10 @@ public:
void invoke(AssistKind kind, IAssistProvider *provider = nullptr);
void process();
- void requestProposal(AssistReason reason, AssistKind kind, IAssistProvider *provider = nullptr);
+ void requestProposal(AssistReason reason,
+ AssistKind kind,
+ IAssistProvider *provider = nullptr,
+ bool isUpdate = false);
void cancelCurrentRequest();
void invalidateCurrentRequestData();
void displayProposal(IAssistProposal *newProposal, AssistReason reason);
@@ -192,7 +195,8 @@ void CodeAssistantPrivate::process()
void CodeAssistantPrivate::requestProposal(AssistReason reason,
AssistKind kind,
- IAssistProvider *provider)
+ IAssistProvider *provider,
+ bool isUpdate)
{
// make sure to cleanup old proposals if we cannot find a new assistant
Utils::ExecuteOnDestruction earlyReturnContextClear([this]() { destroyContext(); });
@@ -284,7 +288,8 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason,
displayProposal(newProposal, reason);
delete processor;
} else if (!processor->running()) {
- destroyContext();
+ if (isUpdate)
+ destroyContext();
delete processor;
} else { // ...async request was triggered
if (IAssistProposal *newProposal = processor->immediateProposal(assistInterface))
@@ -487,7 +492,7 @@ void CodeAssistantPrivate::notifyChange()
if (!isDisplayingProposal())
requestActivationCharProposal();
} else {
- requestProposal(m_proposal->reason(), m_assistKind, m_requestProvider);
+ requestProposal(m_proposal->reason(), m_assistKind, m_requestProvider, true);
}
}
}
diff --git a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp
index 926ebfde39b..aab407acdbe 100644
--- a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp
+++ b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp
@@ -299,8 +299,6 @@ bool FunctionHintProposalWidget::eventFilter(QObject *obj, QEvent *e)
if (d->m_model && d->m_model->size() > 1)
return false;
}
- if (QTC_GUARD(d->m_assistant))
- d->m_assistant->notifyChange();
}
break;
case QEvent::WindowDeactivate:
diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp
index b3265dcbd29..a946f4cc201 100644
--- a/src/plugins/texteditor/fontsettings.cpp
+++ b/src/plugins/texteditor/fontsettings.cpp
@@ -421,6 +421,10 @@ bool FontSettings::loadColorScheme(const QString &fileName,
m_scheme.setFormatFor(C_NAMESPACE, m_scheme.formatFor(C_TYPE));
continue;
}
+ if (id == C_MACRO && m_scheme.contains(C_FUNCTION)) {
+ m_scheme.setFormatFor(C_MACRO, m_scheme.formatFor(C_FUNCTION));
+ continue;
+ }
Format format;
const Format &descFormat = desc.format();
// Default fallback for background and foreground is C_TEXT, which is set through
diff --git a/src/plugins/texteditor/texteditorconstants.cpp b/src/plugins/texteditor/texteditorconstants.cpp
index df6df10ae5d..dedef17fdfe 100644
--- a/src/plugins/texteditor/texteditorconstants.cpp
+++ b/src/plugins/texteditor/texteditorconstants.cpp
@@ -71,6 +71,7 @@ const char *nameForStyle(TextStyle style)
case C_OVERLOADED_OPERATOR: return "Overloaded Operator";
case C_PUNCTUATION: return "Punctuation";
case C_PREPROCESSOR: return "Preprocessor";
+ case C_MACRO: return "Macro";
case C_LABEL: return "Label";
case C_COMMENT: return "Comment";
case C_DOXYGEN_COMMENT: return "Doxygen.Comment";
diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h
index 757e58a8452..68667f40adc 100644
--- a/src/plugins/texteditor/texteditorconstants.h
+++ b/src/plugins/texteditor/texteditorconstants.h
@@ -69,6 +69,7 @@ enum TextStyle : quint8 {
C_OVERLOADED_OPERATOR,
C_PUNCTUATION,
C_PREPROCESSOR,
+ C_MACRO,
C_LABEL,
C_COMMENT,
C_DOXYGEN_COMMENT,
diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp
index ed840b1d428..221b59964c9 100644
--- a/src/plugins/texteditor/texteditorsettings.cpp
+++ b/src/plugins/texteditor/texteditorsettings.cpp
@@ -263,6 +263,8 @@ FormatDescriptions TextEditorSettingsPrivate::initialFormats()
FormatDescription::ShowAllControls);
formatDescr.emplace_back(C_PREPROCESSOR, tr("Preprocessor"),
tr("Preprocessor directives."), Qt::darkBlue);
+ formatDescr.emplace_back(C_MACRO, tr("Macro"),
+ tr("Macros."), functionFormat);
formatDescr.emplace_back(C_LABEL, tr("Label"), tr("Labels for goto statements."),
Qt::darkRed);
formatDescr.emplace_back(C_COMMENT, tr("Comment"),
diff --git a/tests/auto/utils/deviceshell/tst_deviceshell.cpp b/tests/auto/utils/deviceshell/tst_deviceshell.cpp
index 8c68650504b..2c209b94a1f 100644
--- a/tests/auto/utils/deviceshell/tst_deviceshell.cpp
+++ b/tests/auto/utils/deviceshell/tst_deviceshell.cpp
@@ -29,6 +29,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -110,7 +111,18 @@ private slots:
}
}
- if (!Utils::HostOsInfo::isWindowsHost()) {
+ // On older versions of macOS, base64 does not understand "-d" ( only "-D" ), so we skip the tests here.
+ const QVersionNumber osVersionNumber = QVersionNumber::fromString(
+ QSysInfo::productVersion());
+
+ const bool isOldMacOS = Utils::HostOsInfo::isMacHost()
+ && osVersionNumber.majorVersion() <= 10
+ && osVersionNumber.minorVersion() <= 14;
+
+ if (isOldMacOS)
+ qWarning() << "Skipping local tests, as macOS version is <= 10.14";
+
+ if (!Utils::HostOsInfo::isWindowsHost() && !isOldMacOS) {
// Windows by default has bash.exe, which does not work unless a working wsl is installed.
// Therefore we only test shells on linux / mac hosts.
const auto shells = {"dash", "bash", "sh", "zsh"};
@@ -276,6 +288,63 @@ private slots:
const DeviceShell::RunResult result2 = shell.outputForRunInShell(
{"cat", {"/tmp/i-do-not-exist.none"}});
QVERIFY(!result2.stdErr.isEmpty());
+ QVERIFY(result2.exitCode != 0);
+ }
+
+ void testNoCommand_data()
+ {
+ QTest::addColumn("cmdLine");
+ for (const auto &cmdLine : m_availableShells) {
+ QTest::newRow(cmdLine.executable().baseName().toUtf8()) << cmdLine;
+ }
+ }
+
+ void testNoCommand()
+ {
+ QFETCH(CommandLine, cmdLine);
+
+ if (cmdLine.executable().toString().contains("docker") && !m_dockerSetupCheckOk) {
+ QSKIP("Docker was found, but does not seem to be set up correctly, skipping.");
+ }
+
+ TestShell shell(cmdLine);
+ QCOMPARE(shell.state(), DeviceShell::State::Succeeded);
+
+ const DeviceShell::RunResult result = shell.outputForRunInShell({}, {});
+
+ QVERIFY(result.exitCode == 255);
+ }
+
+ void testMultiThreadedFind_data()
+ {
+ QTest::addColumn("cmdLine");
+ for (const auto &cmdLine : m_availableShells) {
+ QTest::newRow(cmdLine.executable().baseName().toUtf8()) << cmdLine;
+ }
+ }
+
+ void testMultiThreadedFind()
+ {
+ QFETCH(CommandLine, cmdLine);
+
+ if (cmdLine.executable().toString().contains("docker") && !m_dockerSetupCheckOk) {
+ QSKIP("Docker was found, but does not seem to be set up correctly, skipping.");
+ }
+
+ TestShell shell(cmdLine);
+ QCOMPARE(shell.state(), DeviceShell::State::Succeeded);
+
+ QList runs{1,2,3,4,5,6,7,8,9};
+
+ QList results = Utils::mapped(runs, [&shell](const int i) -> QByteArray{
+ QElapsedTimer t;
+ t.start();
+ DeviceShell::RunResult result = shell.outputForRunInShell({"find", {"/usr", "-maxdepth", "4"}});
+ qDebug() << i << "took" << t.elapsed() << "ms";
+ return result.stdOut;
+ });
+
+ QVERIFY (!Utils::anyOf(results, [&results](const QByteArray r){ return r != results[0]; }));
}
};
diff --git a/tests/system/shared/clang.py b/tests/system/shared/clang.py
index cccafa8a205..43976ab3aca 100644
--- a/tests/system/shared/clang.py
+++ b/tests/system/shared/clang.py
@@ -52,7 +52,7 @@ def startCreatorVerifyingClang(useClang):
return False
def __openCodeModelOptions__():
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "C++"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Code Model")
diff --git a/tests/system/shared/suites_qtta.py b/tests/system/shared/suites_qtta.py
index 64a31e6a9a4..dc7424a59a8 100644
--- a/tests/system/shared/suites_qtta.py
+++ b/tests/system/shared/suites_qtta.py
@@ -59,7 +59,7 @@ def checkSyntaxError(issuesView, expectedTextsArray, warnIfMoreIssues = True):
# change autocomplete options to manual
def changeAutocompleteToManual(toManual=True):
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Text Editor"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Completion")
ensureChecked(waitForObject(":Behavior.Autocomplete common prefix_QCheckBox"), not toManual)
diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py
index 8c1e15e1c71..9a7332c6d16 100644
--- a/tests/system/shared/utils.py
+++ b/tests/system/shared/utils.py
@@ -180,7 +180,7 @@ def invokeMenuItem(menu, item, *subItems):
except:
nativeMouseClick(waitForObject(":Qt Creator_Core::Internal::MainWindow", 1000), 20, 20, 0, Qt.LeftButton)
# Use Locator for menu items which wouldn't work on macOS
- if menu == "Tools" and item == "Options..." or menu == "File" and item == "Exit":
+ if menu == "Edit" and item == "Preferences..." or menu == "File" and item == "Exit":
selectFromLocator("t %s" % item, item)
return
menuObject = waitForObjectItem(":Qt Creator.QtCreator.MenuBar_QMenuBar", menu)
@@ -269,7 +269,7 @@ def selectFromFileDialog(fileName, waitForFile=False, ignoreFinalSnooze=False):
# add Qt documentations from given paths
# param which a list/tuple of the paths to the qch files to be added
def addHelpDocumentation(which):
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Help"))
waitForObject("{container=':Options.qt_tabwidget_tabbar_QTabBar' type='TabItem' text='Documentation'}")
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Documentation")
@@ -295,7 +295,7 @@ def addCurrentCreatorDocumentation():
if not os.path.exists(docPath):
test.fatal("Missing current Qt Creator documentation (expected in %s)" % docPath)
return
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Help"))
waitForObject("{container=':Options.qt_tabwidget_tabbar_QTabBar' type='TabItem' text='Documentation'}")
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Documentation")
@@ -398,7 +398,7 @@ def regexVerify(text, expectedTexts):
# the function returns a list of the found Qt versions
def iterateQtVersions():
qtVersionNames = []
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Kits"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Qt Versions")
treeView = waitForObject(":qtdirList_QTreeView")
@@ -417,7 +417,7 @@ def iterateQtVersions():
# param clickOkWhenDone set to True if the Options dialog should be closed by clicking the
# "OK" button. If False, the dialog will stay open
# param alreadyOnOptionsDialog set to True if you already have opened the Options Dialog
-# (if False this function will open it via the MenuBar -> Tools -> Options...)
+# (if False this function will open it via the MenuBar -> Edit -> Preferences...)
# param additionalFunction pass a function or name of a defined function to execute
# for each configured item on the list of Kits
# this function must take at least 2 parameters - the first is the full string
@@ -434,7 +434,7 @@ def iterateKits(clickOkWhenDone, alreadyOnOptionsDialog,
result = []
additionalResult = []
if not alreadyOnOptionsDialog:
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Kits"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Kits")
treeView = waitForObject(":BuildAndRun_QTreeView")
@@ -470,7 +470,7 @@ class HelpViewer:
HELPMODE, SIDEBYSIDE, EXTERNALWINDOW = range(3)
def setFixedHelpViewer(helpViewer):
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Help"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "General")
mode = "Always Show "
diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py
index 921a1c701b9..aee31c78e80 100644
--- a/tests/system/suite_HELP/tst_HELP02/test.py
+++ b/tests/system/suite_HELP/tst_HELP02/test.py
@@ -72,7 +72,7 @@ def _shortcutMatches_(shortcutEdit, expectedText):
def setKeyboardShortcutForAboutQtC():
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Environment"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Keyboard")
filter = waitForObject("{container={title='Keyboard Shortcuts' type='QGroupBox' unnamed='1' "
diff --git a/tests/system/suite_editors/tst_clean_whitespaces/test.py b/tests/system/suite_editors/tst_clean_whitespaces/test.py
index bf6e83a6e26..7a6decacb67 100644
--- a/tests/system/suite_editors/tst_clean_whitespaces/test.py
+++ b/tests/system/suite_editors/tst_clean_whitespaces/test.py
@@ -131,7 +131,7 @@ def isIgnoredFile(fileName, ignoredFiles):
def ignoredFilesFromSettings():
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Text Editor"))
waitForObject("{container=':Options.qt_tabwidget_tabbar_QTabBar' type='TabItem' "
"text='Behavior'}")
diff --git a/tests/system/suite_editors/tst_generic_highlighter/test.py b/tests/system/suite_editors/tst_generic_highlighter/test.py
index e3975c787e7..fc5808f6924 100644
--- a/tests/system/suite_editors/tst_generic_highlighter/test.py
+++ b/tests/system/suite_editors/tst_generic_highlighter/test.py
@@ -52,7 +52,7 @@ def getOrModifyFilePatternsFor(mimeType, filter='', toBePresent=None):
toSuffixArray = lambda x : [pat.replace("*", "") for pat in x.split(";")]
result = []
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Environment"))
waitForObject("{container=':Options.qt_tabwidget_tabbar_QTabBar' type='TabItem' "
"text='MIME Types'}")
@@ -115,7 +115,7 @@ def addHighlighterDefinition(*languages):
syntaxDirectory = __highlighterDefinitionsDirectory__()
toBeChecked = (os.path.join(syntaxDirectory, x + ".xml") for x in languages)
test.log("Updating highlighter definitions...")
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Text Editor"))
waitForObject("{container=':Options.qt_tabwidget_tabbar_QTabBar' type='TabItem' "
"text='Generic Highlighter'}")
diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py
index 29c65425b09..bf0d55c6895 100644
--- a/tests/system/suite_general/tst_default_settings/test.py
+++ b/tests/system/suite_general/tst_default_settings/test.py
@@ -35,7 +35,7 @@ def main():
appContext = startQC(['-settingspath', '"%s"' % emptySettings], False)
if not startedWithoutPluginError():
return
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
__checkKits__()
clickButton(waitForObject(":Options.Cancel_QPushButton"))
invokeMenuItem("File", "Exit")
diff --git a/tests/system/suite_general/tst_installed_languages/test.py b/tests/system/suite_general/tst_installed_languages/test.py
index 237150a8a02..f2068b2a226 100644
--- a/tests/system/suite_general/tst_installed_languages/test.py
+++ b/tests/system/suite_general/tst_installed_languages/test.py
@@ -30,7 +30,7 @@ def main():
startQC()
if not startedWithoutPluginError():
return
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Environment"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Interface")
languageName = testData.field(lang, "language")
diff --git a/tests/system/suite_general/tst_save_before_build/test.py b/tests/system/suite_general/tst_save_before_build/test.py
index 3befbbd8eac..74d0f685ae6 100644
--- a/tests/system/suite_general/tst_save_before_build/test.py
+++ b/tests/system/suite_general/tst_save_before_build/test.py
@@ -27,7 +27,7 @@ source("../../shared/qtcreator.py")
def __openBuildAndRunSettings__():
- invokeMenuItem("Tools", "Options...")
+ invokeMenuItem("Edit", "Preferences...")
mouseClick(waitForObjectItem(":Options_QListView", "Build & Run"))
clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "General")