OSDN Git Service

nvdajp/nvdajp.git
15 years ago * Add a top level directory called extras to contain useful extra files that don...
James Teh [Thu, 20 Aug 2009 04:19:00 +0000 (14:19 +1000)]
* Add a top level directory called extras to contain useful extra files that don't ft into the main part of the distribution.
* Added extras/NVDA CD, which includes the files used to build the NVDA CD distributed by NV Access at CSUN and other exhibitions.

15 years agoNew misc-deps package, version 2009-08-20-01: New NVDAHelper.
James Teh [Thu, 20 Aug 2009 00:11:27 +0000 (10:11 +1000)]
New misc-deps package, version 2009-08-20-01: New NVDAHelper.

15 years agoUpdate for comtypes 0.6.1.
James Teh [Wed, 19 Aug 2009 23:38:41 +0000 (09:38 +1000)]
Update for comtypes 0.6.1.

15 years agospeech.getControlFieldSpeech(): Speak embedded objects; e.g. in virtual buffers.
James Teh [Wed, 19 Aug 2009 23:35:23 +0000 (09:35 +1000)]
speech.getControlFieldSpeech(): Speak embedded objects; e.g. in virtual buffers.

15 years agoBase virtualBuffer TextInfo: fix some exceptions by making sure an empty string is...
Michael Curran [Wed, 19 Aug 2009 23:24:51 +0000 (09:24 +1000)]
Base virtualBuffer TextInfo: fix some exceptions by making sure an empty string is returned rather than None for methods that return text.

15 years agonvdaHelperRemote: Don't skip NVDA's process when injecting winEvent hooks. This makes...
Michael Curran [Wed, 19 Aug 2009 23:20:41 +0000 (09:20 +1000)]
nvdaHelperRemote: Don't skip NVDA's process when injecting winEvent hooks. This makes sure that typed characters etc will be announced in NVDA's process (menu, elements lists etc).

15 years agoMSHTML TextInfo: if the document's body is editable, then fall back to using the...
Michael Curran [Wed, 19 Aug 2009 13:17:56 +0000 (23:17 +1000)]
MSHTML TextInfo: if the document's body is editable, then fall back to using the selection's textRange. It seems for editable documents such as composing mail in Outlook Express, there are textAreas for each paragraph, though they are never focused as such.

15 years agovirtual buffers:
James Teh [Wed, 19 Aug 2009 06:41:47 +0000 (16:41 +1000)]
virtual buffers:
* Events are no longer fired on a virtual buffer before it has completed loading. This is more correct and should fix some exceptions.
* When a virtual buffer first gains focus, it fakes a focus event on the focus object, as the loaded buffer will probably miss the first focus event.
* When handling the first object focus for a buffer, always treat it as if the caret has not yet been moved within the focus. This is necessary when the focused node is right at the start of the buffer, which is where the caret is initially located. Fixes the plain text composer in Windows Live Mail.

15 years agoIAccessibleHandler.winEventCallback: only normalize Mozilla windows to their content...
Michael Curran [Wed, 19 Aug 2009 04:05:35 +0000 (14:05 +1000)]
IAccessibleHandler.winEventCallback: only normalize Mozilla windows to their content window class if the event's childID is negative. Positive childIDs are probably for plugins such as Flash. This again allows NVDA to announce the focus as it moves around plugins in Mozilla documents.

15 years agomshtml vbuf backend: Fix a crash caused by certain image nodes under rare circumstanc...
James Teh [Tue, 18 Aug 2009 12:50:45 +0000 (22:50 +1000)]
mshtml vbuf backend: Fix a crash caused by certain image nodes under rare circumstances; e.g. French Google Advanced Search.

15 years agoMSHTML TextInfo:
Michael Curran [Tue, 18 Aug 2009 11:13:20 +0000 (21:13 +1000)]
MSHTML TextInfo:
*Refactored 'expand' method.
*Always use an IHTMLTxtRange retreaved from the control for the TextInfo even if the selection or caret is requested. In these cases, fetch a bookmark for the selection and move the real textRange to it. This fixes problems where expanding to sentence or story would bleed the textRange out of the control.
Fixes #388.

15 years agospeech.speakObject: if the object should have its TextInfo reported, report the line...
Michael Curran [Tue, 18 Aug 2009 10:55:48 +0000 (20:55 +1000)]
speech.speakObject: if the object should have its TextInfo reported, report the line at the caret, rather than the readingChun.

15 years agovirtual buffer elements list dialog: Due to user dissatisfaction, don't filter the...
James Teh [Tue, 18 Aug 2009 07:07:08 +0000 (17:07 +1000)]
virtual buffer elements list dialog: Due to user dissatisfaction, don't filter the tree when typing into it. Instead, implement our own code which immitates the search behaviour when typing into a list view. (We have to use our own code because tree views don't allow space to be passed to the search.) Also, for users that do want to filter the list, add a filter edit field which filters the items in the tree. Hopefully, this will allow for the best of both worlds.

15 years agoNew misc-deps package, version 2009-08-18-01: New NVDAHelper.
James Teh [Tue, 18 Aug 2009 04:03:12 +0000 (14:03 +1000)]
New misc-deps package, version 2009-08-18-01: New NVDAHelper.

15 years agoMSHTML vbufBackend: make sure not to render passwords in to the buffer. IE doesn...
Michael Curran [Tue, 18 Aug 2009 02:45:22 +0000 (12:45 +1000)]
MSHTML  vbufBackend: make sure not to render passwords in to the buffer. IE doesn't change the characters in to stars, so the backend does it instead.

