11 new commits in nvda: https://bitbucket.org/nvdaaddonteam/nvda/commits/25b6979bab12/ Changeset: 25b6979bab12 Branch: None User: mdcurran Date: 2014-08-21 09:10:09 Summary: IA2 live region support: Correct a typo that was causing added live regions to be announced. Affected #: 1 file diff --git a/nvdaHelper/remote/ia2LiveRegions.cpp b/nvdaHelper/remote/ia2LiveRegions.cpp index 99b4d5e..773f94b 100644 --- a/nvdaHelper/remote/ia2LiveRegions.cpp +++ b/nvdaHelper/remote/ia2LiveRegions.cpp @@ -273,9 +273,9 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l // Check for useful container-live on parent, as if missing or off, then child must be the root // Firstly, we assume we are the root of the region and therefore should ignore the event ignoreShowEvent=true; - IAccessible2* paccParent=NULL; - if(pacc2->QueryInterface(IID_IAccessible2,(void**)&paccParent)==S_OK) { - if(paccParent->get_attributes(&attribs)==S_OK&&attribs) { + IAccessible2* pacc2Parent=NULL; + if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK) { + if(pacc2Parent->get_attributes(&attribs)==S_OK&&attribs) { IA2AttribsToMap(attribs,attribsMap); SysFreeString(attribs); i=attribsMap.find(L"container-live"); @@ -284,7 +284,7 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l ignoreShowEvent=false; } } - paccParent->Release(); + pacc2Parent->Release(); } } pdispParent->Release(); https://bitbucket.org/nvdaaddonteam/nvda/commits/293ba9c854de/ Changeset: 293ba9c854de Branch: None User: mdcurran Date: 2014-08-22 03:56:51 Summary: IA2 live region support: when fetchingthe text from descendants to be announced in a region update, do not descend into objects who's aria-live is explicitly "off". Affected #: 1 file diff --git a/nvdaHelper/remote/ia2LiveRegions.cpp b/nvdaHelper/remote/ia2LiveRegions.cpp index 773f94b..df389fe 100644 --- a/nvdaHelper/remote/ia2LiveRegions.cpp +++ b/nvdaHelper/remote/ia2LiveRegions.cpp @@ -23,6 +23,17 @@ http://www.gnu.org/licenses/old-licenses/gpl-2.0.html using namespace std; +bool fetchIA2Attributes(IAccessible2* pacc2, map<wstring,wstring>& attribsMap) { + BSTR attribs=NULL; + pacc2->get_attributes(&attribs); + if(!attribs) { + return false; + } + IA2AttribsToMap(attribs,attribsMap); + SysFreeString(attribs); + return true; +} + IAccessible2* findAriaAtomic(IAccessible2* pacc2,map<wstring,wstring>& attribsMap) { map<wstring,wstring>::iterator i=attribsMap.find(L"atomic"); bool atomic=(i!=attribsMap.end()&&i->second.compare(L"true")==0); @@ -38,12 +49,8 @@ IAccessible2* findAriaAtomic(IAccessible2* pacc2,map<wstring,wstring>& attribsMa if(pdispParent) { IAccessible2* pacc2Parent=NULL; if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK&&pacc2Parent) { - BSTR parentAttribs=NULL; - pacc2Parent->get_attributes(&parentAttribs); - if(parentAttribs) { - map<wstring,wstring> parentAttribsMap; - IA2AttribsToMap(parentAttribs,parentAttribsMap); - SysFreeString(parentAttribs); + map<wstring,wstring> parentAttribsMap; + if(fetchIA2Attributes(pacc2Parent,parentAttribsMap)) { pacc2Atomic=findAriaAtomic(pacc2Parent,parentAttribsMap); } pacc2Parent->Release(); @@ -71,8 +78,13 @@ bool getTextFromIAccessible(wstring& textBuf, IAccessible2* pacc2, bool useNewTe if(varChildren[i].vt==VT_DISPATCH) { IAccessible2* pacc2Child=NULL; if(varChildren[i].pdispVal&&varChildren[i].pdispVal->QueryInterface(IID_IAccessible2,(void**)&pacc2Child)==S_OK) { - if(getTextFromIAccessible(textBuf,pacc2Child)) { - gotText=true; + map<wstring,wstring> childAttribsMap; + fetchIA2Attributes(pacc2Child,childAttribsMap); + auto i=childAttribsMap.find(L"live"); + if(i==childAttribsMap.end()||i->second.compare(L"off")!=0) { + if(getTextFromIAccessible(textBuf,pacc2Child)) { + gotText=true; + } } pacc2Child->Release(); } @@ -110,8 +122,13 @@ bool getTextFromIAccessible(wstring& textBuf, IAccessible2* pacc2, bool useNewTe if(paccHypertext->get_hyperlink(hyperlinkIndex,&paccHyperlink)==S_OK) { IAccessible2* pacc2Child=NULL; if(paccHyperlink->QueryInterface(IID_IAccessible2,(void**)&pacc2Child)==S_OK) { - if(getTextFromIAccessible(textBuf,pacc2Child)) { - gotText=true; + map<wstring,wstring> childAttribsMap; + fetchIA2Attributes(pacc2Child,childAttribsMap); + auto i=childAttribsMap.find(L"live"); + if(i==childAttribsMap.end()||i->second.compare(L"off")!=0) { + if(getTextFromIAccessible(textBuf,pacc2Child)) { + gotText=true; + } } charAdded=true; pacc2Child->Release(); @@ -217,18 +234,12 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l pserv->Release(); if(!pacc2) return; //Retreave the IAccessible2 attributes, and if the object is not a live region then ignore the event. - BSTR attribs=NULL; - pacc2->get_attributes(&attribs); - if(!attribs) { + map<wstring,wstring> attribsMap; + if(!fetchIA2Attributes(pacc2,attribsMap)) { pacc2->Release(); return; } - map<wstring,wstring> attribsMap; - IA2AttribsToMap(attribs,attribsMap); - SysFreeString(attribs); - attribs=NULL; - map<wstring,wstring>::iterator i; - i=attribsMap.find(L"container-live"); + auto i=attribsMap.find(L"container-live"); bool live=(i!=attribsMap.end()&&(i->second.compare(L"polite")==0||i->second.compare(L"assertive")==0||i->second.compare(L"rude")==0)); if(!live) { pacc2->Release(); @@ -275,9 +286,7 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l ignoreShowEvent=true; IAccessible2* pacc2Parent=NULL; if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK) { - if(pacc2Parent->get_attributes(&attribs)==S_OK&&attribs) { - IA2AttribsToMap(attribs,attribsMap); - SysFreeString(attribs); + if(fetchIA2Attributes(pacc2Parent,attribsMap)) { i=attribsMap.find(L"container-live"); if(i!=attribsMap.end()&&(i->second.compare(L"polite")==0||i->second.compare(L"assertive")==0||i->second.compare(L"rude")==0)) { // There is a valid container-live that is not off, so therefore the child is definitly not the root https://bitbucket.org/nvdaaddonteam/nvda/commits/af96d9f2f557/ Changeset: af96d9f2f557 Branch: None User: mdcurran Date: 2014-08-22 04:12:08 Summary: Merge branch 't4169' into next. Incubates #4169 Affected #: 1 file diff --git a/nvdaHelper/remote/ia2LiveRegions.cpp b/nvdaHelper/remote/ia2LiveRegions.cpp index 99b4d5e..773f94b 100644 --- a/nvdaHelper/remote/ia2LiveRegions.cpp +++ b/nvdaHelper/remote/ia2LiveRegions.cpp @@ -273,9 +273,9 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l // Check for useful container-live on parent, as if missing or off, then child must be the root // Firstly, we assume we are the root of the region and therefore should ignore the event ignoreShowEvent=true; - IAccessible2* paccParent=NULL; - if(pacc2->QueryInterface(IID_IAccessible2,(void**)&paccParent)==S_OK) { - if(paccParent->get_attributes(&attribs)==S_OK&&attribs) { + IAccessible2* pacc2Parent=NULL; + if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK) { + if(pacc2Parent->get_attributes(&attribs)==S_OK&&attribs) { IA2AttribsToMap(attribs,attribsMap); SysFreeString(attribs); i=attribsMap.find(L"container-live"); @@ -284,7 +284,7 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l ignoreShowEvent=false; } } - paccParent->Release(); + pacc2Parent->Release(); } } pdispParent->Release(); https://bitbucket.org/nvdaaddonteam/nvda/commits/07c195f64f00/ Changeset: 07c195f64f00 Branch: None User: mdcurran Date: 2014-08-22 04:12:41 Summary: Merge branch 't4405' into next. Incubates #4405 Affected #: 1 file diff --git a/nvdaHelper/remote/ia2LiveRegions.cpp b/nvdaHelper/remote/ia2LiveRegions.cpp index 773f94b..df389fe 100644 --- a/nvdaHelper/remote/ia2LiveRegions.cpp +++ b/nvdaHelper/remote/ia2LiveRegions.cpp @@ -23,6 +23,17 @@ http://www.gnu.org/licenses/old-licenses/gpl-2.0.html using namespace std; +bool fetchIA2Attributes(IAccessible2* pacc2, map<wstring,wstring>& attribsMap) { + BSTR attribs=NULL; + pacc2->get_attributes(&attribs); + if(!attribs) { + return false; + } + IA2AttribsToMap(attribs,attribsMap); + SysFreeString(attribs); + return true; +} + IAccessible2* findAriaAtomic(IAccessible2* pacc2,map<wstring,wstring>& attribsMap) { map<wstring,wstring>::iterator i=attribsMap.find(L"atomic"); bool atomic=(i!=attribsMap.end()&&i->second.compare(L"true")==0); @@ -38,12 +49,8 @@ IAccessible2* findAriaAtomic(IAccessible2* pacc2,map<wstring,wstring>& attribsMa if(pdispParent) { IAccessible2* pacc2Parent=NULL; if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK&&pacc2Parent) { - BSTR parentAttribs=NULL; - pacc2Parent->get_attributes(&parentAttribs); - if(parentAttribs) { - map<wstring,wstring> parentAttribsMap; - IA2AttribsToMap(parentAttribs,parentAttribsMap); - SysFreeString(parentAttribs); + map<wstring,wstring> parentAttribsMap; + if(fetchIA2Attributes(pacc2Parent,parentAttribsMap)) { pacc2Atomic=findAriaAtomic(pacc2Parent,parentAttribsMap); } pacc2Parent->Release(); @@ -71,8 +78,13 @@ bool getTextFromIAccessible(wstring& textBuf, IAccessible2* pacc2, bool useNewTe if(varChildren[i].vt==VT_DISPATCH) { IAccessible2* pacc2Child=NULL; if(varChildren[i].pdispVal&&varChildren[i].pdispVal->QueryInterface(IID_IAccessible2,(void**)&pacc2Child)==S_OK) { - if(getTextFromIAccessible(textBuf,pacc2Child)) { - gotText=true; + map<wstring,wstring> childAttribsMap; + fetchIA2Attributes(pacc2Child,childAttribsMap); + auto i=childAttribsMap.find(L"live"); + if(i==childAttribsMap.end()||i->second.compare(L"off")!=0) { + if(getTextFromIAccessible(textBuf,pacc2Child)) { + gotText=true; + } } pacc2Child->Release(); } @@ -110,8 +122,13 @@ bool getTextFromIAccessible(wstring& textBuf, IAccessible2* pacc2, bool useNewTe if(paccHypertext->get_hyperlink(hyperlinkIndex,&paccHyperlink)==S_OK) { IAccessible2* pacc2Child=NULL; if(paccHyperlink->QueryInterface(IID_IAccessible2,(void**)&pacc2Child)==S_OK) { - if(getTextFromIAccessible(textBuf,pacc2Child)) { - gotText=true; + map<wstring,wstring> childAttribsMap; + fetchIA2Attributes(pacc2Child,childAttribsMap); + auto i=childAttribsMap.find(L"live"); + if(i==childAttribsMap.end()||i->second.compare(L"off")!=0) { + if(getTextFromIAccessible(textBuf,pacc2Child)) { + gotText=true; + } } charAdded=true; pacc2Child->Release(); @@ -217,18 +234,12 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l pserv->Release(); if(!pacc2) return; //Retreave the IAccessible2 attributes, and if the object is not a live region then ignore the event. - BSTR attribs=NULL; - pacc2->get_attributes(&attribs); - if(!attribs) { + map<wstring,wstring> attribsMap; + if(!fetchIA2Attributes(pacc2,attribsMap)) { pacc2->Release(); return; } - map<wstring,wstring> attribsMap; - IA2AttribsToMap(attribs,attribsMap); - SysFreeString(attribs); - attribs=NULL; - map<wstring,wstring>::iterator i; - i=attribsMap.find(L"container-live"); + auto i=attribsMap.find(L"container-live"); bool live=(i!=attribsMap.end()&&(i->second.compare(L"polite")==0||i->second.compare(L"assertive")==0||i->second.compare(L"rude")==0)); if(!live) { pacc2->Release(); @@ -275,9 +286,7 @@ void CALLBACK winEventProcHook(HWINEVENTHOOK hookID, DWORD eventID, HWND hwnd, l ignoreShowEvent=true; IAccessible2* pacc2Parent=NULL; if(pdispParent->QueryInterface(IID_IAccessible2,(void**)&pacc2Parent)==S_OK) { - if(pacc2Parent->get_attributes(&attribs)==S_OK&&attribs) { - IA2AttribsToMap(attribs,attribsMap); - SysFreeString(attribs); + if(fetchIA2Attributes(pacc2Parent,attribsMap)) { i=attribsMap.find(L"container-live"); if(i!=attribsMap.end()&&(i->second.compare(L"polite")==0||i->second.compare(L"assertive")==0||i->second.compare(L"rude")==0)) { // There is a valid container-live that is not off, so therefore the child is definitly not the root https://bitbucket.org/nvdaaddonteam/nvda/commits/7a85683ba189/ Changeset: 7a85683ba189 Branch: None User: mdcurran Date: 2014-08-26 08:02:13 Summary: MSHTML NVDAObjects: Only make objects witha role of document into a Body object if its HTML uniqueNumber matches its document's body's uniqueNumber. this ensures that framesets in framesets are not accidentially classed as Body -- causing them to get their own virtualBuffers etc. Also, Body.parent should only skip the parent if the parent is not itself an MSHTML NVDAObject. This stops us skipping over the embedding frame within the parent document. Affected #: 1 file diff --git a/source/NVDAObjects/IAccessible/MSHTML.py b/source/NVDAObjects/IAccessible/MSHTML.py index a6bf4ee..a8e6ffb 100644 --- a/source/NVDAObjects/IAccessible/MSHTML.py +++ b/source/NVDAObjects/IAccessible/MSHTML.py @@ -386,7 +386,12 @@ class MSHTML(IAccessible): if nodeName=="SELECT" and self.windowStyle&winUser.WS_POPUP: clsList.append(PopupList) elif nodeNamesToNVDARoles.get(nodeName) == controlTypes.ROLE_DOCUMENT: - clsList.append(Body) + try: + isBodyNode=self.HTMLNodeUniqueNumber==self.HTMLNode.document.body.uniqueNumber + except (COMError,NameError): + isBodyNode=False + if isBodyNode: + clsList.append(Body) elif nodeName == "OBJECT": clsList.append(Object) elif nodeName=="FIELDSET": @@ -879,11 +884,12 @@ class Fieldset(MSHTML): class Body(MSHTML): def _get_parent(self): - # The parent of the body accessible is an irrelevant client object (description: MSAAHTML Registered Handler). + # The parent of the body accessible may be an irrelevant client object (description: MSAAHTML Registered Handler). # This object isn't returned when requesting OBJID_CLIENT, nor is it returned as a child of its parent. # Therefore, eliminate it from the ancestry completely. + # However it is possible that this body is a child document of a parent frame. In this case don't skip it. parent = super(Body, self).parent - if parent: + if parent and not isinstance(parent,MSHTML): return parent.parent else: return parent https://bitbucket.org/nvdaaddonteam/nvda/commits/b0a827b5946c/ Changeset: b0a827b5946c Branch: None User: mdcurran Date: 2014-08-26 08:05:47 Summary: Merge branch 't4418' into next. Incubates #4418 Affected #: 2 files diff --git a/source/NVDAObjects/IAccessible/MSHTML.py b/source/NVDAObjects/IAccessible/MSHTML.py index a6bf4ee..a8e6ffb 100644 --- a/source/NVDAObjects/IAccessible/MSHTML.py +++ b/source/NVDAObjects/IAccessible/MSHTML.py @@ -386,7 +386,12 @@ class MSHTML(IAccessible): if nodeName=="SELECT" and self.windowStyle&winUser.WS_POPUP: clsList.append(PopupList) elif nodeNamesToNVDARoles.get(nodeName) == controlTypes.ROLE_DOCUMENT: - clsList.append(Body) + try: + isBodyNode=self.HTMLNodeUniqueNumber==self.HTMLNode.document.body.uniqueNumber + except (COMError,NameError): + isBodyNode=False + if isBodyNode: + clsList.append(Body) elif nodeName == "OBJECT": clsList.append(Object) elif nodeName=="FIELDSET": @@ -879,11 +884,12 @@ class Fieldset(MSHTML): class Body(MSHTML): def _get_parent(self): - # The parent of the body accessible is an irrelevant client object (description: MSAAHTML Registered Handler). + # The parent of the body accessible may be an irrelevant client object (description: MSAAHTML Registered Handler). # This object isn't returned when requesting OBJID_CLIENT, nor is it returned as a child of its parent. # Therefore, eliminate it from the ancestry completely. + # However it is possible that this body is a child document of a parent frame. In this case don't skip it. parent = super(Body, self).parent - if parent: + if parent and not isinstance(parent,MSHTML): return parent.parent else: return parent diff --git a/source/NVDAObjects/window/excel.py b/source/NVDAObjects/window/excel.py index bd6a8ba..c92845a 100755 --- a/source/NVDAObjects/window/excel.py +++ b/source/NVDAObjects/window/excel.py @@ -234,7 +234,12 @@ class ExcelWorksheet(ExcelBase): return True def fetchAssociatedHeaderCellText(self,cell,columnHeader=False): - cellRegion=cell.excelCellObject.currentRegion + # #4409: cell.currentRegion fails if the worksheet is protected. + try: + cellRegion=cell.excelCellObject.currentRegion + except COMError: + log.debugWarning("Possibly protected sheet") + return None if cellRegion.count==1: minRow=maxRow=minColumn=maxColumn=None else: https://bitbucket.org/nvdaaddonteam/nvda/commits/a9285f6a512f/ Changeset: a9285f6a512f Branch: None User: mdcurran Date: 2014-08-27 04:04:33 Summary: Merge branch 'master' into next Affected #: 1 file diff --git a/source/NVDAObjects/window/winword.py b/source/NVDAObjects/window/winword.py index b0e16e6..2b69d97 100755 --- a/source/NVDAObjects/window/winword.py +++ b/source/NVDAObjects/window/winword.py @@ -368,9 +368,19 @@ class WordDocumentTextInfo(textInfos.TextInfo): class ControlField(textInfos.ControlField): def get(d,name,default=None): if name=="table-rowheadertext": - return self.obj.fetchAssociatedHeaderCellText(self._rangeObj.cells[1],False) + try: + cell=self._rangeObj.cells[1] + except IndexError: + log.debugWarning("no cells for table row, possibly on end of cell mark") + return super(ControlField,d).get(name,default) + return self.obj.fetchAssociatedHeaderCellText(cell,False) elif name=="table-columnheadertext": - return self.obj.fetchAssociatedHeaderCellText(self._rangeObj.cells[1],True) + try: + cell=self._rangeObj.cells[1] + except IndexError: + log.debugWarning("no cells for table row, possibly on end of cell mark") + return super(ControlField,d).get(name,default) + return self.obj.fetchAssociatedHeaderCellText(cell,True) else: return super(ControlField,d).get(name,default) newField=ControlField() @@ -965,14 +975,16 @@ class WordDocument(EditableTextWithoutAutoSelectDetection, Window): def script_nextParagraph(self,gesture): info=self.makeTextInfo(textInfos.POSITION_CARET) - info.move(textInfos.UNIT_PARAGRAPH,1) + # #4375: can't use self.move here as it may check document.chracters.count which can take for ever on large documents. + info._rangeObj.move(wdParagraph,1) info.updateCaret() self._caretScriptPostMovedHelper(textInfos.UNIT_PARAGRAPH,gesture,None) script_nextParagraph.resumeSayAllMode=sayAllHandler.CURSOR_CARET def script_previousParagraph(self,gesture): info=self.makeTextInfo(textInfos.POSITION_CARET) - info.move(textInfos.UNIT_PARAGRAPH,-1) + # #4375: keeping cemetrical with nextParagraph script. + info._rangeObj.move(wdParagraph,-1) info.updateCaret() self._caretScriptPostMovedHelper(textInfos.UNIT_PARAGRAPH,gesture,None) script_previousParagraph.resumeSayAllMode=sayAllHandler.CURSOR_CARET https://bitbucket.org/nvdaaddonteam/nvda/commits/2a19ce9d2669/ Changeset: 2a19ce9d2669 Branch: None User: nvdaaddonteam-admin Date: 2014-08-27 12:00:14 Summary: Merge branch 't4130' into next. Incubates #4130 * t4130: UserGuide: Include braille controle type and state abbreviations. User Guide: added a list of common braille abbreviations used in NVDA (ticket 4130). Affected #: 1 file diff --git a/user_docs/en/userGuide.t2t b/user_docs/en/userGuide.t2t index 77966c9..97833fa 100644 --- a/user_docs/en/userGuide.t2t +++ b/user_docs/en/userGuide.t2t @@ -780,6 +780,43 @@ This means that you do not have to scroll the display at the end of each line ev This may allow for more fluent reading of large amounts of text. It is disabled by default. ++++ Braille control type and state abbreviations +++ +In order to fit as much information as possible on a braille display, The folowing abbreviations have been defined to indicate control type and state. + +|| Abbreviation | Control type | +| btn | displayed in braille for an object which is a button | +| cbo | displayed in braille for an object which is a combo box | +| chk | displayed in braille for an object which is a check box | +| dlg | displayed in braille for an object which is a dialog | +| edt | displayed in braille for an object which is an editable text field | +| gra | displayed in braille for an object which is a graphic | +| cN | table column number n, e.g. c1, c2. | +| rN | table row number n, e.g. r1, r2. | +| hN | heading at level n, e.g. h1, h2. | +| lnk | displayed in braille for an object which is a link | +| lst | displayed in braille for an object which is a list | +| vlnk | visited link | +| mnu | displayed in braille for an object which is a menu | +| mnubar | displayed in braille for an object which is a menu bar | +| rbtn | displayed in braille for an object which is a radio button | +| tb | displayed in braille for an object which is a table | +| tv | displayed in braille for an object which is a treeview | +| lv N | displayed in braille when an object (e.g. a tree view item) has a hierarchical level | +| ----- | displayed in braille for an object which is a seperator | + +The following state indicators are also defined: +|| Abbreviation | Control state | +| ... | displayed in braille when an object supports autocompletion | +| ( ) | displayed in braille when an object (e.g. a check box) is not checked | +| (x) | displayed in braille when an object (e.g. a check box) is checked | +| (-) | displayed in braille when an object (e.g. a check box) is half checked | +| - | displayed in braille when an object (e.g. a tree view item) is collapsible | +| + | displayed in braille when an object (e.g. a tree view item) is Expandable | +| clk | displayed in braille when an object is clickable | +| ro | displayed in braille when an object (e.g. an editable text field) is read-only | +| sel | displayed in braille when an object is selected | +| submnu | displayed in braille when an object has a popup (usually a sub-menu) | + +++ Keyboard Settings (NVDA+control+k) +++ This dialog box is found in the Preferences menu, under "Keyboard settings...". It contains the following options: https://bitbucket.org/nvdaaddonteam/nvda/commits/49e58c74c6cb/ Changeset: 49e58c74c6cb Branch: None User: nvdaaddonteam-admin Date: 2014-08-27 20:50:21 Summary: Merge branch 't4130' into next. Incubates #4130 * t4130: userGuide.t2t: braille control type and state indicators. Affected #: 1 file diff --git a/user_docs/en/userGuide.t2t b/user_docs/en/userGuide.t2t index 97833fa..c97d16b 100644 --- a/user_docs/en/userGuide.t2t +++ b/user_docs/en/userGuide.t2t @@ -780,43 +780,6 @@ This means that you do not have to scroll the display at the end of each line ev This may allow for more fluent reading of large amounts of text. It is disabled by default. -+++ Braille control type and state abbreviations +++ -In order to fit as much information as possible on a braille display, The folowing abbreviations have been defined to indicate control type and state. - -|| Abbreviation | Control type | -| btn | displayed in braille for an object which is a button | -| cbo | displayed in braille for an object which is a combo box | -| chk | displayed in braille for an object which is a check box | -| dlg | displayed in braille for an object which is a dialog | -| edt | displayed in braille for an object which is an editable text field | -| gra | displayed in braille for an object which is a graphic | -| cN | table column number n, e.g. c1, c2. | -| rN | table row number n, e.g. r1, r2. | -| hN | heading at level n, e.g. h1, h2. | -| lnk | displayed in braille for an object which is a link | -| lst | displayed in braille for an object which is a list | -| vlnk | visited link | -| mnu | displayed in braille for an object which is a menu | -| mnubar | displayed in braille for an object which is a menu bar | -| rbtn | displayed in braille for an object which is a radio button | -| tb | displayed in braille for an object which is a table | -| tv | displayed in braille for an object which is a treeview | -| lv N | displayed in braille when an object (e.g. a tree view item) has a hierarchical level | -| ----- | displayed in braille for an object which is a seperator | - -The following state indicators are also defined: -|| Abbreviation | Control state | -| ... | displayed in braille when an object supports autocompletion | -| ( ) | displayed in braille when an object (e.g. a check box) is not checked | -| (x) | displayed in braille when an object (e.g. a check box) is checked | -| (-) | displayed in braille when an object (e.g. a check box) is half checked | -| - | displayed in braille when an object (e.g. a tree view item) is collapsible | -| + | displayed in braille when an object (e.g. a tree view item) is Expandable | -| clk | displayed in braille when an object is clickable | -| ro | displayed in braille when an object (e.g. an editable text field) is read-only | -| sel | displayed in braille when an object is selected | -| submnu | displayed in braille when an object has a popup (usually a sub-menu) | - +++ Keyboard Settings (NVDA+control+k) +++ This dialog box is found in the Preferences menu, under "Keyboard settings...". It contains the following options: @@ -1919,6 +1882,43 @@ Please see the [BRLTTY key tables documentation http://mielke.cc/brltty/doc/driv | Route to braille cell | route (bring cursor to character) | %kc:endInclude ++ Braille control type and state abbreviations + +In order to fit as much information as possible on a braille display, The folowing abbreviations have been defined to indicate control type and state. + +|| Abbreviation | Control type | +| btn | button | +| cbo | combo box | +| chk | check box | +| dlg | dialog | +| edt | editable text field | +| gra | graphic | +| cN | table column number n, e.g. c1, c2. | +| rN | table row number n, e.g. r1, r2. | +| hN | heading at level n, e.g. h1, h2. | +| lnk | link | +| lst | list | +| vlnk | visited link | +| mnu | menu | +| mnubar | menu bar | +| rbtn | radio button | +| tb | table | +| tv | treeview | +| lv N | a tree view item has a hierarchical level N| +| ``-----`` | seperator | + +The following state indicators are also defined: +|| Abbreviation | Control state | +| ... | displayed when an object supports autocompletion | +| ( ) | displayed when an object (e.g. a check box) is not checked | +| (x) | displayed when an object (e.g. a check box) is checked | +| (-) | displayed when an object (e.g. a check box) is half checked | +| - | displayed when an object (e.g. a tree view item) is collapsible | +| + | displayed when an object (e.g. a tree view item) is Expandable | +| clk | displayed when an object is clickable | +| ro | displayed when an object (e.g. an editable text field) is read-only | +| sel | displayed when an object is selected | +| submnu | displayed when an object has a popup (usually a sub-menu) | + + Advanced Topics + ++ Advanced Customization of Symbol Pronunciation ++ https://bitbucket.org/nvdaaddonteam/nvda/commits/affbe5c21fa4/ Changeset: affbe5c21fa4 Branch: master User: nvdaaddonteam-admin Date: 2014-08-31 12:17:48 Summary: removed stale .bzrignore. Affected #: 1 file diff --git a/.bzrignore b/.bzrignore deleted file mode 100644 index 13deb32..0000000 --- a/.bzrignore +++ /dev/null @@ -1,51 +0,0 @@ -source/locale/*/LC_MESSAGES/*.mo -source/comInterfaces/*.py -source/*.log -source/*.ini -source/userConfig -build -build_debug -dist -dist_installer -*.dll -*.exe -source/**/*.manifest -source/synthDrivers/espeak-data -source/lib -source/lib64 -source/typelibs -source/configobj.py -source/validate.py -installer/waves -source/images/*.ico -source/louis -source/synthDrivers/dict.dat -source/waves -*.obj -*.exp -*.lib -*_I.c -*_P.c -*_C.c -*_S.c -dlldata.c -*.pdb -ia2.h -nvdaController.h -nvdaHelper/**/nvdaControllerInternal.h -nvdaHelper/**/vbuf.h -nvdaHelper/**/vbufRemote.h -nvdaHelper/local/displayModel.h -nvdaHelper/remote/displayModelRemote.h -include/* -.sconsign.dblite -user_docs/*/*.html -extras/controllerClient/x64 -source/_buildVersion.py -user_docs/*/keyCommands.t2t -output -source/brailleDisplayDrivers/handyTech -./developerGuide.html -user_docs/build.t2tConf -launcher/nvda_logo.wav -uninstaller/UAC.nsh https://bitbucket.org/nvdaaddonteam/nvda/commits/9f5b7674904f/ Changeset: 9f5b7674904f Branch: next User: nvdaaddonteam-admin Date: 2014-08-31 12:22:46 Summary: Merge branch 'master' into next * master: removed stale .bzrignore. Affected #: 1 file diff --git a/.bzrignore b/.bzrignore deleted file mode 100644 index 13deb32..0000000 --- a/.bzrignore +++ /dev/null @@ -1,51 +0,0 @@ -source/locale/*/LC_MESSAGES/*.mo -source/comInterfaces/*.py -source/*.log -source/*.ini -source/userConfig -build -build_debug -dist -dist_installer -*.dll -*.exe -source/**/*.manifest -source/synthDrivers/espeak-data -source/lib -source/lib64 -source/typelibs -source/configobj.py -source/validate.py -installer/waves -source/images/*.ico -source/louis -source/synthDrivers/dict.dat -source/waves -*.obj -*.exp -*.lib -*_I.c -*_P.c -*_C.c -*_S.c -dlldata.c -*.pdb -ia2.h -nvdaController.h -nvdaHelper/**/nvdaControllerInternal.h -nvdaHelper/**/vbuf.h -nvdaHelper/**/vbufRemote.h -nvdaHelper/local/displayModel.h -nvdaHelper/remote/displayModelRemote.h -include/* -.sconsign.dblite -user_docs/*/*.html -extras/controllerClient/x64 -source/_buildVersion.py -user_docs/*/keyCommands.t2t -output -source/brailleDisplayDrivers/handyTech -./developerGuide.html -user_docs/build.t2tConf -launcher/nvda_logo.wav -uninstaller/UAC.nsh Repository URL: https://bitbucket.org/nvdaaddonteam/nvda/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.