diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 540ffc99159..7e74ed4c88e 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -8,7 +8,7 @@ about: Create a report to help us improve
Please thoroughly read NVDA's wiki article on how to fill in this template, including how to provide the required files.
Issues may be closed if the required information is not present.
https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md
-Please also note that the NVDA project has a Citizen and Contributor Code of Conduct which can be found at https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md. NV Access expects that all contributors and other community members read and abide by the rules set out in this document while participating or contributing to this project. This includes creating or commenting on issues and pull requests.
+Please also note that the NVDA project has a Citizen and Contributor Code of Conduct which can be found at https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md. NV Access expects that all contributors and other community members read and abide by the rules set out in this document while participating or contributing to this project. This includes creating or commenting on issues and pull requests.
Each of the questions and sections below start with multiple hash symbols (#). Place your answers and information on the blank line below each question.
-->
@@ -17,14 +17,14 @@ Each of the questions and sections below start with multiple hash symbols (#). P
### Actual behavior:
### Expected behavior:
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index df6ae16ab7b..a9c89d848cb 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -8,7 +8,7 @@ about: Suggest an idea for this project
Please thoroughly read NVDA's wiki article on how to fill in this template, including how to provide the required files.
Issues may be closed if the required information is not present.
https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md
-Please also note that the NVDA project has a Citizen and Contributor Code of Conduct which can be found at https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md. NV Access expects that all contributors and other community members read and abide by the rules set out in this document while participating or contributing to this project. This includes creating or commenting on issues and pull requests.
+Please also note that the NVDA project has a Citizen and Contributor Code of Conduct which can be found at https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md. NV Access expects that all contributors and other community members read and abide by the rules set out in this document while participating or contributing to this project. This includes creating or commenting on issues and pull requests.
Each of the questions and sections below start with multiple hash symbols (#). Place your answers and information on the blank line below each question.
-->
diff --git a/.github/ISSUE_TEMPLATE/special_case_issue.md b/.github/ISSUE_TEMPLATE/special_case_issue.md
index 6292223d421..e81998e3eaf 100644
--- a/.github/ISSUE_TEMPLATE/special_case_issue.md
+++ b/.github/ISSUE_TEMPLATE/special_case_issue.md
@@ -5,23 +5,23 @@ about: A complex or exceptional issue that doesn't fit into the usual templates
---
@@ -47,4 +47,3 @@ Please place your answers and information on the blank line below each question.
### Additional information (if applicable)
-
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 150e3cbef41..dff9547c1f2 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,9 +1,9 @@
@@ -42,7 +42,7 @@ https://github.com/nvaccess/nvda/blob/master/projectDocs/dev/githubPullRequestTe
- System (end to end) tests
- Manual testing
- [ ] UX of all users considered:
- - Speech
+ - Speech
- Braille
- Low Vision
- Different web browsers
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 2ce1d0550a1..71f9463da8f 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -3,10 +3,10 @@
## 1. Purpose
A primary goal of NV Access and NVDA is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, nationality, socioeconomic status, education, level of experience and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behaviour.
-We invite all those who participate in the NVDA community to help us create safe and positive experiences for everyone. NVDA is a user driven initiative.
+We invite all those who participate in the NVDA community to help us create safe and positive experiences for everyone. NVDA is a user driven initiative.
## 2. Open Source Citizenship
-A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognise and strengthen the relationships between our actions and their effects on our community.
+A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognise and strengthen the relationships between our actions and their effects on our community.
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
@@ -45,21 +45,21 @@ If a community member engages in unacceptable behaviour, NV Access Staff may tak
NV Access Staff have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviours that they deem inappropriate, threatening, offensive, or harmful.
## 6. Reporting Guidelines
-If you are subject to or witness unacceptable behaviour, or have any other concerns, please notify NV Access staff as soon as possible via info@nvaccess.org. The information required for notifications includes PR/Issue Number, nature of breach, community member responsible, date and time of breach. Please note that the details of the reporter will not be disclosed, unless required to by law.
+If you are subject to or witness unacceptable behaviour, or have any other concerns, please notify NV Access staff as soon as possible via info@nvaccess.org. The information required for notifications includes PR/Issue Number, nature of breach, community member responsible, date and time of breach. Please note that the details of the reporter will not be disclosed, unless required to by law.
## 7. Addressing Grievances
-If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify NV Access at info@nvaccess.org with a concise description of your grievance.
+If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify NV Access at info@nvaccess.org with a concise description of your grievance.
## 8. Scope
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.
-This code of conduct and its related procedures also applies to unacceptable behaviour occurring outside the scope of community activities when such behaviour has the potential to adversely affect the safety and well-being of community members.
-For others setting up or running an NVDA group of any kind, it is strongly recommended that a complementary Citizen and Contributor Code of Conduct is adopted.
+This code of conduct and its related procedures also applies to unacceptable behaviour occurring outside the scope of community activities when such behaviour has the potential to adversely affect the safety and well-being of community members.
+For others setting up or running an NVDA group of any kind, it is strongly recommended that a complementary Citizen and Contributor Code of Conduct is adopted.
## 9. Contact info
info@nvaccess.org
## 10. License and attribution
-The Citizen and Contributor Code of Conduct is distributed by NV Access Limited.
+The Citizen and Contributor Code of Conduct is distributed by NV Access Limited.
Portions of text were derived from the GitHub sample Citizen and Contributor Code of Conduct, which is distributed under a Creative Commons Attribution-ShareAlike license.
Revision history:
diff --git a/appveyor/README.md b/appveyor/README.md
index 87ae7e2948c..00457204eb8 100644
--- a/appveyor/README.md
+++ b/appveyor/README.md
@@ -1,4 +1,4 @@
-`appveyor.yml` specifies build settings which generally [override online UI driven settings](https://www.appveyor.com/docs/build-configuration/#appveyoryml-and-ui-coexistence).
+`appveyor.yml` specifies build settings which generally [override online UI driven settings](https://www.appveyor.com/docs/build-configuration/#appveyoryml-and-ui-coexistence).
# Branch and tag filtering
@@ -12,7 +12,7 @@ Builds will fail if any command has a non-zero exit code. PowerShell scripts con
## Setup process
-Before we begin the install process, AppVeyor clones our repository and checks out the commit of the build.
+Before we begin the install process, AppVeyor clones our repository and checks out the commit of the build.
### `install`
@@ -31,7 +31,7 @@ Performs a build of NVDA and related artifacts for testing and deployment.
## Testing
-Unlike the rest of the build, tests do not exit early if they fail or raise an error. If any test fails, `testFailExitCode` is set to 1. The `after_test` build phase will exit the build if any tests fail so that all test failures can be recorded where possible.
+Unlike the rest of the build, tests do not exit early if they fail or raise an error. If any test fails, `testFailExitCode` is set to 1. The `after_test` build phase will exit the build if any tests fail so that all test failures can be recorded where possible.
Before testing we:
@@ -48,9 +48,9 @@ The tests we perform are:
## Artifacts
-Artifacts are added to the build throughout the process.
+Artifacts are added to the build throughout the process.
-Artifacts in `output\*` and `output\*\*` are automatically packaged after successful tests. If something fails before then, we manually push these artifacts in `on_failure`. Artifacts outside of `output` are pushed manually as they are created.
+Artifacts in `output\*` and `output\*\*` are automatically packaged after successful tests. If something fails before then, we manually push these artifacts in `on_failure`. Artifacts outside of `output` are pushed manually as they are created.
At the end of the build, regardless of failure, we upload the list of successfully installed python packages in `pushPackagingInfo.ps1`. This is performed here in case scons (partially) fails.
diff --git a/include/espeak.md b/include/espeak.md
index 70015c90061..b4b68ec785c 100644
--- a/include/espeak.md
+++ b/include/espeak.md
@@ -64,7 +64,7 @@ If the last thing is compiling some dictionary try excluding it.
This can be done in [`nvdaHelper/espeak/sconscript`](../nvdaHelper/espeak/sconscript).
Remember to report this to the eSpeak-ng project.
-If the build fails, take note of the error, compare the diff of the `Makefile.am` file and mirror
+If the build fails, take note of the error, compare the diff of the `Makefile.am` file and mirror
any changes in our `sconscript` file.
### Known issues
diff --git a/nvdaHelper/common/PerfTimer.cpp b/nvdaHelper/common/PerfTimer.cpp
index 9236a0c02c2..4d754188cef 100644
--- a/nvdaHelper/common/PerfTimer.cpp
+++ b/nvdaHelper/common/PerfTimer.cpp
@@ -64,7 +64,7 @@ std::string PerfTimer::GetPerfResults() {
std::stringstream sstream;
sstream << "Perf Results\n";
for(auto& result : perfResults){
- sstream << result.first << " Total time: " << result.second.totalTime
+ sstream << result.first << " Total time: " << result.second.totalTime
<< " Hit count: " << result.second.numberOfHits;
if(result.second.totalTime > 0 && result.second.numberOfHits > 0) {
sstream << " Average Time: " << result.second.totalTime / result.second.numberOfHits;
@@ -72,4 +72,4 @@ std::string PerfTimer::GetPerfResults() {
sstream << '\n';
}
return sstream.str();
-}
\ No newline at end of file
+}
diff --git a/nvdaHelper/common/PerfTimer.h b/nvdaHelper/common/PerfTimer.h
index 4664fd7a00f..531c180b026 100644
--- a/nvdaHelper/common/PerfTimer.h
+++ b/nvdaHelper/common/PerfTimer.h
@@ -68,4 +68,4 @@ class PerfTimer {
static std::map s_results; ///< The results being collected.
};
-#endif
\ No newline at end of file
+#endif
diff --git a/nvdaHelper/common/apiHook.cpp b/nvdaHelper/common/apiHook.cpp
index e1cd228de43..e684b596963 100644
--- a/nvdaHelper/common/apiHook.cpp
+++ b/nvdaHelper/common/apiHook.cpp
@@ -14,7 +14,7 @@ This license can be found at:
#include
#include
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include
#include
#include
@@ -66,7 +66,7 @@ bool apiHook_commitTransaction() {
if (res != NO_ERROR) {
LOG_ERROR("DetourTransactionCommit failed with " << res << " due to variable at address 0X" << std::hex << failedPointerRef << " that should hold a function pointer");
return false;
- }
+ }
LOG_DEBUG("DetourTransactionCommit succeeded");
return TRUE;
}
diff --git a/nvdaHelper/common/apiHook.h b/nvdaHelper/common/apiHook.h
index 4c2cfa8f602..7f62f708236 100644
--- a/nvdaHelper/common/apiHook.h
+++ b/nvdaHelper/common/apiHook.h
@@ -18,16 +18,16 @@ This license can be found at:
/**
* Initializes an API hooking transaction.
* @return success flag
- */
+ */
bool apiHook_beginTransaction();
/**
- * Requests that the given function from the given module should be hooked with the given hook procedure.
+ * Requests that the given function from the given module should be hooked with the given hook procedure.
* Warning, this function has no safety checks, you should usually use the apiHook_hookFunction_safe template
* @param realFunction the function you wish to hook.
* @param fakeFunction the function you wish to be called instead of the original one.
* @param targetPointerRef Pointer variable that will contain a pointer to the original function after hooking. This is used to unhook.
- */
+ */
bool apiHook_hookFunction(void* realFunction, void* fakeFunction, void** targetPointerRef);
/**
@@ -36,7 +36,7 @@ bool apiHook_hookFunction(void* realFunction, void* fakeFunction, void** targetP
* @param realFunction the function you wish to hook.
* @param fakeFunction the function you wish to be called instead of the original one.
* @param targetPointerRef Pointer variable that will contain a pointer to the original function after hooking. This is used to unhook.
-*/
+*/
template
bool apiHook_hookFunction_safe(funcType realFunction, funcType fakeFunction, funcType* targetPointerRef) {
return apiHook_hookFunction(
diff --git a/nvdaHelper/common/libraryLoader.h b/nvdaHelper/common/libraryLoader.h
index dd17055c106..6c44927a586 100644
--- a/nvdaHelper/common/libraryLoader.h
+++ b/nvdaHelper/common/libraryLoader.h
@@ -17,7 +17,7 @@ This license can be found at:
// A Smart Library handle.
// Construct it with a handle returned by LoadLibrary or similar.
-// Once the object goes out of scope, FreeLibrary will automatically be called on the handle.
+// Once the object goes out of scope, FreeLibrary will automatically be called on the handle.
class CLoadedLibrary {
private:
HMODULE _hModule {nullptr};
@@ -54,4 +54,3 @@ class CLoadedLibrary {
}
};
-
diff --git a/nvdaHelper/common/lock.h b/nvdaHelper/common/lock.h
index 252a1eeabc1..440a60e9592 100644
--- a/nvdaHelper/common/lock.h
+++ b/nvdaHelper/common/lock.h
@@ -118,4 +118,4 @@ long incRef() {
};
-#endif
\ No newline at end of file
+#endif
diff --git a/nvdaHelper/common/winIPCUtils.cpp b/nvdaHelper/common/winIPCUtils.cpp
index 7ad3e2bba01..b7a0bb354e2 100644
--- a/nvdaHelper/common/winIPCUtils.cpp
+++ b/nvdaHelper/common/winIPCUtils.cpp
@@ -15,7 +15,7 @@ This license can be found at:
#include
#include
#include
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include
#include "winIPCUtils.h"
diff --git a/nvdaHelper/common/winIPCUtils.h b/nvdaHelper/common/winIPCUtils.h
index 177d48769d3..7cc60cfac9f 100644
--- a/nvdaHelper/common/winIPCUtils.h
+++ b/nvdaHelper/common/winIPCUtils.h
@@ -18,7 +18,7 @@ This license can be found at:
#ifdef __cplusplus
extern "C" {
#endif
-
+
#include
/**
@@ -33,4 +33,3 @@ size_t generateDesktopSpecificNamespace(wchar_t* buf, size_t cch);
#endif
#endif
-
\ No newline at end of file
diff --git a/nvdaHelper/local/UIAEventLimiter/api.cpp b/nvdaHelper/local/UIAEventLimiter/api.cpp
index bc9af47f9cd..cdc1ff6485a 100644
--- a/nvdaHelper/local/UIAEventLimiter/api.cpp
+++ b/nvdaHelper/local/UIAEventLimiter/api.cpp
@@ -22,7 +22,7 @@ std::set activeRateLimitedEventHandlers;
HRESULT rateLimitedUIAEventHandler_create(IUnknown* pExistingHandler, RateLimitedEventHandler** ppRateLimitedEventHandler) {
LOG_DEBUG(L"rateLimitedUIAEventHandler_create called");
if(!pExistingHandler || !ppRateLimitedEventHandler) {
- LOG_ERROR(L"rateLimitedUIAEventHandler_create: one or more NULL arguments");
+ LOG_ERROR(L"rateLimitedUIAEventHandler_create: one or more NULL arguments");
return E_INVALIDARG;
}
@@ -39,7 +39,7 @@ HRESULT rateLimitedUIAEventHandler_create(IUnknown* pExistingHandler, RateLimite
// @brief Terminates a RateLimitedEventHandler instance's flusher thread and removes it from the activeRateLimitedEventHandlers set.
// @param pRateLimitedEventHandler the RateLimitedEventHandler instance to terminate.
-// @note This function will block until the RateLimitedEventHandler's flusher thread has terminated.
+// @note This function will block until the RateLimitedEventHandler's flusher thread has terminated.
// @return S_OK on success or a failure code otherwise
HRESULT rateLimitedUIAEventHandler_terminate(RateLimitedEventHandler* pRateLimitedEventHandler) {
if (activeRateLimitedEventHandlers.find(pRateLimitedEventHandler) == activeRateLimitedEventHandlers.end()) {
diff --git a/nvdaHelper/local/UIAEventLimiter/eventRecord.h b/nvdaHelper/local/UIAEventLimiter/eventRecord.h
index 3570666a63d..a7027628874 100644
--- a/nvdaHelper/local/UIAEventLimiter/eventRecord.h
+++ b/nvdaHelper/local/UIAEventLimiter/eventRecord.h
@@ -26,7 +26,7 @@ This license can be found at:
// which is used to detect and remove duplicate events.
// The key is made up of the element's runtime ID,
// plus any extra event params that make the event unique,
-// E.g. event ID, property ID etc.
+// E.g. event ID, property ID etc.
struct AutomationEventRecord_t {
CComPtr sender;
@@ -98,7 +98,7 @@ using EventRecordVariant_t = std::variant
concept EventRecordConstraints = requires(T t) {
{ t.generateCoalescingKey() } -> std::same_as>;
diff --git a/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.cpp b/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.cpp
index dbc091290dd..bec9dbc0b44 100644
--- a/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.cpp
+++ b/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.cpp
@@ -43,11 +43,11 @@ HRESULT RateLimitedEventHandler::queueEvent(EventRecordArgTypes&&... args) {
auto coalescingKey = record.generateCoalescingKey();
auto existingKeyIter = m_eventRecordsByKey.find(coalescingKey);
if(existingKeyIter != m_eventRecordsByKey.end()) {
- LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: found existing event with same key");
+ LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: found existing event with same key");
auto& [existingRecordVarIter,existingCoalesceCount] = existingKeyIter->second;
LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: updating key and count to "<<(existingCoalesceCount+1));
existingKeyIter->second = {recordVarIter, existingCoalesceCount + 1};
- LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: erasing old item");
+ LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: erasing old item");
m_eventRecords.erase(existingRecordVarIter);
} else {
LOG_DEBUG(L"RateLimitedUIAEventHandler::queueEvent: Adding key");
@@ -58,7 +58,7 @@ HRESULT RateLimitedEventHandler::queueEvent(EventRecordArgTypes&&... args) {
m_needsFlush = true;
m_flushConditionVar.notify_one();
}
- } // m_mtx released.
+ } // m_mtx released.
return S_OK;
}
@@ -156,9 +156,9 @@ RateLimitedEventHandler::~RateLimitedEventHandler() {
RateLimitedEventHandler::RateLimitedEventHandler(IUnknown* pExistingHandler):
m_pExistingAutomationEventHandler(pExistingHandler),
- m_pExistingFocusChangedEventHandler(pExistingHandler),
+ m_pExistingFocusChangedEventHandler(pExistingHandler),
m_pExistingPropertyChangedEventHandler(pExistingHandler),
- m_pExistingNotificationEventHandler(pExistingHandler),
+ m_pExistingNotificationEventHandler(pExistingHandler),
m_pExistingActiveTextPositionChangedEventHandler(pExistingHandler),
m_flusherThread([this](std::stop_token st){ this->flusherThreadFunc(st); })
{
diff --git a/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.h b/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.h
index 3278d810778..8b3401a1c9c 100644
--- a/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.h
+++ b/nvdaHelper/local/UIAEventLimiter/rateLimitedEventHandler.h
@@ -20,7 +20,7 @@ This license can be found at:
#include "eventRecord.h"
-// @brief a class that listens for various UI Automation events,
+// @brief a class that listens for various UI Automation events,
// stores them in in an internal queue (removing any duplicates),
// and sends them onto an existing UI Automation event handler in a separate thread.
// This ensures that UI Automation core is never blocked while sending events to this class.
@@ -49,15 +49,15 @@ class RateLimitedEventHandler:
/// @param stopToken used to check if the thread should stop.
void flusherThreadFunc(std::stop_token stopToken);
- /// @brief a template function that queues a UI Automation event.
- /// @tparam EventRecordClass the type of event record representing a UI Automation event.
+ /// @brief a template function that queues a UI Automation event.
+ /// @tparam EventRecordClass the type of event record representing a UI Automation event.
/// @tparam ...EventRecordArgTypes the argument types required to construct the event record
/// @param ...args the arguments to construct the event record.
/// @return S_OK on success or a failure code otherwise.
template HRESULT queueEvent(EventRecordArgTypes&&... args);
/// @brief Emits a UI Automation event to its existing handler.
- /// @param record the event record representing the UI automation event.
+ /// @param record the event record representing the UI automation event.
/// @return S_OK on success or a failure code otherwise.
HRESULT emitEvent(const AutomationEventRecord_t& record) const;
HRESULT emitEvent(const FocusChangedEventRecord_t& record) const;
@@ -72,7 +72,7 @@ class RateLimitedEventHandler:
public:
- /// @brief class constructor.
+ /// @brief class constructor.
/// @param pExistingHandler a pointer to an existing UI Automation event handler where events should be sent after they are flushed from the queue.
RateLimitedEventHandler(IUnknown* pExistingHandler);
diff --git a/nvdaHelper/local/UIAEventLimiter/utils.h b/nvdaHelper/local/UIAEventLimiter/utils.h
index 2e55486e627..e20be160f93 100644
--- a/nvdaHelper/local/UIAEventLimiter/utils.h
+++ b/nvdaHelper/local/UIAEventLimiter/utils.h
@@ -21,13 +21,13 @@ This license can be found at:
#include
/// @brief creates a vector of ints from a SAFEARRAY.
-/// @param pSafeArray
-/// @return the vector of ints.
+/// @param pSafeArray
+/// @return the vector of ints.
std::vector SafeArrayToVector(SAFEARRAY* pSafeArray);
/// @brief Fetches the runtimeID from a given uI Automation element.
/// @param pElement the UI Automation element whose runtime ID should be fetched.
-/// @return the runtime ID from the element.
+/// @return the runtime ID from the element.
std::vector getRuntimeIDFromElement(IUIAutomationElement* pElement);
// @brief a helper template function for the supports_alternative concept.
@@ -36,7 +36,7 @@ constexpr bool supports_alternative_impl(std::index_sequence) {
return (std::same_as> || ...);
}
-// @brief a concept that checks if a given type can be held by a given variant type.
+// @brief a concept that checks if a given type can be held by a given variant type.
// @tparam T the type to check
// @tparam V the variant type to check
template
diff --git a/nvdaHelper/local/UIAUtils.h b/nvdaHelper/local/UIAUtils.h
index 1564e6f9458..03f2e7a8261 100644
--- a/nvdaHelper/local/UIAUtils.h
+++ b/nvdaHelper/local/UIAUtils.h
@@ -12,4 +12,3 @@ int registerUIAAnnotationType(GUID* guid);
#endif
-
diff --git a/nvdaHelper/local/dllImportTableHooks.h b/nvdaHelper/local/dllImportTableHooks.h
index dd408616a71..5825ac05fdb 100644
--- a/nvdaHelper/local/dllImportTableHooks.h
+++ b/nvdaHelper/local/dllImportTableHooks.h
@@ -34,12 +34,12 @@ class DllImportTableHooks {
DllImportTableHooks(HMODULE targetModule);
/**
- * Requests that the given function from the given module should be hooked with the given hook procedure. Note that hooking does not automatically take place when this function is called, so this function can be called many times before the actual hooking can be done in bulk with apiHooks_hookFunctions.
+ * Requests that the given function from the given module should be hooked with the given hook procedure. Note that hooking does not automatically take place when this function is called, so this function can be called many times before the actual hooking can be done in bulk with apiHooks_hookFunctions.
* @param moduleName the name of the module the function you wish to hook is located in.
* @param functionName the name of the function you wish to hook.
* @param newHookProc the function you wish to be called instead of the original one.
* @return the address of the original function. You could use this to call the origianl function from with in your replacement.
- */
+ */
void* requestFunctionHook(const char* moduleName, const char* functionName, void* newHookProc);
/**
diff --git a/nvdaHelper/local/mixer.cpp b/nvdaHelper/local/mixer.cpp
index 818b9f2229f..7020d1d3590 100644
--- a/nvdaHelper/local/mixer.cpp
+++ b/nvdaHelper/local/mixer.cpp
@@ -26,7 +26,7 @@ _COM_SMARTPTR_TYPEDEF(IAudioMeterInformation, __uuidof(IAudioMeterInformation));
/*
* Should NVDA delay speech slightly when beginning to duck other audio?
- * @return true if other audio is playing or there is an error for any device. Or in other words, false only if all devices can be checked, and they all have a peak of 0.
+ * @return true if other audio is playing or there is an error for any device. Or in other words, false only if all devices can be checked, and they all have a peak of 0.
*/
bool audioDucking_shouldDelay() {
HRESULT res;
diff --git a/nvdaHelper/local/nvdaControllerInternal.c b/nvdaHelper/local/nvdaControllerInternal.c
index d9a04ffa6db..8281a161d63 100644
--- a/nvdaHelper/local/nvdaControllerInternal.c
+++ b/nvdaHelper/local/nvdaControllerInternal.c
@@ -24,7 +24,7 @@ error_status_t __stdcall nvdaControllerInternal_inputLangChangeNotify(const long
return _nvdaControllerInternal_inputLangChangeNotify(threadID,hkl,layoutString);
}
-error_status_t(__stdcall *_nvdaControllerInternal_typedCharacterNotify)(const wchar_t);
+error_status_t(__stdcall *_nvdaControllerInternal_typedCharacterNotify)(const wchar_t);
error_status_t __stdcall nvdaControllerInternal_typedCharacterNotify(const wchar_t ch) {
return _nvdaControllerInternal_typedCharacterNotify(ch);
}
@@ -36,7 +36,7 @@ error_status_t __stdcall nvdaControllerInternal_logMessage(const long level, con
}
error_status_t(__stdcall *_nvdaControllerInternal_displayModelTextChangeNotify)(const long, const long, const long, const long, const long);
-error_status_t __stdcall nvdaControllerInternal_displayModelTextChangeNotify(const long hwnd, const long left, const long top, const long right, const long bottom) {
+error_status_t __stdcall nvdaControllerInternal_displayModelTextChangeNotify(const long hwnd, const long left, const long top, const long right, const long bottom) {
return _nvdaControllerInternal_displayModelTextChangeNotify(hwnd,left,top,right,bottom);
}
@@ -71,7 +71,7 @@ error_status_t __stdcall nvdaControllerInternal_installAddonPackageFromPath(cons
}
error_status_t(__stdcall *_nvdaControllerInternal_drawFocusRectNotify)(const long, const long, const long, const long, const long);
-error_status_t __stdcall nvdaControllerInternal_drawFocusRectNotify(const long hwnd, const long left, const long top, const long right, const long bottom) {
+error_status_t __stdcall nvdaControllerInternal_drawFocusRectNotify(const long hwnd, const long left, const long top, const long right, const long bottom) {
return _nvdaControllerInternal_drawFocusRectNotify(hwnd,left,top,right,bottom);
}
diff --git a/nvdaHelper/local/oleUtils.cpp b/nvdaHelper/local/oleUtils.cpp
index e09b7da7241..8e3451a0df6 100644
--- a/nvdaHelper/local/oleUtils.cpp
+++ b/nvdaHelper/local/oleUtils.cpp
@@ -19,7 +19,7 @@ This license can be found at:
/*
* Fetches a text representation of the given OLE data object
* @param dataObject an IDataObject interface of an OLE object
- * @param text a pointer to a BSTR which will hold the resulting text
+ * @param text a pointer to a BSTR which will hold the resulting text
* @return S_OK on success or an OLE error code.
*/
HRESULT getOleClipboardText(IDataObject* dataObject, BSTR* text) {
diff --git a/nvdaHelper/local/rpcSrv.h b/nvdaHelper/local/rpcSrv.h
index 9ec5ae2bd42..d1cb670b454 100644
--- a/nvdaHelper/local/rpcSrv.h
+++ b/nvdaHelper/local/rpcSrv.h
@@ -19,5 +19,5 @@ This license can be found at:
RPC_STATUS startServer();
RPC_STATUS stopServer();
-
+
#endif
diff --git a/nvdaHelper/readme.md b/nvdaHelper/readme.md
index b5d09c79597..9e3b6fea60d 100644
--- a/nvdaHelper/readme.md
+++ b/nvdaHelper/readme.md
@@ -24,13 +24,13 @@ For instance:
#### nvdaHelperLocalWin10.dll
Contains code specific to Windows 10 and above, that aides in accessing newer technologies such as Windows OneCore speech synthesis, the Windows in-built OCR service.
-This code is mostly C++/WinRT.
+This code is mostly C++/WinRT.
#### nvdaHelperLocal.dll
This dll is loaded directly in to NVDA. It provides the following features:
* client stub methods for several RPC interfaces allowing NVDA to execute code in-process. These interfaces include nvdaInprocUtils, vbufBackends, and displayModel, which are implemented in nvdaHelperRemote.dll.
-* Server stub methods for several RPC interfaces allowing in-process code to execute code in NVDA. These interfaces include nvdaController and nvdaControllerInternal.
-* Functions to aide NVDA in hooking platform dlls to make their calls easier to cancel
+* Server stub methods for several RPC interfaces allowing in-process code to execute code in NVDA. These interfaces include nvdaController and nvdaControllerInternal.
+* Functions to aide NVDA in hooking platform dlls to make their calls easier to cancel
* Several small utility functions that assist in processing text (which are faster in c++).
#### NVDAHelperRemote.dll
@@ -108,7 +108,7 @@ The `nvdaHelperDebugFlags` variable takes one or more of the following flags:
The special keywords none and all can also be used in place of the individual flags.
-An example follows that enables debug CRT and runtime checks
+An example follows that enables debug CRT and runtime checks
```cmd
scons source nvdaHelperDebugFlags=debugCRT,RTC
diff --git a/nvdaHelper/remote/COMProxyRegistration.cpp b/nvdaHelper/remote/COMProxyRegistration.cpp
index ecdce81dc1c..b5f95da9337 100644
--- a/nvdaHelper/remote/COMProxyRegistration.cpp
+++ b/nvdaHelper/remote/COMProxyRegistration.cpp
@@ -17,7 +17,7 @@ This license can be found at:
#include
#include
#include
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#define CINTERFACE
#include
#include
@@ -62,7 +62,7 @@ COMProxyRegistration_t* registerCOMProxy(const wchar_t* dllPath) {
LOG_ERROR(L"LoadLibrary failed for "<classObjectRegistrationCookie=dwCookie;
// For all interfaces the proxy dll supports, register its CLSID as their proxy stub CLSID
// pProxyInfo is a pointer to a list of ProxyFileInfo pointers. The last of them being NULL to denote the end of the list.
- // There is no official documentation on this, but
- // in dlldata.c generated by MIDL (E.g. for IAccessible2, ia2_data.c), you can see:
+ // There is no official documentation on this, but
+ // in dlldata.c generated by MIDL (E.g. for IAccessible2, ia2_data.c), you can see:
// PROXYFILE_LIST_START, followed by REFERENCE_PROXY_FILE(IA2), followed by PROXYFILE_LIST_END.
// In RPCProxy.h from the Windows SDK, PROXYFILE_LIST_START declairs an unsized array of ProxyFileInfo pointers, REFERENCE_PROXY_FILE fills in each ProxyFileInfo pointer, and PROXYFILE_LIST_END places a final 0 to terminate the list.
// The reason it is a list is that multiple IDLs may be compiled into one proxy, and each IDL file gets its own ProxyFileInfo and therefore its own call to REFERENCE_PROXY_FILE
diff --git a/nvdaHelper/remote/COMProxyRegistration.h b/nvdaHelper/remote/COMProxyRegistration.h
index 558fadd1c5d..04e76409565 100644
--- a/nvdaHelper/remote/COMProxyRegistration.h
+++ b/nvdaHelper/remote/COMProxyRegistration.h
@@ -19,7 +19,7 @@ This license can be found at:
#include
#include
#include
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include
#include
@@ -27,7 +27,7 @@ This license can be found at:
typedef struct {
// The name of the interface (for debugging)
std::wstring name;
- // The unique identifier of the interface
+ // The unique identifier of the interface
IID iid;
// The CLSID of the original class object that handled creating / proxying of this interface.
// Used when unregistering, so we can put things back the way they were
@@ -58,4 +58,3 @@ COMProxyRegistration_t* registerCOMProxy(const wchar_t* dllPath);
bool unregisterCOMProxy(COMProxyRegistration_t* reg);
#endif
-
diff --git a/nvdaHelper/remote/WinWord/Fields.cpp b/nvdaHelper/remote/WinWord/Fields.cpp
index 1f989f6ad47..6980bd4c780 100644
--- a/nvdaHelper/remote/WinWord/Fields.cpp
+++ b/nvdaHelper/remote/WinWord/Fields.cpp
@@ -11,7 +11,7 @@ Copyright 2006-2010 NVDA contributers.
This license can be found at:
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include
#include
@@ -61,10 +61,10 @@ Fields::Fields(IDispatch* pRange) {
Fields can be of many types, to get this we look at Type property. We care about:
Ref - a Reference to some other part of the file
Hyperlink - a link to another part of the file or to an external URL
-
+
The following are defined on msdn (WdFieldType Enumeration - https://msdn.microsoft.com/en-us/library/office/ff192211.aspx)
*/
- const int CROSS_REFERENCE_TYPE_VALUE = 3; // wdFieldRef
+ const int CROSS_REFERENCE_TYPE_VALUE = 3; // wdFieldRef
const int HYPERLINK_TYPE_VALUE = 88; // wdFieldHyperlink
const int PAGE_NUMBER_TYPE_VALUE = 33; // wdFieldPage
int type = -1;
@@ -131,4 +131,4 @@ std::optional Fields::getEndOfPageNumberFieldAtIndex(const int index){
return std::optional();
}
-} // end namespace WinWord
\ No newline at end of file
+} // end namespace WinWord
diff --git a/nvdaHelper/remote/WinWord/Fields.h b/nvdaHelper/remote/WinWord/Fields.h
index 4cac59af45c..35cc7d169a2 100644
--- a/nvdaHelper/remote/WinWord/Fields.h
+++ b/nvdaHelper/remote/WinWord/Fields.h
@@ -14,7 +14,7 @@ This license can be found at:
#ifndef WINWORD_LINKS_H
#define WINWORD_LINKS_H
-#define WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
#include
#include
diff --git a/nvdaHelper/remote/displayModel.cpp b/nvdaHelper/remote/displayModel.cpp
index fc512d77da2..4c91cc38355 100644
--- a/nvdaHelper/remote/displayModel.cpp
+++ b/nvdaHelper/remote/displayModel.cpp
@@ -66,7 +66,7 @@ void displayModelChunk_t::truncate(int truncatePointX, BOOL truncateBefore) {
wstring::iterator t=text.begin();
if(truncateBefore&&rect.leftformatInfo=formatInfo;
chunk->direction=direction;
chunk->characterXArray.push_back(rect.left);
- for(unsigned int i=0;i<(text.length()-1);++i) chunk->characterXArray.push_back(characterExtents[i].x+rect.left);
+ for(unsigned int i=0;i<(text.length()-1);++i) chunk->characterXArray.push_back(characterExtents[i].x+rect.left);
LOG_DEBUG(L"filled in chunk with rectangle from "<baseline,chunk->rect.left)]=chunk;
- if(hwnd) chunk->hwnd=hwnd;
+ if(hwnd) chunk->hwnd=hwnd;
}
void displayModel_t::setFocusRect(const RECT* rect) {
@@ -165,7 +165,7 @@ void displayModel_t::clearRectangle(const RECT& rect, BOOL clearForText) {
}
while(i!=chunksByYX.end()) {
displayModelChunksByPointMap_t::iterator nextI=i;
- ++nextI;
+ ++nextI;
displayModelChunk_t* chunk=i->second;
int baseline=i->first.first;
if(IntersectRect(&tempRect,&rect,&(chunk->rect))) {
@@ -230,7 +230,7 @@ void displayModel_t::clearRectangle(const RECT& rect, BOOL clearForText) {
}
void displayModel_t::copyRectangle(const RECT& srcRect, BOOL removeFromSource, BOOL opaqueCopy, BOOL srcInvert, const RECT& destRect, const RECT* destClippingRect, displayModel_t* destModel) {
- //Make sure neither source or destination rectangle is collapsed. Pointless and can cause zero division errors. #2885
+ //Make sure neither source or destination rectangle is collapsed. Pointless and can cause zero division errors. #2885
if(srcRect.left==srcRect.right||srcRect.top==srcRect.bottom||destRect.left==destRect.right||destRect.top==destRect.bottom) return;
if(!destModel) destModel=this;
RECT tempRect;
@@ -244,8 +244,8 @@ void displayModel_t::copyRectangle(const RECT& srcRect, BOOL removeFromSource, B
//Make copies of all the needed chunks, tweek their rectangle coordinates, truncate if needed, and store them in a temporary list
list copiedChunks;
for(displayModelChunksByPointMap_t::iterator i=chunksByYX.begin();i!=chunksByYX.end();++i) {
- //We only care about chunks that are overlapped by the source rectangle
- if(!IntersectRect(&tempRect,&srcRect,&(i->second->rect))) continue;
+ //We only care about chunks that are overlapped by the source rectangle
+ if(!IntersectRect(&tempRect,&srcRect,&(i->second->rect))) continue;
//Copy the chunk
displayModelChunk_t* chunk=new displayModelChunk_t(*(i->second));
if(srcInvert) {
@@ -267,7 +267,7 @@ void displayModel_t::copyRectangle(const RECT& srcRect, BOOL removeFromSource, B
if(chunk->rect.right>clippedDestRect.right) {
chunk->truncate(clippedDestRect.right,FALSE);
}
- //if the chunk is now empty due to truncation then just delete it and move on to the next
+ //if the chunk is now empty due to truncation then just delete it and move on to the next
if(chunk->text.length()==0) {
delete chunk;
continue;
diff --git a/nvdaHelper/remote/displayModel.h b/nvdaHelper/remote/displayModel.h
index d85a255a7e2..229c33781a4 100644
--- a/nvdaHelper/remote/displayModel.h
+++ b/nvdaHelper/remote/displayModel.h
@@ -90,7 +90,7 @@ struct displayModelChunk_t{
int direction;
HWND hwnd;
/**
- * Truncates the chunk's text so that only the text that fits in the resulting rectangle is left.
+ * Truncates the chunk's text so that only the text that fits in the resulting rectangle is left.
* @param truncatePointX the x position at which to truncate
* @param truncateBefore if true then the chunk is truncated from the left all the way up to truncation point, if false then its truncated from the point to the end.
*/
@@ -144,7 +144,7 @@ class displayModel_t: public LockableAutoFreeObject {
* @param rect the rectangle bounding the text.
* @param text the string of unicode text in the chunk.
* @param characterExtents an array of screen points denoting the end of each character relative to the start of the string
- * @param clippingRect a optional pointer to a rectangle which if specified will be used to clip the text so that none falls outside this rectangle.
+ * @param clippingRect a optional pointer to a rectangle which if specified will be used to clip the text so that none falls outside this rectangle.
*/
void insertChunk(const RECT& rect, int baseline, const std::wstring& text, POINT* characterExtents, const displayModelFormatInfo_t& formatInfo, int direction, const RECT* clippingRect);
@@ -161,7 +161,7 @@ class displayModel_t: public LockableAutoFreeObject {
/**
* Removes all chunks intersecting the given rectangle. Currently this must be called before inserting chunks as chunks should never overlap.
* @param rect the rectangle to clear.
- * @param clearForText if true then the part of any chunk covered by the rectangle will definitly be removed to make way for text. If False chunks will only be removed/mutated if the rectangle starts at or outside of, the chunk and overlaps it, or covers the chunk's baseline.
+ * @param clearForText if true then the part of any chunk covered by the rectangle will definitly be removed to make way for text. If False chunks will only be removed/mutated if the rectangle starts at or outside of, the chunk and overlaps it, or covers the chunk's baseline.
*/
void clearRectangle(const RECT& rect, BOOL clearForText=FALSE);
@@ -170,7 +170,7 @@ class displayModel_t: public LockableAutoFreeObject {
*/
void clearAll();
- inline void transposAndScaleCoordinate(long srcOffset, long destOffset, float scale, long& val) { val=(long)(((val-srcOffset)*scale)+destOffset); }
+ inline void transposAndScaleCoordinate(long srcOffset, long destOffset, float scale, long& val) { val=(long)(((val-srcOffset)*scale)+destOffset); }
/**
@@ -178,14 +178,14 @@ class displayModel_t: public LockableAutoFreeObject {
* @param srcRect the rectangle intersecting all the chunks in this model that will be copied.
* @param removeFromSource if true then the content will be moved, rather than copied
* @param opaqueCopy if true then the entire destination rectangle will be cleared before inserting any chunks, but if false then only space for each chunk will be cleared.
- * @param destRect the destination rectangle where the chunks should be placed
+ * @param destRect the destination rectangle where the chunks should be placed
* @param destClippingRect an optional rectangle which will be used to clip all content being copied in to the destination model
- * @param destModel a pointer to the displayModel the chunks should be copied to (if NULL then this model is used)
+ * @param destModel a pointer to the displayModel the chunks should be copied to (if NULL then this model is used)
*/
void copyRectangle(const RECT& srcRect, BOOL removeFromSource, BOOL opaqueCopy, BOOL srcInvert, const RECT& destRect, const RECT* destClippingRect, displayModel_t* destModel);
/**
- * Generates xml representing whitespace between chunks
+ * Generates xml representing whitespace between chunks
*/
void generateWhitespaceXML(HWND hwnd, long baseline, std::wstring& text);
diff --git a/nvdaHelper/remote/displayModelRemote.cpp b/nvdaHelper/remote/displayModelRemote.cpp
index cf106349409..006f02361a9 100644
--- a/nvdaHelper/remote/displayModelRemote.cpp
+++ b/nvdaHelper/remote/displayModelRemote.cpp
@@ -14,7 +14,7 @@ This license can be found at:
#include
#include
on_build_success: true
on_build_failure: true
- on_build_status_changed: true
+ on_build_status_changed: true
```
Save your edit, and you should now receive detailed email notifications to the committer email address you use with git, whenever a build succeeds or fails.
diff --git a/projectDocs/dev/contributing.md b/projectDocs/dev/contributing.md
index 4585db5054d..5b1c199d9c1 100644
--- a/projectDocs/dev/contributing.md
+++ b/projectDocs/dev/contributing.md
@@ -97,7 +97,7 @@ For instance:
You may add descriptions for multiple sections.
The sections are:
-
+
* New features
* Changes
* Bug fixes
diff --git a/projectDocs/dev/createDevEnvironment.md b/projectDocs/dev/createDevEnvironment.md
index 729bf3f1425..ff1f5b67ddf 100644
--- a/projectDocs/dev/createDevEnvironment.md
+++ b/projectDocs/dev/createDevEnvironment.md
@@ -46,7 +46,7 @@ To replicate the production build environment, use the 3.11.x minor version of P
#### Microsoft Visual Studio
* Microsoft Visual Studio 2022
- * To replicate the production build environment, use the [version of Visual Studio 2022 that AppVeyor is using](https://www.appveyor.com/docs/windows-images-software/#visual-studio-2022).
+ * To replicate the production build environment, use the [version of Visual Studio 2022 that AppVeyor is using](https://www.appveyor.com/docs/windows-images-software/#visual-studio-2022).
* When you do not use the Visual Studio IDE itself, you can download the [build tools](https://aka.ms/vs/17/release/vs_BuildTools.exe)
* When you are intending to use the Visual Studio IDE (not required for NVDA development), you can download [the community version](https://aka.ms/vs/17/release/vs_Community.exe), which is also used by AppVeyor
* The Professional and Enterprise versions are also supported
@@ -93,7 +93,7 @@ For reference, the following run time dependencies are included in Git submodule
* [wil](https://github.com/microsoft/wil/)
* [NVDA DiffMatchPatch](https://github.com/codeofdusk/nvda_dmp)
-Additionally, the following build time dependencies are included in the miscDeps git submodule:
+Additionally, the following build time dependencies are included in the miscDeps git submodule:
* xgettext and msgfmt from [GNU gettext](https://sourceforge.net/projects/cppcms/files/boost_locale/gettext_for_windows/)
diff --git a/projectDocs/dev/deprecations.md b/projectDocs/dev/deprecations.md
index ce0f13c7f52..7ce0d863b15 100644
--- a/projectDocs/dev/deprecations.md
+++ b/projectDocs/dev/deprecations.md
@@ -31,7 +31,7 @@ In order to improve the NVDA API, changes that will break future compatibility m
This can be done by using a version check to automate deprecation.
For example, if you wish to replace usages of `deprecatedSymbolName` with `newSymbolName`.
-When we begin work on `NEXT_YEAR`, `deprecatedSymbolName` will no longer be part of the NVDA API and all internal usages must be removed prior.
+When we begin work on `NEXT_YEAR`, `deprecatedSymbolName` will no longer be part of the NVDA API and all internal usages must be removed prior.
```python
from buildVersion import version_year
@@ -65,7 +65,7 @@ import controlTypes
dir(controlTypes)
```
-Changes different to moving or renaming symbols need to be considered carefully with a different approach.
+Changes different to moving or renaming symbols need to be considered carefully with a different approach.
Any API breaking changes such as deprecations marked for removal should be commented with the year of intended removal, and notes on how to implement the API change as an add-on developer and NVDA developer.
diff --git a/projectDocs/dev/developerGuide/developerGuide.md b/projectDocs/dev/developerGuide/developerGuide.md
index c31fd971193..7571cf02a4f 100644
--- a/projectDocs/dev/developerGuide/developerGuide.md
+++ b/projectDocs/dev/developerGuide/developerGuide.md
@@ -377,7 +377,7 @@ Both App Modules and Global Plugins share a common look and feel.
They are both Python source files (with a .py extension), they both define a special class containing all events, scripts and bindings, and they both may define custom classes to access controls, text content and complex documents.
However, they do differ in some ways.
-Custom appModules and globalPlugins can be packaged into NVDA add-ons.
+Custom appModules and globalPlugins can be packaged into NVDA add-ons.
This allows easy distribution, and provides a safe way for the user to install and uninstall the custom code.
Please refer to the [Add-ons section](#Addons) later on in this document.
@@ -416,14 +416,14 @@ For example to map the App Module named "time_app_mod" to the "time" executable
import appModuleHandler
import globalPluginHandler
-
-
+
+
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
-
+
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
appModuleHandler.registerExecutableWithAppModule("time", "time_app_mod")
-
+
def terminate(self, *args, **kwargs):
super().terminate(*args, **kwargs)
appModuleHandler.unregisterExecutable("time")
@@ -444,16 +444,16 @@ Note though that if you move outside of Notepad - for instance, to Windows Explo
--- start ---
# Notepad App Module for NVDA
# Developer guide example 1
-
+
import appModuleHandler
-
+
class AppModule(appModuleHandler.AppModule):
-
+
def event_gainFocus(self, obj, nextHandler):
import tones
tones.beep(550, 50)
nextHandler()
-
+
--- end ---
This App Module file starts with two comment lines, which describe what the file is for.
@@ -487,16 +487,16 @@ The following example is same as Notepad app module above except this is for an
--- start ---
# wwahost/test App Module for NVDA
# Developer guide example 2
-
+
from nvdaBuiltin.appModules.wwahost import *
-
+
class AppModule(AppModule):
-
+
def event_gainFocus(self, obj, nextHandler):
import tones
tones.beep(550, 50)
nextHandler()
-
+
--- end ---
The biggest difference from Notepad app module is where wwahost app module comes from.
@@ -548,18 +548,18 @@ From anywhere, you can now press NVDA+shift+v to have NVDA's version spoken and
--- start ---
# Version announcement plugin for NVDA
# Developer guide example 3
-
+
import globalPluginHandler
from scriptHandler import script
import ui
import versionInfo
-
+
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
-
+
@script(gesture="kb:NVDA+shift+v")
def script_announceNVDAVersion(self, gesture):
ui.message(versionInfo.version)
-
+
--- end ---
This Global Plugin file starts with two comment lines, which describe what the file is for.
@@ -695,7 +695,7 @@ For example:
gestures=["kb:NVDA+shift+t", "kb:NVDA+alt+r"]
)
def script_sayDateTime(self, gesture):
-
+
--- end ---
In this example, your script will be listed in the input gestures dialog under the "Miscellaneous" category.
@@ -750,14 +750,14 @@ Once saved in the right place, either restart NVDA or choose Reload Plugins foun
--- start ---
#Window utility scripts for NVDA
#Developer guide example 4
-
+
import globalPluginHandler
from scriptHandler import script
import ui
import api
-
+
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
-
+
@script(
description=_("Announces the window class name of the current focus object"),
gesture="kb:NVDA+leftArrow"
@@ -767,7 +767,7 @@ Once saved in the right place, either restart NVDA or choose Reload Plugins foun
name = focusObj.name
windowClassName = focusObj.windowClassName
ui.message("class for %s window: %s" % (name, windowClassName))
-
+
@script(
description=_("Announces the window control ID of the current focus object"),
gesture="kb:NVDA+rightArrow"
@@ -777,7 +777,7 @@ Once saved in the right place, either restart NVDA or choose Reload Plugins foun
name = focusObj.name
windowControlID = focusObj.windowControlID
ui.message("Control ID for %s window: %d" % (name, windowControlID))
-
+
--- end ---
### Events {#events}
@@ -838,11 +838,11 @@ As always, the file must have a .py extension.
--- start ---
import appModuleHandler
-
+
class AppModule(appModuleHandler.AppModule):
-
+
sleepMode = True
-
+
--- end ---
### Providing Custom NVDA Object Classes {#customNVDAObjectClasses}
@@ -887,19 +887,19 @@ The following code can be copied and pasted in to a text file, then saved in the
from NVDAObjects.IAccessible import IAccessible
import controlTypes
import ui
-
+
class AppModule(appModuleHandler.AppModule):
-
+
def chooseNVDAObjectOverlayClasses(self, obj, clsList):
if obj.windowClassName == "Edit" and obj.role == controlTypes.Role.EDITABLETEXT:
clsList.insert(0, EnhancedEditField)
-
+
class EnhancedEditField(IAccessible):
-
+
@script(gesture="kb:NVDA+l")
def script_reportLength(self, gesture):
ui.message("%d" % len(self.value))
-
+
--- end ---
### Making Small Changes to an NVDA Object in App Modules {#smallChangesToNVDAObjectInAppModules}
@@ -924,9 +924,9 @@ The following code can be copied and pasted in to a text file, then saved in the
--- start ---
import appModuleHandler
from NVDAObjects.window import Window
-
+
class AppModule(appModuleHandler.AppModule):
-
+
def event_NVDAObject_init(self, obj):
if isinstance(obj, Window) and obj.windowClassName == "Edit" and obj.windowControlID == 15:
obj.name = "Content"
@@ -1047,7 +1047,7 @@ The following plugins and drivers can be included in an add-on:
If you need to execute code as your add-on is being installed or uninstalled from NVDA (e.g. to validate license information or to copy files to a custom location), you can provide a Python file called installTasks.py in the archive which contains special functions that NVDA will call while installing or uninstalling your add-on.
This file should avoid loading any modules that are not absolutely necessary, especially Python C extensions or dlls from your own add-on, as this could cause later removal of the add-on to fail.
-However, if this does happen, the add-on directory will be renamed and then deleted after the next restart of NVDA.
+However, if this does happen, the add-on directory will be renamed and then deleted after the next restart of NVDA.
Finally, it should not depend on the existence or state of other add-ons, as they may not be installed, have already been removed or not yet be initialized.
#### the onInstall function {#onInstall}
@@ -1201,7 +1201,7 @@ See [Snapshot Variables](#PythonConsoleSnapshotVariables) for more details.
The console is similar to the standard interactive Python interpreter.
Input is accepted one line at a time and processed when enter is pressed.
-Multiple lines can be pasted at once from the clipboard and will be processed one by one.
+Multiple lines can be pasted at once from the clipboard and will be processed one by one.
You can navigate through the history of previously entered lines using the up and down arrow keys.
Output (responses from the interpreter) will be spoken when enter is pressed.
diff --git a/projectDocs/dev/featureFlags.md b/projectDocs/dev/featureFlags.md
index 1abf40be4d0..fe86b44bfc1 100644
--- a/projectDocs/dev/featureFlags.md
+++ b/projectDocs/dev/featureFlags.md
@@ -13,7 +13,7 @@ A boolean feature, must have 3 states selectable by the user:
- `Default` (NVDA developer recommendation)
This allows a choice between the following use-cases to be made at any point in time:
-- **Explicitly opt-in** to the feature, regardless of the default behavior.
+- **Explicitly opt-in** to the feature, regardless of the default behavior.
An early adopter may choose to do this to test the feature and provide feedback.
- **Explicitly opt-out** of the feature, regardless of the default behavior.
A user may find the pre-existing behavior acceptable, and wants the maximum delay to adopt the new feature.
diff --git a/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md b/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md
index c8e3eb6225a..95053e07b19 100644
--- a/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md
+++ b/projectDocs/dev/githubPullRequestTemplateExplanationAndExamples.md
@@ -14,12 +14,12 @@ which points to this wiki page, it can be left in place and will not appear once
Feel free to delete it, i.e. all text up to and including `-->`.
### Link to issue number:
-Please include the issue number here, including information on how this pull request is related to
+Please include the issue number here, including information on how this pull request is related to
it.
This helps us to keep the information linked together.
If this is a minor/trivial change an issue does not need to be created.
If in doubt, please create one.
-Note that Github
+Note that Github
[allows you to automatically close issues using keywords](https://help.github.com/en/articles/closing-issues-using-keywords).
For example, when writing `closes #7777` or `fixes #4242` in the body of the description,
the mentioned issue will automatically be closed when the pull request is merged into the master
@@ -53,8 +53,8 @@ More broadly, try to answer the following questions:
- Have you ensured testing coverage across all supported operating systems?
- Have you considered possible regressions (related features or behaviours that may break)?
-Please use this section as an opportunity to try to convince us (and yourself) that your proposed
-change should be merged.
+Please use this section as an opportunity to try to convince us (and yourself) that your proposed
+change should be merged.
Often in face to face development it's useful to demonstrate a change, quite often bugs are noticed
at this point when the new person asks for some variation in testing approach.
diff --git a/projectDocs/dev/selfSignedBuild.md b/projectDocs/dev/selfSignedBuild.md
index c302f50d20b..cc774c8eac7 100644
--- a/projectDocs/dev/selfSignedBuild.md
+++ b/projectDocs/dev/selfSignedBuild.md
@@ -7,7 +7,7 @@ Copies of NVDA signed by a self-signed certificate will not function on systems
Following are instructions on how to generate and install a self-signed certificate.
This is not supported and should only be attempted by developers who know what they are doing and are aware of the risks.
-If the private key is compromised, this poses a serious security risk to your system.
+If the private key is compromised, this poses a serious security risk to your system.
Do not forget to [remove the certificate](#remove-the-certificate) when you are done testing.
diff --git a/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md b/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md
index e3f60ee5287..41b22ce33c3 100644
--- a/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md
+++ b/projectDocs/issues/githubIssueTemplateExplanationAndExamples.md
@@ -4,7 +4,7 @@ This page is meant to serve as an explanation for how to fill out our
[Github issue templates](https://github.com/nvaccess/nvda/blob/master/.github/ISSUE_TEMPLATE/).
The template uses github markdown, to provide formatting for headings, lists, quotes etc.
-If you are not familiar, please take some time to learn about
+If you are not familiar, please take some time to learn about
[Github markdown](https://guides.github.com/features/mastering-markdown/)
**Warning**: In all but exceptional circumstances we require one of these templates to be completed.
@@ -40,7 +40,7 @@ remember to attach one.
More [instructions are available on the wiki](https://github.com/nvaccess/nvda/wiki/LogFilesAndCrashDumps). If you are getting a crash dump file (nvda_crash.dmp) please also include it.
#### Screenshots
-While we welcome **images/screenshots** to help explain a problem, be aware that many of the
+While we welcome **images/screenshots** to help explain a problem, be aware that many of the
developers of NVDA are blind and will greatly appreciate this image being described in text.
Most tools allow you to copy text out of them.
@@ -224,7 +224,7 @@ Include links to discussion threads if applicable, for example:
- https://nvda.groups.io/g/nvda
### Steps to reproduce or illustrate the issue (if applicable)
-If possible, provide steps to demonstrate or reproduce the issue.
+If possible, provide steps to demonstrate or reproduce the issue.
Refer to [Steps to reproduce](#steps-to-reproduce) for more information.
If this or the following sections are not applicable, write "N/A."
diff --git a/projectDocs/issues/triage.md b/projectDocs/issues/triage.md
index 8bb2771d4e5..3e874c201ba 100644
--- a/projectDocs/issues/triage.md
+++ b/projectDocs/issues/triage.md
@@ -53,7 +53,7 @@ This is the kind of information that might help when investigating the issue fur
- an error noise
- A log message
- If there was an error noise or log message, was there any unexpected behaviour aside from this? For example, did NVDA fail to report something it should have?
-- Even if it seems obvious, what should happen instead?
+- Even if it seems obvious, what should happen instead?
- Its worth clarifying this with the user, it helps to make sure everyone is on the same page, and that we truly understand what the issue is about.
- What version of NVDA was being used. Its good to get something like: stable, beta, rc, alpha. But much better to get the exact version of NVDA, retrieved from the NVDA menu by going to "Help" then "About". "alpha-28931,186a8d70"
- In which version of NVDA did this work as expected?
@@ -183,14 +183,14 @@ Bugs/regressions are given priorities based on an estimate of their severity and
- UX inefficient (e.g. double speaking)
- Web standard not followed causing app/web authors to require workarounds
- `P5`
- - Other feature requests affecting a small subset of users
+ - Other feature requests affecting a small subset of users
## Legacy issues
Many older issues do not follow our issue template and have missing information.
Often they have conversation spanning years.
Summarising this information and opening a new issue filling out the issue template would be extremely useful in triaging these issues.
-NV Access migrated tickets from our old issue tracker (Trac) into Github issues. These issues can be identified by having an author of `nvaccessauto`.
+NV Access migrated tickets from our old issue tracker (Trac) into Github issues. These issues can be identified by having an author of `nvaccessauto`.
### Missing attachments
Some of the migrated issues have comments that indicate an attachment should be available, but it is not.
diff --git a/projectDocs/product_vision.md b/projectDocs/product_vision.md
index 71363873cf7..2c52aa69098 100644
--- a/projectDocs/product_vision.md
+++ b/projectDocs/product_vision.md
@@ -1,7 +1,7 @@
## Product Vision
A world where blind and vision impaired people can independently and fully interact with the Windows Operating System and popular third party applications, enabling them to participate in and contribute to society.
Blind and vision impaired people are empowered to control their own destiny and ensure this vision, through being able to significantly contribute to the technology that makes this possible.
-All blind and vision impaired people deserve these rights and opportunities, no matter the language they speak, their geographic location, economic status, or sensory, physical, cognitive, or mental abilities.
+All blind and vision impaired people deserve these rights and opportunities, no matter the language they speak, their geographic location, economic status, or sensory, physical, cognitive, or mental abilities.
## Product description
NVDA (NonVisual Desktop Access) is software that allows blind and vision impaired people to independently interact with the Windows Operating System and popular third party applications by outputting content in either synthetic speech or via a refreshable Braille Display.
@@ -18,10 +18,10 @@ Developed by NV Access in partnership with a dedicated open source community, NV
* The vast majority of contributors to the NVDA project are blind or vision impaired, and are users of the product themselves.
3. Multilingual: Ensure that NVDA can be used by people no matter what language they speak:
* NVDA provides mechanisms for volunteers to translate user interface messages and documentation.
- * Release processes provide time and reminders for volunteers to contribute translations to NVDA.
+ * Release processes provide time and reminders for volunteers to contribute translations to NVDA.
4. Stability: Ensure NVDA is stable, minimizes freezes, and avoids drastic updates that could disrupt user experience:
* NVDA strives to support any breaking changes in Windows or supported popular third party applications before they reach the user.
- * NVDA updates should not drastically change or remove pre-existing features or defined behaviour without clearly warning the user first.
+ * NVDA updates should not drastically change or remove pre-existing features or defined behaviour without clearly warning the user first.
* NVDA's code should do its best to recover from application freezes, allowing the user to still interact with the rest of the Operating System.
5. Quality: Ensure NVDA's code is high-quality, safe, and that bugs are caught before reaching a release:
* All code is reviewed by at least one other core contributor.
@@ -30,19 +30,19 @@ Developed by NV Access in partnership with a dedicated open source community, NV
6. Security: Ensure that NVDA does not place a user at risk of security attacks:
* NVDA prioritizes user security, striving to eliminate risks of remote control attacks or data leaks.
* A strict process exists to follow a security report from implementation to rollout.
- * Critical security fixes are minimized in size and complexity to focus on the exact issue reported, which lessens the chance of other security or instabilities accidentally being introduced.
- * NVDA can optionally blank the screen while running, to make sure that another person cannot view personal or sensitive information without the blind or vision impaired user knowing.
+ * Critical security fixes are minimized in size and complexity to focus on the exact issue reported, which lessens the chance of other security or instabilities accidentally being introduced.
+ * NVDA can optionally blank the screen while running, to make sure that another person cannot view personal or sensitive information without the blind or vision impaired user knowing.
7. Efficient: Ensure responsiveness to user input, but also energy efficiency where possible:
- * Make use of newer more efficient APIs where possible, at the same time falling back to older APIs to ensure functionality on older systems.
+ * Make use of newer more efficient APIs where possible, at the same time falling back to older APIs to ensure functionality on older systems.
* Periodically remove technical debt and refactor code to make code more efficient and understandable, making sure to maintain compatibility with existing scenarios and OS / application versions still supported.
8. Innovative: Strive to push the boundaries of what is possible and to avoid stagnation for both NVDA and its competitors:
* Prototype new ideas and make them available through try builds.
* Promote the sharing and healthy debate of ideas on developer email lists and GitHub Discussions.
9. Compliance: Ensure app / web developers can rely upon NVDA to make best use of the accessibility they implement:
* NVDA strives to comply with all application and web accessibility standards where possible.
- * Where there is disagreement or inability to comply with an accessibility standard, clear reasoning and possible practical alternatives are documented.
+ * Where there is disagreement or inability to comply with an accessibility standard, clear reasoning and possible practical alternatives are documented.
* Tools such as the NVDA speech viewer help application and web developers use NVDA to test and verify the accessibility of their products.
-10. Collaboration: Ensure that blind and sighted people can collaborate together:
+10. Collaboration: Ensure that blind and sighted people can collaborate together:
* NVDA can clearly visually highlight the position at which the user is currently reading or navigating, to allow another person to be aware of exactly where the user is on the screen.
* The NVDA speech viewer can be used to display the text currently being spoken, so that a sighted person who may have trouble understanding the synthesized speech can follow along.
11. Documentation: Ensure users have the knowledge to fully leverage NVDA's features for productivity in work and everyday life:
@@ -61,11 +61,11 @@ Developed by NV Access in partnership with a dedicated open source community, NV
* NVDA allows the user to configure attributes of the output such as the voice rate and pitch, punctuation, and what Braille standard is used.
* NVDA allows the user to create configuration profiles, so that the user can easily switch configurations depending on the particular task they are performing.
15. Extendable: Ensure that NVDA can be easily enhanced and customized to meet specific user needs and requirements:
- * NVDA allows the creation and integration of community created add-ons, providing support for extra speech synthesizers, refreshable Braille displays, visual enhancements for low vision, and more third party applications.
+ * NVDA allows the creation and integration of community created add-ons, providing support for extra speech synthesizers, refreshable Braille displays, visual enhancements for low vision, and more third party applications.
* NVDA allows the user to browse, download and install available add-ons from within NVDA itself.
* NVDA provides freedom for add-ons to find innovative solutions by allowing them broad access to NVDA's internals.
* NVDA ensures add-ons do not break by postponing API breakages to once per year, announcing these changes many months ahead of time.
- * NVDA Protects users from installing an add-on that is incompatible with the current version of NVDA, allowing the user to override this protection if they understand the risk.
+ * NVDA Protects users from installing an add-on that is incompatible with the current version of NVDA, allowing the user to override this protection if they understand the risk.
16. Utility: NVDA provides solutions for blind and vision impaired people in accessing technology that:
* provide utility to a significant proportion of users in day-to-day use.
* are a necessity for a small subset of our users, without which NVDA would not be functional for them.
diff --git a/projectDocs/translating/readme.md b/projectDocs/translating/readme.md
index ff224ae7865..4c4f5cf77ae 100644
--- a/projectDocs/translating/readme.md
+++ b/projectDocs/translating/readme.md
@@ -8,7 +8,7 @@ There are several tasks to be done, and this document hopes to give you an overv
Translators should subscribe to the [NVDA translations mailing list](https://groups.io/g/nvda-translations) hosted at Groups.IO.
-It is an English low traffic list devoted to the discussion of translation.
+It is an English low traffic list devoted to the discussion of translation.
Important messages that relate to translators will also be sent here, e.g. before official NVDA releases, to remind translators to make sure their localization is up to date.
## Important Dates
@@ -44,7 +44,7 @@ Read [Files to be Localized](#files-to-be-localized) to learn the translation fo
You should contact the existing maintainer of your language, and discuss your suggestions and changes.
Together you should be able to agree on the best translation and terms to be used, and the necessary changes can be made.
-You can send an email to the translation mailing list to find out the correct person.
+You can send an email to the translation mailing list to find out the correct person.
If your language is no longer maintained, you can request to be the new maintainer for the language via the [NVDA translations mailing list](https://groups.io/g/nvda-translations).
diff --git a/security.md b/security.md
index 47586360e16..7d1ff7ac2a2 100644
--- a/security.md
+++ b/security.md
@@ -6,7 +6,7 @@ Please use [our advisory template](./projectDocs/issues/securityAdvisoryTemplate
Alternatively, please report security issues via an email to [info@nvaccess.org](mailto:info@nvaccess.org).
You should receive an acknowledgement in the advisory or via email response within 3 business days.
-If for some reason you do not, please follow up via email to ensure we received your original message.
+If for some reason you do not, please follow up via email to ensure we received your original message.
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue.
This information will help us triage your report more quickly.
@@ -61,4 +61,3 @@ As details of the vulnerability will be available in the code repository, immedi
* P1 (Critical): Immediate attention from core developers and/or the Security Advisory Group. Other development tasks may be temporarily deprioritised.
* P2 (High): Dedicated resources will be allocated, with prioritisation based on severity and available development bandwidth.
-
diff --git a/source/UIAHandler/_remoteOps/readme.md b/source/UIAHandler/_remoteOps/readme.md
index 90def0ec1f6..9558dda0637 100644
--- a/source/UIAHandler/_remoteOps/readme.md
+++ b/source/UIAHandler/_remoteOps/readme.md
@@ -25,12 +25,12 @@ def code(ra: RemoteAPI):
element = ra.newElement(focusElement)
# Create a new array to hold the names we collect.
names = ra.newArray()
- # Declare a while loop that will walk up the ancestors and collect the names.
+ # Declare a while loop that will walk up the ancestors and collect the names.
with ra.whileBlock(lambda: element.isNull().inverse()):
# Fetch the name property of this element and store it in the array.
name = element.getPropertyValue(UIA.UIA_NamePropertyId)
names.append(name)
- # Fetch the element's parent and point element to it.
+ # Fetch the element's parent and point element to it.
parent = element.getParentElement()
element.set(parent)
# Now back outside the while loop.
@@ -101,7 +101,7 @@ This will be covered more in further sections about control flow.
But the most important thing to remember here is that you should avoid using any of Python's own control flow (such as if or while, as it most likely will not do what you expected).
The remote API has all the control flow you need, such as ifBlock, elseBlock, whileBlock, tryBlock, again covered in later sections.
-### Method arguments
+### Method arguments
When providing arguments to methods, you can use remote values previously declared in the operation, or you can use literal Python values.
When using literal Python values, these will be automatically remoted as special constant values for you.
For example:
@@ -248,7 +248,7 @@ element.set(parent)
This is useful when walking the element tree in a loop.
### UI Automation text ranges
-#### Declaring a text range
+#### Declaring a text range
To create a new remote text range, call `ra.newTextRange`, giving it an existing IUIAutomationTextRange comtypes pointer as its argument:
```py
textRange = ra.newElement(UIATextRange)
@@ -300,10 +300,10 @@ with ra.whileBlock(lambda: counter < 20):
# If it fails, break out of the loop.
with ra.ifBlock(logicalTempRange.end.moveByUnit(TextUnit_Word, 1) == 0):
ra.breakLoop()
- # If our temp range has passed the end of the original text range, break out of the loop.
+ # If our temp range has passed the end of the original text range, break out of the loop.
with ra.ifBlock(logicalTempRange.end > logicalTextRange.end):
ra.breakLoop()
- # collect the text and add it to the words array.
+ # collect the text and add it to the words array.
text = logicalTempRange.textRange.getText(-1)
words.append(text)
# collapse the range to the end.
@@ -349,7 +349,7 @@ with ra.whileBlock(lambda: counter < 5):
`ra.breakLoop` and `ra.continueLoop` methods can be called within the loop body to break or continue respectively.
Please note that the condition of the while loop must be placed in a lambda as it needs to be fully evaluated within the top of the loop.
-If this was not done, the instructions that produced the final boolean condition would appear before the loop and never get re-run on subsequent iterations.
+If this was not done, the instructions that produced the final boolean condition would appear before the loop and never get re-run on subsequent iterations.
#### try-catch
If an action causes an error, it is possible to catch the error by placing those actions in a `with` statement using the `ra.tryBlock` method.
@@ -453,7 +453,7 @@ Although the `for` loop will see each yielded value separately, they will only p
## Debugging
It can be tricky to debug a remote operation as it executes in the remote provider.
Therefore the library contains several features which can help.
-
+
### Dumping instructions
The library can dump all the instructions to NVDA's log each time an operation is built, by setting the Operation's `enableCompiletimeLogging` keyword argument to True.
Even if left as False, instructions will still be automatically dumped to NVDA's log if there is an uncaught error while executing, or the instruction limit is reached and it has run out of tries.
@@ -463,7 +463,7 @@ counter = ra.newInt(0, static=True)
with ra.whileBlock(lambda: counter < 20000):
with ra.ifBlock((counter % 1000) == 0):
ra.Yield(counter)
- counter += 1
+ counter += 1
```
And now the instruction dump:
@@ -521,7 +521,7 @@ main:
--- End --
```
-Looking at the dump we can see the library stores instructions in three specific sections:
+Looking at the dump we can see the library stores instructions in three specific sections:
* `static`: for initializing static instructions. this section is replaced before each execution.
* `const`: This section holds values which have been automatically remoted, and are used through out the rest of the instructions.
* `main`: the instructions implementing the main logic of the operation.
@@ -543,13 +543,13 @@ It takes one or more literal strings and or remote values, and concatinates them
For remote values that are not strings, `logRuntimeMessage` uses the remote value's `stringify` method to produce a string representation of the value.
After the operation is executed, the remote log is marshalled back and dumped to NvDA's log, thereby giving the ability to trace what is happening during the execution.
-Though be aware that as remote logging itself involves creating and manipulating remote values, then the number of instructions can change quite significantly with remote logging enabled.
+Though be aware that as remote logging itself involves creating and manipulating remote values, then the number of instructions can change quite significantly with remote logging enabled.
### Local mode
When unit testing this library, or in a scenario where remote operations is unavailable but you want to use the exact same algorithm but locally, you can set the Operation's `localMode` keyword argument to True.
This causes all instructions to be executed locally, rather than in a remote provider.
This will of course be significantly slower, as every instruction that manipulates an element or text range will be itself one cross-process call.
-However, it is a useful means of testing and debugging, and much care has been taken to ensure that the results and side-effects are identical to executing it remotely.
+However, it is a useful means of testing and debugging, and much care has been taken to ensure that the results and side-effects are identical to executing it remotely.
This differs some what from Microsoft's original remote operations library which implemented its local mode so that instructions were executed locally at build time, and executing did nothing.
This library produces instructions just as it would remotely, but it is these low-level instructions that are executed locally at execution time, following all the same rules and limitations that executing remotely would.
diff --git a/source/comInterfaces/_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py b/source/comInterfaces/_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py
index 828b204e79e..d252e46ca62 100644
--- a/source/comInterfaces/_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py
+++ b/source/comInterfaces/_944DE083_8FB8_45CF_BCB7_C477ACB2F897_0_1_0.py
@@ -73,7 +73,7 @@ class IUIAutomationElement(comtypes.gen._00020430_0000_0000_C000_000000000046_0_
# class IUIAutomationTextEditTextChangedEventHandler_Impl(object):
# def HandleTextEditTextChangedEvent(self, sender, TextEditChangeType, eventStrings):
# '-no docstring-'
-# #return
+# #return
#
# values for enumeration 'StructureChangeType'
StructureChangeType_ChildAdded = 0
@@ -195,7 +195,7 @@ class IUIAutomationFocusChangedEventHandler(comtypes.gen._00020430_0000_0000_C00
# class IUIAutomationFocusChangedEventHandler_Impl(object):
# def HandleFocusChangedEvent(self, sender):
# '-no docstring-'
-# #return
+# #return
#
UIA_Transform2CanZoomPropertyId = 30133 # Constant c_int
@@ -311,7 +311,7 @@ class UiaChangeInfo(Structure):
# class IUIAutomationChangesEventHandler_Impl(object):
# def HandleChangesEvent(self, sender, uiaChanges, changesCount):
# '-no docstring-'
-# #return
+# #return
#
UIA_IsTextPattern2AvailablePropertyId = 30119 # Constant c_int
UIA_StylesExtendedPropertiesPropertyId = 30126 # Constant c_int
@@ -565,7 +565,7 @@ class IUIAutomationNotificationEventHandler(comtypes.gen._00020430_0000_0000_C00
# class IUIAutomationNotificationEventHandler_Impl(object):
# def HandleNotificationEvent(self, sender, NotificationKind, NotificationProcessing, displayString, activityId):
# '-no docstring-'
-# #return
+# #return
#
UIA_Transform2ZoomMinimumPropertyId = 30146 # Constant c_int
@@ -665,7 +665,7 @@ class IUIAutomationMultipleViewPattern(comtypes.gen._00020430_0000_0000_C000_000
#
# def SetCurrentView(self, view):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentCurrentView(self):
@@ -1089,7 +1089,7 @@ class IUIAutomationTogglePattern(comtypes.gen._00020430_0000_0000_C000_000000000
# class IUIAutomationTogglePattern_Impl(object):
# def Toggle(self):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentToggleState(self):
@@ -1339,7 +1339,7 @@ class IAccessible(comtypes.gen._00020430_0000_0000_C000_000000000046_0_2_0.IDisp
#
# def accSelect(self, flagsSelect, varChild):
# '-no docstring-'
-# #return
+# #return
#
# def accLocation(self, varChild):
# '-no docstring-'
@@ -1355,7 +1355,7 @@ class IAccessible(comtypes.gen._00020430_0000_0000_C000_000000000046_0_2_0.IDisp
#
# def accDoDefaultAction(self, varChild):
# '-no docstring-'
-# #return
+# #return
#
UIA_StrikethroughStyleAttributeId = 40026 # Constant c_int
UIA_IsItalicAttributeId = 40014 # Constant c_int
@@ -1555,15 +1555,15 @@ class IUIAutomationTransformPattern(comtypes.gen._00020430_0000_0000_C000_000000
# class IUIAutomationTransformPattern_Impl(object):
# def Move(self, x, y):
# '-no docstring-'
-# #return
+# #return
#
# def Resize(self, width, height):
# '-no docstring-'
-# #return
+# #return
#
# def Rotate(self, degrees):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentCanMove(self):
@@ -2253,43 +2253,43 @@ class IUIAutomationProxyFactoryMapping(comtypes.gen._00020430_0000_0000_C000_000
#
# def AddAutomationEventHandler(self, eventId, element, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveAutomationEventHandler(self, eventId, element, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddPropertyChangedEventHandlerNativeArray(self, element, scope, cacheRequest, handler, propertyArray, propertyCount):
# '-no docstring-'
-# #return
+# #return
#
# def AddPropertyChangedEventHandler(self, element, scope, cacheRequest, handler, propertyArray):
# '-no docstring-'
-# #return
+# #return
#
# def RemovePropertyChangedEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddStructureChangedEventHandler(self, element, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveStructureChangedEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddFocusChangedEventHandler(self, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveFocusChangedEventHandler(self, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveAllEventHandlers(self):
# '-no docstring-'
-# #return
+# #return
#
# def IntNativeArrayToSafeArray(self, array, arrayCount):
# '-no docstring-'
@@ -2522,7 +2522,7 @@ class IUIAutomationValuePattern(comtypes.gen._00020430_0000_0000_C000_0000000000
# class IUIAutomationValuePattern_Impl(object):
# def SetValue(self, val):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentValue(self):
@@ -2723,27 +2723,27 @@ class IUIAutomationSpreadsheetItemPattern(comtypes.gen._00020430_0000_0000_C000_
#
# def SetTable(self, factoryList):
# '-no docstring-'
-# #return
+# #return
#
# def InsertEntries(self, before, factoryList):
# '-no docstring-'
-# #return
+# #return
#
# def InsertEntry(self, before, factory):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveEntry(self, index):
# '-no docstring-'
-# #return
+# #return
#
# def ClearTable(self):
# '-no docstring-'
-# #return
+# #return
#
# def RestoreDefaultTable(self):
# '-no docstring-'
-# #return
+# #return
#
UIA_GridPatternId = 10006 # Constant c_int
UIA_ValuePatternId = 10002 # Constant c_int
@@ -3336,7 +3336,7 @@ class IUIAutomationElement3(IUIAutomationElement2):
# class IUIAutomationElement_Impl(object):
# def SetFocus(self):
# '-no docstring-'
-# #return
+# #return
#
# def GetRuntimeId(self):
# '-no docstring-'
@@ -3834,7 +3834,7 @@ class IUIAutomationElement3(IUIAutomationElement2):
# class IUIAutomationElement3_Impl(object):
# def ShowContextMenu(self):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentIsPeripheral(self):
@@ -3896,11 +3896,11 @@ class IUIAutomation4(IUIAutomation3):
# class IUIAutomation3_Impl(object):
# def AddTextEditTextChangedEventHandler(self, element, scope, TextEditChangeType, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveTextEditTextChangedEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
IUIAutomation4._methods_ = [
@@ -3929,11 +3929,11 @@ class IUIAutomation4(IUIAutomation3):
# class IUIAutomation4_Impl(object):
# def AddChangesEventHandler(self, element, scope, changeTypes, changesCount, pCacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveChangesEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
UIA_TextPattern2Id = 10024 # Constant c_int
UIA_Text_TextSelectionChangedEventId = 20014 # Constant c_int
@@ -4195,7 +4195,7 @@ class IUIAutomationWindowPattern(comtypes.gen._00020430_0000_0000_C000_000000000
# class IUIAutomationWindowPattern_Impl(object):
# def Close(self):
# '-no docstring-'
-# #return
+# #return
#
# def WaitForInputIdle(self, milliseconds):
# '-no docstring-'
@@ -4203,7 +4203,7 @@ class IUIAutomationWindowPattern(comtypes.gen._00020430_0000_0000_C000_000000000
#
# def SetWindowVisualState(self, state):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentCanMaximize(self):
@@ -4478,11 +4478,11 @@ class IUIAutomationScrollPattern(comtypes.gen._00020430_0000_0000_C000_000000000
# class IUIAutomationScrollPattern_Impl(object):
# def Scroll(self, horizontalAmount, verticalAmount):
# '-no docstring-'
-# #return
+# #return
#
# def SetScrollPercent(self, horizontalPercent, verticalPercent):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentHorizontalScrollPercent(self):
@@ -4729,11 +4729,11 @@ class IUIAutomationTransformPattern2(IUIAutomationTransformPattern):
# class IUIAutomationTransformPattern2_Impl(object):
# def Zoom(self, zoomValue):
# '-no docstring-'
-# #return
+# #return
#
# def ZoomByUnit(self, ZoomUnit):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentCanZoom(self):
@@ -4813,11 +4813,11 @@ class IUIAutomation5(IUIAutomation4):
# class IUIAutomation5_Impl(object):
# def AddNotificationEventHandler(self, element, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveNotificationEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
UIA_MenuModeEndEventId = 20019 # Constant c_int
@@ -4986,7 +4986,7 @@ class IUIAutomationTextRange2(IUIAutomationTextRange):
#
# def ExpandToEnclosingUnit(self, TextUnit):
# '-no docstring-'
-# #return
+# #return
#
# def FindAttribute(self, attr, val, backward):
# '-no docstring-'
@@ -5022,23 +5022,23 @@ class IUIAutomationTextRange2(IUIAutomationTextRange):
#
# def MoveEndpointByRange(self, srcEndPoint, range, targetEndPoint):
# '-no docstring-'
-# #return
+# #return
#
# def Select(self):
# '-no docstring-'
-# #return
+# #return
#
# def AddToSelection(self):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveFromSelection(self):
# '-no docstring-'
-# #return
+# #return
#
# def ScrollIntoView(self, alignToTop):
# '-no docstring-'
-# #return
+# #return
#
# def GetChildren(self):
# '-no docstring-'
@@ -5054,7 +5054,7 @@ class IUIAutomationTextRange2(IUIAutomationTextRange):
# class IUIAutomationTextRange2_Impl(object):
# def ShowContextMenu(self):
# '-no docstring-'
-# #return
+# #return
#
UIA_AnnotationAnnotationTypeIdPropertyId = 30113 # Constant c_int
@@ -5149,31 +5149,31 @@ class IUIAutomationActiveTextPositionChangedEventHandler(comtypes.gen._00020430_
# class IUIAutomationEventHandlerGroup_Impl(object):
# def AddActiveTextPositionChangedEventHandler(self, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddAutomationEventHandler(self, eventId, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddChangesEventHandler(self, scope, changeTypes, changesCount, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddNotificationEventHandler(self, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddPropertyChangedEventHandler(self, scope, cacheRequest, handler, propertyArray, propertyCount):
# '-no docstring-'
-# #return
+# #return
#
# def AddStructureChangedEventHandler(self, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def AddTextEditTextChangedEventHandler(self, scope, TextEditChangeType, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
UIA_CulturePropertyId = 30015 # Constant c_int
@@ -5482,7 +5482,7 @@ class IUIAutomationRangeValuePattern(comtypes.gen._00020430_0000_0000_C000_00000
# class IUIAutomationRangeValuePattern_Impl(object):
# def SetValue(self, val):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentValue(self):
@@ -5658,7 +5658,7 @@ class IUIAutomationInvokePattern(comtypes.gen._00020430_0000_0000_C000_000000000
# class IUIAutomationInvokePattern_Impl(object):
# def Invoke(self):
# '-no docstring-'
-# #return
+# #return
#
@@ -5703,7 +5703,7 @@ class IUIAutomationDockPattern(comtypes.gen._00020430_0000_0000_C000_00000000004
# class IUIAutomationDockPattern_Impl(object):
# def SetDockPosition(self, dockPos):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentDockPosition(self):
@@ -5732,7 +5732,7 @@ class IUIAutomationScrollItemPattern(comtypes.gen._00020430_0000_0000_C000_00000
# class IUIAutomationScrollItemPattern_Impl(object):
# def ScrollIntoView(self):
# '-no docstring-'
-# #return
+# #return
#
@@ -5857,11 +5857,11 @@ class IUIAutomationExpandCollapsePattern(comtypes.gen._00020430_0000_0000_C000_0
# class IUIAutomationExpandCollapsePattern_Impl(object):
# def Expand(self):
# '-no docstring-'
-# #return
+# #return
#
# def Collapse(self):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentExpandCollapseState(self):
@@ -6312,11 +6312,11 @@ class IUIAutomation6(IUIAutomation5):
#
# def AddEventHandlerGroup(self, element, handlerGroup):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveEventHandlerGroup(self, element, handlerGroup):
# '-no docstring-'
-# #return
+# #return
#
# def _get(self):
# '-no docstring-'
@@ -6334,11 +6334,11 @@ class IUIAutomation6(IUIAutomation5):
#
# def AddActiveTextPositionChangedEventHandler(self, element, scope, cacheRequest, handler):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveActiveTextPositionChangedEventHandler(self, element, handler):
# '-no docstring-'
-# #return
+# #return
#
UIA_IsSpreadsheetPatternAvailablePropertyId = 30128 # Constant c_int
UIA_ControllerForPropertyId = 30104 # Constant c_int
@@ -6414,7 +6414,7 @@ class IUIAutomationVirtualizedItemPattern(comtypes.gen._00020430_0000_0000_C000_
# class IUIAutomationVirtualizedItemPattern_Impl(object):
# def Realize(self):
# '-no docstring-'
-# #return
+# #return
#
AnnotationType_EditingLockedChange = 60016 # Constant c_int
@@ -6697,7 +6697,7 @@ class IUIAutomationElement8(IUIAutomationElement7):
# class IUIAutomationEventHandler_Impl(object):
# def HandleAutomationEvent(self, sender, eventId):
# '-no docstring-'
-# #return
+# #return
#
@@ -6752,7 +6752,7 @@ class IUIAutomationElement9(IUIAutomationElement8):
# class IUIAutomationPropertyChangedEventHandler_Impl(object):
# def HandlePropertyChangedEvent(self, sender, propertyId, newValue):
# '-no docstring-'
-# #return
+# #return
#
@@ -6813,7 +6813,7 @@ class IRawElementProviderSimple(comtypes.gen._00020430_0000_0000_C000_0000000000
# class IUIAutomationStructureChangedEventHandler_Impl(object):
# def HandleStructureChangedEvent(self, sender, changeType, runtimeId):
# '-no docstring-'
-# #return
+# #return
#
UIA_FlowsToPropertyId = 30106 # Constant c_int
@@ -6865,7 +6865,7 @@ class IUIAutomationCustomNavigationPattern(comtypes.gen._00020430_0000_0000_C000
# class IUIAutomationActiveTextPositionChangedEventHandler_Impl(object):
# def HandleActiveTextPositionChangedEvent(self, sender, range):
# '-no docstring-'
-# #return
+# #return
#
# values for enumeration 'ProviderOptions'
ProviderOptions_ClientSideProvider = 1
@@ -6977,15 +6977,15 @@ class IUIAutomationSelectionItemPattern(comtypes.gen._00020430_0000_0000_C000_00
# class IUIAutomationSelectionItemPattern_Impl(object):
# def Select(self):
# '-no docstring-'
-# #return
+# #return
#
# def AddToSelection(self):
# '-no docstring-'
-# #return
+# #return
#
# def RemoveFromSelection(self):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentIsSelected(self):
@@ -7180,15 +7180,15 @@ class IUIAutomationLegacyIAccessiblePattern(comtypes.gen._00020430_0000_0000_C00
# class IUIAutomationLegacyIAccessiblePattern_Impl(object):
# def Select(self, flagsSelect):
# '-no docstring-'
-# #return
+# #return
#
# def DoDefaultAction(self):
# '-no docstring-'
-# #return
+# #return
#
# def SetValue(self, szValue):
# '-no docstring-'
-# #return
+# #return
#
# @property
# def CurrentChildId(self):
@@ -7337,11 +7337,11 @@ class IUIAutomationSynchronizedInputPattern(comtypes.gen._00020430_0000_0000_C00
# class IUIAutomationSynchronizedInputPattern_Impl(object):
# def StartListening(self, inputType):
# '-no docstring-'
-# #return
+# #return
#
# def Cancel(self):
# '-no docstring-'
-# #return
+# #return
#
UIA_StylesFillPatternColorPropertyId = 30125 # Constant c_int
UIA_StylesFillPatternStylePropertyId = 30123 # Constant c_int
@@ -7580,7 +7580,7 @@ class IUIAutomationTablePattern(comtypes.gen._00020430_0000_0000_C000_0000000000
#
# def SetWinEventsForAutomationEvent(self, eventId, propertyId, winEvents):
# '-no docstring-'
-# #return
+# #return
#
# def GetWinEventsForAutomationEvent(self, eventId, propertyId):
# '-no docstring-'
@@ -7736,11 +7736,11 @@ class IUIAutomationBoolCondition(IUIAutomationCondition):
# class IUIAutomationCacheRequest_Impl(object):
# def AddProperty(self, propertyId):
# '-no docstring-'
-# #return
+# #return
#
# def AddPattern(self, patternId):
# '-no docstring-'
-# #return
+# #return
#
# def Clone(self):
# '-no docstring-'
@@ -8178,4 +8178,3 @@ class CUIAutomation(CoClass):
]
_check_version('1.2.0', 1691570609.765831)
-
diff --git a/source/comInterfaces/readme.md b/source/comInterfaces/readme.md
index 3a56c0ba663..606b2079018 100644
--- a/source/comInterfaces/readme.md
+++ b/source/comInterfaces/readme.md
@@ -1,5 +1,5 @@
The comInterfaces package is generated via SCons.
-The logic for this is in `comInterfaces_sconscript`, which uses `comtypes.gen` to read `*.tlb`
+The logic for this is in `comInterfaces_sconscript`, which uses `comtypes.gen` to read `*.tlb`
files or via interface IDs.
The interface files have an ID named file (a GUID, followed by a version number) as well as a
diff --git a/source/fonts/readme.md b/source/fonts/readme.md
index 889d9b55a7f..6d01ccdfbe4 100644
--- a/source/fonts/readme.md
+++ b/source/fonts/readme.md
@@ -17,4 +17,3 @@ The dot positions are based on the final 8 dot braille character, ⣿ (all pins
The free outline font editor, George Williams's FontForge
https://github.com/fontforge/fontforge/releases is used for editing the fonts via the `*.sfd` file.
-
diff --git a/tests/system/readme.md b/tests/system/readme.md
index b7c7474e47b..4e16ddc631e 100644
--- a/tests/system/readme.md
+++ b/tests/system/readme.md
@@ -4,7 +4,7 @@
This build system uses the Robot test framework to execute the system tests.
Dependencies such as Robot are automatically installed for you when NVDA's build system Python virtual environment is set up, when running any of the high-level commands such as runsystemtests.bat, thus a developer should usually not have to worry about dependencies.
-
+
### Running the tests
You can run the tests with `runsystemtests.bat --include `.
@@ -123,15 +123,15 @@ NVDA is started with the `-c` option to specify this profile directory to be use
### Logs
Both Robot Framework and NVDA logs are captured in the `testOutput` directory in the repo root.
-NVDA logs (NVDA log, stdOut, and stdErr for each test) are under the `nvdaTestRunLogs` directory.
+NVDA logs (NVDA log, stdOut, and stdErr for each test) are under the `nvdaTestRunLogs` directory.
The log files are named by suite and test name.
### Comparing changes to NVDA Settings
-`.\runsettingsdiff.bat` is a tool used to compare the settings dialog by reading text and generating screenshots for comparison. The default behaviour is to run using the source code and output to `.\tests\system\settingsCache\source`.
+`.\runsettingsdiff.bat` is a tool used to compare the settings dialog by reading text and generating screenshots for comparison. The default behaviour is to run using the source code and output to `.\tests\system\settingsCache\source`.
#### Usage
-To check for unreleased changes to the settings dialogs, one can use this tool to compare against two copies of NVDA.
+To check for unreleased changes to the settings dialogs, one can use this tool to compare against two copies of NVDA.
The following arguments should be used with the script.
@@ -140,7 +140,7 @@ Default arguments used are stored in `.\tests\system\guiDiff.robot`
- `--variable whichNVDA:[installed|source]` to decide where to run NVDA from
- `--variable cacheFolder:[filePath]` screenshots and text files of each settings panel are generated in `$cacheFolder\$currentVersion`
- `--variable currentVersion:[nvdaVersion]` where `[nvdaVersion]` is used to name the generated screenshot and cache folder
-- `--variable compareVersion:[nvdaVersion]` using a `$nvdaVersion` that this script has already been run against, run the system tests and fail if there are differences between the read text. This generates a multiline diff.
+- `--variable compareVersion:[nvdaVersion]` using a `$nvdaVersion` that this script has already been run against, run the system tests and fail if there are differences between the read text. This generates a multiline diff.
#### Example usage to compare settings between NVDA 2020.4 and the current source
diff --git a/user_docs/en/changes.md b/user_docs/en/changes.md
index 1d7dd5f3188..26be846e0b7 100644
--- a/user_docs/en/changes.md
+++ b/user_docs/en/changes.md
@@ -444,7 +444,7 @@ Please open a GitHub issue if your Add-on has an issue with updating to the new
* configobj to 5.1.0dev commit `e2ba4457c4651fa54f8d59d8dcdd3da950e956b8`. (#15544)
* Comtypes to 1.2.0. (#15513, @codeofdusk)
* Flake8 to 4.0.1. (#15636, @lukaszgo1)
- * py2exe to 0.13.0.1dev commit `4e7b2b2c60face592e67cb1bc935172a20fa371d`. (#15544)
+ * py2exe to 0.13.0.1dev commit `4e7b2b2c60face592e67cb1bc935172a20fa371d`. (#15544)
* robotframework to 6.1.1. (#15544)
* SCons to 4.5.2. (#15529, @LeonarddeR)
* sphinx to 7.2.6. (#15544)
@@ -787,7 +787,7 @@ eSpeak-NG, LibLouis braille translator, and Unicode CLDR have been updated.
* For symbols which do not have a symbol description in the current locale, the default English symbol level will be used. (#14558, #14417)
* It is now possible to use the backslash character in the replacement field of a dictionaries entry, when the type is not set to regular expression. (#14556)
* In Windows 10 and 11 Calculator, a portable copy of NVDA will no longer do nothing or play error tones when entering expressions in standard calculator in compact overlay mode. (#14679)
-* NVDA again recovers from many more situations such as applications that stop responding which previously caused it to freeze completely. (#14759)
+* NVDA again recovers from many more situations such as applications that stop responding which previously caused it to freeze completely. (#14759)
* When forcing UIA support with certain terminal and consoles, a bug is fixed which caused a freeze and the log file to be spammed. (#14689)
* NVDA will no longer refuse to save the configuration after a configuration reset. (#13187)
* When running a temporary version from the launcher, NVDA will not mislead users into thinking they can save the configuration. (#14914)
@@ -1399,7 +1399,7 @@ This release includes major improvements to UIA support with MS Office.
For Microsoft Office 16.0.15000 and higher on Windows 11, NVDA will use UI Automation to access Microsoft Word documents by default.
This provides a significant performance improvement over the old Object model access.
-There are improvements to braille display drivers including Seika Notetaker, Papenmeier and HID Braille.
+There are improvements to braille display drivers including Seika Notetaker, Papenmeier and HID Braille.
There are also various Windows 11 bug fixes, for apps such as Calculator, Console, Terminal, Mail and Emoji Panel.
eSpeak-NG and LibLouis have been updated, adding new Japanese, German and Catalan tables.
@@ -1415,7 +1415,7 @@ Note:
* The new `--lang` command line parameter allows overriding the configured NVDA language. (#10044)
* NVDA now warns about command line parameters which are unknown and not used by any add-ons. (#12795)
* In Microsoft Word accessed via UI Automation, NVDA will now make use of mathPlayer to read and navigate Office math equations. (#12946)
- * For this to work, you must be running Microsoft Word 365/2016 build 14326 or later.
+ * For this to work, you must be running Microsoft Word 365/2016 build 14326 or later.
* MathType equations must also be manually converted to Office Math by selecting each, opening the context menu, choosing Equation options, Convert to Office Math.
* Reporting of "has details" and the associated command to summarize the details relation have been updated to work in focus mode. (#13106)
* Seika Notetaker can now be auto-detected when connected via USB and Bluetooth. (#13191, #13142)
@@ -1427,7 +1427,7 @@ Note:
* Added support for Windows 11 Calculator. (#13212)
* In Microsoft Word with UI Automation enabled on Windows 11, line numbers and section numbers can now be reported. (#13283, #13515)
* For Microsoft Office 16.0.15000 and higher on Windows 11, NVDA will use UI Automation to access Microsoft Word documents by default, providing a significant performance improvement over the old Object model access. (#13437)
- * This includes documents in Microsoft Word itself, and also the message reader and composer in Microsoft Outlook.
+ * This includes documents in Microsoft Word itself, and also the message reader and composer in Microsoft Outlook.
### Changes
@@ -1706,7 +1706,7 @@ For security purposes, when using a new version of Windows, get visual confirmat
* Experimental support for ARIA annotations:
* adds a command to read a summary of details of an object with aria-details. (#12364)
- * adds an option in advanced preferences to report if an object has details in browse mode. (#12439)
+ * adds an option in advanced preferences to report if an object has details in browse mode. (#12439)
* In Windows 10 Version 1909 and later (including Windows 11), NVDA will announce suggestion count when performing searches in File Explorer. (#10341, #12628)
* In Microsoft Word, NVDA now announces the result of indent and hanging indent shortcuts when executed. (#6269)
@@ -1966,7 +1966,7 @@ Plus many other important bug fixes and improvements.
* NVDA no longer fails to read items in list views within a 64-bit application such as Tortoise SVN. (#8175)
* ARIA treegrids are now exposed as normal tables in browse mode in both Firefox and Chrome. (#9715)
* A reverse search can now be initiated with 'find previous' via NVDA+shift+F3 (#11770)
-* An NVDA script is no longer treated as being repeated if an unrelated key press happens in between the two executions of the script. (#11388)
+* An NVDA script is no longer treated as being repeated if an unrelated key press happens in between the two executions of the script. (#11388)
* Strong and emphasis tags in Internet Explorer can again be suppressed from being reported by turning off Report Emphasis in NVDA's Document Formatting settings. (#11808)
* A freeze of several seconds experienced by a small amount of users when arrowing between cells in Excel should no longer occur. (#11818)
* In Microsoft Teams builds with version numbers like 1.3.00.28xxx, NVDA no longer fails reading messages in chats or Teams channels due to an incorrectly focused menu. (#11821)
@@ -2196,7 +2196,7 @@ Although these changes do break compatibility with older NVDA add-ons, the upgra
* The user guide now describes how to use NVDA in the Windows Console. (#9957)
* Running nvda.exe now defaults to replacing an already running copy of NVDA. The -r|--replace command line parameter is still accepted, but ignored. (#8320)
* On Windows 8 and later, NVDA will now report product name and version information for hosted apps such as apps downloaded from Microsoft Store using information provided by the app. (#4259, #10108)
-* When toggling track changes on and off with the keyboard in Microsoft Word, NVDA will announce the state of the setting. (#942)
+* When toggling track changes on and off with the keyboard in Microsoft Word, NVDA will announce the state of the setting. (#942)
* The NVDA version number is now logged as the first message in the log. This occurs even if logging has been disabled from the GUI. (#9803)
* The settings dialog no longer allows for changing the configured log level if it has been overridden from the command line. (#10209)
* In Microsoft Word, NVDA now announces the display state of non printable characters when pressing the toggle shortcut Ctrl+Shift+8 . (#10241)
@@ -2305,7 +2305,7 @@ Although these changes do break compatibility with older NVDA add-ons, the upgra
* The UNIT_CONTROLFIELD and UNIT_FORMATFIELD constants have been moved from virtualBuffers.VirtualBufferTextInfo to the textInfos package. (#10396)
* For every entry in the NVDA log, information about the originating thread is now included. (#10259)
* UIA TextInfo objects can now be moved/expanded by the page, story and formatField text units. (#10396)
-* External modules (appModules and globalPlugins) are now less likely to be able to break the creation of NVDAObjects.
+* External modules (appModules and globalPlugins) are now less likely to be able to break the creation of NVDAObjects.
* Exceptions caused by the "chooseNVDAObjectOverlayClasses" and "event_NVDAObject_init" methods are now properly caught and logged.
* The aria.htmlNodeNameToAriaLandmarkRoles dictionary has been renamed to aria.htmlNodeNameToAriaRoles. It now also contains roles that aren't landmarks.
* scriptHandler.isCurrentScript has been removed due to lack of use. There is no replacement. (#8677)
@@ -2315,8 +2315,8 @@ Although these changes do break compatibility with older NVDA add-ons, the upgra
This is a minor release to fix several crashes present in 2019.2. Fixes include:
* Addressed several crashes in Gmail seen in both Firefox and Chrome when interacting with particular popup menus such as when creating filters or changing certain Gmail settings. (#10175, #9402, #8924)
-* In Windows 7, NVDA no longer causes Windows Explorer to crash when the mouse is used in the start menu. (#9435)
-* Windows Explorer on Windows 7 no longer crashes when accessing metadata edit fields. (#5337)
+* In Windows 7, NVDA no longer causes Windows Explorer to crash when the mouse is used in the start menu. (#9435)
+* Windows Explorer on Windows 7 no longer crashes when accessing metadata edit fields. (#5337)
* NVDA no longer freezes when interacting with images with a base64 URI in Mozilla Firefox or Google Chrome. (#10227)
## 2019.2
@@ -2325,8 +2325,8 @@ Highlights of this release include auto detection of Freedom Scientific braille
### New Features
-* NVDA's Miranda NG support works with newer versions of the client. (#9053)
-* You can now disable browse mode by default by disabling the new "Enable browse mode on page load" option in NVDA's browse mode settings. (#8716)
+* NVDA's Miranda NG support works with newer versions of the client. (#9053)
+* You can now disable browse mode by default by disabling the new "Enable browse mode on page load" option in NVDA's browse mode settings. (#8716)
* Note that when this option is disabled, you can still enable browse mode manually by pressing NVDA+space.
* You can now filter symbols in the punctuation/symbol pronunciation dialog, similar to how filtering works in the elements list and input gestures dialog. (#5761)
* A command has been added to change the mouse text unit resolution (how much text will be spoken when the mouse moves), it has not been assigned a default gesture. (#9056)
@@ -2336,7 +2336,7 @@ Highlights of this release include auto detection of Freedom Scientific braille
* The gesture must be configured in the "Input gestures" dialog.
* In Eclipse, added support for autocompletion in code editor. (#5667)
* Additionally, Javadoc information can be read from the editor when it is present by using NVDA+d.
-* Added an experimental option to the Advanced Settings panel that allows you to stop the system focus from following the browse mode cursor (Automatically set system focus to focusable elements). (#2039) Although this may not be suitable to turn off for all websites, this may fix:
+* Added an experimental option to the Advanced Settings panel that allows you to stop the system focus from following the browse mode cursor (Automatically set system focus to focusable elements). (#2039) Although this may not be suitable to turn off for all websites, this may fix:
* Rubber band effect: NVDA sporadically undoes the last browse mode keystroke by jumping to the previous location.
* Edit boxes steal system focus when arrowing down through them on some websites.
* Browse mode keystrokes are slow to respond.
@@ -2408,7 +2408,7 @@ This point release fixes the following bugs:
Highlights of this release include performance improvements when accessing both Microsoft word and Excel, stability and security improvements such as support for add-ons with version compatibility information, and many other bug fixes.
-Please note that starting from this release of NVDA, custom appModules, globalPlugins, braille display drivers and synth drivers will no longer be automatically loaded from your NVDA user configuration directory.
+Please note that starting from this release of NVDA, custom appModules, globalPlugins, braille display drivers and synth drivers will no longer be automatically loaded from your NVDA user configuration directory.
Rather these should be installed as part of an NVDA add-on. For those developing code for an add-on, code for testing can be placed in a new developer scratchpad directory in the NVDA user configuration directory, if the Developer scratchpad option is turned on in NVDA's new Advanced settings panel.
These changes are necessary to better ensure compatibility of custom code, so that NVDA does not break when this code becomes incompatible with newer releases.
Please refer to the list of changes further down for more details on this and how add-ons are now better versioned.
@@ -2416,7 +2416,7 @@ Please refer to the list of changes further down for more details on this and ho
### New Features
* New braille tables: Afrikaans, Arabic 8 dot computer braille, Arabic grade 2, Spanish grade 2. (#4435, #9186)
-* Added an option to NVDA's mouse settings to make NVDA handle situations where the mouse is controlled by another application. (#8452)
+* Added an option to NVDA's mouse settings to make NVDA handle situations where the mouse is controlled by another application. (#8452)
* This will allow NVDA to track the mouse when a system is controlled remotely using TeamViewer or other remote control software.
* Added the `--enable-start-on-logon` command line parameter to allow configuring whether silent installations of NVDA set NVDA to start at Windows logon or not. Specify true to start at logon or false to not start at logon. If the --enable-start-on-logon argument is not specified at all then NVDA will default to starting at logon, unless it was already configured not to by a previous installation. (#8574)
* It is possible to turn NVDA's logging features off by setting logging level to "disabled" from General settings panel. (#8516)
@@ -2466,7 +2466,7 @@ Please refer to the list of changes further down for more details on this and ho
* In Windows 10 October 2018 Update and later, when opening cloud clipboard history with clipboard empty, NVDA will announce clipboard status. (#9103)
* In Windows 10 October 2018 Update and later, when searching for emojis in emoji panel, NVDA will announce top search result. (#9105)
* NVDA no longer freezes in the main window of Oracle VirtualBox 5.2 and above. (#9202)
-* Responsiveness in Microsoft Word when navigating by line, paragraph or table cell may be significantly improved in some documents. A reminder that for best performance, set Microsoft Word to Draft view with alt+w,e after opening a document. (#9217)
+* Responsiveness in Microsoft Word when navigating by line, paragraph or table cell may be significantly improved in some documents. A reminder that for best performance, set Microsoft Word to Draft view with alt+w,e after opening a document. (#9217)
* In Mozilla Firefox and Google Chrome, empty alerts are no longer reported. (#5657)
* Significant performance improvements when navigating cells in Microsoft Excel, particularly when the spreadsheet contains comments and or validation dropdown lists. (#7348)
* It should be no longer necessary to turn off in-cell editing in Microsoft Excel's options to access the cell edit control with NVDA in Excel 2016/365. (#8146).
@@ -2522,7 +2522,7 @@ Highlights of this release include performance improvements in recent Mozilla Fi
* NVDA no longer fails to track focus in File Explorer and other applications using UI Automation when another app is busy (such as batch processing audio). (#7345)
* In ARIA menus on the web, the Escape key will now be passed through to the menu and no longer turn off focus mode unconditionally. (#3215)
* In the new Gmail web interface, when using quick navigation inside messages while reading them, the entire body of the message is no longer reported after the element to which you just navigated. (#8887)
-* After updating NVDA, Browsers such as Firefox and google Chrome should no longer crash, and browse mode should continue to correctly reflect updates to any currently loaded documents. (#7641)
+* After updating NVDA, Browsers such as Firefox and google Chrome should no longer crash, and browse mode should continue to correctly reflect updates to any currently loaded documents. (#7641)
* NVDA no longer reports clickable multiple times in a row when navigating clickable content in Browse Mode. (#7430)
* Gestures performed on baum Vario 40 braille displays will no longer fail to execute. (#8894)
* In Google Slides with Mozilla Firefox, NVDA no longer reports selected text on every control with focus. (#8964)
@@ -2636,9 +2636,9 @@ Highlights of this release include Support for tables in Kindle for PC, support
* In Windows 10 Fall Creators Update and later, NVDA can announce notifications from apps such as Calculator and Windows Store. (#7984)
* New braille translation tables: Lithuanian 8 dot, Ukrainian, Mongolian grade 2. (#7839)
* Added a script to report formatting information for the text under a specific braille cell. (#7106)
-* When updating NVDA, it is now possible to postpone the installation of the update to a later moment. (#4263)
+* When updating NVDA, it is now possible to postpone the installation of the update to a later moment. (#4263)
* New languages: Mongolian, Swiss German.
-* You can now toggle control, shift, alt, windows and NVDA from your braille keyboard and combine these modifiers with braille input (e.g. press control+s). (#7306)
+* You can now toggle control, shift, alt, windows and NVDA from your braille keyboard and combine these modifiers with braille input (e.g. press control+s). (#7306)
* You can assign these new modifier toggles using the commands found under Emulated system keyboard keys in the Input gestures dialog.
* Restored support for Handy Tech Braillino and Modular (with old firmware) displays. (#8016)
* Date and time for supported Handy Tech devices (such as Active Braille and Active Star) will now automatically be synchronized by NVDA when out of sync more than five seconds. (#8016)
@@ -2688,7 +2688,7 @@ Highlights of this release include Support for tables in Kindle for PC, support
## 2018.1.1
-This is a special release of NVDA which addresses a bug in the Onecore Windows Speech synthesizer driver, which was causing it to speak with a higher pitch and speed in Windows 10 Redstone 4 (1803). (#8082)
+This is a special release of NVDA which addresses a bug in the Onecore Windows Speech synthesizer driver, which was causing it to speak with a higher pitch and speed in Windows 10 Redstone 4 (1803). (#8082)
## 2018.1
@@ -2703,18 +2703,18 @@ Highlights of this release include support for charts in Microsoft word and Pow
* New language: Kyrgyz.
* Added support for VitalSource Bookshelf. (#7155)
* Added support for the Optelec protocol converter, a device that allows one to use Braille Voyager and Satellite displays using the ALVA BC6 communication protocol. (#6731)
-* It is now possible to use braille input with an ALVA 640 Comfort braille display. (#7733)
+* It is now possible to use braille input with an ALVA 640 Comfort braille display. (#7733)
* NVDA's braille input functionality can be used with these as well as other BC6 displays with firmware 3.0.0 and above.
* Early support for Google Sheets with Braille mode enabled. (#7935)
* Support for Eurobraille Esys, Esytime and Iris braille displays. (#7488)
### Changes
-* The HIMS Braille Sense/Braille EDGE/Smart Beetle and Hims Sync Braille display drivers have been replaced by one driver. The new driver will automatically be activated for former syncBraille driver users. (#7459)
+* The HIMS Braille Sense/Braille EDGE/Smart Beetle and Hims Sync Braille display drivers have been replaced by one driver. The new driver will automatically be activated for former syncBraille driver users. (#7459)
* Some keys , notably scroll keys, have been reassigned to follow the conventions used by Hims products. Consult the user guide for more details.
* When typing with the on-screen keyboard via touch interaction, by default you now need to double tap each key the same way you would activate any other control. (#7309)
* To use the existing "touch typing" mode where simply lifting your finger off the key is enough to activate it, Enable this option in the new Touch Interaction settings dialog found in the Preferences menu.
-* It is no longer necessary to explicitly tether braille to focus or review, as this will happen automatically by default. (#2385)
+* It is no longer necessary to explicitly tether braille to focus or review, as this will happen automatically by default. (#2385)
* Note that automatic tethering to review will only occur when using a review cursor or object navigation command. Scrolling will not activate this new behavior.
### Bug Fixes
@@ -2738,7 +2738,7 @@ Highlights of this release include support for charts in Microsoft word and Pow
### Changes for developers
-* Added a hidden boolean flag to the braille section in the configuration: "outputPass1Only". (#7301, #7693, #7702)
+* Added a hidden boolean flag to the braille section in the configuration: "outputPass1Only". (#7301, #7693, #7702)
* This flag defaults to true. If false, liblouis multi pass rules will be used for braille output.
* A new dictionary (braille.RENAMED_DRIVERS) has been added to allow for smooth transition for users using drivers that have been superseded by others. (#7459)
* Updated comtypes package to 1.1.3. (#7831)
@@ -2808,9 +2808,9 @@ Please note that this version of NVDA no longer supports Windows XP or Windows V
* "scons tests" now checks that translatable strings have translator comments. You can also run this alone with "scons checkPot". (#7492)
* There is now a new extensionPoints module which provides a generic framework to enable code extensibility at specific points in the code. This allows interested parties to register to be notified when some action occurs (extensionPoints.Action), to modify a specific kind of data (extensionPoints.Filter) or to participate in deciding whether something will be done (extensionPoints.Decider). (#3393)
* You can now register to be notified about configuration profile switches via the config.configProfileSwitched Action. (#3393)
-* Braille display gestures that emulate system keyboard key modifiers (such as control and alt) can now be combined with other emulated system keyboard keys without explicit definition. (#6213)
+* Braille display gestures that emulate system keyboard key modifiers (such as control and alt) can now be combined with other emulated system keyboard keys without explicit definition. (#6213)
* For example, if you have a key on your display bound to the alt key and another display key to downArrow, combining these keys will result in the emulation of alt+downArrow.
-* The braille.BrailleDisplayGesture class now has an extra model property. If provided, pressing a key will generate an additional, model specific gesture identifier. This allows a user to bind gestures limited to a specific braille display model.
+* The braille.BrailleDisplayGesture class now has an extra model property. If provided, pressing a key will generate an additional, model specific gesture identifier. This allows a user to bind gestures limited to a specific braille display model.
* See the baum driver as an example for this new functionality.
* NVDA is now compiled with Visual Studio 2017 and the Windows 10 SDK. (#7568)
@@ -2988,7 +2988,7 @@ Highlights of this release include reporting of sections and text columns in Mic
* Fixed freeze in Microsoft Word when moving by paragraph through a large document while in browse mode. (#6368)
* Tables in Microsoft Word that have been copied from Microsoft Excel are no longer treeted as layout tables and therefore are no longer ignored. (#5927)
* When trying to type in Microsoft Excel while in protected view, NVDA now makes a sound rather than speaking characters that were not actually typed. (#6570)
-* Pressing escape in Microsoft Excel no longer incorrectly switches to browse mode, unless the user has previously switched to browse mode explicitly with NVDA+space and then entered focus mode by pressing enter on a form field. (#6569)
+* Pressing escape in Microsoft Excel no longer incorrectly switches to browse mode, unless the user has previously switched to browse mode explicitly with NVDA+space and then entered focus mode by pressing enter on a form field. (#6569)
* NVDA no longer freezes in Microsoft Excel spreadsheets where an entire row or column is merged. (#6216)
* Reporting of cropped/overflowed text in Microsoft Excel cells should now be more accurate. (#6472)
* NVDA now reports when a check box is read-only. (#6563)
@@ -3097,7 +3097,7 @@ Highlights of this release include the ability to disable individual add-ons; su
* Reporting colors in Microsoft Word is now more accurate as changes in Microsoft Office Themes are now taken into account. (#5997)
* Browse mode for Microsoft Edge and support for Start Menu search suggestions is again available on Windows 10 builds after April 2016. (#5955)
* In Microsoft Word, automatic table header reading works better when dealing with merged cells. (#5926)
-* In the Windows 10 Mail app, NVDA no longer fails to read the content of messages. (#5635)
+* In the Windows 10 Mail app, NVDA no longer fails to read the content of messages. (#5635)
* When speak command keys is on, lock keys such as caps lock are no longer announced twice. (#5490)
* Windows User Account Control dialogs are again read correctly in the Windows 10 Anniversary update. (#5942)
* In the Web Conference Plugin (such as used on out-of-sight.net) NVDA no longer beeps and speaks progress bar updates related to microphone input. (#5888)
@@ -3481,7 +3481,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* In the Microsoft Outlook message list, items are no longer pointlessly announced as Data Items. (#4439)
* When selecting text in the code editing control in the Eclipse IDE, the entire selection is no longer announced every time the selection changes. (#2314)
* Various versions of Eclipse, such as Spring Tool Suite and the version included in the Android Developer Tools bundle, are now recognised as Eclipse and handled appropriately. (#4360, #4454)
-* Mouse tracking and touch exploration in Internet Explorer and other MSHTML controls (including many Windows 8 applications) is now much more accurate on high DPI displays or when document zoom is changed. (#3494)
+* Mouse tracking and touch exploration in Internet Explorer and other MSHTML controls (including many Windows 8 applications) is now much more accurate on high DPI displays or when document zoom is changed. (#3494)
* Mouse tracking and touch exploration in Internet Explorer and other MSHTML controls will now announce the label of more buttons. (#4173)
* When using a Papenmeier BRAILLEX braille display with BrxCom, keys on the display now work as expected. (#4614)
@@ -3504,7 +3504,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* Smart filtering of the date so as to only announce the date if the new selected time or appointment is on a different day to the last.
* Enhanced support for the Inbox and other message lists in Microsoft Outlook 2010 and above (#3834) including:
* The ability to silence column headers (from, subject, etc.) by turning off the Report Table row and column headers option in Document Formatting settings.
- * The ability to use table navigation commands (control + alt + arrows) to move through the individual columns.
+ * The ability to use table navigation commands (control + alt + arrows) to move through the individual columns.
* Microsoft word: If an inline image has no alternative text set, NVDA will instead report the title of the image if the author has provided one. (#4193)
* Microsoft Word: NVDA can now report paragraph indenting with the report formatting command (NVDA+f). It can also be reported automatically when the new Report Paragraph indenting option is enabled in Document Formatting settings. (#4165)
* Report automatically inserted text such as a new bullet, number or tab indent when pressing enter in editable documents and text fields. (#4185)
@@ -3557,7 +3557,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* Microsoft Word 2010 spell check dialog: The actual misspelled word is reported rather than inappropriately reporting just the first bold word. (#3431)
* In browse mode in Internet Explorer and other MSHTML controls, tabbing or using single letter navigation to move to form fields again reports the label in many cases where it didn't (specifically, where HTML label elements are used). (#4170)
* Microsoft Word: Reporting the existence and placement of comments is more accurate. (#3528)
-* Navigation of certain dialogs in MS Office products such as Word, Excel and Outlook has been improved by no longer reporting particular control container toolbars which are not useful to the user. (#4198)
+* Navigation of certain dialogs in MS Office products such as Word, Excel and Outlook has been improved by no longer reporting particular control container toolbars which are not useful to the user. (#4198)
* Task panes such as clipboard manager or File recovery no longer accidentilly seem to gain focus when opening an application such as Microsoft Word or Excel, which was sometimes causing the user to have to switch away from and back to the application to use the document or spreadsheet. (#4199)
* NVDA no longer fails to run on recent Windows Operating Systems if the user's Windows language is set to Serbian (Latin). (#4203)
* Pressing numlock while in input help mode now correctly toggles numlock, rather than causing the keyboard and the Operating System to become out of sync in regards to the state of this key. (#4226)
@@ -3690,7 +3690,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* Form fields are now reported in Microsoft word documents. (#2295)
* NVDA can now announce revision information in Microsoft Word when Track Changes is enabled. Note that Report editor revisions in NVDA's document settings dialog (off by default) must be enabled also for them to be announced. (#1670)
* Dropdown lists in Microsoft Excel 2003 through 2010 are now announced when opened and navigated around. (#3382)
-* a new 'Allow Skim Reading in Say All' option in the Keyboard settings dialog allows navigating through a document with browse mode quick navigation and line / paragraph movement commands, while remaining in say all. This option is off by default. (#2766)
+* a new 'Allow Skim Reading in Say All' option in the Keyboard settings dialog allows navigating through a document with browse mode quick navigation and line / paragraph movement commands, while remaining in say all. This option is off by default. (#2766)
* There is now an Input Gestures dialog to allow simpler customization of the input gestures (such as keys on the keyboard) for NVDA commands. (#1532)
* You can now have different settings for different situations using configuration profiles. Profiles can be activated manually or automatically (e.g. for a particular application). (#87, #667, #1913)
* In Microsoft Excel, cells that are links are now announced as links. (#3042)
@@ -3763,7 +3763,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* Activating an object now announces the action before the activation, rather than the action after the activation (e.g. expand when expanding rather than collapse). (#2982)
* More accurate reading and cursor tracking in various input fields for recent versions of Skype, such as chat and search fields. (#1601, #3036)
* In the Skype recent conversations list, the number of new events is now read for each conversation if relevant. (#1446)
-* Improvements to cursor tracking and reading order for right-to-left text written to the screen; e.g. editing Arabic text in Microsoft Excel. (#1601)
+* Improvements to cursor tracking and reading order for right-to-left text written to the screen; e.g. editing Arabic text in Microsoft Excel. (#1601)
* Quick navigation to buttons and form fields will now locate links marked as buttons for accessibility purposes in Internet Explorer. (#2750)
* In browse mode, the content inside tree views is no longer rendered, as a flattened representation isn't useful. You can press enter on a tree view to interact with it in focus mode. (#3023)
* Pressing alt+downArrow or alt+upArrow to expand a combo box while in focus mode no longer incorrectly switches to browse mode. (#2340)
@@ -3780,7 +3780,7 @@ Highlights of this release include browse mode for documents in Microsoft Word a
* In Java applications, changes to the label or value of the focused control are now announced automatically, and are reflected when subsequently querying the control. (#3119)
* In Scintilla controls, lines are now reported correctly when word wrap is enabled. (#885)
* In Mozilla applications, the name of read-only list items is now correctly reported; e.g. when navigating tweets in focus mode on twitter.com. (#3327)
-* Confirmation dialogs in Microsoft Office 2013 now have their content automatically read when they appear.
+* Confirmation dialogs in Microsoft Office 2013 now have their content automatically read when they appear.
* Performance improvements when navigating certain tables in Microsoft Word. (#3326)
* NVDA's table navigation commands (control+alt+arrows) function better in certain Microsoft Word tables where a cell spans multiple rows.
* If the Add-ons Manager is already open, activating it again (either from the Tools menu or by opening an add-on file) no longer fails or makes it impossible to close the Add-ons Manager. (#3351)
@@ -3837,7 +3837,7 @@ Please see the [Commands Quick Reference](keyCommands.html) document for the new
* Basic support for editing and reading Microsoft PowerPoint presentations. (#501)
* Basic support for reading and writing messages in Lotus Notes 8.5. (#543)
-* Support for automatic language switching when reading documents in Microsoft Word. (#2047)
+* Support for automatic language switching when reading documents in Microsoft Word. (#2047)
* In Browse mode for MSHTML (e.g. Internet Explorer) and Gecko (e.g. Firefox), the existence of long descriptions are now announced. It's also possible to open the long description in a new window by pressing NVDA+d. (#809)
* Notifications in Internet Explorer 9 and above are now spoken (such as content blocking or file downloads). (#2343)
* Automatic reporting of table row and column headers is now supported for browse mode documents in Internet Explorer and other MSHTML controls. (#778)
@@ -3889,7 +3889,7 @@ Please see the [Commands Quick Reference](keyCommands.html) document for the new
* Fixed Bluetooth support for Papenmeier Braillex Trio. (#2995)
* Fixed inability to use certain Microsoft Speech API version 5 voices such as Koba Speech 2 voices. (#2629)
* In applications using the Java Access Bridge, braille displays are now updated correctly when the caret moves in editable text fields . (#3107)
-* Support the form landmark in browse mode documents that support landmarks. (#2997)
+* Support the form landmark in browse mode documents that support landmarks. (#2997)
* The eSpeak synthesizer driver now handles reading by character more appropriately (e.g. announcing a foreign letter's name or value rather than just its sound or generic name). (#3106)
* NVDA no longer fails to copy user settings for use on logon and other secure screens when the user's profile path contains non-ASCII characters. (#3092)
* NVDA no longer freezes when using Asian character input in some .NET applications. (#3005)
@@ -4033,13 +4033,13 @@ This release addresses several potential security issues (by upgrading Python t
## 2012.2
-Highlights of this release include an in-built installer and portable creation feature, automatic updates, easy management of new NVDA add-ons, announcement of graphics in Microsoft Word, support for Windows 8 Metro style apps, and several important bug fixes.
+Highlights of this release include an in-built installer and portable creation feature, automatic updates, easy management of new NVDA add-ons, announcement of graphics in Microsoft Word, support for Windows 8 Metro style apps, and several important bug fixes.
### New Features
* NVDA can now automatically check for, download and install updates. (#73)
* Extending NVDA's functionality has been made easier with the addition of an Add-ons Manager (found under Tools in the NVDA menu) allowing you to install and uninstall new NVDA add-on packages (.nvda-addon files) containing plugins and drivers. Note the Add-on manager does not show older custom plugins and drivers manually copied in to your configuration directory. (#213)
-* Many more common NVDA features now work in Windows 8 Metro style apps when using an installed release of NVDA, including speaking of typed characters, and browse mode for web documents (includes support for metro version of Internet Explorer 10). Portable copies of NVDA cannot access metro style apps. (#1801)
+* Many more common NVDA features now work in Windows 8 Metro style apps when using an installed release of NVDA, including speaking of typed characters, and browse mode for web documents (includes support for metro version of Internet Explorer 10). Portable copies of NVDA cannot access metro style apps. (#1801)
* In browse mode documents (Internet Explorer, Firefox, etc.), you can now jump to the start and past the end of certain containing elements (such as lists and tables) with shift+, and , respectively. (#123)
* New language: Greek.
* Graphics and alt text are now reported in Microsoft Word Documents. (#2282, #1541)
@@ -4161,7 +4161,7 @@ Highlights of this release include automatic speech language switching when read
### New Features
-* NVDA can now change the eSpeak synthesizer language on the fly when reading certain web/pdf documents with appropriate language information. Automatic language/dialect switching can be toggled on and off from the Voice Settings dialog. (#845)
+* NVDA can now change the eSpeak synthesizer language on the fly when reading certain web/pdf documents with appropriate language information. Automatic language/dialect switching can be toggled on and off from the Voice Settings dialog. (#845)
* Java Access Bridge 2.0.2 is now supported, which includes support for 64 bit Java Runtime Environments.
* In Mozilla Gecko (e.g. Firefox) Heading levels are now announced when using object navigation.
* Text formatting can now be reported when using browse mode in Mozilla Gecko (e.g. Firefox and Thunderbird). (#394)
@@ -4180,7 +4180,7 @@ Highlights of this release include automatic speech language switching when read
* NVDA will now restart itself if it crashes.
* Some information displayed in braille has been abbreviated. (#1288)
* the Read active window script (NVDA+b) has been improved to filter out unuseful controls and also is now much more easy to silence. (#1499)
-* Automatic say all when a browse mode document loads is now optional via a setting in the Browse Mode settings dialog. (#414)
+* Automatic say all when a browse mode document loads is now optional via a setting in the Browse Mode settings dialog. (#414)
* When trying to read the status bar (Desktop NVDA+end), If a real status bar object cannot be located, NVDA will instead resort to using the bottom line of text written to the display for the active application. (#649)
* When reading with say all in browse mode documents, NVDA will now pause at the end of headings and other block-level elements, rather than speaking the text together with the next lot of text as one long sentence.
* In browse mode, pressing enter or space on a tab now activates it instead of switching to focus mode. (#1760)
@@ -4382,7 +4382,7 @@ Highlights of this release include automatic reporting of new text output in mIR
* Support for global plugins. Global plugins can add new functionality to NVDA which works across all applications. (#281)
* A small beep is now heard when typing characters with the shift key while capslock is on. This can be turned off by unchecking the related new option in the Keyboard settings dialog. (#663)
* hard page breaks are now announced when moving by line in Microsoft Word. (#758)
-* Bullets and numbering are now spoken in Microsoft Word when moving by line. (#208)
+* Bullets and numbering are now spoken in Microsoft Word when moving by line. (#208)
* A command to toggle Sleep mode for the current application (NVDA+shift+s) is now available. Sleep mode (previously known as self voicing mode) disables all screen reading functionality in NVDA for a particular application. Very useful for applications that provide their own speech and or screen reading features. Press this command again to disable Sleep mode.
* Some additional braille display key bindings have been added. See the Supported Braille Displays section of the User Guide for details. (#209)
* For the convenience of third party developers, app modules as well as global plugins can now be reloaded without restarting NVDA. Use tools -> Reload plugins in the NVDA menu or NVDA+control+f3. (#544)
@@ -4519,7 +4519,7 @@ Notable features of this release include greatly simplified object navigation; v
* Saving configuration and changing of particular sensitive options is now disabled when running on the logon, UAC and other secure Windows screens.
* Updated eSpeak speech synthesiser to 1.44.03.
* If NVDA is already running, activating the NVDA shortcut on the desktop (which includes pressing control+alt+n) will restart NVDA.
-* Removed the report text under the mouse checkbox from the Mouse settings dialog and replaced it with an Enable mouse tracking checkbox, which better matches the toggle mouse tracking script (NVDA+m).
+* Removed the report text under the mouse checkbox from the Mouse settings dialog and replaced it with an Enable mouse tracking checkbox, which better matches the toggle mouse tracking script (NVDA+m).
* Updates to the laptop keyboard layout so that it includes all commands available in the desktop layout and works correctly on non-English keyboards. (#798, #800)
* Significant improvements and updates to the user documentation, including documentation of the laptop keyboard commands and synchronisation of the Keyboard Commands Quick Reference with the User Guide. (#455)
* Updated liblouis braille translator to 2.1.1. Notably, this fixes some issues related to Chinese braille as well as characters which are undefined in the translation table. (#484, #499)
@@ -4876,13 +4876,13 @@ Major highlights of this release include support for 64 bit editions of Windows;
* added czech translation (by Tomas Valusek with help from Jaromir Vit)
* added vietnamese translation by Dang Hoai Phuc
* Added Africaans (af_ZA) translation, by Willem van der Walt.
-* Added russian translation by Dmitry Kaslin
+* Added russian translation by Dmitry Kaslin
* Added polish translation by DOROTA CZAJKA and friends.
* Added Japanese translation by Katsutoshi Tsuji.
* added Thai translation by Amorn Kiattikhunrat
-* added croatian translation by Mario Percinic and Hrvoje Katic
-* Added galician translation by Juan C. buno
-* added ukrainian translation by Aleksey Sadovoy
+* added croatian translation by Mario Percinic and Hrvoje Katic
+* Added galician translation by Juan C. buno
+* added ukrainian translation by Aleksey Sadovoy
### Speech
@@ -4921,7 +4921,7 @@ Major highlights of this release include support for 64 bit editions of Windows;
* Improved support for the audacity application
* Added support for a few edit/text controls in Skype
* Improved support for Miranda instant messenger application
-* Fixed some focus issues when opening html and plain text messages in Outlook Express.
+* Fixed some focus issues when opening html and plain text messages in Outlook Express.
* Outlook express newsgroup message fields are now labeled correctly
* NVDA can now read the addresses in the Outlook Express message fields (to/from/cc etc)
* NVDA should be now more accurate at announcing the next message in out look express when deleting a message from the message list.
@@ -4956,7 +4956,7 @@ Major highlights of this release include support for 64 bit editions of Windows;
## 0.5
* NVDA now has a built-in synthesizer called eSpeak, developed by Jonathan Duddington.It is very responsive and lite-weight, and has support for many different languages. Sapi synthesizers can still be used, but eSpeak will be used by default.
- * eSpeak does not depend on any special software to be installed, so it can be used with NVDA on any computer, on a USB thumb drive, or anywhere.
+ * eSpeak does not depend on any special software to be installed, so it can be used with NVDA on any computer, on a USB thumb drive, or anywhere.
* For more info on eSpeak, or to find other versions, go to http://espeak.sourceforge.net/.
* Fix bug where the wrong character was being announced when pressing delete in Internet Explorer / Outlook Express editable panes.
* Added support for more edit fields in Skype.
@@ -4966,12 +4966,12 @@ Major highlights of this release include support for 64 bit editions of Windows;
* -q, --quit: quit any other already running instance of NVDA and then exit
* -s, --stderr-file fileName: specify where NVDA should place uncaught errors and exceptions
* -d, --debug-file fileName: specify where NVDA should place debug messages
- * -c, --config-file: specify an alternative configuration file
+ * -c, --config-file: specify an alternative configuration file
* -h, -help: show a help message listing commandline arguments
* Fixed bug where punctuation symbols would not be translated to the appropriate language, when using a language other than english, and when speak typed characters was turned on.
-* Added Slovak language files thanks to Peter Vagner
+* Added Slovak language files thanks to Peter Vagner
* Added a Virtual Buffer settings dialog and a Document Formatting settings dialog, from Peter Vagner.
-* Added French translation thanks to Michel Such
+* Added French translation thanks to Michel Such
* Added a script to toggle beeping of progress bars on and off (insert+u). Contributed by Peter Vagner.
* Made more messages in NVDA be translatable for other languages. This includes script descriptions when in keyboard help.
* Added a find dialog to the virtualBuffers (internet Explorer and Firefox). Pressing control+f when on a page brings up a dialog in which you can type some text to find. Pressing enter will then search for this text and place the virtualBuffer cursor on this line. Pressing f3 will also search for the next occurance of the text.
@@ -4985,7 +4985,7 @@ Major highlights of this release include support for 64 bit editions of Windows;
* Re-structured an important part of the NVDA code, which should now fix many issues with NVDA's user interface (including settings dialogs).
* Added Sapi4 support to NVDA. Currently there are two sapi4 drivers, one based on code contributed by Serotek Corporation, and one using the ActiveVoice.ActiveVoice com Interface. Both these drivers have issues, see which one works best for you.
* Now when trying to run a new copy of NVDA while an older copy is still running will cause the new copy to just exit. This fixes a major problem where running multiple copies of NVDA makes your system very unusable.
-* Renamed the title of the NVDA user interface from NVDA Interface to NVDA.
+* Renamed the title of the NVDA user interface from NVDA Interface to NVDA.
* Fixed a bug in Outlook Express where pressing backspace at the start of an editable message would cause an error.
* Added patch from Rui Batista that adds a script to report the current battery status on laptops (insert+shift+b).
* Added a synth driver called Silence. This is a synth driver that does not speak anything, allowing NVDA to stay completely silent at all times. Eventually this could be used along with Braille support, when we have it.
@@ -5004,7 +5004,7 @@ Major highlights of this release include support for 64 bit editions of Windows;
* Removed some developer documentation from the binary distribution of NVDA, it is only now in the source version.
* Fixed a possible bug in Windows Live Messanger and MSN Messenger where arrowing up and down the contact list would cause errors.
* New messages are now automatically spoken when in a conversation using Windows Live Messenger. (only works for English versions so far)
-* The history window in a Windows Live Messenger conversation can now be read by using the arrow keys. (Only works for English versions so far)
+* The history window in a Windows Live Messenger conversation can now be read by using the arrow keys. (Only works for English versions so far)
* Added script 'passNextKeyThrough' (insert+f2). Press this key, and then the next key pressed will be passed straight through to Windows. This is useful if you have to press a certain key in an application but NVDA uses that key for something else.
* NVDA no longer freezes up for more than a minute when opening very large documents in MS Word.
* Fixed a bug where moving out of a table in MS Word, and then moving back in, caused the current row/column numbers not to be spoken if moving back in to exactly the same cell.
@@ -5014,4 +5014,3 @@ Major highlights of this release include support for 64 bit editions of Windows;
* NVDA now asks if it should save configuration and restart if the user has just changed the language in the User Interface Settings Dialog. NVDA must be restarted for the language change to fully take effect.
* If a synthesizer can not be loaded, when choosing it from the synthesizer dialog, a message box alerts the user to the fact.
* When loading a synthesizer for the first time, NVDA lets the synthesizer choose the most suitable voice, rate and pitch parameters, rather than forcing it to defaults it thinks are ok. This fixes a problem where Eloquence and Viavoice sapi4 synths start speaking way too fast for the first time.
-
\ No newline at end of file
diff --git a/venvUtils/ensureAndActivate.bat b/venvUtils/ensureAndActivate.bat
index 924172ebd5c..13ba6c55035 100644
--- a/venvUtils/ensureAndActivate.bat
+++ b/venvUtils/ensureAndActivate.bat
@@ -15,9 +15,9 @@ if ERRORLEVEL 1 goto :EOF
rem Set the necessary environment variables to have Python use this virtual environment.
rem This should set all the necessary environment variables that the standard .venv\scripts\activate.bat does
rem Except that we set VIRTUAL_ENV to a path relative to this script,
-rem rather than it being hard-coded to where the virtual environment was first created.
+rem rather than it being hard-coded to where the virtual environment was first created.
-rem unset the PYTHONHOME variable so as to ensure that Python does not use a customized Python standard library.
+rem unset the PYTHONHOME variable so as to ensure that Python does not use a customized Python standard library.
set PYTHONHOME=
rem set the VIRTUAL_ENV variable instructing Python to use a virtual environment
rem py.exe will honor VIRTUAL_ENV and launch the python.exe that it finds in %VIRTUAL_ENV%\scripts.
diff --git a/venvUtils/venvCmd.bat b/venvUtils/venvCmd.bat
index c18b6b1d135..9d2c5a47ae0 100644
--- a/venvUtils/venvCmd.bat
+++ b/venvUtils/venvCmd.bat
@@ -8,7 +8,7 @@ rem This script also supports running in an already fully activated NVDA Python
rem If this is detected, the command is executed directly instead.
if "%VIRTUAL_ENV%" NEQ "" (
if "%NVDA_VENV%" NEQ "%VIRTUAL_ENV%" (
- echo Warning: Detected a custom Python virtual environment.
+ echo Warning: Detected a custom Python virtual environment.
echo It is recommended to run all NVDA build system commands outside of any existing Python virtual environment, unless you really know what you are doing.
)
echo directly calling %*