15 years agobzr ignores: Add lib64.
James Teh [Tue, 18 Aug 2009 02:32:34 +0000 (12:32 +1000)]
bzr ignores: Add lib64.

15 years agoPython virtual buffer code: Changes to support formatting for Adobe Acrobat.
James Teh [Tue, 18 Aug 2009 02:17:21 +0000 (12:17 +1000)]
Python virtual buffer code: Changes to support formatting for Adobe Acrobat.

15 years agoNVDAHelper: adobeAcrobat vbuf backend:
James Teh [Tue, 18 Aug 2009 02:14:08 +0000 (12:14 +1000)]
NVDAHelper: adobeAcrobat vbuf backend:
* Render formatting information with the text. This requires retrieving the text using IPDDomNode. Re #381.
* Render the name as a text field before focusable controls except links, buttons, radio buttons and check boxes. Links and buttons have the name as their text.
* Don't incorrectly render the name as the text of empty editable text fields.

15 years agoInstaller: bad idea to have the uninst log to try and make sure the install dir is...
Michael Curran [Tue, 18 Aug 2009 01:54:59 +0000 (11:54 +1000)]
Installer: bad idea to have the uninst log to try and make sure the install dir is deleted. Go back to what we used to do as this just took waaaaay too long.

15 years agoNVDAHelper: VBufBackend_t::renderThread_winEventProcHook(): Copy the runningBackends...
James Teh [Tue, 18 Aug 2009 01:53:09 +0000 (11:53 +1000)]
NVDAHelper: VBufBackend_t::renderThread_winEventProcHook(): Copy the runningBackends set before iterating it, as it might be mutated by called functions during iteration, which is bad. Fixes crashes after closing windows containing virtual buffers.

15 years agoMSHTML virtualBuffer: make sure that textAreas have the multiline state. Fixes #389
Michael Curran [Tue, 18 Aug 2009 01:42:42 +0000 (11:42 +1000)]
MSHTML virtualBuffer: make sure that textAreas have the multiline state. Fixes #389

15 years agoNew misc-deps package, version 2009-08-17-01: new NVDAHelper.
James Teh [Mon, 17 Aug 2009 10:50:48 +0000 (20:50 +1000)]
New misc-deps package, version 2009-08-17-01: new NVDAHelper.

