From be0c2600f8ba3d38cd54976e8cfc163b9e91fca0 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 16 Mar 2022 16:01:18 +0100 Subject: [PATCH 1/7] DirectoryFilter: Fix missing file entries before first refresh After re-starting Qt Creator, the filter was reading the file path cache from the settings, but it didn't set the corresponding file iterator that is used when actually invoking Locator. That lead to the files only being available after the first (automatic) refresh after a few minutes of Qt Creator running (depending on settings). Fixes: QTCREATORBUG-26381 Change-Id: I819961ad3b146d339e760f6648b8b01f437040f7 Reviewed-by: Reviewed-by: David Schulz --- src/plugins/coreplugin/locator/directoryfilter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/locator/directoryfilter.cpp b/src/plugins/coreplugin/locator/directoryfilter.cpp index b5e69451667..cb010653afb 100644 --- a/src/plugins/coreplugin/locator/directoryfilter.cpp +++ b/src/plugins/coreplugin/locator/directoryfilter.cpp @@ -141,10 +141,10 @@ void DirectoryFilter::restoreState(const QByteArray &state) setIncludedByDefault(defaultFilter); locker.unlock(); - updateFileIterator(); } else { ILocatorFilter::restoreState(state); } + updateFileIterator(); } bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh) From 03abdcda9fe63dc23de7d02723872a301b79e8ca Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 14 Mar 2022 18:46:15 +0200 Subject: [PATCH 2/7] Android: don't fail if device abi list is empty If for some reason the device abi list is empty, don't stop the deployment, let it continue and potentially fail later. Amends c1512dce879ce0fd2c5d45858c3af8f3493f658e. Task-number: QTCREATORBUG-27103 Change-Id: I484fbd1ddb365d5e96686eebc3ba76032684e506 Reviewed-by: Alessandro Portale --- src/plugins/android/androiddeployqtstep.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 69b57651445..89ea6de806a 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -182,7 +182,8 @@ bool AndroidDeployQtStep::init() return false; } - if (!selectedAbis.isEmpty() && !dev->canSupportAbis(selectedAbis)) { + const bool abiListNotEmpty = !selectedAbis.isEmpty() && !dev->supportedAbis().isEmpty(); + if (abiListNotEmpty && !dev->canSupportAbis(selectedAbis)) { const QString error = tr("The deployment device \"%1\" does not support the " "architectures used by the kit.\n" "The kit supports \"%2\", but the device uses \"%3\".") From 519804a0d2ce56ffec2caaa3610f7c423cc193be Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 17 Mar 2022 11:25:48 +0100 Subject: [PATCH 3/7] QmlJSEditor: prevent possible crash on font settings change Fixes: QTCREATORBUG-27116 Change-Id: Iac38bd4ef20e739da4c4b8b1c072fd2cd648a66a Reviewed-by: Eike Ziller --- .../qmljseditor/qmljssemantichighlighter.cpp | 32 +++++++++++-------- .../qmljseditor/qmljssemantichighlighter.h | 4 ++- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index 1d3e2c13ddf..8909c471e0e 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -175,9 +175,11 @@ class CollectionTask : protected Visitor { public: CollectionTask(QFutureInterface &futureInterface, - const QmlJSTools::SemanticInfo &semanticInfo) + const QmlJSTools::SemanticInfo &semanticInfo, + const TextEditor::FontSettings &fontSettings) : m_futureInterface(futureInterface) , m_semanticInfo(semanticInfo) + , m_fontSettings(fontSettings) , m_scopeChain(semanticInfo.scopeChain()) , m_scopeBuilder(&m_scopeChain) , m_lineOfLastUse(0) @@ -408,13 +410,11 @@ protected: length = end-begin; } - const TextEditor::FontSettings &fontSettings = TextEditor::TextEditorSettings::fontSettings(); - QTextCharFormat format; if (d.isWarning()) - format = fontSettings.toTextCharFormat(TextEditor::C_WARNING); + format = m_fontSettings.toTextCharFormat(TextEditor::C_WARNING); else - format = fontSettings.toTextCharFormat(TextEditor::C_ERROR); + format = m_fontSettings.toTextCharFormat(TextEditor::C_ERROR); format.setToolTip(d.message); @@ -445,17 +445,15 @@ protected: length = end-begin; } - const TextEditor::FontSettings &fontSettings = TextEditor::TextEditorSettings::fontSettings(); - QTextCharFormat format; if (d.severity == Severity::Warning || d.severity == Severity::MaybeWarning || d.severity == Severity::ReadingTypeInfoWarning) { - format = fontSettings.toTextCharFormat(TextEditor::C_WARNING); + format = m_fontSettings.toTextCharFormat(TextEditor::C_WARNING); } else if (d.severity == Severity::Error || d.severity == Severity::MaybeError) { - format = fontSettings.toTextCharFormat(TextEditor::C_ERROR); + format = m_fontSettings.toTextCharFormat(TextEditor::C_ERROR); } else if (d.severity == Severity::Hint) { - format = fontSettings.toTextCharFormat(TextEditor::C_WARNING); + format = m_fontSettings.toTextCharFormat(TextEditor::C_WARNING); format.setUnderlineColor(Qt::darkGreen); } @@ -534,6 +532,7 @@ private: QFutureInterface &m_futureInterface; const QmlJSTools::SemanticInfo &m_semanticInfo; + const TextEditor::FontSettings &m_fontSettings; ScopeChain m_scopeChain; ScopeBuilder m_scopeBuilder; QStringList m_stateNames; @@ -565,8 +564,11 @@ void SemanticHighlighter::rerun(const QmlJSTools::SemanticInfo &semanticInfo) m_watcher.cancel(); m_startRevision = m_document->document()->revision(); - auto future = Utils::runAsync(QThread::LowestPriority, &SemanticHighlighter::run, - this, semanticInfo); + auto future = Utils::runAsync(QThread::LowestPriority, + &SemanticHighlighter::run, + this, + semanticInfo, + TextEditor::TextEditorSettings::fontSettings()); m_watcher.setFuture(future); m_futureSynchronizer.addFuture(future); } @@ -600,9 +602,11 @@ void SemanticHighlighter::finished() m_document->syntaxHighlighter(), m_watcher.future()); } -void SemanticHighlighter::run(QFutureInterface &futureInterface, const QmlJSTools::SemanticInfo &semanticInfo) +void SemanticHighlighter::run(QFutureInterface &futureInterface, + const QmlJSTools::SemanticInfo &semanticInfo, + const TextEditor::FontSettings &fontSettings) { - CollectionTask task(futureInterface, semanticInfo); + CollectionTask task(futureInterface, semanticInfo, fontSettings); reportMessagesInfo(task.diagnosticRanges(), task.extraFormats()); task.run(); } diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.h b/src/plugins/qmljseditor/qmljssemantichighlighter.h index f36b9b5518a..c47b2afdb88 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.h +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.h @@ -82,7 +82,9 @@ public: private: void applyResults(int from, int to); void finished(); - void run(QFutureInterface &futureInterface, const QmlJSTools::SemanticInfo &semanticInfo); + void run(QFutureInterface &futureInterface, + const QmlJSTools::SemanticInfo &semanticInfo, + const TextEditor::FontSettings &fontSettings); QFutureWatcher m_watcher; QmlJSEditorDocument *m_document; From 68d30df703191f0628d865c510439ae032c23ded Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 17 Mar 2022 15:15:05 +0200 Subject: [PATCH 4/7] QmlDesigner: Add some basic on-drag property bindings for particles Dragging Particle3D based items from component library will highlight particle emitters for automatic property binding. Similarly, dragging particle shapes will highlight emitters and attractors for automatic binding. Change-Id: I0e5a8d066beaa6d84e8665e7ae985287de32ceea Reviewed-by: Mahmoud Badri --- .../navigator/choosefrompropertylistdialog.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp b/src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp index fd17d9b5bc3..00987711c56 100644 --- a/src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp +++ b/src/plugins/qmldesigner/components/navigator/choosefrompropertylistdialog.cpp @@ -51,6 +51,11 @@ ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &i // -> InstanceList // Pass // -> Effect + // Particle3D + // -> ParticleEmitter3D + // ParticleAbstractShape3D + // -> ParticleEmitter3D + // -> Attractor3D const TypeName textureType = "QtQuick3D.Texture"; if (insertInfo.isSubclassOf(textureType)) { @@ -92,6 +97,13 @@ ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &i } else if (insertInfo.isSubclassOf("QtQuick3D.Pass")) { if (parentInfo.isSubclassOf("QtQuick3D.Effect")) propertyList.append("passes"); + } else if (insertInfo.isSubclassOf("QtQuick3D.Particles3D.Particle3D")) { + if (parentInfo.isSubclassOf("QtQuick3D.Particles3D.ParticleEmitter3D")) + propertyList.append("particle"); + } else if (insertInfo.isSubclassOf("QQuick3DParticleAbstractShape")) { + if (parentInfo.isSubclassOf("QtQuick3D.Particles3D.ParticleEmitter3D") + || parentInfo.isSubclassOf("QtQuick3D.Particles3D.Attractor3D")) + propertyList.append("shape"); } } From e45e16d904f704920bd457fdf3302f3ae7061459 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Fri, 25 Feb 2022 21:49:11 +0100 Subject: [PATCH 5/7] Android: Make the device watcher process terminate on shutdown Terminate on IPlugin::aboutToShutdown instead of QCoreApplication::aboutToQuit. If needed synchronously. Added "ADB device watcher started" logging. Fixes: QTCREATORBUG-27118 Change-Id: I483659b018c74d179b64a5a4f17cc2c27c9598a8 Reviewed-by: Reviewed-by: Jarek Kobus --- src/plugins/android/androiddevice.cpp | 36 +++++++++++++++++++-------- src/plugins/android/androiddevice.h | 9 +++++++ src/plugins/android/androidplugin.cpp | 13 ++++++++++ src/plugins/android/androidplugin.h | 3 +++ 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp index 4c550ef643b..dac30fd1446 100644 --- a/src/plugins/android/androiddevice.cpp +++ b/src/plugins/android/androiddevice.cpp @@ -35,6 +35,8 @@ #include +#include + #include #include #include @@ -594,6 +596,8 @@ void AndroidDeviceManager::setupDevicesWatcher() m_adbDeviceWatcherProcess->setCommand(command); m_adbDeviceWatcherProcess->setEnvironment(AndroidConfigurations::toolsEnvironment(m_androidConfig)); m_adbDeviceWatcherProcess->start(); + qCDebug(androidDeviceLog).noquote() << "ADB device watcher started:" + << command.toUserOutput(); // Setup AVD filesystem watcher to listen for changes when an avd is created/deleted, // or started/stopped @@ -617,6 +621,28 @@ void AndroidDeviceManager::setupDevicesWatcher() updateAvdsList(); } +void AndroidDeviceManager::shutdownDevicesWatcher() +{ + m_avdsFutureWatcher.waitForFinished(); + m_removeAvdFutureWatcher.waitForFinished(); + + if (m_adbDeviceWatcherProcess) { + m_adbDeviceWatcherProcess->terminate(); + m_adbDeviceWatcherProcess->waitForFinished(); + m_adbDeviceWatcherProcess.reset(); + + // Despite terminate/waitForFinished, the process may still + // be around and remain if Qt Creator finishes too early. + QTimer::singleShot(1000, this, [this] { emit devicesWatcherShutdownFinished(); }); + } +} + +ExtensionSystem::IPlugin::ShutdownFlag AndroidDeviceManager::devicesShutdownFlag() const +{ + return m_adbDeviceWatcherProcess ? ExtensionSystem::IPlugin::AsynchronousShutdown + : ExtensionSystem::IPlugin::SynchronousShutdown; +} + void AndroidDeviceManager::HandleAvdsListChange() { DeviceManager *const devMgr = DeviceManager::instance(); @@ -761,16 +787,6 @@ AndroidDeviceManager::AndroidDeviceManager(QObject *parent) m_androidConfig(AndroidConfigurations::currentConfig()), m_avdManager(m_androidConfig) { - connect(qApp, &QCoreApplication::aboutToQuit, this, [this]() { - if (m_adbDeviceWatcherProcess) { - m_adbDeviceWatcherProcess->terminate(); - m_adbDeviceWatcherProcess->waitForFinished(); - m_adbDeviceWatcherProcess.reset(); - } - m_avdsFutureWatcher.waitForFinished(); - m_removeAvdFutureWatcher.waitForFinished(); - }); - connect(&m_removeAvdFutureWatcher, &QFutureWatcherBase::finished, this, &AndroidDeviceManager::handleAvdRemoved); } diff --git a/src/plugins/android/androiddevice.h b/src/plugins/android/androiddevice.h index 8a8abe70ada..5ecf8101e07 100644 --- a/src/plugins/android/androiddevice.h +++ b/src/plugins/android/androiddevice.h @@ -30,6 +30,8 @@ #include "androidconfigurations.h" #include "androiddeviceinfo.h" +#include + #include #include @@ -98,9 +100,13 @@ private: class AndroidDeviceManager : public QObject { + Q_OBJECT + public: static AndroidDeviceManager *instance(); void setupDevicesWatcher(); + void shutdownDevicesWatcher(); + ExtensionSystem::IPlugin::ShutdownFlag devicesShutdownFlag() const; void updateAvdsList(); IDevice::DeviceState getDeviceState(const QString &serial, IDevice::MachineType type) const; void updateDeviceState(const ProjectExplorer::IDevice::ConstPtr &device); @@ -112,6 +118,9 @@ public: QString getRunningAvdsSerialNumber(const QString &name) const; +signals: + void devicesWatcherShutdownFinished(); + private: AndroidDeviceManager(QObject *parent = nullptr); void HandleDevicesListChange(const QString &serialNumber); diff --git a/src/plugins/android/androidplugin.cpp b/src/plugins/android/androidplugin.cpp index 3207b0c38a4..bda2f80587e 100644 --- a/src/plugins/android/androidplugin.cpp +++ b/src/plugins/android/androidplugin.cpp @@ -160,6 +160,19 @@ bool AndroidPlugin::initialize(const QStringList &arguments, QString *errorMessa return true; } +AndroidPlugin::ShutdownFlag AndroidPlugin::aboutToShutdown() +{ + AndroidDeviceManager *dm = AndroidDeviceManager::instance(); + const IPlugin::ShutdownFlag sf = dm->devicesShutdownFlag(); + + if (sf == AsynchronousShutdown) + connect(dm, &AndroidDeviceManager::devicesWatcherShutdownFinished, + this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished); + + dm->shutdownDevicesWatcher(); + return sf; +} + void AndroidPlugin::kitsRestored() { const bool qtForAndroidInstalled diff --git a/src/plugins/android/androidplugin.h b/src/plugins/android/androidplugin.h index d4ad726cf05..3d46ca08674 100644 --- a/src/plugins/android/androidplugin.h +++ b/src/plugins/android/androidplugin.h @@ -44,6 +44,9 @@ class AndroidPlugin final : public ExtensionSystem::IPlugin class AndroidPluginPrivate *d = nullptr; +public: + ShutdownFlag aboutToShutdown() final; + #ifdef WITH_TESTS private slots: void testAndroidSdkManagerProgressParser_data(); From e3babb235b2435de779691557b367816d7ca38cf Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 17 Mar 2022 16:40:21 +0100 Subject: [PATCH 6/7] QmlDesigner: Bump version number in wizard template Change-Id: I2e9dc5863a4f8eacb5f9b258ea0744ad051242f9 Reviewed-by: Thomas Hartmann --- .../studio_templates/projects/common/app.qmlproject.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/qmldesigner/studio_templates/projects/common/app.qmlproject.tpl b/share/qtcreator/qmldesigner/studio_templates/projects/common/app.qmlproject.tpl index 60aa8715873..47f83a1b428 100644 --- a/share/qtcreator/qmldesigner/studio_templates/projects/common/app.qmlproject.tpl +++ b/share/qtcreator/qmldesigner/studio_templates/projects/common/app.qmlproject.tpl @@ -90,7 +90,7 @@ Project { /* Required for deployment */ targetDirectory: "/opt/%{ProjectName}" - qdsVersion: "3.0" + qdsVersion: "3.2" @if %{IsQt6Project} /* If any modules the project imports require widgets (e.g. QtCharts), widgetApp must be true */ From ab772c50be1bb6c5cac1ee6482c629b0cd530d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 27 Jan 2022 00:00:27 +0100 Subject: [PATCH 7/7] Squish: Update tst_cmake_speedcrunch Change-Id: I46ab6f245a21546e6ebf20680f06b0cdd26eab8f Reviewed-by: Christian Stenger --- .../tst_cmake_speedcrunch/test.py | 2 +- .../testdata/projecttree_speedcrunch.tsv | 247 +++++++++++++----- 2 files changed, 186 insertions(+), 63 deletions(-) diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/test.py b/tests/system/suite_general/tst_cmake_speedcrunch/test.py index e6f07b22c5a..9a9e88d3c95 100644 --- a/tests/system/suite_general/tst_cmake_speedcrunch/test.py +++ b/tests/system/suite_general/tst_cmake_speedcrunch/test.py @@ -65,7 +65,7 @@ def main(): compareProjectTree(naviTreeView % "speedcrunch( \[\S+\])?", treeFile) # Invoke a rebuild of the application - invokeMenuItem("Build", "Rebuild All Projects") + selectFromLocator("t rebuild", "Rebuild (Rebuild All Projects)") # Wait for, and test if the build succeeded waitForCompile(300000) diff --git a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv b/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv index 8236d245f58..2fd1d59bb2b 100644 --- a/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv +++ b/tests/system/suite_general/tst_cmake_speedcrunch/testdata/projecttree_speedcrunch.tsv @@ -1,33 +1,129 @@ "text" "nestinglevel" "CMakeLists.txt" "0" "speedcrunch" "0" +"Header Files" "1" +"genericdock.h" "2" "Source Files" "1" "core" "2" "book.cpp" "3" "constants.cpp" "3" "evaluator.cpp" "3" "functions.cpp" "3" +"manualserver.cpp" "3" "numberformatter.cpp" "3" +"opcode.cpp" "3" +"pageserver.cpp" "3" +"session.cpp" "3" +"sessionhistory.cpp" "3" "settings.cpp" "3" +"userfunction.cpp" "3" +"variable.cpp" "3" "gui" "2" "aboutbox.cpp" "3" -"application.cpp" "3" -"autohidelabel.cpp" "3" +"bitfieldwidget.cpp" "3" "bookdock.cpp" "3" -"constantsdock.cpp" "3" "constantswidget.cpp" "3" "editor.cpp" "3" -"functionsdock.cpp" "3" "functionswidget.cpp" "3" -"historydock.cpp" "3" "historywidget.cpp" "3" +"keypad.cpp" "3" "mainwindow.cpp" "3" +"manualwindow.cpp" "3" "resultdisplay.cpp" "3" "syntaxhighlighter.cpp" "3" -"tipwidget.cpp" "3" +"userfunctionlistwidget.cpp" "3" "variablelistwidget.cpp" "3" -"variablesdock.cpp" "3" "math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatincgamma.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" +"main.cpp" "2" +"/" "2" +"color-schemes" "3" +"Solarized Dark.json" "4" +"Solarized Light.json" "4" +"Standard.json" "4" +"Sublime.json" "4" +"Terminal.json" "4" +"Tomorrow Night Blue.json" "4" +"Tomorrow Night Bright.json" "4" +"Tomorrow Night Eighties.json" "4" +"Tomorrow Night.json" "4" +"Tomorrow.json" "4" +"locale" "3" +"ar.qm" "4" +"ca_ES.qm" "4" +"cs_CZ.qm" "4" +"da.qm" "4" +"de_DE.qm" "4" +"el.qm" "4" +"en_GB.qm" "4" +"en_US.qm" "4" +"es_AR.qm" "4" +"es_ES.qm" "4" +"et_EE.qm" "4" +"eu_ES.qm" "4" +"fi_FI.qm" "4" +"fr_FR.qm" "4" +"he_IL.qm" "4" +"hu_HU.qm" "4" +"id_ID.qm" "4" +"it_IT.qm" "4" +"ja_JP.qm" "4" +"ko_KR.qm" "4" +"lt.qm" "4" +"lv_LV.qm" "4" +"nb_NO.qm" "4" +"nl_NL.qm" "4" +"pl_PL.qm" "4" +"pt_BR.qm" "4" +"pt_PT.qm" "4" +"ro_RO.qm" "4" +"ru_RU.qm" "4" +"sk.qm" "4" +"sv_SE.qm" "4" +"tr_TR.qm" "4" +"uz_Latn_UZ.qm" "4" +"vi.qm" "4" +"zh_CN.qm" "4" +"speedcrunch.png" "3" +"" "1" +"manual.qrc" "3" +"/manual" "4" +"manual-de_DE.qch" "5" +"manual-de_DE.qhc" "5" +"manual-en_US.qch" "5" +"manual-en_US.qhc" "5" +"manual-es_ES.qch" "5" +"manual-es_ES.qhc" "5" +"manual-fr_FR.qch" "5" +"manual-fr_FR.qhc" "5" +"testcmath" "0" +"Source Files" "1" +"math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" "floatcommon.c" "3" "floatconst.c" "3" "floatconvert.c" "3" @@ -46,18 +142,53 @@ "floattrig.c" "3" "hmath.cpp" "3" "number.c" "3" -"resources" "2" -"speedcrunch.rc" "3" -"thirdparty" "2" -"binreloc.c" "3" -"main.cpp" "2" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" +"tests" "2" +"testcmath.cpp" "3" +"testdmath" "0" +"Source Files" "1" +"math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" +"tests" "2" +"testdmath.cpp" "3" "testevaluator" "0" "Source Files" "1" "core" "2" "evaluator.cpp" "3" "functions.cpp" "3" +"numberformatter.cpp" "3" +"session.cpp" "3" +"sessionhistory.cpp" "3" "settings.cpp" "3" +"userfunction.cpp" "3" +"variable.cpp" "3" "math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" "floatcommon.c" "3" "floatconst.c" "3" "floatconvert.c" "3" @@ -76,6 +207,9 @@ "floattrig.c" "3" "hmath.cpp" "3" "number.c" "3" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" "tests" "2" "testevaluator.cpp" "3" "testfloatnum" "0" @@ -103,6 +237,8 @@ "testhmath" "0" "Source Files" "1" "math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" "floatcommon.c" "3" "floatconst.c" "3" "floatconvert.c" "3" @@ -121,58 +257,45 @@ "floattrig.c" "3" "hmath.cpp" "3" "number.c" "3" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" "tests" "2" "testhmath.cpp" "3" -"" "0" -"core" "1" -"book.h" "2" -"constants.h" "2" -"errors.h" "2" -"evaluator.h" "2" -"functions.h" "2" -"numberformatter.h" "2" -"settings.h" "2" -"gui" "1" -"aboutbox.h" "2" -"application.h" "2" -"autohidelabel.h" "2" -"bookdock.h" "2" -"constantsdock.h" "2" -"constantswidget.h" "2" -"editor.h" "2" -"functionsdock.h" "2" -"functionswidget.h" "2" -"historydock.h" "2" -"historywidget.h" "2" -"mainwindow.h" "2" -"resultdisplay.h" "2" -"syntaxhighlighter.h" "2" -"tipwidget.h" "2" -"variablelistwidget.h" "2" -"variablesdock.h" "2" -"math" "1" -"floatcommon.h" "2" -"floatconfig.h" "2" -"floatconst.h" "2" -"floatconvert.h" "2" -"floaterf.h" "2" -"floatexp.h" "2" -"floatgamma.h" "2" -"floathmath.h" "2" -"floatincgamma.h" "2" -"floatio.h" "2" -"floatipower.h" "2" -"floatlog.h" "2" -"floatlogic.h" "2" -"floatlong.h" "2" -"floatnum.h" "2" -"floatpower.h" "2" -"floatseries.h" "2" -"floattrig.h" "2" -"hmath.h" "2" -"number.h" "2" -"thirdparty" "1" -"binreloc.h" "2" +"testser" "0" +"Source Files" "1" +"core" "2" +"numberformatter.cpp" "3" +"settings.cpp" "3" +"math" "2" +"cmath.cpp" "3" +"cnumberparser.cpp" "3" +"floatcommon.c" "3" +"floatconst.c" "3" +"floatconvert.c" "3" +"floaterf.c" "3" +"floatexp.c" "3" +"floatgamma.c" "3" +"floathmath.c" "3" +"floatio.c" "3" +"floatipower.c" "3" +"floatlog.c" "3" +"floatlogic.c" "3" +"floatlong.c" "3" +"floatnum.c" "3" +"floatpower.c" "3" +"floatseries.c" "3" +"floattrig.c" "3" +"hmath.cpp" "3" +"number.c" "3" +"quantity.cpp" "3" +"rational.cpp" "3" +"units.cpp" "3" +"tests" "2" +"testser.cpp" "3" +"src" "1" +"CMakeLists.txt" "2" "CMake Modules" "0" "cmake_uninstall.cmake.in" "1" "SourceFiles.cmake" "1" +"" "1"