Skip to content

Commit faef7e2

Browse files
authored
Merge 4e1f7cd into c8a847b
2 parents c8a847b + 4e1f7cd commit faef7e2

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

source/NVDAObjects/IAccessible/ia2Web.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,30 @@ def _get_states(self):
213213
if popupState:
214214
states.discard(controlTypes.State.HASPOPUP)
215215
states.add(popupState)
216+
if self.isInternalLink:
217+
states.add(controlTypes.State.INTERNAL_LINK)
216218
return states
217219

220+
@property
221+
def isInternalLink(self) -> bool:
222+
if self.role != controlTypes.Role.LINK:
223+
return False
224+
if (
225+
not hasattr(self, "treeInterceptor")
226+
or self.treeInterceptor is None
227+
or not self.treeInterceptor.documentConstantIdentifier
228+
):
229+
return False
230+
documentConstantIdentifier = self.treeInterceptor.documentConstantIdentifier
231+
if documentConstantIdentifier.endswith("/"):
232+
documentConstantIdentifier = documentConstantIdentifier[:-1]
233+
queryParamCharPos = documentConstantIdentifier.find("?")
234+
if queryParamCharPos > 0:
235+
documentConstantIdentifier = documentConstantIdentifier[:queryParamCharPos]
236+
if self.value.startswith(f"{documentConstantIdentifier}#"):
237+
return True
238+
return False
239+
218240
def _get_landmark(self):
219241
xmlRoles = self.IA2Attributes.get("xml-roles", "").split(" ")
220242
landmark = next((xr for xr in xmlRoles if xr in aria.landmarkRoles), None)

source/controlTypes/state.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def negativeDisplayString(self) -> str:
102102
HASPOPUP_GRID = setBit(48)
103103
HASPOPUP_LIST = setBit(49)
104104
HASPOPUP_TREE = setBit(50)
105+
INTERNAL_LINK = setBit(51)
105106

106107

107108
STATES_SORTED = frozenset([State.SORTED, State.SORTED_ASCENDING, State.SORTED_DESCENDING])
@@ -204,6 +205,9 @@ def negativeDisplayString(self) -> str:
204205
State.HASPOPUP_LIST: _("opens list"),
205206
# Translators: Presented when a control has a pop-up tree.
206207
State.HASPOPUP_TREE: _("opens tree"),
208+
# Translators: Presented when a link destination points to the page containing the link.
209+
# For example, links of a table of contents of a document with different sections.
210+
State.INTERNAL_LINK: _("same page"),
207211
}
208212

209213

0 commit comments

Comments
 (0)