Announce Window Position Feature - B3P15/CSC-403-nvda-project GitHub Wiki
Author: Kieran Gilpin Link to Add-on Repo: Here
Description
Referenced Issue: Here
- This feature relays the position of a minimized window relative to the screen when moving the window via keyboard shortcuts (alt+space, m, arrow keys). The purpose of this is to give users a general idea of their position on the screen. Currently, NVDA relays no feedback to the user when such actions are performed. This can be problematic if a window is mistakenly moved off screen and is unable to be located by the user.
General Approach
- This feature is structured as an add-on. It is packaged separately and adds the feature to the existing source code of the build it was downloaded from, rather than modifying source code directly. This add-on is a global plugin, as the feature must work across a variety of applications. For more information on the distinction between global plugins, and add-ons that only affect single applications, see the Add-on Dev Guide.
- To do this, it was required to bind the aforementioned keyboard shortcuts to scripts that only fire if the proper conditions are met (mainly, a window is the object of focus). As the alt+space command is not utilized by any other facet of NVDA, and has only recently been repurposed as a co-pilot shortcut (can be disabled in Windows settings), the native functions of the window movement are not impacted.
What Went Right
- The sheer amount of documentation that has been produced for this project provided invaluable information. A complete dev guide for both the source code and add-on development made interpretation of internal structures and dataflow simple.
- Communication with real NVDA developers was an avenue to not only pitch our solutions, but also gauge feasibility of implementation.
- Constant and thorough communication between teammates ensured any discoveries made individually were shared with the group. We learned this software together, and gleaning the context in which each feature was implemented gave us a better understanding of the system as a whole.
What Went Wrong
- NVDA is a massively complex application. It has to be if it is to completely refactor the user experience into a medium without visuals. The first thing that went wrong was the naive assumption that development would be easy simply because the app is written with familiar tools. Due to that, I waited a bit too long before deep-diving into the code base and running the application in debug mode.
- Additionally because the documentation is so comprehensive, I did not explore every resource available to me. For the first week, I only looked at the development guide found in the main NVDA repository. It wasn't until the second week that I discovered the Q+A section of the main NVDA repository, the add-on development guide, and the add-on form where developers communicate and ask questions.
Next Steps
- During the next sprint, I will waste no time before diving into the code related to my assigned user story.
- During the next sprint, I will utilize all available resources to get questions answered sooner rather than later.