File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 )
Original file line number Diff line number Diff 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
107108STATES_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
You can’t perform that action at this time.
0 commit comments