15 years agoUnification and refactor of NVDA's in-process code. (#385) This reduces duplicated...
James Teh [Mon, 17 Aug 2009 10:44:47 +0000 (20:44 +1000)]
Unification and refactor of NVDA's in-process code. (#385) This reduces duplicated code and will greatly ease future improvement and maintenance of this code. A large part of this work is that nvVBufLib is now part of NVDAHelper.
User visible changes:
* Official support for 64 bit editions of Windows! Specifically, in 64 bit applications, NVDA will now detect typed characters and virtual buffers are now supported. (#309)
* Exiting chm help embedded in an application (e.g. Wordpad in Windows XP) no longer causes a DEP error crash. (#375)
* Support for text attributes in MSHTML virtual buffers. (#386)
* Hr and textarea HTML elements are now rendered correctly into MSHTML virtual buffers. (#387)
* Closing a tab in IE8 no longer causes a crash.
* Crashes with sites that open and close new windows in quick succession are now fixed.
* Probably several other crashes fixed.

15 years agoinstaller: no need to check for and remove the lib64 directory on installation as...
Michael Curran [Mon, 17 Aug 2009 10:41:59 +0000 (20:41 +1000)]
installer: no need to check for and remove the lib64 directory on installation as old installers never had this directory anyway. Start the uninstall log recording in the installation before setting outPath to the installDir so that the log will automatically remove it on uninstallation.

15 years agoUpdate what's new.
James Teh [Mon, 17 Aug 2009 10:02:58 +0000 (20:02 +1000)]
Update what's new.

15 years agoMerge main.
James Teh [Mon, 17 Aug 2009 09:44:27 +0000 (19:44 +1000)]
Merge main.

15 years agonvdaHelper sconstruct file: do not include .exp or .lib files in the lib or lib64...
Michael Curran [Mon, 17 Aug 2009 08:58:23 +0000 (18:58 +1000)]
nvdaHelper sconstruct file: do not include .exp or .lib files in the lib or lib64 directories when installing. However pdbs are still included, if compiled not as a release.

15 years agoRemove pointless bzr ignore.
James Teh [Mon, 17 Aug 2009 08:22:15 +0000 (18:22 +1000)]
Remove pointless bzr ignore.

15 years ago * uninstaller: Rename all files/dirs to a temporary name before deleting. This avoid...
James Teh [Mon, 17 Aug 2009 07:14:30 +0000 (17:14 +1000)]
* uninstaller: Rename all files/dirs to a temporary name before deleting. This avoids any problems if files/dirs cannot be deleted and NVDA is then reinstalled without rebooting.
* installer: Add code for lib64. Similar to the above change, rename lib and lib64 to temporary names before deleting to avoid potential problems caused by old uninstallers.

15 years agologHandler.Logger.exception: Log a few other errors that we expect but can't do anyth...
James Teh [Mon, 17 Aug 2009 05:44:36 +0000 (15:44 +1000)]
logHandler.Logger.exception: Log a few other errors that we expect but can't do anything about as debugWarning instead of error.

15 years ago * logHandler.Logger: Add a method named exception() to log exceptions at an appropri...
James Teh [Fri, 14 Aug 2009 01:38:06 +0000 (11:38 +1000)]
* logHandler.Logger: Add a method named exception() to log exceptions at an appropriate level. This should be used when the caller is uncertain of the severity of an exception. For now, it logs all exceptions at level ERROR, except for call cancelled COM errors, which are logged at DEBUGWARNING, as they are expected if the watchdog detects a freeze.
* Use log.exception for exceptions caught at a high level; i.e. the core pump, eventHandler.executeEvent and scriptHandler.executeScript.

15 years agonvdaHelper sconstruct: refactor for better readability. Export specific variables...
Michael Curran [Thu, 13 Aug 2009 12:28:50 +0000 (22:28 +1000)]
nvdaHelper sconstruct: refactor for better readability. Export specific variables to each SConscript rather than globally. Force installation of files to be performed after all other targets are built (so that nothing gets installed if the build some how fails). Only build nvdaHelperRemoteLoader for x64, and only build nvdaHelperLocal for x86. Install all targets of libraries and programs to the install dir, rather than just the first target of each (e.g. the dll or exe). This means that lib and lib64 will now contain dlls, libs, exps and pdbs. This is mostly useful if compiling a debug build. NVDA's setup.py should be changed to only copy dlls from the lib dirs.  Also for better management, get rid of vbufBackends/sconscript and list each backend individually in the sconstruct file.

15 years agonvdaHelper.py: assign stdout and stderr of remoteLoader to nul. Although not doing...
mick [Thu, 13 Aug 2009 00:16:29 +0000 (10:16 +1000)]
nvdaHelper.py: assign stdout and stderr of remoteLoader to nul. Although not doing this works ok on Windows 7, Vista and XP need this.

15 years agosetup.py: include lib64 in the distribution.
Michael Curran [Wed, 12 Aug 2009 11:11:24 +0000 (21:11 +1000)]
setup.py: include lib64 in the distribution.

15 years agonvdaHelperRemote: fix a bug where an application could crash on exit if a hook was...
Michael Curran [Wed, 12 Aug 2009 10:17:40 +0000 (20:17 +1000)]
nvdaHelperRemote: fix a bug where an application could crash on exit if a hook was fired after global c++ objects in nvdaHelperRemote had been destroyed. For example sometimes in Wordpad when exiting a winEvent hook would be fired, yet the inProcess_registeredWinEventHooks map had been destroied, so calls to its begin() method would crash the application. To fix this inProcess_isInitialized was replaced with two variables: inProcess_isRunning and inProcess_wasInitializedOnce. This provides a way for code to work out if nothing has been initialized yet, if the inProcess code is currently running, or if the code is not running but it was in the past. In short it means that no  custom hook code can run after the inProcess code has terminated, which would have happened in dllMain ore before.

15 years agonvdaHelper: if compiling a release (release=1), make sure to define NDEBUG so that...
Michael Curran [Wed, 12 Aug 2009 06:11:35 +0000 (16:11 +1000)]
nvdaHelper: if compiling a release (release=1), make sure to define NDEBUG so that assertions are disabled. Also only perform debugging beeps if NDEBUG is not defined.

15 years agonvdaHelperRemote: replace some fprintf calls with MessageBox calls for easier debuggi...
Michael Curran [Wed, 12 Aug 2009 04:02:05 +0000 (14:02 +1000)]
nvdaHelperRemote: replace some fprintf calls with MessageBox calls for easier debugging. ia2Support: make isIA2Initialized   specific to one process, rather than storing it in shared memory as only ia2Support_initialize and ia2Support_terminate make use of it now. Add some asseritions. nvdaHelperRemoteLoader: double check return codes of initialization and termination of nvdaHelperRemote for easier debugging.

15 years agonvdaHelper.py: in initialize start nvdaHelperRemoteLoader if nvda is running on...
mick [Wed, 12 Aug 2009 04:23:31 +0000 (14:23 +1000)]
nvdaHelper.py:  in initialize start nvdaHelperRemoteLoader if nvda is running on an x64 processor. In terminate close stdin of nvdaHelperRemoteLoader if it is running, and wait for it to exit. These changes finally allow NVDA to fully work with 64 bit applications. This means that NVDA will now be able to announce typed characters in 64 bit applications, and it will be able to use virtualBuffers in 64 bit applications. An example of where this was previously a problem was pressing f1 in Windows Explorer on a 64 bit OS -- NVDA was not able to read documents in Windows Help and Support Centre as it was 64 bit.

15 years agoChange NVDA virtualBuffer classes to use a backend name instead of a path to the...
Michael Curran [Tue, 11 Aug 2009 12:39:11 +0000 (22:39 +1000)]
Change NVDA virtualBuffer classes to use a backend name instead of a  path to the backend dll, as nvdaHelperRemote now calculates the dll path, in order to keep it working in 64-bit processes.

15 years agonvdaHelper changes to help it more easily find other dlls.
Michael Curran [Tue, 11 Aug 2009 12:34:12 +0000 (22:34 +1000)]
nvdaHelper changes to help it more easily find other dlls.
*Provide a 'dllDirectory' variable in nvdaHelperRemote which is located in shared memory and contains the directory name of the dll when it was loaded.
*IA2Support code in remote: make use of dllDirectory when calculating the IA2DllPath.
*Rename shared memory segments in nvdaHelperRemote to names that are a little more up to date... hookManager disappeared a long time ago.
*vbuf interface (createBuffer function): rather than taking a backend path, take a backend name (let code calculate the actual dll path).
*Move declarations from remote/hookRegistration.h in to remote/nvdaHelperRemote.h and remove hookRegistration.h. Its probably easier just for code to include nvdaHelperRemote.h.

15 years agoAdded remoteLoader, which is code that makes a very simple program that initializes...
Michael Curran [Tue, 11 Aug 2009 10:58:06 +0000 (20:58 +1000)]
Added remoteLoader, which is code that makes a very simple program that initializes nvdaHelperRemote.dll, waits until its standard input is closed, and then terminates nvdaHelperRemote.dll and exits. The reason for this program is so that nvda is able to load 64-bit versions of nvdaHelperRemote.dll and the vbufBackends etc. All it needs to do is start nvdaHelperRemoteLoader and leave it running for the time it expects  64-bit applications to be hooked with nvdaHelperRemote.

15 years agonvdaHelper libraries can now be build for 64-bit systems. add TARGET_ARCH=x86_64...
Michael Curran [Tue, 11 Aug 2009 06:19:39 +0000 (16:19 +1000)]
nvdaHelper libraries can now be build for 64-bit systems. add TARGET_ARCH=x86_64 to the scons command. scons install TARGET_ARCH=x86_64 will also install 64-bit librarys in to ..\lib64 rather than ../lib. As the latest stable SCons is rather broken in regards to the MS Windows SDK, please use an SCons development version from the SCons svn repository. Also added a small fix to SCons in regard to the Windows SDK in site_scons/site_init.py.

15 years agomshtml backend:
Aleksey Sadovoy [Mon, 10 Aug 2009 16:02:16 +0000 (19:02 +0300)]
mshtml backend:
 * Render <hr> node as separator (adding isBlock=true, IAccessible role of separator and space as its content)
 * Properly render <textarea> even if it contains no text data
Fixes #387.

15 years agoUpdated .bzrignore
Michael Curran [Sun, 9 Aug 2009 23:42:32 +0000 (09:42 +1000)]
Updated .bzrignore

15 years agoRather than using nmake Makefiles to control the building of nvdaHelper, instead...
Michael Curran [Sun, 9 Aug 2009 23:41:40 +0000 (09:41 +1000)]
Rather than using nmake Makefiles to control the building of nvdaHelper, instead use the SCons build system.
SCons is a darn powerful build system equivilant to autotools and make all in one, that is written in Python.

*An sconstruct file and sconscript files have been added to control the build. A site_scons directory has been added which contains some custom code for SCons (for now just a builder for MSRPC stubs -- by default SCons can only do full type libraries).
*make.opts and all Makefile files have been removed as they are no longer needed.
*interfaces\vbuf\vbuf.acf has been removed as it seems we never needed it anyway since we explicitly give a binding/context handle as the first argument to all methods.
*The pragma preprocesser command above dllMain in the code for each dll has been removed --  msvc seems to do fine with out it -- I must have been reading some ... very old ... instructions.

Notes:
1. Please read building.txt to learn how to now build nvdaHelper.
 2. There is no longer a need to build from an msvc environment command prompt.
3. There is no longer a need to run midl on ia2 and acrobatAccess before building the first time. However if it isn't run a full type library is generated as well as the stubs, no real way to turn this off yet.
4. By default a version with debugging symbols is generated, provide release=1 to generate a release version.

15 years agomshtml backend:
Aleksey Sadovoy [Sat, 8 Aug 2009 11:04:14 +0000 (14:04 +0300)]
mshtml backend:
 * Fixed italic text attribute. Now it is reported by NVDA.
 * added more formatting attributes such as following: bold,underline,strikethrough,superscript,subscript etc.

15 years ago * MSHTML backend: implemented retrieving of text format attributes such as font...
Aleksey Sadovoy [Fri, 7 Aug 2009 23:56:24 +0000 (02:56 +0300)]
 * MSHTML backend: implemented retrieving of text format attributes such as font name, size, style (thus style doesn't tested) as well as text align. It works pretty well for me in virtual buffers.

15 years agoMSHTML backend:
Aleksey Sadovoy [Fri, 7 Aug 2009 20:40:13 +0000 (23:40 +0300)]
MSHTML backend:
 * Don't try to get node attributes if nodeName is not supported (comment or script).
Receive current style 'visibility' and 'display' directly, removing unnecessary catching in map (as those are not used by AT). When text formatting will be implemented, attributes can be directly added to the node.
 * node.cpp CDispatchChangeSink constructor: use initializers instead of assigning initial values manually.

15 years agoUpdate bzr ignores.
James Teh [Fri, 7 Aug 2009 09:10:44 +0000 (19:10 +1000)]
Update bzr ignores.

15 years agoRevert the suppression of the NVDA error sound when log level is info. We might suppr...
James Teh [Fri, 7 Aug 2009 06:48:03 +0000 (16:48 +1000)]
Revert the suppression of the NVDA error sound when log level is info. We might suppress it later for final release versions.

15 years agoChanges to nvdaHelper to fix some errors when applications exit. Code for initializin...
Michael Curran [Fri, 7 Aug 2009 04:15:08 +0000 (14:15 +1000)]
Changes to nvdaHelper to fix some errors when applications exit. Code for initializing and terminating thread-specific code has been removed.  It was too hard to detect when some threads terminated (in most cases there was no way for the code to be accurately notified).
Instead code should only initialize and terminate process-wide.
These changes also finally seem to fix a major problem in Internet Explorer 8 where closing a tab would freeze both IE and NVDA.
Specific changes:
*nvdaHelperRemote: hook registrations can only now be made process-wide, rather than thread-wide.
*nvdaHelperRemote: remove inThread_initialize and inThread_terminate.
*nvdaHelperRemote typedCharacter and inputLangChange code:  provide a blah_inProcess_initialize and blah_inProcess_terminate functions which register and unregister hooks as the inThread_* code is now gone.
*VBufBackend_t: no longer provide a threadID when registering and unregistering windows hooks for use with renderThread_initialize and renderThread_terminate as thread-specific registration is now gone. These registrations happen process-wide, which in most cases is not too bad.
*nvdaHelperRemote hook registration code: when iterating through registered hooks and executing them, firstly copy the hooks to a temporary list and execute them from there. This stops major errors if a hook is unregistered inside the execution of a hook -- the iterator would get quite broken.

15 years agoVBufBackend_t: a Windows timer is used to minimize the amount of rerenders of the...
Michael Curran [Thu, 6 Aug 2009 12:01:59 +0000 (22:01 +1000)]
VBufBackend_t: a Windows timer is used to minimize the amount of rerenders of the content. However previously the timer was registered specific to the root window of the backend, so then the timerProc would look for a backend with the same rootWindow and timerID. But it seems that SetTimer when given a window, can not accept no predefined timerID (0). We definitly can not predefine one as its rather possible that the host application may have already used that value. So, go back to the way it was done in nvVBufLib where the timer is only specific to the thread (window is 0), as SetTimer then does allow a timerID of 0, and it happily generates one for us.  As its specific to the thread though, a renderThreadID member was added to the backend so that the timerProc can find a backend with a matching threadID, and then a matching timer ID. To make things a little nicer code-wise, the setting and killing of timers has been wrapped up in to two new methods: requestUpdate and cancelPendingUpdate.

15 years agoadobeAcrobat virtual buffer: Fix the form field quick navigation key.
James Teh [Thu, 6 Aug 2009 07:58:59 +0000 (17:58 +1000)]
adobeAcrobat virtual buffer: Fix the form field quick navigation key.

15 years agoVBufBackend_t: as renderThread_initialize is virtual, its impossible for VBufBackend_...
Michael Curran [Thu, 6 Aug 2009 07:14:28 +0000 (17:14 +1000)]
VBufBackend_t: as renderThread_initialize is virtual, its impossible for VBufBackend_t's constructor to directly or indirectly call it. So instead of the constructor hooking and initializing the renderring thread code, VBufBackend_t::initialize has been added. This must be called after instanciating a backend. The same with the destructor VBufBackend_t::terminate has been added, which must be called before destroy to delete the backend. This fixes an error where starting a backend would cause a C Runtime error 'Pure virtual function call'

15 years agochange: The NVDA error sound is no longer played if the log level is set to info...
James Teh [Thu, 6 Aug 2009 04:52:05 +0000 (14:52 +1000)]
change: The NVDA error sound is no longer played if the log level is set to info (the default). Most errors aren't significant for most users, so this sound is undesirable. The log level can easily be changed to hear the sound when debugging a particular problem.

15 years agoVBufBackend_t::renderThread_callWndProcHook: the backend is pcwp->wParam, not wParam...
Michael Curran [Thu, 6 Aug 2009 02:56:22 +0000 (12:56 +1000)]
VBufBackend_t::renderThread_callWndProcHook: the backend is pcwp->wParam, not wParam! Fixes a crash.

15 years agoRemove all unicode defines from nvdaHelper files, as it is now defined by the root...
Michael Curran [Thu, 6 Aug 2009 02:06:06 +0000 (12:06 +1000)]
Remove all unicode defines from nvdaHelper files, as it is now defined by the root Makefile.

15 years agoConverted AdobeAcrobat, Gecko and Mshtml VBufBackends to be compatible with the new...
Michael Curran [Thu, 6 Aug 2009 01:55:15 +0000 (11:55 +1000)]
Converted AdobeAcrobat, Gecko and Mshtml VBufBackends to be compatible with the new changes to the base backend in vbufBase. This meant removing lots of duplicated hooking and timer code from each, plus fiddling around a bit with static methods etc, and for AdobeAcrobat and Gecko at least, remvoing dllMain etc as it is not needed for these backends.

15 years agoVBufBase/Makefile: link vbufBase_static.lib against nvdaHelperRemote.lib, so that...
Michael Curran [Thu, 6 Aug 2009 01:38:44 +0000 (11:38 +1000)]
VBufBase/Makefile: link vbufBase_static.lib against nvdaHelperRemote.lib, so that it can access the hook registration functions.

15 years agoVBufBackend_t::invalidateSubtree: make this method public again rather than protected...
Michael Curran [Thu, 6 Aug 2009 01:37:49 +0000 (11:37 +1000)]
VBufBackend_t::invalidateSubtree: make this method public again rather than protected, as it seems you can not access a protected instance method from a static method of the same class. Plus, I guess its ok to make it public as then an AT would be able to refresh any particular part of the page they liked.

15 years agoVBufBackend_t::renderThread_terminate: if there is a pending timer to be fired, kill...
Michael Curran [Thu, 6 Aug 2009 00:55:26 +0000 (10:55 +1000)]
VBufBackend_t::renderThread_terminate: if there is a pending timer to be fired, kill it off.

15 years agoVBufBackend_t: remove renderThreadIsInitialized member as its not used. runningBacken...
Michael Curran [Wed, 5 Aug 2009 23:48:32 +0000 (09:48 +1000)]
VBufBackend_t: remove renderThreadIsInitialized member as its not used. runningBackends is checked for the particular backend instead.

15 years agoUpdated czech language file, italian user guide and added italian what's new document
Peter Vágner [Wed, 5 Aug 2009 14:49:25 +0000 (16:49 +0200)]
Updated czech language file, italian user guide and added italian what's new document

15 years agobase backend (VBufBackend_t): Make quite a few methods and data methods private as...
Michael Curran [Wed, 5 Aug 2009 11:06:24 +0000 (21:06 +1000)]
base backend (VBufBackend_t): Make quite a few methods and data methods private as they should not be accessible from higher backend implementations. Also removed getRootDocHandle and getRootId, and instead made their respective variables public, but const -- they can never be changed after backend instanciation.

15 years agoRemove ServProv.idl, which is no longer required.
James Teh [Wed, 5 Aug 2009 06:01:54 +0000 (16:01 +1000)]
Remove ServProv.idl, which is no longer required.

15 years agoRemove our comtypes ITypeLib.ReleaseTLibAttr monkey patch, as this is now fixed in...
James Teh [Wed, 5 Aug 2009 05:57:23 +0000 (15:57 +1000)]
Remove our comtypes ITypeLib.ReleaseTLibAttr monkey patch, as this is now fixed in comtypes.

15 years agoUpdate for comtypes trunk r531. Specifically, comtypes now includes IServiceProvider...
James Teh [Wed, 5 Aug 2009 05:50:21 +0000 (15:50 +1000)]
Update for comtypes trunk r531. Specifically, comtypes now includes IServiceProvider and a Pythonic implementation of QueryService, so use that instead of our own implementation.

15 years agomake.opts in root of nvdaHelper: define UNICODE in CFLAGS so that anything compiled...
Michael Curran [Wed, 5 Aug 2009 05:48:59 +0000 (15:48 +1000)]
make.opts in root of nvdaHelper: define UNICODE in CFLAGS so that anything compiled in nvdaHelper is unicode. Specific defines of UNICODE can now be removed from any files containing it.

15 years agoBase VBufBackend class restructure to share much of the hooking and timer code curren...
Michael Curran [Wed, 5 Aug 2009 05:43:56 +0000 (15:43 +1000)]
Base VBufBackend class restructure to share much of the hooking and timer code currently duplicated in each of the backend implementations.

One advantage of this change is that it makes backend implementations much simpler. Another advantage is that Backends will no longer assume an application only has one main thread, and backends will better manage when the root window of the backend is destroied while the backend still exists.

None of the backend implementations have been updated yet, so they currently will no longer compile until they are.

Specific changes:
*VBufBackend_t::invalidateSubtree: after marking the node as invalid, it sets a timer (if not already set) which will rerender the invalid content by calling update. Backend implementations no longer need to manually set timers or provide timerProc functions.
*Added VBufBackend_t::renderThread_initialize and VBufBackend_t::renderThread_terminate. These functions are virtual so can be extended.  These functions replace mainThreadSetup and mainThreadTerminate currently in backend implementations.
*The constructor and destructor now manage registration of necessary hooks, and also send a window message to the root window, so that renderThread_initialize and renderThread_terminate are executed in the rendering thread.
*The base backend uses a winEvent hook to detect the destruction of the root window, or any ancestor of the root window, and calls renderThread_terminate. This is useful so that any code a backend implementation may have that  relies upon the rootWindow existing has a chance to terminate when the window goes away. The base backend's destructor checks if renderThread_terminate has been called yet, and if not makes sure its executed in the renderThread.
*The base backend class (VBufBackend_t) has a static set called runningBackends which holds any currently running backends. base implementations of renderThread_initialize and renderThread_terminate manage the adding and removal of the backends.

15 years agoAdobeAcrobat virtual buffer: Normalise the bold and italic Acrobat font flags in...
James Teh [Wed, 5 Aug 2009 02:15:06 +0000 (12:15 +1000)]
AdobeAcrobat virtual buffer: Normalise the bold and italic Acrobat font flags in format fields. This means that bold and italic text is now reported in these buffers.

15 years ago * XMLFormatting: Don't lower case attribute names in format fields. We already stopp...
James Teh [Wed, 5 Aug 2009 02:11:17 +0000 (12:11 +1000)]
* XMLFormatting: Don't lower case attribute names in format fields. We already stopped doing this for control fields a while ago.
* base VirtualBufferTextInfo: Introduce a _normalizeFormatField() which is called for format fields just as _normalizeControlField() is called for control fields.

15 years agonvdaHelperRemote: the hook registration infrastructure makes sure it only ever execut...
Michael Curran [Tue, 4 Aug 2009 06:33:16 +0000 (16:33 +1000)]
nvdaHelperRemote: the hook registration infrastructure makes sure it only ever executes a particular  registered hook once in the firing of a hook. Previously it was possible to register the same hook callback multiple times and have it therefore get called multiple times. Now registering a hook once works normally, but registering it multiple times just increases an internal reference count on that hook. Therefore  to unregister the hook, the unregister function must be called the same amount of times as the register function. Apart from stopping some confusion and abuse of nvdaHelperRemote, this change also helps in a future implementation of VBufBackend_t that would not be able to handle the same hook function being registered multiple times.

15 years agoRestructure What's New document to make it easier to follow. Remove entries prior...
James Teh [Tue, 4 Aug 2009 05:33:49 +0000 (15:33 +1000)]
Restructure What's New document to make it easier to follow. Remove entries prior to version 0.5.

15 years agoMerged main
Michael Curran [Tue, 4 Aug 2009 01:26:32 +0000 (11:26 +1000)]
Merged main

15 years agonvda.pyw: Use winUser instead of win32gui. Removes dependency on win32gui.
James Teh [Mon, 3 Aug 2009 23:10:43 +0000 (09:10 +1000)]
nvda.pyw: Use winUser instead of win32gui. Removes dependency on win32gui.

15 years agowinUser: Add FindWindow, MessageBox and PostMessage functions. Remove really old...
James Teh [Mon, 3 Aug 2009 22:46:05 +0000 (08:46 +1000)]
winUser: Add FindWindow, MessageBox and PostMessage functions. Remove really old and obsolete sendMessage2 function.

15 years agovirtual buffers: Catch and cleanly log errors when loading buffers.
James Teh [Mon, 3 Aug 2009 21:56:35 +0000 (07:56 +1000)]
virtual buffers: Catch and cleanly log errors when loading buffers.

15 years agovirtual buffer refreshBuffer script: Don't send the key on to the application if...
James Teh [Mon, 3 Aug 2009 21:50:26 +0000 (07:50 +1000)]
virtual buffer refreshBuffer script: Don't send the key on to the application if there is no vbufHandle, as this is an NVDA key.

15 years agoUpdated brazilian portuguese, finnish, spanish, galician and russian language files
Peter Vágner [Mon, 3 Aug 2009 17:20:19 +0000 (19:20 +0200)]
Updated brazilian portuguese, finnish, spanish, galician and russian language files

15 years agonvdaHelperRemote: all hook registration functions now take an optional threadID incas...
Michael Curran [Mon, 3 Aug 2009 11:00:06 +0000 (21:00 +1000)]
nvdaHelperRemote: all hook registration functions now take an optional threadID incase code needs to register a callback for a thread other than its own.

15 years agoVBufStorage: create a new class called VBufStorage_textContainer_t. It is a wrapper...
Michael Curran [Mon, 3 Aug 2009 10:33:06 +0000 (20:33 +1000)]
VBufStorage: create a new class called VBufStorage_textContainer_t. It is a wrapper around a stl wstring class that provides saftey when using it across CRTs. VBufStorage_buffer_t::getTextInRange now returns a pointer to a VBufStorage_textContainer_t which contains the text, rather than taking a string by reference. VBufRemote_getTextInRange: handle the change to VBufStorage_buffer_t::getTextInRange. This change stops a crash when trying to use the VBufBackends from nvdaHelperRemote. NVDA now seems to work quite ok with virtualBuffers via nvdaHelper.

15 years agoVBufBackend_t: add a 'destroy' method which must be used to destroy/delete the backen...
Michael Curran [Mon, 3 Aug 2009 09:30:11 +0000 (19:30 +1000)]
VBufBackend_t: add a 'destroy' method which must be used to destroy/delete the backend after you are finnished with it. 'destroy' simply calls 'delete this'. Make ~VBufBackend_t() protected so that it is impossible to  delete the backend outside itself. This all is so that if you get a backend by calling createBackend, you don't then delete it yourself as doing this from another CRT would cause a crash most likely.  VBufRemote_destroyBuffer: use backend::destroy rather than deleting the backend.

15 years agomake.opts of nvdaHelper: fix typo.
Michael Curran [Mon, 3 Aug 2009 09:26:21 +0000 (19:26 +1000)]
make.opts of nvdaHelper: fix typo.

15 years agologHandler: We currently capture stdout and stderr for unhandled exceptions and warni...
James Teh [Mon, 3 Aug 2009 07:08:59 +0000 (17:08 +1000)]
logHandler: We currently capture stdout and stderr for unhandled exceptions and warnings, but the formatting sucks and warnings are logged as errors. Therefore, override the default Python exception and warning handling hooks to use our logger. Python warnings are logged at level debugWarning.

15 years agoappModuleHandler.AppModule.__init__: create a connection with nvdaHelperLocal and...
Michael Curran [Mon, 3 Aug 2009 04:18:26 +0000 (14:18 +1000)]
appModuleHandler.AppModule.__init__: create a connection with nvdaHelperLocal and store it on the appModule as helperLocalBindingHandle. __del__ destroies the connection. Base virtualBuffer: make use of the appModule's helperLocalBindingHandle as the binding handle to pass to createBuffer. Change all calls to the old VBufClient to instead go to nvdaHelper.localLib. Also VBufRemote_ calls are now just VBuf_ calls. NVDA seems to run now, though nvdaHelperRemote is making apps crash when dealing with virtualBuffers... will sort out in a future commit.

15 years agonvdaHelper: add a 'install' target to the root Makefile, so that you can run nmake...
Michael Curran [Mon, 3 Aug 2009 04:15:04 +0000 (14:15 +1000)]
nvdaHelper: add a 'install' target to the root Makefile, so that you can run nmake install and have it compile and install in to ../lib. Note though that xcopy will still ask you if you wish to overwrite the dlls if they already exist.

15 years agonvdaHelper.py: rather than loading nvdaHelper.dll and calling it helperLib, load...
Michael Curran [Mon, 3 Aug 2009 03:43:47 +0000 (13:43 +1000)]
nvdaHelper.py: rather than loading nvdaHelper.dll and calling it helperLib, load both nvdaHelperRemote.dll and nvdaHelperLocal.dll and call them remoteLib and localLib respectivly.  in terminate just set the remoteLib and localLib to None rather than deleting them. Use winUser.WINEVENTjPROC as the ctypes WINFUNCTYPE rather than redefining it for the winEventHook function.

15 years agoMerged main (which now contains lessFreezing branch)
Michael Curran [Mon, 3 Aug 2009 03:31:34 +0000 (13:31 +1000)]
Merged main (which now contains lessFreezing branch)

15 years agoUser visible changes:
James Teh [Mon, 3 Aug 2009 01:13:21 +0000 (11:13 +1000)]
User visible changes:
* fix: NVDA will now attempt to recover from some situations which would previously cause it to freeze completely. It may take up to 10 seconds for NVDA to detect and recover from such a freeze.
* new: Virtual buffers are now rendered in the background, allowing the user to interact with the system to some extent during the rendering process. The user will be notified that the document is being rendered if it takes longer than a second.
* new: If NVDA detects that it has frozen for some reason, it will automatically pass all keystrokes through so that the user has a better chance of recovering the system.

Important notes for developers:
* CoCallCancellationHandler has been refactored into a new module called watchdog.
* A lot of low level IAccessible code, including constants, has been moved into a new module called oleacc.

15 years agoUpdate what's new.
James Teh [Mon, 3 Aug 2009 01:12:56 +0000 (11:12 +1000)]
Update what's new.

15 years agoMerge main.
James Teh [Mon, 3 Aug 2009 00:23:44 +0000 (10:23 +1000)]
Merge main.

15 years agoPartial fix for ticket #376: password characters can be read in Internet Explorer...
Michael Curran [Sun, 2 Aug 2009 23:53:44 +0000 (09:53 +1000)]
Partial fix for ticket #376:  password characters can be read in Internet Explorer. Now NVDA will only report asterisk characterswhen navigating around a password field in Internet Explorer (in focus mode). A fix for broase mode (so that they do not get rendered in the virtualBuffer) must be worked on in the MSHTML vbufBackend.

15 years agoChanged mshtml VBufBackend to build with nvdaHelper. When building nvdaHelper vbufBac...
Michael Curran [Sun, 2 Aug 2009 04:22:53 +0000 (14:22 +1000)]
Changed mshtml VBufBackend to build with nvdaHelper. When building nvdaHelper vbufBackend_mshtml.dll is now produced.

15 years agoChanged adobeAcrobat vbufBackend to be compatible with nvdaHelper and integrated...
Michael Curran [Sun, 2 Aug 2009 04:00:41 +0000 (14:00 +1000)]
Changed adobeAcrobat vbufBackend to be compatible with nvdaHelper and integrated it in to the build system. When building nvdaHelper now vbufBackend_adobeAcrobat.dll is built.

15 years agoFix up Gecko_ia2 vbufBackend to build against the new nvdaHelper system. Specificall...
Michael Curran [Sun, 2 Aug 2009 03:43:55 +0000 (13:43 +1000)]
Fix up Gecko_ia2 vbufBackend to build against the new nvdaHelper  system. Specifically: change some includes.  Change constructor to no longer take a storage buffer as an argument. change createBackend to no longer take a storageBuffer as an argument. Change any code to use the backend rather than backend->getStorageBuffer(). Change the Makefile so that the backend links against the static vbufBase lib.  Change the root vbufBackends Makefile to build gecko_ia2.  All these changes now means that the gecko_ia2 vbufBackend (vbufBackend_gecko_ia2.dll) gets compiled with everything else.

15 years agoMove all VBufBackends to a vbufBackends dir in the root of NVDAHelper as they are...
Michael Curran [Sun, 2 Aug 2009 01:25:04 +0000 (11:25 +1000)]
Move all VBufBackends to a vbufBackends dir in the root of NVDAHelper as they are really separate dlls. move all vbuf/base and vbuf/common files in to a vbufBase dir in the root of NVDAHelper and change the Makefile to build vbufBase_static.lib (which is a static library that contains all the vbufBase code, that backends should link against). Fix up a few things in vbufBase missed in previous commits such as getting rid of a few more VBUFLIBENTRy and libEntry.h mentions. Also remove any mention of storageBuffer member from vbufBackend, instead just use the vbufBackend object itself.

15 years agoMove some docs etc out of vbuf and in to the root of NVDAHelper. building.txt will...
Michael Curran [Sun, 2 Aug 2009 00:18:58 +0000 (10:18 +1000)]
Move some docs etc out of vbuf and in to the root of NVDAHelper. building.txt will have to be rewritten a bit.

15 years agonvdaHelperRemote changes:
Michael Curran [Sat, 1 Aug 2009 11:50:26 +0000 (21:50 +1000)]
nvdaHelperRemote changes:
*Rather than using VBufContainer, VBufRemote now loads a backend dll and uses the dll's createBackend function, and then uses the created backend as the buffer for all of the rpc functions.  So it can eventually free the backend dll, it keeps a map of active backends to dll handles.
*rpcSrv: change the order of some code so it can compile again.
*Initialize and terminate rpcSrv in inProcess_initialize and inProcess_terminate.
*Compile in rpcSrv and VBufRemote when building nvdaHelperRemote.dll.
*Fix a typo in rpcSrv.h.
*Export the hook registration functions from nvdaHelperRemote.dll as the VBufBackend dlls may want to make use of them.

These changes finally mean that nvdaHelperRemote now contains an rpc server, plus an implementation of the VBuf interface.

Note that None of this code has been tested, though it does seem to compile ok. VBufLib and the backends still need to be worked on further, and properly integrated in to the nvdaHelper build system.

15 years agoAgain prepend VBufRemote to the bufferHandle and nodeHandle types in the VBuf interf...
Michael Curran [Sat, 1 Aug 2009 11:39:59 +0000 (21:39 +1000)]
Again prepend VBufRemote to  the bufferHandle and nodeHandle types in the VBuf interface. It is annoying that midl's /prefix does not add the given prefix to these data types.

15 years agovbufLib changes:
Michael Curran [Sat, 1 Aug 2009 11:34:58 +0000 (21:34 +1000)]
vbufLib changes:
*VBufBackend_t now inherits from VBufStorage_buffer_t.
*move lock member from VBufStorage_buffer_t to VBufBackend_t as storage by itself really has no need for locking.
*Make acquire and release methods on VBufLock_t virtual so they can be accessed from VBufRemote stub functions.
*Make most public methods on VBufStorage_buffer_t virtual so they can be accessed from VBufRemote stub functions.
*Remove all mentions of the VBUFLIBENTRY define, and remove libEntry.h. As VBufStorage will soon be compiled in to each backend there is no longer the need to hack dll exporting.
*Remove container.cpp and container.h (VBufContainer) as its no longer needed. VBufRemote stub functions will use a backend directly.